ClimatePoint MCP documentation

Overview

ClimatePoint MCP connects an AI assistant such as Claude to your ClimatePoint workspace through the Model Context Protocol. Once connected, you can ask the assistant in plain language to build a product life cycle assessment (LCA): set the goal and scope, build the Bill of Materials, match materials and processes to life cycle inventory (LCI) datasets, model transport, use and end of life, compile results, and produce an ISO-style LCA report.

It is for sustainability teams, LCA practitioners and product teams who already use ClimatePoint, or want to, and would rather drive the work from an assistant than click through each step.

The server exposes 98 tools. Read-only tools look things up; the rest create or change data in your ClimatePoint workspace, which you also see in the ClimatePoint web app. You need a ClimatePoint account: sign up at climatepoint.com/signup.

Server URL
https://api.lcamcp.com/mcp
Transport
Streamable HTTP
Authentication
OAuth, with your ClimatePoint account

Connect

Every client uses the same server URL. The first time a tool is used, the client opens a ClimatePoint sign-in page in your browser (see Sign-in & permissions).

Claude.ai and Claude Desktop

Go to claude.ai/customize/connectors (or Customize → Connectors in Claude Desktop), click + Add → Add custom connector, then enter:

Name:                   ClimatePoint
Remote MCP server URL:  https://api.lcamcp.com/mcp

Click Connect and sign in to ClimatePoint. On Team and Enterprise plans, an owner adds custom connectors under Organization settings → Connectors.

Claude Code

claude mcp add --transport http ClimatePoint https://api.lcamcp.com/mcp

Then run /mcp in Claude Code and choose ClimatePoint to sign in.

Cursor

// ~/.cursor/mcp.json (or .cursor/mcp.json in a project)
{
  "mcpServers": {
    "ClimatePoint": {
      "url": "https://api.lcamcp.com/mcp"
    }
  }
}

ChatGPT

Open Settings → Apps & Connectors → Advanced settings, enable Developer mode, then click Create and enter:

Name:                   ClimatePoint
MCP Server URL:         https://api.lcamcp.com/mcp
Authentication:         OAuth

Developer mode availability and write access depend on your ChatGPT plan.

VS Code

// .vscode/mcp.json
{
  "servers": {
    "ClimatePoint": {
      "type": "http",
      "url": "https://api.lcamcp.com/mcp"
    }
  }
}

Codex

Add to ~/.codex/config.toml, run codex mcp login ClimatePoint to sign in, then run codex and type /mcp to verify:

[mcp_servers.ClimatePoint]
enabled = true
url = "https://api.lcamcp.com/mcp"

Antigravity

In the Agent panel click … → MCP Servers → Manage MCP Servers → View raw config, then add to mcp_config.json:

{
  "mcpServers": {
    "ClimatePoint": {
      "serverUrl": "https://api.lcamcp.com/mcp"
    }
  }
}

Sign-in & permissions

Signing in

ClimatePoint MCP uses OAuth. When your client connects, it sends you to a ClimatePoint sign-in page; you sign in with your ClimatePoint account and approve the connection. Your password is never shared with the AI assistant or the client. The client receives a token that lets it call ClimatePoint tools on your behalf, and it renews the token itself while you keep using the connection. After 30 days without use, you sign in again.

What the assistant can reach

The assistant acts as you. It can only see and change the companies you belong to in ClimatePoint, and the products, variants and reports inside them. It cannot reach other customers' data. Some tools are limited to administrators or to paid plans; those return a clear message instead of running.

Read-only tools and tools that change data

Each tool in the tool reference carries a badge:

  • Read-only looks up data and changes nothing.
  • Write creates or adds data, such as a new product or component.
  • Destructive can overwrite or delete existing data, such as replacing a Bill of Materials or deleting a SKU.

Your client may ask for your approval before it calls a tool that changes data; Claude does this unless you have allowed that tool to run without asking. On top of that, ClimatePoint's own confirmation step guards the main AI steps (scope, functional units, Bill of Materials generation, matching, end of life, compiling results and the report) and most tools that overwrite or delete data. The first call returns a preview of what will happen, and nothing is written or charged until the assistant calls again with the confirmation token from that preview. Tools with a confirm_token parameter use this step.

On paid plans you can pre-authorize the AI steps for a limited time with authorize_gated_session, so they run without the preview round-trip. Tools that overwrite or delete data always need the token.

Disconnecting

Remove or disable the ClimatePoint connector in your client's connector or MCP settings (in Claude: Settings → Connectors). The client then stops calling ClimatePoint. Data you created stays in your ClimatePoint workspace.

Plans & data sources

Free

  • LCI data from US LCI and openEPD. Searches and matches only return datasets from these sources.
  • AI-powered steps (scope setup, Bill of Materials generation, LCI matching, AI suggestions and end-of-life analysis) draw on monthly credits, counted per group of tools. Ask the assistant to run get_usage to see what is left this month. The numbers can change, so they are not listed here.
  • Compiling results and generating reports, product families, executive reports and some follow-up tools need a paid plan. Locked tools say so when called.

Paid

  • Full LCI database access, unlimited AI steps, result compilation and the ISO-style LCA report.
  • The other paid features are listed under Pricing.

Examples

These prompts use a made-up company and product. Replace them with your own.

Prompts to try

  1. List my ClimatePoint companies and the products in each one, and tell me which products already have an LCA report.
  2. Start a cradle-to-grave LCA for a 750 ml stainless-steel water bottle made by Example Bottle Co. in Portugal. Set up the scope, propose functional units, and stop so I can pick one.
  3. For my water bottle product, show the five biggest hotspots in the primary variant and suggest two improvements I could test as variants.
  4. Here is our Bill of Materials spreadsheet. Import it into the water bottle product, then check whether every component has a mass and a unit.

Walkthrough: a stainless-steel water bottle

A typical end-to-end run, with the tools the assistant calls at each step. You can stop after any step and continue later.

  1. Company and product. The assistant finds your company with list_companies (or creates one with create_company) and creates the product with create_product. If you have spec sheets, it attaches them with upload_document.
  2. Scope. initialize_scope drafts the goal, system boundary, benchmarks and variants. generate_functional_units proposes functional units such as "providing 1 litre of drinking water capacity over 5 years", and update_product_scope saves the one you choose.
  3. Bill of Materials. generate_bom returns research guidance; the assistant researches the product and saves the parts (body, lid, seal, coating, packaging) with set_product_structure. set_lifetime_parameters records the bottle's lifetime output, and validate_bom_structure checks nothing is missing.
  4. LCI matching. match_raw_materials matches each material to an LCI dataset and match_manufacturing_processes adds processing such as deep drawing and welding. You can review or correct a match with search_lci_datasets and apply_match_by_id.
  5. Life cycle stages. suggest_transport fills in where parts come from and calculate_transport builds the transport legs. set_variant_distances sets distribution and end-of-life distances. The bottle uses no energy in use, so the use phase stays empty; for a product that does, use configure_use_phase. run_eol_workflow models recycling, incineration and landfill.
  6. Benchmarks. If the scope set up benchmark variants (for example a single-use plastic bottle), build their Bills of Materials the same way, or tell the assistant to skip them for this study.
  7. Results (paid plan). calculate_variant_impact runs its pre-flight checks and compiles the results. get_impact_summary and identify_hotspots show where the impact comes from, and compare_variants compares the bottle with its benchmarks.
  8. Report (paid plan). The first compile also creates the ISO-style LCA report. get_report reads it; generate_lca_report rebuilds it after later changes, which replaces any edits made to the report text.
  9. Follow-up. followup_guide walks the assistant through finding data gaps and drafting the questions to send the manufacturer for the next round.

Tool reference

All 98 tools, grouped in workflow order. Names, titles, descriptions and parameters are generated from the server itself.

  1. 1. Account & usage (7)
  2. 2. Products & scope (17)
  3. 3. Bill of Materials (17)
  4. 4. LCI matching (9)
  5. 5. Life cycle stages (21)
  6. 6. Results & improvement (10)
  7. 7. Reports & projections (12)
  8. 8. Data follow-up (5)

1. Account & usage

Find your companies, check plan usage, send feedback and, on paid plans, pre-authorize a session.

List Companies

Read-only

climatepoint_list_companies

List all companies the user has access to, with the company_id that company-scoped tools such as climatepoint_list_products and climatepoint_create_product take. Supports pagination via limit/offset.

Parameters (2)
NameTypeRequiredDescription
limitintegerNoMaximum items to return (default 50, max 200)
offsetintegerNoNumber of items to skip (default 0)

Create Company

Write

climatepoint_create_company

Create a new company. The company will be owned by the authenticated user. After creation, the company can be used for product and LCA workflows. companyLocation is optional here, but transport calculation needs it; climatepoint_update_company can also set it later.

Parameters (3)
NameTypeRequiredDescription
namestringYesCompany name (e.g. "Acme Corp")
websitestringNoCompany website URL
companyLocationstringNoCompany location in "City, State/Province, 2-letter country code" or "City, 2-letter country code" format (e.g. "Copenhagen, Hovedstaden, DK" or "Chicago, US").

Update Company

Destructive

climatepoint_update_company

Update fields on an existing company (name, website, and/or companyLocation). Requires confirmation. Provide at least one field. Sets companyLocation after creation, which transport calculation needs.

Parameters (5)
NameTypeRequiredDescription
company_idstringYesThe company ID to update
namestringNoNew company name
websitestringNoNew company website URL
companyLocationstringNoCompany location in "City, State/Province, 2-letter country code" or "City, 2-letter country code" format (e.g. "Copenhagen, Hovedstaden, DK" or "Chicago, US").
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Get Plan Usage

Read-only

climatepoint_get_usage

Show this account's remaining monthly free-tier credits per bucket (or unlimited for paid tiers).

No parameters.

Send Feedback

Write

climatepoint_report_feedback

Send feedback the user asks to send about these tools: a bug, a wrong result, something confusing or slow, or a missing capability. Emails and most phone numbers in the message are redacted before it is stored (best effort: short local numbers and some layouts are kept). Non-blocking; costs nothing.

Parameters (5)
NameTypeRequiredDescription
categorystringYesWhat kind of issue this is
One of: bug, wrong_result, confusing, missing_capability, slow, other
ratingintegerNoOptional 1-5 rating of the experience (1 = worst)
messagestringNoShort summary of the issue, written for this report rather than copied from the conversation. Personal details are not needed.
product_idstringNoProduct the issue relates to, if any
tool_contextstringNoTool name the issue relates to, if any (e.g. climatepoint_generate_bom)

Authorize Gated Session

Write

climatepoint_authorize_gated_session

Pre-authorize this operator session so the re-runnable AI pipeline steps (BoM generation, LCI raw/manufacturing/variant matching, EOL analysis, report generation, impact calculation, scope + functional-unit setup) run WITHOUT a per-call confirmation round-trip for a limited time.

Full description

Destructive or non-idempotent tools (deletes, component removals, cascades, updates, benchmark selection, EOL commit) are deliberately NOT covered — they always keep the confirmation prompt, even under a grant. action="grant" (default) opens a time-boxed authorization (ttl_seconds, default 1800, max 3600); action="status" reports whether a grant is active and when it expires; action="revoke" ends it immediately. Requires a standard or admin plan. This removes only the human-confirmation prompt; every gated call is still checked so it cannot run twice.

Parameters (2)
NameTypeRequiredDescription
actionstringNogrant (default), status, or revoke
One of: grant, revoke, status
ttl_secondsintegerNogrant: seconds the authorization stays valid (default 1800, max 3600)

Get Diagnostics (Admin)

Read-only

climatepoint_get_diagnostics

Admin-only: recent MCP tool errors, top error codes, recent user feedback, and worst sessions, as JSON. Requires admin tier.

Parameters (2)
NameTypeRequiredDescription
daysintegerNoLookback window in days (default 7)
limitintegerNoMax rows per section (default 20)

2. Products & scope

Create products, families, SKUs and variants, then set the study's goal, scope, functional unit and LCIA method.

List Products

Read-only

climatepoint_list_products

List all products in a company. Requires company_id (climatepoint_list_companies lists them). Supports pagination via limit/offset.

Parameters (3)
NameTypeRequiredDescription
company_idstringYesThe company ID to list products for
limitintegerNoMaximum items to return (default 50, max 200)
offsetintegerNoNumber of items to skip (default 0)

Create Product

Write

climatepoint_create_product

Create a new product/LCA with an optional functional unit. Requires company_id (climatepoint_list_companies lists them).

Parameters (5)
NameTypeRequiredDescription
company_idstringYesCompany ID to create the product in
namestringYesProduct name (e.g. "Stainless Steel Water Bottle")
functional_unitstringNoFunctional unit text (e.g. "1 water bottle used for 5 years")
fu_unitstringNoUnit of the functional unit (e.g. "item", "kg")
contextstringNoAdditional context about the product

Get Product Summary

Read-only

climatepoint_get_product_summary

Get a compact product overview: name, workflow step, LCI compile state, functional unit, location, the primary variant's component count and matched-component count, and its total GWP (the primary_product total climatepoint_get_impact_summary reports; null until results are compiled).

Full description

It does not list datasets, process entries, transport legs or end-of-life treatment: read those per node with climatepoint_get_bom_structure, and GWP per variant and life-cycle stage with climatepoint_get_impact_summary. Defaults to markdown rendering for human-readable display; pass response_format="json" for machine consumption.

Parameters (2)
NameTypeRequiredDescription
product_idstringYesThe product ID
response_formatstringNoOutput rendering: 'json' for machine-readable, 'markdown' for human-readable. Defaults to the tool's natural format.
One of: json, markdown

Upload Document

Write

climatepoint_upload_document

Attach a product document.

Full description

THREE mutually-exclusive source modes: (1) content_base64 — inline base64 file bytes; the ONLY mode that reaches a CLIENT-local/sandbox file in remote/http mode (requires filename; effective limit ~3 MB over http; full 20 MB only in stdio). (2) source as an https:// URL — the SERVER downloads it (SSRF-guarded; up to 20 MB). (3) source as a file path — resolved on the SERVER (relative to cwd in http mode; absolute only in stdio). A client-side path will NOT be found server-side in remote mode — use content_base64 instead. Stores the document, creates the document record, triggers AI classification. Supports PDF, DOCX, XLSX, CSV, PNG, JPG, WebP. climatepoint_initialize_scope researches the documents already attached when it starts; documents attached later are not part of that run.

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID to attach the document to
sourcestringNoURL (https://...) the server downloads, OR a SERVER-local file path (relative to cwd in http mode; absolute allowed only in stdio). NOT a client-local path in remote mode — use content_base64 for that. Omit when passing content_base64.
content_base64stringNoBase64-encoded file bytes for a CLIENT-local/sandbox file (remote/http mode). Requires filename. Mutually exclusive with source. Effective size ~3 MB over http (base64 overhead); use a URL for larger files.
filenamestringNoFilename (e.g. "report.pdf"). REQUIRED with content_base64 — its extension sets the MIME type. Optional override for source (derived if omitted).

Initialize LCA Scope

Destructive

climatepoint_initialize_scope

REQUIRED before any LCA work on a product: every LCA tool (scope, functional unit, BoM, matching, transport, use phase, EOL, variants, projections, compile, reports) returns scope_initialization_required until this completes successfully (read-only and search tools stay available).

Full description

This pipeline researches the product documents already uploaded with climatepoint_upload_document. Initializes LCA scope (AI pipeline: goal, AI system-boundary suggestion, benchmarks, KPIs, variants). Takes 45-90 seconds. Requires confirmation. The LCA workflow then continues with the study purpose (climatepoint_compliance_check set_goal), the system boundary (climatepoint_update_product_scope: epd_boundary for an EN 15804 EPD, scope_boundary otherwise), the functional unit (proposed by climatepoint_generate_functional_units, persisted by climatepoint_update_product_scope) and the Bill of Materials (climatepoint_generate_bom). Exception: if the product already had a committed functional unit, this run CLEARS it and returns it as functional_unit_cleared; re-committing that FU with climatepoint_update_product_scope restores it without generating a new one (when that FU has no reference_flow and the product has no BoM yet, generating a new one instead is the user's decision). Likewise, a product that already has a BoM but no committed functional unit needs the FU the BoM was built against — which only the user can say — rather than a newly generated one. Without climatepoint_update_product_scope, climatepoint_generate_bom returns functional_unit_evaluation_required when the product has no functional unit anywhere; when only the product-level FU was cleared, climatepoint_generate_bom still passes and climatepoint_calculate_variant_impact refuses with functional_unit_required. Later boundary or functional-unit edits with climatepoint_update_product_scope expect scope_goal too (unless the product already has a goal): the web app's Define Scope step expects a goal statement and shows it empty otherwise.

Parameters (2)
NameTypeRequiredDescription
product_idstringYesThe product ID
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Generate Functional Units

Destructive

climatepoint_generate_functional_units

Generate ISO 14044-compliant functional unit options for a product.

Full description

Requires a completed climatepoint_initialize_scope; confirmed_insights are that run's product insights as confirmed by the user. The options are stored as candidates (products.functionalUnits) but none is committed: only climatepoint_update_product_scope (with the selected/recommended functional_unit object) commits one, and climatepoint_generate_bom requires a committed one.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
confirmed_insightsobjectYesUser-confirmed product insights from climatepoint_initialize_scope
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Update Product Scope

Destructive

climatepoint_update_product_scope

Commit or edit the goal, scope boundary, functional unit, or context on a product after climatepoint_initialize_scope has run (this tool is gated: it returns scope_initialization_required until initialization completes).

Full description

Supports both simple text/unit updates and full functional unit objects with reference_flow and assumptions. A scope_boundary or functional-unit change expects scope_goal alongside it (unless the product already has a goal): the web app's Define Scope step expects a goal statement and shows it empty otherwise. Workflow order: climatepoint_initialize_scope, the study purpose (climatepoint_compliance_check set_goal), the boundary, the functional unit, the BoM. For an EN 15804 EPD (purpose epd with EN 15804 modules on) the boundary is epd_boundary (option a–f, B6, module choices), saved through the same write as the web app's Define Scope; a free-text scope_boundary is refused for it (EPD_BOUNDARY_STRUCTURED_REQUIRED). Requires confirmation. scope_description (the scope text) is written in its own call on the state-guarded contract: preview, then confirm with confirm_token and expected_md5; the saved response carries prior_value for undo.

Parameters (12)
NameTypeRequiredDescription
product_idstringYesThe product ID
scope_goalstringNoLCA goal statement. Expected with any scope_boundary or functional-unit change; the web app shows an empty goal otherwise.
scope_boundarystringNoSystem boundary (e.g., Cradle-to-Grave, Cradle-to-Gate, Gate-to-Gate). Refused (EPD_BOUNDARY_STRUCTURED_REQUIRED) for an EN 15804 EPD, whose boundary is epd_boundary.
epd_boundaryobjectNoThe boundary of an EN 15804 EPD (purpose epd with EN 15804 modules on, set with climatepoint_compliance_check). Saved with the modules it declares and the stored boundary string in one write. Its own call; scope_goal may go with it. Refused (NOT_EN15804_EPD) for any other study. Rule breaks (an option outside a–f, B6 with an option that excludes it, a required module left out) are refused; other gaps come back as warnings.
functional_unit_textstringNoFunctional unit description text (simple update)
functional_unit_unitstringNoFunctional unit unit (e.g., "m²·year", "kWh", "item") (simple update)
functional_unitobjectNoFull functional unit object (overrides functional_unit_text/unit if both provided)
contextstringNoProduct context/description for LCA
scope_descriptionstring | objectNoThe scope description the web app shows (products."scopeAiMessage" and the variant's scope_ai_message). A string is sanitised (control characters removed, at most 8000 characters, a line starting system:/assistant:/developer: refused) and set on both. { product, variant } restores an exact prior_value (undo). Its own call: not combined with the other fields. Preview returns before, after, diff and current_md5; confirm with confirm_token and expected_md5; STATE_CHANGED if either value changed in between.
variant_idstringNoWith scope_description: the variant to write (default: the primary variant)
expected_md5stringNoWith scope_description and confirm_token: the current_md5 the preview returned (new_md5 when undoing).
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Manage LCIA Method and Goal & Scope

Destructive

climatepoint_compliance_check

Compliance step: resolve/seed/switch the LCIA method (region) governing a study, and read/write its Goal & Scope.

Full description

action="get" (default) returns goal (purpose, study_reasons, target_audience); the study's standard, enabled and schema_version; its study_information, methodology and verification sections exactly as stored (inner keys stay camelCase, e.g. methodology.cutoffPercentage, verification.criticalReviewRequired; null when not set); resolved method + region lock state; available regions; and iso_methodology_review, the check climatepoint_generate_lca_report blocks on (study fields vs the built model). action="set_goal" sets study purpose/reasons/audience (confirmation required, as for set_methodology below); workflow order: climatepoint_initialize_scope, then set_goal (the purpose), then the boundary (climatepoint_update_product_scope: epd_boundary for an EN 15804 EPD, scope_boundary otherwise), then the functional unit and the BoM; after purpose epd the saved response carries next_step; action="set_region" switches the method by region (destructive — rebinds LCI nodes; gated by confirm/confirm_text). action="set_methodology" / "set_study_information" correct the ISO study fields that print into the report: pass methodology / study_information with the camelCase keys get returns; an omitted key is kept, null clears one. Only that section changes. Values are validated as the web app does (field_errors on failure, nothing written). set_goal, set_methodology and set_study_information need confirmation: the first call writes nothing and returns the before/after diff, which the user reviews, and a confirmation_token; a second call with the same arguments and confirm_token writes it. product_id is the study (product) id.

Parameters (11)
NameTypeRequiredDescription
actionstringNoWhich compliance operation to run; defaults to "get"
One of: get, set_goal, set_region, set_methodology, set_study_information
product_idstringYesThe product ID (study)
purposestringNoset_goal: study purpose
One of: epd, pef, internal_analysis, carbon_footprint, comparative, ebc
study_reasonsstringNoset_goal: free-text reasons (≤1000 chars)
target_audiencestringNoset_goal: target audience
One of: b2b, b2c, both
region_codestringNoset_region: region to switch to
One of: north_america, europe
confirmbooleanNoset_region: confirm a switch affecting 1-50 bound nodes
confirm_textstringNoset_region: type REBIND to confirm a switch affecting >50 bound nodes
methodologyobjectNoset_methodology: the methodology fields to set; omitted keys are kept, null clears one
study_informationobjectNoset_study_information: the study information fields to set; omitted keys are kept, null clears one
confirm_tokenstringNoset_methodology / set_study_information: Confirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Show System Boundary Diagram

Read-only

climatepoint_get_system_boundary_diagram

Show the ISO report's Figure 1 (system boundary diagram) for the product's primary structure. Hosts that support MCP Apps display the figure to the user inline; the model receives only a short text summary.

Parameters (1)
NameTypeRequiredDescription
product_idstringYesThe product ID

List Product Families

Read-only

climatepoint_list_product_families

List product families for a company. Requires company_id (climatepoint_list_companies lists them). Supports pagination via limit/offset.

Parameters (3)
NameTypeRequiredDescription
company_idstringYesThe company ID
limitintegerNoMaximum items to return (default 50, max 200)
offsetintegerNoNumber of items to skip (default 0)

Create Product Family

Write

climatepoint_create_product_family

Create a new product family. Requires company_id (climatepoint_list_companies lists them).

Parameters (4)
NameTypeRequiredDescription
company_idstringYesThe company ID
namestringYesFamily name
descriptionstringNoFamily description
parent_family_idstringNoParent family ID for nesting

Create Family Product

Write

climatepoint_create_family_product

Create a new product inside an existing product family. Prerequisites: the family must already exist (climatepoint_list_product_families lists them) and the authenticated user must own the family's company. The new product inherits the family's lifecycle defaults if any have been set (see climatepoint_set_family_lifecycle_defaults). Returns the created product row.

Parameters (2)
NameTypeRequiredDescription
family_idstringYesThe product family ID
namestringYesProduct name

List SKUs

Read-only

climatepoint_list_skus

List SKU variants for a product, including the primary variant.

Full description

Supports pagination via limit (default 50, max 200) and offset (default 0). Returns { skus: [...], pagination: { total, limit, offset, returned, has_more } }; each SKU row includes id, product_id, variant_name, variant_type, sku_code, sku_description, is_active, created_at and variant_order — the metadata variant-scoped tools such as climatepoint_get_variant_structure or climatepoint_compare_variants take. Richer per-variant state (including derived LCA readiness and the zero-contribution audit) is in climatepoint_get_variant_structure.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
limitintegerNoMaximum items to return (default 50, max 200)
offsetintegerNoNumber of items to skip (default 0)

Create SKU

Write

climatepoint_create_sku

Create a new SKU variant for a product

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
namestringYesSKU variant name
sku_codestringNoOptional SKU code

Update SKU

Destructive

climatepoint_update_sku

Update fields on a SKU variant. Requires confirmation.

Parameters (5)
NameTypeRequiredDescription
variant_idstringYesThe variant ID to update
namestringNoNew name
sku_codestringNoNew SKU code
sku_descriptionstringNoNew description
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Delete SKU

Destructive

climatepoint_delete_sku

Delete a SKU variant. Requires confirmation.

Parameters (2)
NameTypeRequiredDescription
variant_idstringYesThe variant ID to delete
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

List Variants

Read-only

climatepoint_list_variants

List all variants for a product (all variant types, ordered by variant_order).

Full description

Supports pagination via limit/offset. Each variant carries lca_readiness (derived compile state) and zero_contribution_audit — a read-only check of whether its material leaves would actually contribute to the total; compiled_but_blocking:true means the stored total is silently understated (every leaf contributes zero) and the audit's warning names the specific remedy.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
limitintegerNoMaximum items to return (default 50, max 200)
offsetintegerNoNumber of items to skip (default 0)

3. Bill of Materials

Generate, import, edit and validate the product's Bill of Materials, and reuse components through the library.

Generate BoM with AI

Destructive

climatepoint_generate_bom

The Bill of Materials step of the LCA workflow.

Full description

Writes no BoM and does no research itself: with a functional unit (the variant's own functional_units, else the product's committed one — climatepoint_generate_functional_units proposes one and climatepoint_update_product_scope commits it) it returns agent_research_required guidance aligned to that unit: the teardowns, spec sheets and material data the BoM needs. climatepoint_set_product_structure saves the resulting structure. Without a functional unit the confirmed call returns functional_unit_evaluation_required with candidate functional units (functional_unit_required, without candidates, when generating them fails). Requires confirmation.

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
descriptionstringYesProduct description for BoM generation
variant_idstringNoOptional variant ID; defaults to primary variant. Use when generating BoM for a benchmark variant.
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Import BoM Spreadsheet

Destructive

climatepoint_ingest_bom

Ingest an existing Excel/CSV Bill of Materials and nest its hierarchy — never asks for a template.

Full description

Phase is inferred from arguments: file_base64 (+ file_name) or raw_text EXTRACTs the rows plus the interpretation rules for the items[] format; items[] (a per-row interpretation) ASSEMBLEs a validated tree and returns a confirm_token; confirm_token writes the structure (re-uses set_product_structure). document_id of an already-uploaded doc is ingested server-side (for browser/no-subagent runtimes; returns run_id); run_id returns that run's status.

Parameters (10)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to the primary variant
file_base64stringNoEXTRACT: base64-encoded CSV/XLSX file content. Effective size ~3 MB over http (base64 overhead); full 20 MB only in stdio. Larger files over http go through climatepoint_upload_document (source URL) and document_id.
file_namestringNoEXTRACT: original filename (used to detect CSV vs XLSX)
raw_textstringNoEXTRACT: raw CSV text (alternative to file_base64)
itemsarray of objectNoASSEMBLE: per-row interpretation, in the format the EXTRACT phase describes
confirm_tokenstringNoCONFIRM: token returned by the ASSEMBLE phase
document_idstringNoServer-side ingestion: id of an already-uploaded document to ingest (browser path)
run_idstringNoServer-side ingestion: poll status of a delegated ingestion run
modelstringNoServer-side ingestion: optional model override; omit to use the server default

Get BoM Structure

Read-only

climatepoint_get_bom_structure

Get the Bill of Materials tree for a product or variant.

Full description

Each node carries model: its matched dataset (activity, reference product, geography, unit, database version, LCI source), its manufacturing-process and capital-goods entries (quantity, unit, binding, selection method, DQR, dataset), its transport legs with a non-zero distance (mode, distance, priced share, origin, destination, dataset) and its end-of-life treatment. Datasets are named, never quantified: no emission factor or other LCI coefficient is returned. Pass include_model_detail=false for ids and structure only. include_dq_detail=true adds each process and capital-goods entry's stored DQ scores and reasoning, assumptions text and calculation state, and an md5 of each node's stored process arrays.

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
include_model_detailbooleanNoDefault true. false omits each node's model (matched dataset, process entries, transport legs, end-of-life treatment) and skips the read behind it; use it when you only need node ids and the tree.
include_dq_detailbooleanNoDefault false. true adds, per process and capital-goods entry, dq { ter, ger, tir, p, dqr, ter_source, reasoning }, assumptions and calculation { present, generatedBy }, and per node model.manufacturing_process_data_md5 / capital_goods_data_md5. Needs the model: ignored with a warning when include_model_detail=false.

Get Variant Structure

Read-only

climatepoint_get_variant_structure

Get the BoM tree structure for a variant.

Full description

The variant includes lca_readiness and zero_contribution_audit (see climatepoint_list_variants). Three honesty flags: evaluated=false means the check did NOT run — read audit.note (the read failed/rejected/truncated, the check is turned off, or material sourcing is outside the study boundary) — and is NOT a clean bill of health; method_checks_skipped=true means the study method was not established for this caller, so blocking_leaves is a lower bound; zero_contribution_checks_skipped=true means only unmatched leaves were counted, so a matched-but-zero leaf is invisible in that response. The variant includes distances: its own avg_eol_distance_km, a factor-free distribution_lanes summary and any legacy avg_user_distance_km (null inherits the product family's, except on a benchmark); set them with climatepoint_set_variant_distances, which writes distribution as lanes only. The variant includes root: the root node's node_id, units and lifetime_parameters_data as climatepoint_set_lifetime_parameters stored them (null when there is no root; with several top-level nodes root is null and roots lists each). Each node carries the same model as climatepoint_get_bom_structure (its dataset, process entries, transport legs and end-of-life treatment, named only); pass include_model_detail=false to omit it.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
include_model_detailbooleanNoDefault true. false omits each node's model (matched dataset, process entries, transport legs, end-of-life treatment) and skips the read behind it; use it when you only need node ids and the tree.

Set Product Structure

Destructive

climatepoint_set_product_structure

Bulk-set the entire product structure (replaces existing BoM).

Full description

Requires confirmation. Every node except the tree root carries location data via sourcing_data (manufacturing_location, vendor_location, assembly_location) — sub-assemblies too, not just leaves. A node may also carry waste fields (waste, waste_mode, waste_kg), material classification, LCI matching fields, and data objects (match_data, transport_data, eol_analysis_data, etc.). Extra fields pass through. Nodes are PHYSICAL bill-of-materials items. Anything a node merely consumes is a field on that node, not a child of it: process energy -> manufacturing_process_data, equipment -> capital_goods_data, freight -> transport_data, in-use energy -> use_phase_energy_data, disposal -> eol_analysis_data. A consumable root's lifetime parameter (initial_mass) is auto-filled from the product functional unit (batch_mass / FU_mass) when one is already committed on the product (climatepoint_generate_functional_units proposes one; climatepoint_update_product_scope commits it). If a root is reusable, or its FU is missing/underivable, the response is a workflow_step_required step naming the root; nodes still persist, and a re-call once the missing piece is set gives a clean save.

Parameters (5)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
nodesarray of objectYesArray of structure nodes. Only id, name, and parent_id are required; all other fields are optional.
validation_modestringNoValidation strictness. "strict" (default) requires sourcing_data with type + "City, CC" or "City, State, CC" location on every node except the tree root — sub-assemblies included, since a sub-assembly is a real manufacturing step whose site also sets the destination of every part beneath it — plus unit_weight_kg > 0 on every leaf — except a leaf whose Reference Unit prices a process (kWh, MJ, hour, …), which must declare no mass at all. "structure_only" downgrades those completeness checks to warnings so a hierarchy-only tree with no geography can be saved (geography is captured later in component matching). Structural invariants — unique UUIDs, single root, structure_storage_version >= 2, <= 10000 nodes — stay enforced in every mode. Payloads whose nodes are not all reachable from that root (stale parent_id, cycle) are rejected with a diagnosis.
One of: strict, structure_only
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Add Component

Write

climatepoint_add_component

Add a single component node to a variant's BoM tree.

Full description

Omit parent_id to add a root-level component; provide a parent node id to nest under it. variant_id defaults to the product's primary variant. Existing parent node ids are listed by climatepoint_get_bom_structure. Bulk imports are handled by climatepoint_generate_bom and climatepoint_set_product_structure. Returns the created node id, path, and the created rows. unit_weight_kg is the GROSS input mass per unit, before manufacturing waste; waste is the PERCENTAGE of it scrapped at your site, and the LCA compiler always reads it as a percentage. waste_mode and waste_kg are only the builder's display preference and do not change the result; to enter scrap in kg, convert: waste = waste_kg / unit_weight_kg × 100. Material impact and inbound supply-chain transport use the gross mass; the scrap leaves as a waste row; distribution and end-of-life use the net mass (gross × (1 − waste%)). To model a 0.163 kg as-sold part with 6% scrap, enter unit_weight_kg = 0.163 / 0.94 = 0.1734 and waste = 6. A parent's unit_weight_kg is the gross sum of its children, so a root reads above its as-sold mass when leaves carry waste.

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
parent_idstringNoParent node ID; omit for root-level component
nodeobjectYesComponent node data

Update Component

Destructive

climatepoint_update_component

Update an existing component node in the BoM.

Full description

Set foreground_provenance to record how the node's own quantities were obtained; on a scored leaf this recomputes pedigree P and the DQR. Requires confirmation. unit_weight_kg is the GROSS input mass per unit, before manufacturing waste; waste is the PERCENTAGE of it scrapped at your site, and the LCA compiler always reads it as a percentage. waste_mode and waste_kg are only the builder's display preference and do not change the result; to enter scrap in kg, convert: waste = waste_kg / unit_weight_kg × 100. Material impact and inbound supply-chain transport use the gross mass; the scrap leaves as a waste row; distribution and end-of-life use the net mass (gross × (1 − waste%)). To model a 0.163 kg as-sold part with 6% scrap, enter unit_weight_kg = 0.163 / 0.94 = 0.1734 and waste = 6. A parent's unit_weight_kg is the gross sum of its children, so a root reads above its as-sold mass when leaves carry waste.

Parameters (7)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
component_idstringYesThe component node ID to update
updatesobjectYesFields to update. Only the listed columns are accepted; unknown keys are dropped.
foreground_provenancestringNoHow this node's own quantities (mass, units, energy) were obtained. It sets pedigree P: measured=1 (weighed, metered or lab-tested), supplier_declared=2 (the customer/supplier BoM or specification), calculated=2 (from primary data, e.g. volume x density), literature=3 (datasheet or generic value), estimated=4 (expert estimate), ai_estimated=4. On a leaf with a computed pedigree this recomputes P and the DQR; otherwise the tag is stored and, on a leaf, scores P when the leaf is next matched. Cannot be combined with dq_* or match fields (match_id, match_data, lci_source_id, lci_activity) in updates; re-matching with provenance is done by apply_match_by_id. For a provenance-only change pass updates: {}.
One of: measured, supplier_declared, calculated, literature, estimated, ai_estimated
change_reasonstringNoWhy this change is made, e.g. the source of a corrected mass ("BoM 12 g/pc is a g-for-mg slip; 0.012 g per the supplier datasheet"). Recorded in the audit trail with the old and new units / unit_weight_kg / unit_type values; not stored on the node.
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Update Variant Component

Destructive

climatepoint_update_variant_component

Update a component in a variant BoM. Requires confirmation.

Parameters (5)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
component_idstringYesThe component node ID to update
updatesobjectYesFields to update. Only the listed columns are accepted; unknown keys are dropped.
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Remove Component

Destructive

climatepoint_remove_component

Remove a component and its entire subtree from the BoM. Requires confirmation.

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
node_idstringYesThe node ID to remove (and all descendants)
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Set Lifetime Parameters

Destructive

climatepoint_set_lifetime_parameters

Set lifetime output parameters on one or more BOM component nodes of an existing BoM (built by climatepoint_generate_bom / climatepoint_set_product_structure): how long each component is used and how much output it produces over its lifetime.

Full description

CONSUMABLE GOODS — initial_mass is ROOT-ONLY and is normally AUTO-FILLED by climatepoint_set_product_structure from the product functional unit (batch_mass / FU_mass). A consumable root needs this tool only when set_product_structure reported initial_mass as blocked (e.g. the FU was not set). It takes a single parameter [{name:"initial_mass", unit:"kg", label:"Initial Mass", value:<batch_mass / FU_mass>}]. NESTED consumable/material parts need NO lifetime parameters — they inherit the root lifetime output; initial_mass on a nested component is ignored. REUSABLE / DURABLE PRODUCTS: the lifetime OUTPUT belongs on the ROOT (parent_id null) node only. On the root, pass 1–3 parameters whose units multiply together to produce the target unit (e.g. "MWh/year" × "year" = "MWh", or "use/year" × "year" = "use"). The units must be dimensionally correct — every unit must cancel cleanly. Bad: g × g/month (= g²/month). Good: use/year × year = use. Per-FU figures are the life-cycle total divided by the product of the ROOT parameter values, so they are per ONE unit of the root output: the units must multiply to the functional unit's unit (e.g. FU "1 trip" → a root output in trips), every value must be a finite number, and their product must be > 0 — a non-numeric value, or values whose product is zero or negative, is refused. NESTED parts NEVER carry lifetime parameters — they inherit the root lifetime output automatically; params sent for a nested component are ignored. The server neither estimates these values nor checks their units: it refuses only non-finite or non-positive values, ignores nested entries and stores the rest as passed, so the values come from product specs, typical usage patterns and the BOM itself.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
componentsarray of objectYesArray of components to update

Validate BoM Structure

Read-only

climatepoint_validate_bom_structure

Validate BOM completeness before or after saving.

Full description

Checks that every node has: (1) unit_type set to a valid Reference Unit, (2) sourcing_data with type ("manufactured"|"assembled"|"sourced") and the matching location field, (3) unit_weight_kg > 0 on all leaf nodes — except a leaf whose Reference Unit prices a process (kWh, MJ, hour, …), which must declare no mass at all. Returns a validation report with errors and warnings. Validates either a node array before it is saved with climatepoint_set_product_structure, or, with a product_id, an already-saved BOM.

Parameters (4)
NameTypeRequiredDescription
product_idstringNoProduct ID to validate the stored BOM
variant_idstringNoOptional variant ID; defaults to primary variant
nodesarray of objectNoNode array to validate directly (alternative to product_id)
include_advisory_warningsbooleanNoInclude non-blocking advisory warnings such as an emptied "assembly of nothing" node still carrying stale rolled-up mass. Default true.

List Library Components

Read-only

climatepoint_list_library_components

List reusable library components for the company that owns a product. Supports pagination via limit/offset.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesA product ID (used to resolve the company)
limitintegerNoMaximum items to return (default 50, max 200)
offsetintegerNoNumber of items to skip (default 0)

Create Library Component

Write

climatepoint_create_library_component

Create a reusable library component

Parameters (6)
NameTypeRequiredDescription
product_idstringYesA product ID (used to resolve company)
namestringYesComponent name
descriptionstringNoComponent description
materialstringNoMaterial type
unit_weight_kgnumberNoWeight per unit in kg
unitsnumberNoNumber of units

Update Library Component

Destructive

climatepoint_update_library_component

Update a reusable library component. Requires confirmation.

Parameters (7)
NameTypeRequiredDescription
component_idstringYesThe library component ID
namestringNoNew name
materialstringNoNew material
unit_weight_kgnumberNoNew weight per unit
unitsnumberNoNew unit count
descriptionstringNoNew description
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Add Library Component to SKU

Write

climatepoint_add_library_component_to_sku

Instantiate a library component into a SKU variant BoM. Requires confirmation.

Parameters (4)
NameTypeRequiredDescription
variant_idstringYesThe SKU variant ID
reusable_component_idstringYesThe library component ID
quantitynumberYesQuantity to add
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Propagate Component Change

Destructive

climatepoint_propagate_component_change

Propagate library component changes to all (or specific) SKU variants that use it

Parameters (3)
NameTypeRequiredDescription
reusable_component_idstringYesThe library component ID
variant_idsarray of stringNoOptional list of variant IDs to target; omit to propagate to all
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check. Required for every propagation — this operation is destructive and overwrites SKU BoM nodes.

Get Library Sync Status

Read-only

climatepoint_get_sync_status

Check which SKU variants use a given library component

Parameters (1)
NameTypeRequiredDescription
reusable_component_idstringYesThe library component ID

4. LCI matching

Match materials and manufacturing processes to life cycle inventory datasets, search datasets, and add your own custom processes.

Match Raw Materials

Destructive

climatepoint_match_raw_materials

Match raw materials to LCI activities for a product variant (AI-powered).

Full description

Requires confirmation. auto_apply defaults to true; pass auto_apply=false in both calls to preview without persisting. A best whose dataset unit cannot price a leaf entered by mass (not kg, not per item, no conversion_factor; it would compile to 0) is held as needs_review unit_mismatch, and matches[].unit_compatible_candidate names the highest-ranked candidate whose unit can. Counts: matched is the number of leaves whose match was applied (0 when nothing was written, as in a preview or a timeout); held is the number held for review (matches[].needs_review set, no match bound); failed is the number that errored. Terminal statuses: needs_magnitude_check (matches applied), complete (holds persisted or empty tree), suggestions_only (auto_apply=false, nothing written), no_matches_applied (gate ran, nothing written).

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
auto_applybooleanNoDefaults to true. When false, returns suggestions without writing match_data to component_nodes. Must match between the confirmation request and confirmed call.
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Match Manufacturing Processes

Destructive

climatepoint_match_manufacturing_processes

Add manufacturing process-energy entries to a variant's MANUFACTURED nodes (sourcing_data.type === "manufactured"), AI-powered.

Full description

For each manufactured node it suggests processes from the node's children, resolves each to an LCI activity (from the sources your plan is entitled to), and appends to manufacturing_process_data — it does NOT match material leaves or touch their match_data (climatepoint_match_raw_materials does that). Requires confirmation. auto_apply defaults to true; pass auto_apply=false in both calls to preview without persisting. Terminal statuses: complete (process entries persisted, or no manufactured nodes), suggestions_only (auto_apply=false — NOTHING was written), no_matches_applied (the apply gate ran but wrote nothing). These are terminal, not in-progress, statuses: there is nothing to poll, and repeating the call runs the AI matcher again. partial/failed are the error statuses; failed always carries isError and means nothing was persisted. One kind of partial DOES carry isError: a run that aborts before the write phase (for example the 90-second timeout) — nothing was persisted there either, and the confirmation token is spent. processes_added counts entries actually written; processes_suggested counts entries produced. auto_apply=false yields suggestions_only unless every node failed, which is failed. After a write (auto_apply) it also turns the assumption text on the variant's process and capital-goods entries into structured calculations and cites them; the response's calculations says what happened. This tool takes no sources: climatepoint_edit_process_entries and climatepoint_convert_assumptions apply them. Assumption text is turned into a structured calculation automatically, and an input variable is cited when the text names its source next to the value or the source is passed. A client document is citable once uploaded with climatepoint_upload_document, either named next to the value (e.g. "1.5 kW (Source: Supplier_TestReport.pdf, p. 3)") or passed in sources.

Parameters (5)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
auto_applybooleanNoDefaults to true. When false, returns suggestions without writing manufacturing_process_data to component_nodes. Must match between the confirmation request and confirmed call.
convertbooleanNoDefaults to true: after the write, turn the entries' assumption text into structured calculations. false skips that step (no calculations in the response). Must match between the confirmation request and confirmed call.
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Match Variant Materials

Destructive

climatepoint_match_variant_materials

Batch-match materials for a variant BoM via AI (expensive).

Full description

Requires confirmation. auto_apply defaults to true: top suggestions are written to component_nodes. A best whose dataset unit cannot price a leaf entered by mass (not kg, not per item, no conversion_factor; it would compile to 0) is held as needs_review unit_mismatch, and matches[].unit_compatible_candidate names the highest-ranked candidate whose unit can. Counts: matched is the number of leaves whose match was applied (0 when nothing was written, as in a preview or a timeout); held is the number held for review (matches[].needs_review set, no match bound); failed is the number that errored. Terminal statuses: needs_magnitude_check (matches applied), complete (holds persisted or empty tree), suggestions_only (auto_apply=false, nothing written), no_matches_applied (gate ran, nothing written).

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.
auto_applybooleanNoDefaults to true — top suggestions are written to component_nodes (match_data, match_id, lci_activity). When false, returns suggestions without writing anything. Must match between the confirmation request and confirmed call. Metering: on the free plan, any confirmed call consumes a match credit before the handler runs — including an auto_apply=false preview, and including a call rejected for a token/param mismatch: each retry of a rejected token consumes a credit and fails again, while a fresh token can succeed.

Match Single Component

Destructive

climatepoint_match_single_component

Match a single component to LCI activities via AI.

Full description

Each suggestion is annotated with lci_source_id (pass it through to climatepoint_apply_match_by_id / climatepoint_apply_use_phase_match — ids from some sources 404 without it) and applyable_by_id (false = live-query source, persisted only by material matching — climatepoint_match_variant_materials or climatepoint_match_raw_materials — which re-derives its candidates).

Parameters (3)
NameTypeRequiredDescription
component_namestringYesComponent name to match
materialstringNoMaterial type
lifecycle_contextstringNoLifecycle context (default: raw_material)

Search LCI Datasets

Read-only

climatepoint_search_lci_datasets

Search LCI databases for activities.

Full description

Results are scoped to the sources your plan is entitled to (US LCI and openEPD on the free plan; more databases on paid plans) — the lci_source_id on each result names its source. Each result carries applyable_by_id: when it is false (live-query sources such as openEPD), apply_match_by_id refuses that activity; material matching (match_variant_materials or match_raw_materials, auto_apply: true) can persist an openEPD match by re-deriving the candidates — it may pick a different candidate, and that call is variant-wide, not a single-component apply of the searched dataset.

Parameters (6)
NameTypeRequiredDescription
querystringYesSearch query (keywords or material name, e.g. "polypropylene injection moulding")
limitintegerNoMax activities to return PER LCI SOURCE (1-10; default 10). Your plan may search several sources, so the total result_count can exceed this value. Values above 10 are clamped to 10 and the response carries a limit_notice saying so.
geographystringNoPreferred geography (e.g. "GB", "DE", "GLO")
geography_onlybooleanNoWith geography: return only datasets in exactly this geography (e.g. 'Europe without Switzerland'), not the closest one.
activity_typestringNoFilter by activity type: 'production' excludes waste-treatment/cut-off activities (use when matching product inputs/materials); 'treatment' returns only waste-treatment activities (use for end-of-life matching); 'any' disables type-based re-ranking. Default (omitted): waste-treatment and cut-off activities are ranked BELOW production activities.
One of: production, treatment, any
product_idstringNoOptional product ID; resolves the study LCIA method (report_method_id) for paid tiers. Omit for a method-agnostic keyword search.

Apply LCI Match by ID

Destructive

climatepoint_apply_match_by_id

Correct or confirm an LCI match for a single component, typically a match that match_variant_materials returned with status:needs_magnitude_check, after its magnitude was reviewed in identify_hotspots.

Full description

Correct mode: supply activity_id + reference_product_name (both required — reference product disambiguates co-product allocation) + override_reason; resolves the allocated factor, computes DQ, full-replaces the match, sets magnitude_check_status=corrected. Live-query sources (openEPD — search results flag these applyable_by_id:false) CANNOT be applied here; material matching (match_variant_materials or match_raw_materials, auto_apply: true) can persist one by re-deriving the candidates, and match_single_component is preview-only and never persists. Custom process mode: supply custom_process_id (instead of activity_id/reference_product_name/lci_source_id) + override_reason to bind one of the product company's custom processes (e.g. a supplier PCF/EPD factor; its lifecycle_category must be material_sourcing, manufacturing, or unset) to a material leaf; dq_assessment is not accepted in this mode, and the data-quality pedigree reads Pending because a custom process has no similarity score or dataset version (a manual DQ override can score it later). Confirm mode: omit activity_id/reference_product_name and set override_source=magnitude_confirmed to clear the pending flag without changing the match. Requires confirmation token.

Parameters (12)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
component_idstringYesThe component node ID to correct/confirm
activity_idstringNoDataset id exactly as returned by search results ('id' field), unchanged (correct mode; required with reference_product_name)
reference_product_namestringNoReference product for allocation (correct mode; required with activity_id)
lci_source_idstringNoLCI source the activity_id belongs to: pass the lci_source_id of the search hit you are applying (results[].lci_source_id from climatepoint_search_lci_datasets; suggestions_data[].lci_source_id). Correct mode only. Ids are not shared between sources, so an id sent without its source can 404. Omit it only to re-apply a node's existing match.
One of: ecoinvent_3_11, ecoinvent_3_12, uslci_traci22, openepd_v2
custom_process_idstringNoId of one of the product company's custom processes to bind instead of an LCI dataset (custom process mode; not with activity_id, reference_product_name or lci_source_id). climatepoint_list_custom_processes lists them and climatepoint_create_custom_process creates one.
override_reasonstringYesWhy this correction/confirmation (stored as provenance)
override_sourcestringYesProvenance of the decision. NOTE: 'lookup_unavailable' is NOT a valid input — it is assigned by the system when the dataset lookup cannot supply full provenance. Use 'explicit_id' or 'agent_judgement' in correct mode, 'magnitude_confirmed' in confirm mode.
One of: agent_judgement, explicit_id, magnitude_confirmed
dq_assessmentobjectNoYour assessment of how well this dataset represents the component process. Needed whenever a dataset is picked by id: without it the pedigree is withheld and the node reads Pending. ter (1-5), judged ONLY on technology, never on how you found the dataset: 1 = same process, same technology route, same product specification 2 = same process and technology route; generic or averaged rather than the specific product, or a different scale or technology generation within that route 3 = same process family, but a materially different formulation or a different technology route within it 4 = a related process standing in as a proxy: different technology, comparable function 5 = a different process used as a placeholder; representativeness not established Boundary: pigment, additive or colour differences within the same binder-and-carrier route stay at 2; a change of binder, carrier or cure mechanism is 3. Dataset AGE is not TeR — it is scored separately as TiR. ter_rationale: 20-1000 chars naming what matches and what differs. Geography and dataset age are computed and are not yours to set; data precision (P) follows foreground_provenance.
foreground_provenancestringNoHow this node's own quantities (mass, units, energy) were obtained. It sets pedigree P: measured=1 (weighed, metered or lab-tested), supplier_declared=2 (the customer/supplier BoM or specification), calculated=2 (from primary data, e.g. volume x density), literature=3 (datasheet or generic value), estimated=4 (expert estimate), ai_estimated=4. Correct mode only. Omit to keep the node's recorded value; with none recorded, P is 4 ("not recorded").
One of: measured, supplier_declared, calculated, literature, estimated, ai_estimated
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Edit Process Entries

Destructive

climatepoint_edit_process_entries

Add, change or remove individual manufacturing-process entries (array: "manufacturing", the component's manufacturing_process_data) and capital-goods entries (array: "capital_goods", its capital_goods_data) of ONE component, scoring the pedigree data quality of every entry an operation touches.

Full description

Requires confirmation. Batch semantics: operations (1-50) are applied in order to the component as it is read, and written in ONE write behind ONE confirmation; if any operation is refused, nothing is written. Entries no operation names stay exactly as they are. At most one operation per entry. add: name, a source and either quantity or bound_node_id (a capital good always needs quantity); the server generates the entry id. A source is required on add: the tool never writes an unmatched entry. update: entry_id plus set { name, quantity, bound_node_id, conversion_factor, source, selection_method, assumptions, lifecycle_stage } and/or sources and/or ter_assessment; a source in set rebinds the entry to another dataset. remove: entry_id. lifecycle_stage (manufacturing entries only): material_sourcing reports the entry under Material Sourcing (A1-A2, scope 3), for a raw-material process such as smelting or refining; the default, component_manufacturing, reports it under Component Manufacturing. Not accepted for capital goods. Assumption text on an added or updated entry is turned into a structured calculation after the write (the response's calculations says what happened); pass sources (documents, citations or references) on an add or update to get its input values cited. Changing an entry's assumptions text keeps the calculation made for the old text as the superseded one. source is { lci_activity_id, reference_product_name, lci_source_id? } for an LCI dataset (ids from climatepoint_search_lci_datasets), or { custom_process_id } for one of the company's own factors (climatepoint_list_custom_processes, climatepoint_create_custom_process). Capital goods (array: "capital_goods"): quantity is the allocation quantity (stored as allocation_quantity); bound_node_id only chooses where the entry is shown; conversion_factor is not accepted; unbinding a capital good is not offered (use the whole-array writers climatepoint_update_component / climatepoint_update_variant_component). Manufacturing entries: a bound entry (bound_node_id) is sized as the part's kg divided by conversion_factor when the dataset unit is not kg, so binding an entry later via set.bound_node_id to a non-kg dataset needs set.conversion_factor. Technological representativeness (TeR) is scored by the server. ter_assessment is needed only once an earlier response in this session has reported a TeR fallback; until then the server scores TeR itself. A reported fallback is resolved by an update operation per named entry carrying only ter_assessment. ter (1-5), judged ONLY on technology: 1 = same process, same technology route, same product specification 2 = same process and technology route; generic or averaged rather than the specific product, or a different scale or technology generation within that route 3 = same process family, but a materially different formulation or a different technology route within it 4 = a related process standing in as a proxy: different technology, comparable function 5 = a different process used as a placeholder; representativeness not established Boundary: pigment, additive or colour differences within the same binder-and-carrier route stay at 2; a change of binder, carrier or cure mechanism is 3. Dataset age is not TeR; it is scored separately as TiR.

Parameters (7)
NameTypeRequiredDescription
product_idstringYesThe product that owns the component
variant_idstringNoVariant of the component; defaults to the primary variant
component_idstringYesThe component node whose process entries are edited
change_reasonstringNoWhy the entries change; recorded in the audit trail
operationsarray of anyYes1-50 operations, applied in order and written together. At most one operation per entry
convertbooleanNoDefault true: after the write, turn the assumption text of the entries added or updated into structured calculations (and cite them). false skips that step, e.g. for an edit that only re-scores (ter_assessment) or when the entry carries an analyst's calculation (climatepoint_set_calculations). Must match between the preview and the confirmed call.
confirm_tokenstringNoConfirmation token from the preview call. Omit on the first call.

Create Custom Process

Destructive

climatepoint_create_custom_process

Create one custom emission factor (a custom process) for the company that owns a product, so process entries can bind it as source.custom_process_id with climatepoint_edit_process_entries, and a use-phase energy item can bind it as custom_process_id with climatepoint_apply_use_phase_match (create those with lifecycle_category "use_phase"), and a material leaf can bind one as custom_process_id with climatepoint_apply_match_by_id when its lifecycle_category is material_sourcing, manufacturing, or unset.

Full description

Requires confirmation. activity_name, unit, gwp (kg CO2e per one unit), citation and reference_year are all required: reference_year is the data year of the factor and feeds the temporal data-quality score, so a factor without one is refused. Duplicate rule: activity names are unique per company and geography, case-insensitively. Re-sending a factor with the same activity_name, unit, gwp and reference_year creates nothing and returns the existing row with duplicate: true. Any other existing factor of that name and geography (another letter case, or a different unit, gwp or reference_year) is an error naming the existing ids: bind one of them, or choose a different activity_name. "kWh" and "MJ" are case-sensitive; any other casing is rejected. gwp_fossil, gwp_biogenic and gwp_luluc optionally record the ISO 14067 split of gwp; they are stored as given, are not checked against gwp, and are not part of the duplicate rule (a duplicate returns the stored row, split included). A duplicate whose sent split differs from the stored one also carries split_not_applied.

Parameters (18)
NameTypeRequiredDescription
product_idstringYesThe product whose company owns the new custom process (resolves the company)
activity_namestringYesName of the process or emission factor (max 300 characters). Unique per company and geography.
unitstringYesUnit the factor is expressed per, e.g. "kg", "tkm", "kWh". "kWh" and "MJ" are case-sensitive: any other casing is rejected.
gwpnumberYesGlobal warming potential in kg CO2e per one unit. Zero and negative values are allowed.
gwp_fossilnumberNoFossil part of gwp (ISO 14067), in kg CO2e per one unit. Negative values are allowed. Stored as given; not checked against gwp.
gwp_biogenicnumberNoBiogenic part of gwp (ISO 14067), in kg CO2e per one unit. Negative values are allowed. Stored as given; not checked against gwp.
gwp_lulucnumberNoLand use and land use change (LULUC) part of gwp (ISO 14067), in kg CO2e per one unit. Negative values are allowed. Stored as given; not checked against gwp.
citationstringYesSource of the factor (EPD, supplier declaration, report, URL). Required.
reference_yearintegerYesYear the factor data represents (1900 to the current year); feeds the temporal data-quality score.
geographystringNoGeography the factor applies to (default "GLO")
lifecycle_categorystringNoLifecycle stage (default "manufacturing")
One of: material_sourcing, manufacturing, use_phase, end_of_life
data_source_typestringNoKind of source: supplier_epd (a supplier EPD or declaration), industry_database, literature, internal_calculation, or estimate
One of: supplier_epd, industry_database, literature, internal_calculation, estimate
assumptionsstringNoAssumptions and system boundary of the factor
ghg_emissionsarray of objectNoPer-gas breakdown, stored as given: [{ ghg_code, quantity_kg, co2_eq_kg }]. No other keys.
gwp_ipcc_versionstringNoIPCC assessment report the gwp uses
One of: AR5, AR6
gwp_calculation_modestringNoWhether the gwp was entered by hand or calculated from ghg_emissions
One of: manual, calculated
energy_demandnumberNoEnergy demand per unit (default 0)
confirm_tokenstringNoConfirmation token from the preview call. Omit on the first call.

List Custom Processes

Read-only

climatepoint_list_custom_processes

List the custom emission factors (custom processes) of the company that owns a product, optionally filtered by a case-insensitive name substring (query) or a lifecycle_category.

Full description

Each row's id is what source.custom_process_id takes in climatepoint_edit_process_entries and what custom_process_id takes in climatepoint_apply_use_phase_match and climatepoint_apply_match_by_id (apply_match_by_id accepts a lifecycle_category of material_sourcing, manufacturing, or unset). Supports pagination via limit/offset and returns { total, has_more, rows }.

Parameters (5)
NameTypeRequiredDescription
product_idstringYesThe product whose company the custom processes belong to (resolves the company)
querystringNoCase-insensitive substring of the activity name
lifecycle_categorystringNoOnly processes of this lifecycle stage
One of: material_sourcing, manufacturing, use_phase, end_of_life
limitintegerNoMaximum items to return (default 50, max 200)
offsetintegerNoNumber of items to skip (default 0)

5. Life cycle stages

Model transport, distribution, use phase and end of life, per variant or as product-family defaults.

Suggest Component Locations

Destructive

climatepoint_suggest_transport

Get AI-suggested manufacturing/vendor/assembly locations for components missing location data: the first step of transport configuration, since distances (climatepoint_calculate_distance, climatepoint_calculate_transport) need both ends located.

Full description

Fetches the product's component nodes, identifies which ones lack locations based on their sourcing_data.type, then suggests locations for them. Only returns suggestions for components that actually need them. Pass auto_apply:true to also write the resolved locations to component_nodes.sourcing_data (chunked, merge-preserved — never clobbers existing locations/location_source/location_confidence). Default auto_apply:false = preview-only (no writes). AI suggestions are non-deterministic: re-running auto_apply:true on a node that still has an absent sub-field can write a different location, so the tool is marked non-idempotent; re-running over fully-populated nodes is a no-op (the filter admits none).

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
company_locationstringNoCompany location in "City, CC" or "City, State, CC" format (e.g. "Chicago, US" or "Macon, Georgia, US"). If not provided, falls back to the product's companyLocation, then to the owning company's companyLocation.
auto_applybooleanNoWhen true, write resolved locations to component_nodes.sourcing_data (chunked, merge-preserved). Default false = preview-only (no writes).

Calculate Distance

Read-only

climatepoint_calculate_distance

Calculate transport distance between two locations (both must be known; climatepoint_suggest_transport resolves missing ones).

Full description

Returns driving_km, maritime_km, air_km (great-circle air distance plus 95 km; port to port on a sea route, null when no sea distance resolved), route_mode, and fallback flags. Writes nothing: these distances are the distance_km values of climatepoint_configure_transport routes (air_km goes on a *_air leg).

Parameters (3)
NameTypeRequiredDescription
originstringYesOrigin location
destinationstringYesDestination location
modestringNoTransport mode (default: driving)

Calculate Transport

Destructive

climatepoint_calculate_transport

Compute transport legs + transport DQ for a product variant the same way the web app does: derives each node's origin/destination from its sourcing locations, resolves nearest ports + maritime/road/air distances, writes BOTH the mfg_vendor_* and vendor_user_* leg buckets, and computes dq_transport_*.

Full description

Default recomputes ALL eligible nodes (repairs bad/mis-prefixed legs), except groups with hand-set legs (below). AIR FREIGHT: when a component looks like high-value electronics on a sea route, the call writes NOTHING and returns status workflow_step_required / reason transport_mode_decision_required with candidates (maritime_km, air_km, indicative_kg_co2e) and a candidates_digest. Air or sea for each candidate is the user's decision: transport_modes=[{component_id, group, mode}] carries their answers (component_id and group copied from each candidate), or accept_suggested_modes=true plus the echoed candidates_digest records that they accept all. Nothing is stored until every candidate is answered, so each call must resend every earlier transport_modes entry. HAND-SET LEGS: a group (mfg_vendor or vendor_user) holding any leg with a positive distance_km and a distance_source other than ai_generated or default is left exactly as it is (distances, endpoints, LCI match, even when both ends are the same place) and is listed in skipped_groups; only a transport_modes entry naming that group recomputes it, and only a group that travels can be named. Every leg climatepoint_configure_transport writes with a positive distance carries distance_source user_estimate; a leg hand-built with climatepoint_update_component counts as hand-set only when it is written with a positive distance_km and a distance_source other than ai_generated or default. AIR SHARE: a group that is not hand-set and holds an air share ({group}_air_share, the fraction of the shipment flown, set in the app) is recomputed as a split: its surface leg (sea, or road on a drivable route) and its *_air leg both get fresh distances from the same route, and the share is kept unchanged. It is never an air/sea candidate; only a transport_modes entry naming the group settles it to a single mode, which ends the share. Each such group is listed in air_share_groups; applied false means the route returned no air distance and the stored air leg has none, so the shipment is priced at 100% sea or road until the *_air leg is set. For every other group: one whose mode the user chose in transport_modes (mode_source user_override) keeps that mode on every re-run unless a transport_modes entry names that group, but its distance and legs are recomputed. A group with no journey (no vendor location, an invalid location, or both ends the same place) has its main legs reset to zero but KEEPS that mode on the zeroed leg, so a later run in which it travels again writes that chosen mode rather than the route default. Under TRACI 2.2 air is unavailable: no suggestions, and mode "air" is rejected. A group with no distance for its mode (answered or route default) is left unchanged and listed in skipped_groups. On timed_out, only_missing=true continues from where the run stopped. This is the one-call path once locations are resolved (climatepoint_suggest_transport); climatepoint_configure_transport is the manual single-leg override.

Parameters (7)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
component_idstringNoOptional: recompute a single node. Omit to recompute all eligible nodes.
only_missingbooleanNoWhen true, skip nodes whose vendor_user_* bucket (air included) is already populated (default false = recompute all, which repairs bad legs).
transport_modesarray of objectNoThe user's air/sea answers to a transport_mode_decision_required step. Each call carries every earlier entry: nothing is stored until every candidate is answered. Each answered group is recorded as the user's choice (user_override), which later runs keep. mode "air" is rejected under TRACI 2.2.
accept_suggested_modesbooleanNotrue = the user accepted air for EVERY candidate in the last decision step. Requires candidates_digest from that step; if the candidates changed, a fresh decision step is returned and nothing is written.
candidates_digeststringNoEcho of candidates_digest from the transport_mode_decision_required step. Required with accept_suggested_modes.

Override Transport Leg

Destructive

climatepoint_configure_transport

Manual single-leg transport override — writes exactly the leg key specified to component_nodes.transport_data, for precise control over a specific leg.

Full description

The typical end-to-end transport setup is climatepoint_calculate_transport (it resolves locations, calculates distances, and picks the right leg automatically). This tool computes no distances: each route carries distance_km (from climatepoint_calculate_distance for its origin→destination pair, once climatepoint_suggest_transport has resolved the locations) with the explicit leg key, and this tool persists it. To configure transport for a benchmark variant, pass that benchmark's variant_id — otherwise routes target the primary variant. Distribution and end-of-life distances are not set here: compile reads them from the variant's distribution_lanes and avg_eol_distance_km, which climatepoint_set_variant_distances writes. In a study whose system boundary prices supply-chain transport (Cradle-to-Grave or Cradle-to-Gate; an unset boundary counts as Cradle-to-Grave), a route that writes a positive distance_km to the root's vendor_user_road_destination or vendor_user_road_domestic, ending away from the company location, carries a warning: root vendor_user_* legs are inbound (supplier to company) in the builder and the ISO report, so shipping to customers belongs in distribution lanes (climatepoint_set_variant_distances). The warning never blocks the write.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant. Pass a benchmark variant's id to configure routes on that benchmark variant's nodes.
routesarray of objectYesTransport routes to configure

Set Variant Distances

Destructive

climatepoint_set_variant_distances

Set a variant's own end-of-life transport distance (avg_eol_distance_km) and/or its distribution lanes (distribution_lanes) in one write.

Full description

Compile prices end-of-life transport ONLY from avg_eol_distance_km and distribution ONLY from distribution_lanes (or a legacy avg_user_distance_km, which this tool never writes), never from distance_km on a node's eol_transport or distribution_transport leg. Send either key or both; an omitted key is left as stored. For either key, null clears this variant's own value, so it inherits the product family's (benchmarks never inherit). variant_id defaults to the primary variant; pass a benchmark's variant_id to set its distances. END OF LIFE: avg_eol_distance_km is the average km to transport the product to an end-of-life facility; 0 records that there is no haul. The EOL row is priced with the eol_transport.lci_transport_match of the first top-level node that has one, else the lorry default. DISTRIBUTION: distribution_lanes replaces the variant's lanes whole; a stored lane you leave out is deleted. For a single distribution distance, send one lane with share 1. For several markets send one lane each: shares are fractions that sum to 1 (±0.001), at most 6 lanes, one main leg (distribution_maritime, distribution_air or distribution_road_domestic) per lane, plus optional distribution_road_origin and distribution_road_destination legs. lanes: [] records that this variant has no distribution. Distances come from climatepoint_calculate_distance: driving_km.direct on distribution_road_domestic, driving_km.origin_to_port on distribution_road_origin, driving_km.destination_to_port on distribution_road_destination, maritime_km on distribution_maritime, air_km on distribution_air. Send no dataset: this tool attaches each positive leg's default LCI match (a lorry located by the two-letter country code ending the leg's origin_location, or its destination_location on distribution_road_destination; container ship and aircraft at GLO) to a new or changed leg that keeps no stored match, so such a leg needs origin_location and destination_location ("City, CC"), except a re-sent builder manual leg (below). RE-SENDING LANES: a lane's id is at after.distribution_lanes.lanes[].id in this tool's response and at variant.distances.distribution_lanes.lanes[].id in climatepoint_get_variant_structure; a lane sent without id is new. A re-sent lane (same id) keeps a leg's stored match while its key and endpoints are unchanged (origin_location and destination_location; absent equals absent), even when its distance_km changes to another value above 0 (a leg changed to 0 km carries none), and a leg whose distance and endpoints are all unchanged is kept exactly as stored. An unchanged positive leg with no stored match stays without one; compile prices it with its mode's default factor. So does a builder manual leg (stored with no origin_location, no destination_location and no match) re-sent with a new distance_km and still neither endpoint, so it needs no endpoints; any other new or changed positive leg that keeps no stored match still needs both. A kept lane keeps its stored destination and rationale when you omit them; omitting them never clears them. Writing distribution_lanes, or null, also clears this variant's legacy avg_user_distance_km in the same write; the response reports a cleared value as cleared_avg_user_distance_km. Under TRACI 2.2 the call is refused when any written lane has a positive distribution_air leg, a re-sent stored one included, and the error names those lanes; use distribution_maritime or distribution_road_domestic instead. The response gives before, after and effective distances (effective is what compile will use after family inheritance; a leg shows its dataset by name only) and may carry warnings with code root_outbound_legs: in a study whose system boundary prices supply-chain transport (Cradle-to-Grave or Cradle-to-Gate; an unset boundary counts as Cradle-to-Grave), a root's outbound vendor_user legs would also be priced, so distribution would be counted twice.

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to the primary variant. Pass a benchmark variant's id to set that benchmark's distances.
avg_eol_distance_kmnumber | nullNoAverage km to transport the product to an end-of-life facility; 0 records that there is no haul. null clears this variant's own value (it inherits the family's, except on a benchmark). Omit to leave it unchanged.
distribution_lanesobject | nullNoReplaces this variant's lanes whole. null clears them (and any legacy avg_user_distance_km), so the variant inherits the family's distribution, except on a benchmark. Omit to leave them unchanged.

Suggest Use-Phase Energy

Read-only

climatepoint_suggest_use_phase_energy

Get AI-suggested use phase energy consumption for a product

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
product_namestringYesProduct name
product_descriptionstringNoProduct description for better suggestions
functional_unitobjectNoOptional functional unit override. When omitted, the product's saved functional unit is attached automatically.

Configure Use Phase

Destructive

climatepoint_configure_use_phase

Configure use phase energy consumption for a product.

Full description

Merges by exact product_name into the variant's use_phase_energy list; passing null for a carrier clears it (electricity becomes 0, fuel key is removed). Removes are exact-name only. Quantities are totals for one functional unit (see electricity_use_kWh_per_use). The response lists merge and duplicate-name warnings and plausibility warnings (unit-scale slips, implausible annual rates, a match with no quantity). Warnings are returned in this response only and never block the write.

Parameters (5)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to primary variant
energy_itemsarray of objectNoEnergy items to add or update by exact product_name (omit if only removing)
remove_product_namesarray of stringNoExact product_names of use-phase energy items to delete from the variant (applied before energy_items)
convertbooleanNoDefault true: after the write, turn the named items' assumption text into structured calculations. false skips that step.

Get Use-Phase Items

Read-only

climatepoint_get_use_phase

Read one variant's use-phase energy items (primary variant when variant_id is omitted): per item its quantities, fuel_type, geography, assumptions text, the electricity / fuel / process / combustion matches by id, name, unit and lci_source_id (no emission factor, except factor_kg_co2e_per_unit on a company custom process), the state of its calculation, and an md5 of the stored item.

Full description

items_md5 is the md5 of the whole stored use_phase_energy array.

Parameters (2)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant ID; defaults to the primary variant

Apply Use-Phase Match

Destructive

climatepoint_apply_use_phase_match

Persist a chosen LCI activity as the electricity, fuel or (generic process items only) process match on a use-phase energy item, so it contributes to compiled use-phase emissions.

Full description

Candidates come from climatepoint_match_single_component (lifecycle_context "use_phase"); the chosen candidate's id is activity_id, passed with its lci_source_id (ids from some sources are otherwise looked up in the wrong source). The response may carry unit_warning / cross_kind_warning — non-blocking, but review them. Or bind one of the company's own custom processes by passing custom_process_id instead of activity_id + reference_product_name (exactly one source; climatepoint_list_custom_processes / climatepoint_create_custom_process). A custom process of another company, or a deleted one, is refused. It is written exactly as the web app writes it: selected_<kind>_match, selected_<kind>_match_id, and merged by id into <kind>_matches. Custom-process responses may also carry category_warning; fuel binds may carry fuel_superseded_warning.

Parameters (8)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoVariant ID; omit for the primary variant
item_idstringYesThe use_phase_energy item_id to update
energy_kindstringYesWhich slot to write: electricity (selected_electricity_match, electricity_use_kWh_per_use), fuel (selected_fuel_match, fuel_use_kg_per_use), or process (selected_process_match, process_quantity; only items created as generic processes in the web app).
One of: electricity, fuel, process
activity_idstringNoLCI activity id — the candidate's id from match_single_component. Omit when passing custom_process_id.
reference_product_namestringNoReference product name (disambiguates co-product allocation). Omit when passing custom_process_id.
lci_source_idstringNoLCI source the activity_id belongs to: pass the lci_source_id of the search hit you are applying (suggestions[].lci_source_id from match_single_component; results[].lci_source_id from search_lci_datasets). If omitted, the tool tries to resolve the source itself and either succeeds (response carries lci_source_id_auto_resolved) or errors — passing it explicitly is faster and unambiguous. Live-query sources (openepd_v2) cannot be applied by id.
One of: ecoinvent_3_11, ecoinvent_3_12, uslci_traci22, openepd_v2
custom_process_idstringNoId of one of the company's own custom processes (climatepoint_list_custom_processes, climatepoint_create_custom_process). Pass it instead of activity_id + reference_product_name.

Convert Assumptions to Calculations

Destructive

climatepoint_convert_assumptions

Turn assumption text into structured calculations and cite their input variables, for the use-phase items (use_phase_energy), manufacturing processes (manufacturing_process_data) and capital goods (capital_goods_data) of a product.

Full description

climatepoint_configure_use_phase, climatepoint_edit_process_entries and climatepoint_match_manufacturing_processes already do this for what they write; this tool covers the rest: calculations one of their responses reported as pending or failed with a next_step naming it, applying sources after the fact (targets[].sources: stored on the entry, and a current calculation is re-cited), with recite: true to re-cite current calculations whose inputs are still uncited (e.g. after a period when citations were unavailable, warning citations_unavailable), or to backfill a product. Without targets every assumption text of the product (or of variant_id) is in scope; targets (at most 50) narrows it to named entries. At most 25 texts are converted per call; when more remain the response carries next_cursor; each call with cursor set to it, unchanged, continues the run, which is done when no next_cursor is returned. Calculations an analyst made from older text are left alone and counted (stale_skipped); include_stale: true converts them too, replacing the analyst's work — the user's decision, so it always takes a confirmation (see below). Requires confirmation: the first call returns a preview with counts and a confirmation_token; a second call with the same arguments and confirm_token set to it runs the conversion. Under a session grant (climatepoint_authorize_gated_session) it runs without one, except with include_stale: true, which always needs a confirmation. The response is a summary of names, positions, counts and codes, never values. Assumption text is turned into a structured calculation automatically, and an input variable is cited when the text names its source next to the value or the source is passed. A client document is citable once uploaded with climatepoint_upload_document, either named next to the value (e.g. "1.5 kW (Source: Supplier_TestReport.pdf, p. 3)") or passed in sources.

Parameters (7)
NameTypeRequiredDescription
product_idstringYesThe product whose assumption texts are converted
variant_idstringNoOnly this variant of the product. Default: every variant of the product
targetsarray of anyNoAt most 50 entries to convert, each { location: "use_phase", variant_id, item_id } or { location: "manufacturing" | "capital_goods", component_id, entry_id }, with optional sources that are stored on the entry and used to cite it (an entry whose calculation is current is re-cited). Omit to take every assumption text in scope (the backfill case)
include_stalebooleanNoAlso convert calculations an analyst made from older text, replacing their work (default false). It always needs a confirmation, even under a session grant
recitebooleanNoAlso re-cite current calculations that still have uncited input variables (default false), e.g. after a period when citations were unavailable
cursorstringNonext_cursor from an earlier call, exactly as returned: continue from where it stopped
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Set Calculations

Destructive

climatepoint_set_calculations

Write an analyst's structured calculation onto use-phase items, manufacturing processes or capital goods (at most 20 targets), the calculator the web app shows beside the assumption text.

Full description

Every target is validated before anything is written, all or nothing: the builder's own formula evaluator recomputes every block and each computed variable's value must equal what its formula gives; the result variable (the last computed variable of the last block) must equal the entry quantity (use phase: the field the item's branch reads, e.g. electricity_use_kWh_per_use; manufacturing: quantity; capital goods: allocation_quantity), or with set_quantity: true it becomes the quantity; every citationId must be in the product's citation library (climatepoint_add_citations). The calculation is stored marked generatedBy "analyst" and current for the entry's assumption text, so the automatic conversion leaves it alone until the text changes. calculation: null moves the stored calculation to superseded (the web app's undo copy). Two calls: without confirm_token it writes nothing and returns before, after, diff, current_md5 and a confirmation_token; confirm with the same arguments plus confirm_token and expected_md5 = current_md5. If an entry changed in between the call returns STATE_CHANGED and writes nothing. A saved response returns the read-back value, new_md5 and prior_value per target; undo by sending each target with restore = its prior_value and expected_md5 = new_md5.

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
targetsarray of objectYesThe entries to write (1 to 20)
expected_md5stringNoRequired with confirm_token: the current_md5 the preview returned (new_md5 when undoing).
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

List Citations

Read-only

climatepoint_list_citations

List the product's citation library (product_citations): the rows the report bibliography prints and that calculation variables cite by citationId.

Full description

Each row has its APA text and parts, plus cited_by (entries whose current calculation cites it, across every variant's use-phase items, manufacturing processes and capital goods), cited_by_superseded (the same over superseded calculations kept for undo) and custom_processes (custom processes pointing at it).

Parameters (1)
NameTypeRequiredDescription
product_idstringYesThe product ID

Add Citations

Write

climatepoint_add_citations

Add citations (at most 50) to the product's citation library; the report bibliography follows automatically.

Full description

Idempotent: a citation whose apa_text, or whose url, is already in the library is returned as existing with its id instead of being duplicated, so the returned ids can go straight into calculation variables (climatepoint_set_calculations). Requires confirmation: the first call returns which would be new and a confirmation_token; a second call with the same arguments and confirm_token adds them. When every citation already exists it answers changed: false with their ids and no token. Under a session grant (climatepoint_authorize_gated_session) it runs without the confirmation.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
citationsarray of objectYesThe citations to add (1 to 50)
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Remove Citations

Destructive

climatepoint_remove_citations

Remove citations (at most 50, by id from climatepoint_list_citations) from the product's library; they leave the report bibliography.

Full description

Refuses the whole call (CITATION_IN_USE, with the citing entries counted across every variant) when a current calculation variable cites one or a custom process points at one, and (CITATION_NOT_FOUND) when an id is not in this product's library. Requires confirmation: the first call lists the rows and returns a confirmation_token; a second call with the same arguments and confirm_token removes them. Never covered by a session grant.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
citation_idsarray of stringYesCitation ids from climatepoint_list_citations (1 to 50)
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Run End-of-Life Workflow

Destructive

climatepoint_run_eol_workflow

Run the End-of-Life analysis workflow on a product or a single variant.

Full description

PRODUCT-WIDE when variant_id is omitted (affects all variants); VARIANT-SCOPED when variant_id is provided (only that variant's component_nodes are classified and persisted). In auto mode classifies waste, allocates treatments, and atomically persists results. In draft mode stops at draft for review via override tools. Requires confirm_token on first call (AI cost gate).

Parameters (6)
NameTypeRequiredDescription
product_idstringYesProduct to run EOL workflow on
variant_idstringNoOptional variant ID to scope the workflow to a single variant (e.g. a benchmark). Omit to run across all variants of the product.
modestringNoauto = classify+allocate+persist; draft = stop after allocation for human override (default: auto)
One of: draft, auto
idempotency_keystringYesCaller-generated key; identical key returns cached run
optionsobjectNoOptional knobs (e.g., region override)
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Override Component Treatment

Write

climatepoint_override_component_treatment

Override the auto-allocated treatment breakdown for a single component in an in-progress EOL workflow draft. Requires the workflow to be in draft_ready status. Reversible — no confirmation required.

Parameters (4)
NameTypeRequiredDescription
workflow_run_idstringYesWorkflow run ID from run_eol_workflow (must be in draft_ready status)
idempotency_keystringYesCaller-generated key for this override operation
component_idstringYesThe component_nodes ID whose treatment is being overridden
treatment_breakdownsarray of objectYesNew treatment breakdowns; percentages must sum to ~100 (within 5pp tolerance, enforced client-side)

Regroup End-of-Life Components

Write

climatepoint_regroup_components

Assign or clear the manufactured_group_id and group_name on a set of components in an in-progress EOL workflow draft. Pass nulls for manufactured_group_id and group_name to ungroup. Requires the workflow to be in draft_ready status. Reversible — no confirmation required.

Parameters (5)
NameTypeRequiredDescription
workflow_run_idstringYesWorkflow run ID from run_eol_workflow (must be in draft_ready status)
idempotency_keystringYesCaller-generated key for this regroup operation; reusing the same key returns the existing draft state without re-applying
manufactured_group_idstring | nullYesGroup identifier to assign, or null to ungroup the listed components
group_namestring | nullYesHuman-readable group label, or null to ungroup
component_idsarray of stringYesComponents to regroup; must all be present in the draft

Commit End-of-Life Draft

Destructive

climatepoint_commit_eol_draft

⚠️ DESTRUCTIVE: Atomically promote an in-progress EOL workflow draft into the product's persisted End-of-Life data. Overwrites prior treatments for every component in the draft. Requires confirm_token issued by a prior call without it. Token is single-use, 5-minute expiry, and bound to the exact workflow_run_id + result_summary submitted; reusing it or changing those params invalidates it.

Parameters (3)
NameTypeRequiredDescription
workflow_run_idstringYesWorkflow run ID from run_eol_workflow (must be in draft_ready status)
result_summaryobjectNoOptional metadata to attach to the workflow run record
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Analyze End of Life (Deprecated)

Destructive

climatepoint_analyze_eol

[DEPRECATED — superseded by climatepoint_run_eol_workflow. analyze_eol only returns classification suggestions and does not persist; run_eol_workflow handles classify+allocate+persist end-to-end.] Analyze end-of-life treatment options for product components (expensive). Requires confirmation.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
componentsarray of objectYesComponents to analyze
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Get Family Lifecycle Defaults

Read-only

climatepoint_get_family_lifecycle_defaults

Get lifecycle defaults (manufacturing, transport, use phase, EOL) for a product family

Parameters (1)
NameTypeRequiredDescription
product_idstringYesThe product ID

Set Family Lifecycle Defaults

Destructive

climatepoint_set_family_lifecycle_defaults

Set lifecycle defaults for a product family. Requires confirmation. Transport defaults choose road, sea or air through leg_key, with at most one main leg per group.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
defaultsobjectYesLifecycle stage defaults. Only the four named stages are accepted.
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

6. Results & improvement

Compile results, read the impact summary and hotspots, compare against benchmarks and look for improvements.

Calculate Variant Impact

Destructive

climatepoint_calculate_variant_impact

Compile full LCA results for a product variant.

Full description

Computes preliminary_results across selected impact categories and stores them on the product. By default it also generates the product LCA report on first compile (when none exists) and preserves existing report text on recompiles; pass mode to override. Note: report generation is product-level and rebuilds the whole product report. Gated operation. On success, the response includes an lca_report_url (the user-facing report link) when a report exists; otherwise an lca_report_note explains how to create one. The call waits at most ~40 s for the compile (a regenerate_report compile can take ~150 s). A compile still running then returns status "running" (compilation_status "running") with started_at and a poll block; the compile is not cancelled and saves its results server-side. climatepoint_get_report reports its progress in compile_run ("running", or "finished" with result holding the response this call would have returned) and in compiled_at. While a compile for the product is running, a further confirmed call starts no second compile and returns the same running status (already_running: true). Enforces eleven hard pre-flight checks before compiling: (1) the variant must have a BoM; (2) the ROOT component must define lifetime output — initial_mass for a consumable root (auto-filled from the FU) or amortization params for a durable/reusable root; nested parts inherit and need none (climatepoint_set_lifetime_parameters sets the root's); (3) benchmark variants that exist need BoMs, unless acknowledge_benchmarks_skipped=true records that the user declined to build them; a product with NO benchmark variants at all (a non-comparative study) also needs acknowledge_benchmarks_skipped=true, recording that the user confirmed the study is non-comparative; (4) every leaf must carry a usable material LCI coefficient (set by climatepoint_match_variant_materials) OR pass acknowledge_materials_unmatched_skipped=true; (5) every matched leaf must resolve to a NONZERO Material Sourcing contribution — a leaf can pass check (4) and still compile to 0.00 kg CO2e from a missing/zero BOM weight, an explicitly-zero units count, a study/match method disagreement, an unconvertible match unit, or a genuinely-zero coefficient (the reported zero_reason points to climatepoint_update_component, climatepoint_compliance_check, or climatepoint_match_single_component) OR pass acknowledge_zero_contribution_skipped=true; (6) at least one component must have transport_data (written by climatepoint_calculate_transport or climatepoint_configure_transport); (7) every leaf must have eol_analysis_data (written by climatepoint_run_eol_workflow) OR pass acknowledge_eol_skipped=true; (8) every configured use-phase energy input must carry an LCI match OR pass acknowledge_use_phase_unmatched_skipped=true; (9) the product must have a committed functional unit (products.functionalUnit, committed by climatepoint_update_product_scope) — no acknowledgement bypasses this; (10) every root lifetime parameter value must be a finite number and their product > 0 — no acknowledgement bypasses this; (11) the root lifetime output unit must be the functional unit's unit OR pass acknowledge_fu_basis_mismatch=true, recording that the user accepted the basis (per-FU figures are the life-cycle total divided by the root lifetime output). Gates 4-8 apply only when the study system boundary includes the relevant stage. Two non-blocking distance_advisories may appear on the preview and the compile response: eol_distance_missing and distribution_missing (EOL or distribution transport would compile at 0 km); climatepoint_set_variant_distances sets those distances.

Parameters (10)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant UUID; defaults to primary variant
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.
modestringNoControls report generation. 'regenerate_report' compiles emissions AND regenerates the product LCA report (all report sections), OVERWRITING any existing report text and manual edits. 'compile_only' recomputes emission numbers only and preserves report text (cheaper). Omit to auto-select: regenerate_report when no report exists yet, compile_only when a report already exists. The report is product-level, so regeneration rebuilds the WHOLE product report, not just this variant. On the confirmed call, echo the resolved_mode from the confirmation response.
One of: compile_only, regenerate_report
acknowledge_benchmarks_skippedbooleanNotrue = the user gave an explicit answer: either they declined to build BoMs for benchmark variants that lack them, or, when the product has no benchmark variants at all, they confirmed a non-comparative study. Without this flag, calculation refuses in both cases, because the decision is the user's.
acknowledge_eol_skippedbooleanNotrue = the user, asked whether to run the EOL workflow, declined. Also intended for rollback, testing, or legacy variants configured before EOL became a required gate. Lifecycle totals will exclude End-of-Life emissions when bypassed.
acknowledge_use_phase_unmatched_skippedbooleanNotrue = the user, asked whether to match the use-phase energy inputs, declined. Use-phase electricity/fuel/process inputs will be EXCLUDED from totals and no data-gap is recorded. Intended otherwise for rollback or testing only.
acknowledge_materials_unmatched_skippedbooleanNotrue = the user, asked whether to match the unmatched material leaves, declined, or no finite-GWP dataset exists for them. Those leaf inputs contribute 0.00 kg CO2e to Material Sourcing, so the lifecycle total is UNDERSTATED — an ISO 14044 cut-off that must be declared in the study.
acknowledge_zero_contribution_skippedbooleanNotrue = the user explicitly confirmed bypassing the zero-contribution gate. The listed leaves contribute 0.00 kg CO2e; this is an ISO 14044 cut-off and must be declared in the study.
acknowledge_fu_basis_mismatchbooleanNotrue = the user, asked about the basis, gave an explicit answer accepting it. Per-FU figures are the life-cycle total divided by the root lifetime output, so they are per ONE unit of that output; this confirms the user accepts that basis although the functional unit does not name it (or it could not be verified). The alternative fixes are the root lifetime parameters (climatepoint_set_lifetime_parameters), or, when they resolve to a unit the functional unit does not name, the functional unit (climatepoint_update_product_scope).

Get Impact Summary

Read-only

climatepoint_get_impact_summary

Get cached GWP impact summary for a product.

Full description

Defaults to JSON; pass response_format="markdown" for a human-readable table per variant. precision="full" returns totals unrounded (default rounds the total to 2 dp); include_line_items=true adds each variant's GWP line items as result values only (component_id, description, life_cycle_stage, kg_co2e rounded to 2 dp), never a quantity, unit or dataset, plus line_items_md5 over the unrounded values.

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
response_formatstringNoOutput rendering: 'json' for machine-readable, 'markdown' for human-readable. Defaults to the tool's natural format.
One of: json, markdown
precisionstringNo"rounded" (default) rounds each variant total to 2 dp; "full" returns the raw sum of the stored line items, so it can be reconciled exactly against a report
One of: rounded, full
include_line_itemsbooleanNoWhen true, each variant adds line_items: one { component_id, description, life_cycle_stage, kg_co2e } per stored GWP line item, kg_co2e rounded to 2 dp whatever precision says (an unrounded row over its entry quantity would give the LCI factor back), plus line_items_md5: the md5 of the unrounded items, equal across two reads when no line item moved. component_id is null on a legacy compile. Default false

Show Impact Sunburst

Read-only

climatepoint_view_impact_sunburst

Show the product’s GWP breakdown as the interactive impact sunburst from the LCA report. Hosts that support MCP Apps display the chart inline; the model receives the total and the top contributors.

Parameters (2)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoA benchmark variant ID; omit for the primary product

Identify Hotspots

Read-only

climatepoint_identify_hotspots

Identify top GWP hotspot components in a product variant

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idstringNoOptional variant slug (e.g. "primary_product", "benchmark_2") OR variant UUID; defaults to primary_product. Node-level data (held_components, component_node_ids) is only returned when a variant UUID is passed — a slug yields GWP ranking only, to avoid emitting node IDs from the wrong variant. GWP ranking: a slug or the primary variant's UUID always returns it; a non-primary UUID returns GWP only when the UUID maps uniquely to a results slug, otherwise GWP is withheld with a warning (never the primary variant's ranking served under another variant's label).
top_nintegerNoNumber of top hotspots to return (default: 10)

Compare Variants

Write

climatepoint_compare_variants

Compare GWP impact across the product's compiled variants. SCOPE: the comparison is always the primary product vs ALL compiled benchmark variants; variant_ids does not select a subset today. Returns workflow guidance instead of an error when the primary or every benchmark is uncompiled.

Parameters (2)
NameTypeRequiredDescription
product_idstringYesThe product ID
variant_idsarray of stringYesAt least 2 variant IDs belonging to this product (include the primary). Non-member ids are reported back in ignored_non_member_ids and do not block the call, and are NOT used to select which variants are compared — see the tool description.

Create Benchmark Variant

Write

climatepoint_create_variant

Create a benchmark variant by cloning the primary structure

Parameters (2)
NameTypeRequiredDescription
product_idstringYesThe product ID
namestringYesVariant name

Select Benchmarks

Destructive

climatepoint_select_benchmarks

Activate specific benchmark variants for a product and deactivate all others. Requires confirmation. Activation does not build BoMs: each activated benchmark variant needs its own BoM (climatepoint_generate_bom with that variant_id) before variants can be compared.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
include_benchmark_variant_idsarray of stringYesBenchmark variant IDs to activate
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Retry Benchmark Preparation

Destructive

climatepoint_retry_benchmark_preparation

Retry benchmark preparation for a failed/pending benchmark variant. Only works on benchmark variants (not primary).

Parameters (1)
NameTypeRequiredDescription
variant_idstringYesThe benchmark variant ID to retry

Research Alternatives

Read-only

climatepoint_research_alternatives

Research alternative materials or components via LCI activity search (sources scoped to your plan)

Parameters (3)
NameTypeRequiredDescription
component_namestringYesComponent name to research
materialstringNoCurrent material
criteriastringNoResearch criteria or constraints

Suggest Improvements

Write

climatepoint_suggest_improvements

Get AI-suggested improvements to reduce environmental impact

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID
hotspotsarray of objectNoHotspot components to focus improvements on
focus_areastringNoSpecific area to focus on (e.g. "packaging", "transport")

7. Reports & projections

Generate and read the ISO-style LCA report and the executive report, and manage sales projections.

Generate LCA Report

Destructive

climatepoint_generate_lca_report

Generate (or REGENERATE) the ISO-style product LCA report — the report the LCA viewer and climatepoint_get_report read.

Full description

Product-level: rebuilds the WHOLE product report (all variants) and OVERWRITES existing report text and manual edits. Requires compiled LCA results — a product that has never compiled has none until climatepoint_calculate_variant_impact runs (it enforces the full pre-flight checks and auto-generates this report on first compile). Same compile as climatepoint_calculate_variant_impact with mode=regenerate_report. Gated operation (confirmation required). NOT the same as climatepoint_generate_report, which writes the legacy executive narrative. The recompile covers every included variant, so three of calculate_variant_impact's pre-flight checks run here: (9) the product must have a committed functional unit (products.functionalUnit, committed by climatepoint_update_product_scope) — no acknowledgement bypasses this; and on each variant's root, (10) every root lifetime parameter value must be a finite number and their product > 0 — no acknowledgement bypasses this; (11) the root lifetime output unit must be the functional unit's unit OR pass acknowledge_fu_basis_mismatch=true, recording that the user accepted the basis. When the study has ISO compliance enabled, the ISO study fields that print into the report are checked against the model (reason iso_methodology_review_required): methodology complete and study reasons non-empty — no acknowledgement bypasses this; the declared allocation matches the components' applied allocation, the characterisation label matches the compiled method, and the cut-off is within the framework's per-flow maximum — climatepoint_compliance_check action="set_methodology" fixes them, OR acknowledge_iso_methodology=true records that the user accepted the mismatch.

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID. The LCA report is product-level — there is no variant_id.
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.
acknowledge_fu_basis_mismatchbooleanNotrue = the user, asked about the basis, gave an explicit answer accepting it. Per-FU figures are the life-cycle total divided by the root lifetime output, so they are per ONE unit of that output; this confirms the user accepts that basis on every variant the recompile covers although the functional unit does not name it (or it could not be verified). The alternative fix is the root lifetime parameters (climatepoint_set_lifetime_parameters). It is required again on the confirmed call.
acknowledge_iso_methodologybooleanNotrue = the user, shown the iso_methodology_review_required findings (with the allocation justification quoted), gave an explicit answer that the stored ISO study fields are correct as they are. Clears only the contradiction findings (allocation, characterisation, cut-off), never missing fields. The alternative fix is climatepoint_compliance_check action="set_methodology". It is required again on the confirmed call.

Get Report

Read-only

climatepoint_get_report

Get report content for a product.

Full description

Report state is PRODUCT-level: it reads the ISO LCA report, falling back to the legacy executive report. Defaults to JSON; pass response_format="markdown" for a sectioned human-readable view. Returns a section index only; pass include_content=true for full section text (large). Also reports compile progress: compiled_at (when compiled results were last saved) and compile_run, the latest climatepoint_calculate_variant_impact compile this server started for the product (running, or finished with its result; kept 30 minutes). fields returns named stored values raw (unparsed) with an md5 each, e.g. reports.limitations as its stored text.

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
response_formatstringNoOutput rendering: 'json' for machine-readable, 'markdown' for human-readable. Defaults to the tool's natural format.
One of: json, markdown
include_contentbooleanNoReturn full report section text (large — ~25 KB typical). Default false returns only the section index.
fieldsarray of stringNoStored fields to return raw, each as { value, md5 } under fields. All are reports columns except scope_ai_message (products.scopeAiMessage). md5 of a text value equals Postgres md5(column); a JSON value hashes its key-sorted JSON; an absent value (or no reports row) is null with the md5 of "null".
One of: limitations, bibliography, process_descriptions, goal_scope_front, goal_scope_back, functional_unit_back, lifetime_back, gwp_insights, ai_generated_at, version, updated_at, scope_ai_message

Get Report Access

Read-only

climatepoint_get_report_access

Who can reach a product's report and who has asked to: the company shares that grant this product (lca_report, lca_wizard, preinvestment_report or lci_excel true for it; product owner, company owner or admin only) and every share request for it, each with its email domain only, never a full address.

Full description

Rows are { kind: company_share | share_request, email_domain, permissions, created_at }, plus is_onboarding_grant on a company share and status, expires_at and requester_email_domain on a share request; summary counts each kind and the requests by status. Read-only.

Parameters (1)
NameTypeRequiredDescription
product_idstringYesThe product ID

Set Report Limitations

Destructive

climatepoint_set_report_limitations

Write the Limitations section of the ISO report (reports.limitations).

Full description

High and Medium items print in the report; Low items are stored but not printed. mode "append" adds to the stored items (either stored shape is read), "replace" stores exactly the items sent (an empty list stores [], which the web app regenerates on its next open). Always stores a JSON array, each new item marked origin "analyst". Two calls: without confirm_token it writes nothing and returns before, after, diff, current_md5 and a confirmation_token; confirm with the same arguments plus confirm_token and expected_md5 = current_md5. If the stored value changed in between the call returns STATE_CHANGED and writes nothing. A saved response returns the read-back value, new_md5, prior_value and prior_md5; undo by calling with raw_value = prior_value and expected_md5 = new_md5. Refuses with NO_REPORT_ROW when the product has no reports row (it never inserts one).

Parameters (6)
NameTypeRequiredDescription
product_idstringYesThe product ID (reports.id)
modestringNoreplace or append. Required with items; omit with raw_value.
One of: replace, append
itemsarray of objectNoThe items (0 to 50; at least 1 for append)
raw_valuestring | nullNoUndo only: an exact stored text to restore (prior_value from a saved response), or null. Not with mode or items.
expected_md5stringNoRequired with confirm_token: the current_md5 the preview returned (new_md5 when undoing).
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Get Report Analyst Annex

Read-only

climatepoint_get_report_annex

Read the analyst annex of a product's LCA report: free analyst text stored on the report and printed as Appendix G ("Appendix G: <title>", default title "Analyst Annex") of the ISO 14067 / EBC PDF exports.

Full description

Returns exists, title, body (markdown subset: headings, paragraphs, **bold**, *italic*, lists, pipe tables), include, updated_at, updated_by, content_hash, and prints (true only when an annex exists, include is true and the body is not blank). The body cites sources with [@<citation id>] markers (several as [@id1; @id2]); each id must be a row of the product's bibliography (product_citations). citations lists each cited id with resolved and its apa_text; unresolved_citation_ids are ids the export will refuse. A product with no report returns exists=false with a note to generate the report first. Write the annex with climatepoint_set_report_annex.

Parameters (1)
NameTypeRequiredDescription
product_idstringYesThe product ID

Set Report Analyst Annex

Destructive

climatepoint_set_report_annex

Write, replace or delete the analyst annex of a product's LCA report, printed as Appendix G of the ISO 14067 / EBC PDF exports.

Full description

The report must already exist (climatepoint_generate_lca_report). Omitted fields keep their current value; a new annex needs body; include defaults to false for a new annex, and NOTHING PRINTS unless include is true (and the body is not blank). clear=true deletes the annex. Body is a markdown subset (headings, paragraphs, **bold**, *italic*, bulleted and numbered lists, pipe tables; no HTML, images or links). Cite sources with [@<citation id>] markers, several as [@id1; @id2]: ids come from the product's bibliography (product_citations); the export prints each as its Appendix C number, and refuses to render while any cited id is not in the bibliography (returned as unresolved_citation_ids). Confirmation required: the first call (no confirm_token) writes nothing and returns the before/after (title, include, body length, and the full new body), which the user reviews, and a confirmation_token; a second call with the same arguments and confirm_token saves it. If the annex changed in between (e.g. edited in the web app), the save is refused with ANNEX_CHANGED and a fresh preview. changed=false (no token) means the annex already holds these values.

Parameters (6)
NameTypeRequiredDescription
product_idstringYesThe product ID
titlestringNoAnnex title (≤200 chars, trimmed); blank prints as "Analyst Annex". Omit to keep the current one
bodystringNoAnnex body, markdown subset (≤100000 chars), with [@<citation id>] markers. Required for a new annex; omit to keep the current one
includebooleanNoPrint the annex as Appendix G. Defaults to false for a new annex; omit to keep the current value
clearbooleanNotrue deletes the annex (send no title, body or include with it)
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Preview ISO Report

Read-only

climatepoint_preview_iso_report

Render the ISO 14067 report document for a product, the same data fetch and template as the web app's ISO PDF export, and return it as plain text (default) or HTML.

Full description

Read-only: it stops before the PDF service, so it writes nothing and uses no PDF credit; charts are not drawn. Each call counts against the report service's ISO export rate limit. Sections are keyed by their printed number ("1", "4.1", "7.5.1"), "front" for the cover and contents, "appendices" and an appendix letter ("C"). sections narrows the output and the hits to those sections and their subsections; find counts each string (case-sensitive) and lists the sections it occurs in; offset and limit page the returned text, with next_offset while more remains. Returns template, report_profile, rendered_at, length, text or html, hits and sections_available.

Parameters (6)
NameTypeRequiredDescription
product_idstringYesThe product ID
formatstringNo"text" (default): the document as plain text. "html": the rendered markup.
One of: text, html
sectionsarray of stringNoSection keys to return, e.g. ["1", "2.2", "4.1", "C"]. A key includes its subsections. Default: the whole document.
findarray of stringNoUp to 50 strings to count in the text, case-sensitive. Each hit lists its count and section keys.
offsetintegerNoCharacter offset into the returned text or HTML. Default 0.
limitintegerNoMaximum characters returned. Default 40000, maximum 200000.

Generate Executive Report

Write

climatepoint_generate_report

Generate the EXECUTIVE / pre-investment narrative report for a product (async, expensive; requires confirmation).

Full description

Writes the legacy executive report. This is NOT the ISO LCA report: it never changes the ISO LCA report and does not satisfy the LCA report viewer. The ISO LCA report comes from climatepoint_generate_lca_report (or climatepoint_calculate_variant_impact, whose default mode generates it on first compile). Stored sales projections are required as a workflow-completeness guard because other reports and charts read them. climatepoint_set_projections stores them (climatepoint_upload_projections_file parses an uploaded file). Without stored projections the call fails with PROJECTIONS_REQUIRED unless allow_generic_market=true. The Market Modeling section always uses general industry estimates, not stored figures, so every successful response carries a warning explaining that it does not consume stored projections.

Parameters (4)
NameTypeRequiredDescription
product_idstringYesThe product ID
report_typestringNoReport type (default: full)
allow_generic_marketbooleanNotrue = the user explicitly accepted proceeding without stored sales projections: bypasses the workflow-completeness guard for climatepoint_generate_report. The Market Modeling section is always built from general industry estimates, never from stored projections, and the response will include a warning. Stored projections (climatepoint_set_projections) avoid the bypass.
confirm_tokenstringNoConfirmation token (returned on first call without token). It is HMAC-signed: a retyped, abbreviated or truncated token fails the signature check.

Generate Sales Projections

Write

climatepoint_generate_projections

Draft product-specific annual sales projections (11 years, current year forward) WITHOUT saving them.

Full description

For stored projections that look wrong or are missing: basis carries the user's own reason (e.g. "those volumes are 10x too high, we ship about 5000 units a year") so the regeneration is grounded in their knowledge rather than a fresh estimate. This tool NEVER writes products.projections; climatepoint_set_projections persists a draft the user has verified.

Parameters (2)
NameTypeRequiredDescription
product_idstringYesThe product ID
basisstring | nullNoUser's own guidance for the redraft, e.g. 'we ship about 5000 units a year'. The reason the previous numbers were wrong. Capped at 2000 characters; longer text is truncated and flagged.

Upload Projections File

Write

climatepoint_upload_projections_file

Upload a projections file (CSV, XLSX, XLS, PNG, JPG) for a product. Parses CSV and Excel content and returns the parsed rows. Images are stored and a URL is returned.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product ID to associate the file with
sourcestringYesURL to download from, or local file path (absolute or relative in stdio mode; relative only in http mode)
filenamestringNoOptional filename override (derived from source if omitted)

Get Sales Projections

Read-only

climatepoint_get_projections

Retrieve existing sales projections for a product. Returns the projections array or null if none are set.

Parameters (1)
NameTypeRequiredDescription
product_idstringYesThe product ID

Set Sales Projections

Destructive

climatepoint_set_projections

Save verified sales projections for a product, exactly as given (nothing is estimated). Each projection entry must have an integer year and numeric sales value.

Parameters (2)
NameTypeRequiredDescription
product_idstringYesThe product ID
projectionsarray of objectYesArray of annual projections (max 500 entries)

8. Data follow-up

Audit a product's data gaps and prepare a follow-up request for the client.

Follow-up Audit Checklists

Read-only

climatepoint_followup_guide

Reference checklists of the standards a follow-up round audit walks (iso-14067, iso-14040-44, climeco-ccpp, intake-checklist). With product_id: standardPick, the ISO checklist the product's scope points to and why, and that checklist; checklist adds one more. The audit procedure itself is the followup_audit prompt, which the user starts. Read-only.

Parameters (2)
NameTypeRequiredDescription
product_idstringNoWith a product: also standardPick, the ISO checklist its scope points to, and that checklist
checkliststringNoOne more checklist to return
One of: iso-14067, iso-14040-44, climeco-ccpp, intake-checklist

Follow-up Audit Intake

Read-only

climatepoint_followup_intake

Follow-up round audit (procedure in the followup_audit prompt). The product, its SKUs, context, scope, model flags, onboarding session and intake documents. Read-only. Only the owner of the product's company can call it.

Parameters (1)
NameTypeRequiredDescription
product_idstringYesThe product. Only the owner of its company can run the audit

Follow-up Audit Export

Read-only

climatepoint_followup_export

Follow-up round audit (procedure in the followup_audit prompt). Every onboarding and follow-up request for the product with its answers and files, each follow-up request's intro and analyst report (analystReportMd), and existingDraft, the current draft in full, or null. Read-only. Only the owner of the product's company can call it.

Parameters (1)
NameTypeRequiredDescription
product_idstringYesThe product. Only the owner of its company can run the audit

Preview Follow-up Draft

Read-only

climatepoint_followup_draft_preview

Follow-up round audit (procedure in the followup_audit prompt). Validates the round and report_md, checks the client text for leaks, and summarises. Writes nothing. Returns preview_token, which climatepoint_followup_draft_commit needs, and existingDraft. Needs a standard plan. Only the owner of the product's company can call it.

Parameters (3)
NameTypeRequiredDescription
product_idstringYesThe product. Only the owner of its company can run the audit
roundobjectYesThe round, as the followup_audit prompt's "Round rules" describe it. Preview and commit take the same round, byte for byte
report_mdstringYesreport.md, the analyst-only report: text, at most 100000 characters. Stored with the draft on commit; the client never sees it

Commit Follow-up Draft

Destructive

climatepoint_followup_draft_commit

Follow-up round audit (procedure in the followup_audit prompt).

Full description

Writes the round as a draft, with report_md: the write step, only once the analyst has seen the preview summary and approved it. Takes the same product_id, round and report_md as that preview, byte for byte, with its preview_token. It never sends the round to the client: the analyst previews and sends it in the app, from reviewUrl. Needs a standard plan. Only the owner of the product's company can call it.

Parameters (5)
NameTypeRequiredDescription
product_idstringYesThe product. Only the owner of its company can run the audit
roundobjectYesThe round, as the followup_audit prompt's "Round rules" describe it. Preview and commit take the same round, byte for byte
report_mdstringYesreport.md, the analyst-only report: text, at most 100000 characters. Stored with the draft on commit; the client never sees it
preview_tokenstring | nullNopreview_token from the climatepoint_followup_draft_preview of this exact round and report_md. It lasts 60 minutes
replaceboolean | nullNotrue = the analyst approved replacing the existing draft; needs a token from a preview that saw that draft

Troubleshooting

The assistant says I'm not signed in, or my session expired
Reconnect ClimatePoint in your client's connector settings (in Claude: Settings → Connectors, then connect ClimatePoint again) and sign in when the browser opens.
A tool says it needs a paid plan
That tool is not part of the Free plan. See Plans & data sources, or contact us about a paid plan.
Matching or search finds nothing, or only poor matches
On the Free plan, only US LCI and openEPD datasets are searched, and they do not cover every material or region. Try a more generic material name, or a nearby region. Paid plans search additional LCI databases.
The assistant says there is no report yet
Reports are built from compiled results, which need a paid plan. Ask the assistant to compile results with calculate_variant_impact first; it lists any missing steps, such as unmatched materials or no transport data.
A tool says to initialize the scope first
Every LCA step on a product needs initialize_scope to have run once. Reading, listing and search tools work without it.
I've run out of monthly credits
Ask the assistant to run get_usage to see what is left per group of tools. Credits renew each calendar month (UTC). Looking things up, searching and reading results do not use credits; AI suggestions do, even when they change nothing.
Something looks wrong
Tell the assistant; it can send a report to the ClimatePoint team with report_feedback. You can also email help@climatepoint.no.

Privacy, terms & support