Build linked product system
lca_compose_linkedBuild a product system as an explicit process network with supply edges. Every member and supply edge is sent in one call. Structure only; no LCIA runs. For a list of materials and quantities, lca_compose_assembly is simpler. A link may route a waste output to its treatment (consumer_ref outputs it, provider_ref treats it). ref_process_ref is the functional unit's process and also appears in member_process_refs. It is validated against the database; if valid it is saved and system_ref is returned for lca_run_assessment. If invalid, the response lists errors[], missing_required[] and warnings[] and nothing is saved; a corrected call carries the complete system. dry_run: true validates without saving. A tool error (not an invalid result) means the engine is unavailable. Takes p<N>/f<N> refs; UUIDs are not accepted. Requires the user's own writable engine; an unreachable member blocks the build. The product_system_authoring skill (load_skill) covers build order and failures.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"workspace": "<workspace>",
"ref_process_ref": "<ref_process_ref>",
"member_process_refs": "<member_process_refs>"
},
"name": "lca_compose_linked"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| links | No | Supply edges connecting members: a supplier's product into a consumer's input, or a consumer's waste output into its treatment. | |
| title | No | Human title for the authored system. | |
| engine | No | Name of the engine database, as `lca_get(kind='engines')` lists it (case-insensitive). Omitted: this connection's default engine. | |
| dry_run | No | When true, validate ONLY — return the envelope without persisting (and without a confirmation prompt). Default false: a valid system is built and its s-ref returned in this one call. | |
| workspace | Yes | Name of the workspace to work in, as `lca_get(kind='workspaces')` lists it (backticks optional). Named on every call: several conversations can share one connection, and each names its own workspace. The connection's default is often an empty sandbox rather than the user's work. | |
| ref_flow_ref | No | `f<N>` ref of the reference product flow (a product OUTPUT of the ref process). Omitted, it is the reference process's own quantitative reference. | |
| target_amount | No | Functional-unit amount (default 1.0). | |
| process_phases | No | The life-cycle phase of each member process you tag, by its ref: one entry per process, giving a phase or a module (a process named twice, or not in `member_process_refs`, is an error). To leave a process untagged, leave it out of the list; it then counts only under 'unassigned'. | |
| temporal_scope | No | Temporal scope of the system (e.g. '2020-2024', 'Reference year 2022'). | |
| cutoff_criteria | No | Explicit cutoff criteria (e.g. 'Mass cutoff 1%; energy cutoff 1%'). Nothing is recorded when omitted. | |
| declared_phases | No | The life-cycle phases this system covers — declare what its contents hold. Omitted on an assembly: production. Omitted on a linked system: production when its reference is a product it makes, else nothing. Omitted when any part carries a phase tag: nothing is declared, and the tags state the phases they name. Phases: production (materials and manufacture), distribution (transport to site, installation), use (operation, maintenance, replacement, operational energy and water), end_of_life (dismantling, waste treatment, disposal), beyond_boundary (beyond end of life: benefits and loads of reuse, recycling and recovery, shown beside the total — EN 15804 module D). | |
| excluded_phases | No | Phases deliberately left out, each with an optional short reason (e.g. {phase: 'end_of_life', reason: 'outside the study goal'}). A phase in neither list reads 'not declared', never 'excluded'. | |
| ref_process_ref | Yes | `p<N>` ref of the reference process (the functional unit). It must also be listed in `member_process_refs`. | |
| target_unit_ref | No | The functional unit's unit, when it is NOT the reference exchange's own unit (which is derived for you). A unit NAME as the engine spells it ('t', 'kg', 'MJ'), resolved against the reference flow's unit group — NOT a ref: there is no `u<N>` kind, and an f/p/s ref here is rejected. | |
| geographical_scope | No | Explicit geographical scope (e.g. 'Switzerland'). Overrides location codes derived from member processes. | |
| member_process_refs | Yes | `p<N>` refs of every process in the system — include the reference process. | |
| functional_unit_description | No | Free-text description of the functional unit (e.g. 'One house, 160 m², 50-year service life'). |