Skip to content

MCP Tools Reference

VoLCA exposes 31 tools via MCP. All tools return JSON as a text content block.

ToolRequired parametersPurpose
list_databases - LCA / ACV - list all loaded LCA databases (Agribalyse, ecoinvent, …)
load_databasedatabaseLCA / ACV - load a configured database into memory so it can be queried
unload_databasedatabaseLCA / ACV - unload a database from memory to free RAM
list_presets - LCA / ACV - list named classification filter presets configured in this instance
search_activitiesdatabase, nameLCA / ACV - search for activities (processes) by name, geography, product, classification, or preset
search_flowsdatabase, queryLCA / ACV - search for biosphere flows (emissions, resources) by name
get_activitydatabase, process_idLCA / ACV - get detailed information about an activity: name, location, exchanges, reference product, metadata
aggregatedatabase, process_id, scopeLCA / ACV - aggregate exchanges, supply chain entries, or biosphere flows with SQL group-by-style filters
get_supply_chaindatabase, process_idLCA / ACV - get a flat list of all upstream activities in the supply chain (chaîne amont, filière, intrants)
get_inventorydatabase, process_idLCA / ACV - compute the Life Cycle Inventory (LCI): biosphere flows (emissions and resource extractions) for an activity's full supply chain
get_impactsdatabase, process_id, method_idLCA / ACV - compute Life Cycle Impact Assessment (LCIA) scores for an activity
compute_sensitivitydatabase, process_id, method_id, perturbationsLCA / ACV - sensitivity analysis: sweep relative perturbations of technosphere coefficients A_ij and report the resulting impact for each
list_methods - LCA / ACV - list all loaded LCIA methods (impact assessment methods like climate change, acidification, eutrophication, land use, water scarcity)
get_flow_mappingdatabase, method_idLCA / ACV - get the mapping between a method's characterization factors and database flows, showing match coverage
get_characterizationdatabase, method_idLCA / ACV - look up characterization factors for a method matched against database flows
explain_cfdatabase, method_id, flow_idLCA / ACV - explain why one elementary flow scores with the characterization factor it does
get_contributing_flowsdatabase, process_id, method_idLCA / ACV - identify which elementary flows (emissions/resources) contribute most to a specific impact category
get_contributing_activitiesdatabase, process_id, method_idLCA / ACV - identify which upstream activities contribute most to a specific impact category
list_geographiesdatabaseLCA / ACV - list all geography codes present in a database, with display names and parent regions
list_classificationsdatabaseLCA / ACV - list classification systems in a database
get_path_todatabase, process_id, targetLCA / ACV - find the shortest supply chain path from a process to the first upstream activity whose name matches a pattern
get_consumersdatabase, process_idLCA / ACV - find all activities that transitively consume (depend on) a given supplier
compare_impactsdatabase_a, process_id_a, method_id_a, database_b, process_id_b, method_id_bLCA / ACV audit - score the same logical activity on two (database, method) pairs and return the per-impact-category delta plus a per-flow drill-down
score_activitydatabase, process_id, collectionLCA / ACV - compute the full LCIA panel + every configured scoring set for an activity in one call
score_activitiesdatabase, collection, process_idsLCA / ACV - rank N activities against one scoring set in one call
list_scoring_sets - LCA / ACV - list formula-based scoring sets defined in loaded method collections
get_gap_reportdatabaseLCA / ACV - supplier-gap report of a database: every input demand still unsupplied after internal resolution and cross-database linking, aggregated per (product, location, unit) and ranked by demanding edges
get_quality_reportdatabaseLCA / ACV - dataset-soundness report of a database, for the people who build or repair one: the structural defects a score cannot reveal
get_computed_quality_reportdatabaseLCA / ACV - computed-checks report of a LOADED database: what the data computes, judged against the catalogue's own norms
get_characterization_coveragedatabaseLCA / ACV - characterization-coverage report of a database against the loaded LCIA method collections, for the people who maintain databases
edit_exchangesdatabase, process_idLCA / ACV - change what one activity consumes and emits, keeping the activity itself

list_databases

LCA / ACV - list all loaded LCA databases (Agribalyse, ecoinvent, …). Call this first to discover which databases are available before searching.

load_database

LCA / ACV - load a configured database into memory so it can be queried. Its declared dependencies are loaded first (needed for cross-database flow linking). A database must be loaded before search/score/impact tools can target it; use list_databases to see which are configured. No effect if it is already loaded.

ParameterTypeRequiredDescription
databasestringDatabase name

unload_database

LCA / ACV - unload a database from memory to free RAM. The on-disk data is kept and the database can be reloaded later with load_database. Refuses if another loaded database still depends on it - unload the dependents first.

ParameterTypeRequiredDescription
databasestringDatabase name

list_presets

LCA / ACV - list named classification filter presets configured in this instance. Each preset bundles multiple (system, value, mode) classification filters under a human-readable label. Use the filter values from a preset as inputs to search_activities classification parameters.

search_activities

LCA / ACV - search for activities (processes) by name, geography, product, classification, or preset. Returns a paginated list of matching activities with their process IDs. Entry point for any LCA/ACV question about a specific product or process - food (yaourt, steak, pain, lait, fromage), packaging (PET, verre, carton), matériaux, énergie, transport. Accepts non-technical synonyms: empreinte carbone, empreinte environnementale, impact environnemental, occupation des sols, surface agricole, prairie, pâturage, intrants, filière, chaîne amont.

ParameterTypeRequiredDescription
classificationstringClassification system name to filter by (e.g. 'ISIC rev.4 ecoinvent', 'CPC'). Use list_classifications to see available systems.
classification_matchstringMatch mode: "equals" (case-insensitive equality) or "contains" (substring, default)
classification_valuestringValue within the classification system to match
databasestringDatabase name
exactbooleanIf true, name and geo must match exactly (case-insensitive equality) instead of substring search
geostringGeography/location filter (e.g. 'FR', 'DE', 'GLO')
limitintegerMax results (default 20)
namestringName substring to search for (or exact name if exact=true)
presetstringName of a classification preset (from list_presets) - expands to its bundled filters. Can be combined with explicit classification filters.
productstringProduct name filter

search_flows

LCA / ACV - search for biosphere flows (emissions, resources) by name. Use this to locate specific substances (CO2, CH4, water, land occupation) before querying characterization factors or inventory contributions.

ParameterTypeRequiredDescription
databasestringDatabase name
limitintegerMax results (default 20)
querystringFlow name to search for

get_activity

LCA / ACV - get detailed information about an activity: name, location, exchanges, reference product, metadata. Use exchange_type / is_input / flow to filter exchanges and reduce response size.

ParameterTypeRequiredDescription
databasestringDatabase name
exchange_typestringFilter exchanges by kind: "technosphere" (product/input flows), "biosphere" (emissions/resources), "waste" (third flow kind: residuals routed to treatment), or "all" (default)
flowstringFilter exchanges by flow name (case-insensitive substring)
is_inputbooleanIf true, return only inputs; if false, only outputs; omit for both. Combines with exchange_type.
process_idstringProcess ID (activityUUID_productUUID format)

aggregate

LCA / ACV - aggregate exchanges, supply chain entries, or biosphere flows with SQL group-by-style filters. One primitive replaces ad-hoc decomposition tools - express any 'how much X is in Y' question as one call. Also the right tool for 'combien de surface agricole / d'eau / d'énergie dans un produit ?' style questions via scope=biosphere or scope=supply_chain. Examples: - Total electricity in direct inputs: scope=direct, is_input=true, filter_name=Electricity, filter_unit=kWh - Mass breakdown of direct inputs: scope=direct, is_input=true, filter_unit=kg, group_by=name - Total energy across the supply chain: scope=supply_chain, max_depth=2, filter_classification=["Category type=energy:exact"] - Largest pasture occupation flow: scope=biosphere, filter_name=Occupation, pasture, group_by=name - Total upstream electricity without double counting: scope=consumption, filter_name=electricity, filter_consumer_not=electricity - Grass eaten by cattle across the whole chain: scope=consumption, filter_name=grass, filter_consumer=cattle scope=supply_chain rows are cumulative productions: when a filtered product feeds another filtered product (electricity high→medium→low voltage), their sum double-counts the chain. scope=consumption has one row per scaled technosphere edge (product, supplier, consumer), so its sums are actual consumption events; the default total is gross throughput - exclude intra-family edges with filter_consumer_not to get the amount delivered outside the filtered family. Byproduct edges keep their negative sign. The filter_classification parameter accepts a list of strings in "System=Value[:exact]" form (default mode is 'contains').

ParameterTypeRequiredDescription
aggregatestringsum_quantity | count | share (default: sum_quantity)
databasestringDatabase name
filter_classificationstring[]List of "System=Value[:exact]" strings; defaults to 'contains' mode
filter_consumerstringOnly for scope=consumption - case-insensitive substring on the consuming activity's name
filter_consumer_notstringOnly for scope=consumption - comma-separated consumer-name exclude list (each item is a substring; a name containing a comma cannot be expressed)
filter_is_referencebooleanFilter by reference-product flag (typically for outputs)
filter_namestringCase-insensitive substring on flow/activity name
filter_name_notstringComma-separated substring exclude list
filter_target_namestringOnly for scope=direct technosphere or scope=consumption - filter by supplier activity name
filter_unitstringExact unit name
group_bystringname | flow_id | name_prefix | unit | classification.<system> | location | target_name | consumer_name
is_inputbooleanOnly for scope=direct - true=inputs only, false=outputs only
max_depthintegerOnly for scope=supply_chain - max hops from the root activity
presetstringName of a classification preset (from list_presets) - expanded and merged into filter_classification.
process_idstringProcess ID (activityUUID_productUUID format)
scopestringdirect | supply_chain | biosphere | consumption

get_supply_chain

LCA / ACV - get a flat list of all upstream activities in the supply chain (chaîne amont, filière, intrants). The 'quantity' field is the cumulative scaled amount relative to the functional unit (scaling_factor × root reference product amount). To get the per-step yield ratio between two connected entries, divide the supplier's scaling_factor by the consumer's scaling_factor. Summing quantities across entries that feed each other (electricity high→medium→low voltage) double-counts the chain - use aggregate with scope=consumption for upstream totals.

ParameterTypeRequiredDescription
classificationstringClassification system name (e.g. 'Category', 'Category type')
classification_matchstringMatch mode: "exact" (case-insensitive equality) or "contains" (substring, default)
classification_valuestringValue within the classification system
databasestringDatabase name
limitintegerMax results (default 100)
locationstringFilter by location
max_depthintegerMax depth from root (1 = direct inputs only)
min_quantitynumberMin scaled quantity threshold
namestringFilter by activity name
presetstringName of a classification preset (from list_presets) - expands to its bundled filters. Unioned with any explicit classification / classification_value / classification_mode parameters.
process_idstringProcess ID (activityUUID_productUUID format)
substitutionsobject[]Optional what-if supplier substitutions. Each entry: {from: oldSupplierPID, to: newSupplierPID, consumer: consumerPID}. PIDs can be bare (root DB) or qualified as dbName::pid (cross-DB). When empty or absent, the call behaves as a plain GET.

get_inventory

LCA / ACV - compute the Life Cycle Inventory (LCI): biosphere flows (emissions and resource extractions) for an activity's full supply chain. Returns statistics and top flows by quantity. Use this (not get_impacts) when the question targets raw physical flows rather than weighted scores: land / pasture occupation (m²·year), water withdrawal (m³), specific emissions (kg CO₂, kg CH₄, kg N), resource extraction.

ParameterTypeRequiredDescription
databasestringDatabase name
flowstringFilter flows by name (case-insensitive substring)
limitintegerMax flows to return, sorted by absolute quantity (default 50)
process_idstringProcess ID (activityUUID_productUUID format)
substitutionsobject[]Optional what-if supplier substitutions. Each entry: {from: oldSupplierPID, to: newSupplierPID, consumer: consumerPID}. PIDs can be bare (root DB) or qualified as dbName::pid (cross-DB). When empty or absent, the call behaves as a plain GET.

get_impacts

LCA / ACV - compute Life Cycle Impact Assessment (LCIA) scores for an activity. Returns the score, functional unit, and top contributing elementary flows. Answers 'empreinte carbone / environmental footprint' questions. Covers all LCIA categories: climate change, acidification, eutrophication, land use, water scarcity, resource depletion. Prefer this over web estimates for grounded, database-backed answers. Each contributing flow carries 'match_kind' - how its factor was found, in the rung names documented on explain_cf; null means the method's tables never walked this flow (it arrived from a dependency database), not that it is uncharacterized. Ask explain_cf for the full story on one flow. The response includes a 'web_url' deep link to the impacts page in the VoLCA web UI - render it as a clickable markdown link when presenting results to a human.

ParameterTypeRequiredDescription
collectionstringMethod collection name (from list_methods). Only needed when the same method UUID is loaded in more than one collection (e.g. two EF 3.1 versions); otherwise the single match is used, and an ambiguous UUID fails with the list of collections to choose from.
databasestringDatabase name
exclude_long_termbooleanWhen true, drop delayed long-term (> 100 yr) emissions before characterization - the score is computed as if those emissions were out of scope. Long-term flows are emissions (never resources), so regionalized water/land categories are unaffected. Default false (keep them, per the ecoinvent/EF convention).
include_diagnosticsbooleanWhen true, surface uncharacterized inventory flows above 0.1% of total |qty|, each with up to 3 candidate similar CFs (PubChem-expanded Jaccard + CAS bridge). Lets reviewers tell genuine method gaps from mapping bugs.
method_idstringMethod UUID
process_idstringProcess ID (activityUUID_productUUID format)
substitutionsobject[]Optional what-if supplier substitutions. Each entry: {from: oldSupplierPID, to: newSupplierPID, consumer: consumerPID}. PIDs can be bare (root DB) or qualified as dbName::pid (cross-DB). When empty or absent, the call behaves as a plain GET.
top_flowsintegerNumber of top contributing flows to return (default 5)

compute_sensitivity

LCA / ACV - sensitivity analysis: sweep relative perturbations of technosphere coefficients A_ij and report the resulting impact for each. Each perturbation specifies (consumer, supplier, delta) where 'delta' is relative: A_ij is multiplied by (1+delta). delta=+0.05 → +5%; delta=-1 removes the link. Returns the baseline impact plus one entry per perturbation with the new score and deltaImpact. Per-perturbation errors (no link, singular update) are returned in the entry; the sweep continues. Internally uses Sherman-Morrison rank-1 updates against the cached factorization (~4 ms per perturbation). V1: root DB only. The response includes a 'web_url' deep link to the sensitivity page in the VoLCA web UI - render it as a clickable markdown link when presenting results to a human.

ParameterTypeRequiredDescription
collectionstringMethod collection name (from list_methods). Only needed when the same method UUID is loaded in more than one collection (e.g. two EF 3.1 versions); otherwise the single match is used, and an ambiguous UUID fails with the list of collections to choose from.
databasestringDatabase name
method_idstringMethod UUID
perturbationsstring[]Array of perturbations to apply in parallel. Each entry is an object {consumer: ProcessId, supplier: ProcessId, delta: number, label?: string}. 'delta' is RELATIVE: the technosphere coefficient A_ij is multiplied by (1+delta). Use +0.05 for +5%, -1 to remove a link. 'consumer' is the activity that consumes the input; 'supplier' is the activity that produces it. Both must live in the root database (V1 limitation). 'label' is optional and echoed in the response for correlation.
process_idstringProcess ID (activityUUID_productUUID format)

list_methods

LCA / ACV - list all loaded LCIA methods (impact assessment methods like climate change, acidification, eutrophication, land use, water scarcity).

get_flow_mapping

LCA / ACV - get the mapping between a method's characterization factors and database flows, showing match coverage.

ParameterTypeRequiredDescription
collectionstringMethod collection name (from list_methods). Only needed when the same method UUID is loaded in more than one collection (e.g. two EF 3.1 versions); otherwise the single match is used, and an ambiguous UUID fails with the list of collections to choose from.
databasestringDatabase name
max_unmatchedintegerCap on each unmatched list (default 50)
method_idstringMethod UUID
process_idstringRequired for the unmatched_db_flows ranking: ranks unmatched flows by their share of this process's inventory.
verbosebooleanWhen true, return per-CF and per-flow detail beyond the coverage stats: an unmatched_cfs list (CFs with no DB flow), and an unmatched_db_flows list ranked by inventory contribution to a chosen process when process_id is set.

get_characterization

LCA / ACV - look up characterization factors for a method matched against database flows. Without 'flow' filter, returns top factors by absolute value. With 'flow', searches by name. Shows CF value, direction, matched database flow, and match strategy.

ParameterTypeRequiredDescription
collectionstringMethod collection name (from list_methods). Only needed when the same method UUID is loaded in more than one collection (e.g. two EF 3.1 versions); otherwise the single match is used, and an ambiguous UUID fails with the list of collections to choose from.
databasestringDatabase name
flowstringFilter by flow name (case-insensitive substring, matches both method CF name and database flow name)
limitintegerMax results (default 20)
method_idstringMethod UUID

explain_cf

LCA / ACV - explain why one elementary flow scores with the characterization factor it does. Answers 'why this factor, and which line of the method was used?'. The 'explanation' field is a list of sentences written by the engine: relay them as they are rather than interpreting the codes yourself. 'outcome' is one of: 'characterized' (a factor applies), 'conversion_refused' (a factor was found but the flow's unit cannot be converted to the factor's basis, so the flow scores nothing), 'no_factor' (nothing in the method reaches this flow). 'match.rung' names how the factor was found: 'flow_id' (the method names this exact flow), 'same_unit_name' (a factor line declared in this flow's own unit), 'exact_name' (name and compartment match), 'long_term_default' (the method's default for long-term emissions), 'compartment_default' (the method's default for the whole compartment), 'cas_number' (a factor for the same substance by CAS), 'subcompartment_blind' (the factor is the same in every subcompartment), 'region_base_name' (the base substance, the name's region suffix being untagged by the method), 'energy_content' (the family factor per unit of energy, bridged by the flow's calorific value), 'ore_base_element' (the base element of a graded ore). 'steps_tried' lists the rungs tried before that one, including any refused by a subcompartment veto. 'match.unitConversion' names the bridge that carried the amount onto the factor's basis: 'same_unit', 'unknown_unit' (the flow's unit is not in the unit table, so the amount passed as declared), 'unit_converted', 'normalized_to_base_unit' (the factor is written as a result expression like 'kg CO2 eq', so the amount was brought to the flow's base unit), 'energy_content' (carried across dimensions by the flow's energy density). 'match.refusal' names why no bridge could: 'different_dimensions', 'no_base_unit', 'energy_bridge_failed'. A vetoed step names its rule in 'veto': 'different_receiving_medium' (the method writes sea-water lines and so meant to leave this foreign medium out), 'long_term_groundwater' (a long-term groundwater emission must not borrow a surface-fate factor). The response includes a 'web_url' deep link to the explain-cf page in the VoLCA web UI - render it as a clickable markdown link when presenting results to a human.

ParameterTypeRequiredDescription
collectionstringMethod collection name (from list_methods). Only needed when the same method UUID is loaded in more than one collection (e.g. two EF 3.1 versions); otherwise the single match is used, and an ambiguous UUID fails with the list of collections to choose from.
databasestringDatabase name
flow_idstringDatabase flow UUID, as returned by search_flows or in the flow_id field of get_contributing_flows
method_idstringMethod UUID

get_contributing_flows

LCA / ACV - identify which elementary flows (emissions/resources) contribute most to a specific impact category. Answers 'which emissions drive my climate change score?'. Each flow carries 'match_kind' - how its factor was found, in the rung names documented on explain_cf; null means the method's tables never walked this flow (it arrived from a dependency database), not that it is uncharacterized. Ask explain_cf for the full story on one flow. The response includes a 'web_url' deep link to the contributing-flows page in the VoLCA web UI - render it as a clickable markdown link when presenting results to a human.

ParameterTypeRequiredDescription
collectionstringMethod collection name (from list_methods). Only needed when the same method UUID is loaded in more than one collection (e.g. two EF 3.1 versions); otherwise the single match is used, and an ambiguous UUID fails with the list of collections to choose from.
databasestringDatabase name
exclude_long_termbooleanWhen true, drop delayed long-term (> 100 yr) emissions before characterization - the score is computed as if those emissions were out of scope. Long-term flows are emissions (never resources), so regionalized water/land categories are unaffected. Default false (keep them, per the ecoinvent/EF convention).
include_diagnosticsbooleanWhen true, surface uncharacterized inventory flows above 0.1% of total |qty|, each with up to 3 candidate similar CFs (PubChem-expanded Jaccard + CAS bridge).
limitintegerMax flows to return, sorted by contribution (default 20)
method_idstringMethod UUID for the impact category
process_idstringProcess ID (activityUUID_productUUID format)

get_contributing_activities

LCA / ACV - identify which upstream activities contribute most to a specific impact category. Answers 'which suppliers drive my climate change score?' Uses exact matrix-based computation, valid even for cyclic supply chains. Each contributing activity carries a 'web_url' deep link to its page in the VoLCA web UI - render these as clickable markdown links when presenting results to a human so they can drill into a specific supplier.

ParameterTypeRequiredDescription
collectionstringMethod collection name (from list_methods). Only needed when the same method UUID is loaded in more than one collection (e.g. two EF 3.1 versions); otherwise the single match is used, and an ambiguous UUID fails with the list of collections to choose from.
databasestringDatabase name
exclude_long_termbooleanWhen true, drop delayed long-term (> 100 yr) emissions before characterization - the score is computed as if those emissions were out of scope. Long-term flows are emissions (never resources), so regionalized water/land categories are unaffected. Default false (keep them, per the ecoinvent/EF convention).
limitintegerMax processes to return, sorted by contribution (default 10)
method_idstringMethod UUID for the impact category
process_idstringProcess ID (activityUUID_productUUID format)

list_geographies

LCA / ACV - list all geography codes present in a database, with display names and parent regions. Use the 'geo' value as the geography filter in search_activities.

ParameterTypeRequiredDescription
databasestringDatabase name

list_classifications

LCA / ACV - list classification systems in a database. Without 'system': returns system names and activity counts only (lightweight). With 'system': returns all values for that system. Add 'filter' to narrow values by substring.

ParameterTypeRequiredDescription
databasestringDatabase name
filterstringSubstring filter applied to values when a system is specified (case-insensitive).
systemstringClassification system name to inspect (e.g. 'ISIC rev.4 ecoinvent'). If omitted, returns only system names and counts.

get_path_to

LCA / ACV - find the shortest supply chain path from a process to the first upstream activity whose name matches a pattern. Each step includes cumulative_quantity, scaling_factor, and local_step_ratio (upstream ÷ downstream scaling factors). total_ratio is the product of all local_step_ratio values - the end-to-end conversion factor.

ParameterTypeRequiredDescription
databasestringDatabase name
process_idstringProcess ID (activityUUID_productUUID format)
targetstringCase-insensitive name substring to stop at

get_consumers

LCA / ACV - find all activities that transitively consume (depend on) a given supplier. Returns a flat list, each with a crDepth field: 1 = direct consumer, 2 = consumer of consumer, etc. Useful for tracing downstream use of a raw material - e.g. finding transformed food products in Agribalyse that use a raw ingredient.

ParameterTypeRequiredDescription
classificationstringClassification system name (e.g. 'ISIC rev.4 ecoinvent')
classification_valuestringClassification value substring to match
databasestringDatabase name
include_edgesbooleanWhen true, the response carries every technosphere edge whose endpoints are both reachable from the supplier. Lets callers reconstruct supplier→consumer paths without a second get_path_to call.
limitintegerMax results (default 1000)
locationstringFilter by geography/location (case-insensitive substring, e.g. 'FR', 'DE')
max_depthintegerMax hops from supplier (1 = direct consumers only)
namestringFilter by name (case-insensitive substring)
presetstringName of a classification preset (from list_presets) - expands to its bundled filters
process_idstringProcess ID of the supplier (activityUUID_productUUID format)
productstringFilter by product name (case-insensitive substring)

compare_impacts

LCA / ACV audit - score the same logical activity on two (database, method) pairs and return the per-impact-category delta plus a per-flow drill-down. Built for cross-database mapping audits: e.g. compare BAFU + EF3.1 vs SimaPro + EF3.1 to surface flows whose contributions diverge because of mapping gaps, not because of underlying chemistry. Headline field is delta.relative_pct - the metric to drive down by adding synonym pairs to data/flows.csv or by regenerating the chem_synonyms snapshot.

ParameterTypeRequiredDescription
collection_astringMethod collection for the A side; needed only when method_id_a is loaded in more than one collection.
collection_bstringMethod collection for the B side; needed only when method_id_b is loaded in more than one collection.
database_astringFirst database name
database_bstringSecond database name
method_id_astringMethod UUID for the A side
method_id_bstringMethod UUID for the B side
process_id_astringProcess ID in database_a (activityUUID_productUUID format)
process_id_bstringProcess ID in database_b (activityUUID_productUUID format)
top_flowsintegerPer-side flow drill-down depth (default 10)

score_activity

LCA / ACV - compute the full LCIA panel + every configured scoring set for an activity in one call. Returns per-method impact scores, per-scoring-set aggregate scores, per-scoring-set indicator breakdown (one entry per scoring variable), display units, and a 'web_url' to the matching view. Use this when you would otherwise call get_impacts N times across every method of a collection - replaces N round-trips with one batched solve. Discover available scoring sets with list_scoring_sets. Render the 'web_url' as a clickable markdown link when presenting results to a human.

ParameterTypeRequiredDescription
collectionstringMethod collection name (use list_methods to discover)
databasestringDatabase name
exclude_long_termbooleanWhen true, drop delayed long-term (> 100 yr) emissions before characterization - the score is computed as if those emissions were out of scope. Long-term flows are emissions (never resources), so regionalized water/land categories are unaffected. Default false (keep them, per the ecoinvent/EF convention).
process_idstringProcess ID (activityUUID_productUUID format)
scoring_setsstring[]For score_activity: restricts the response's scoringResults / scoringUnits / scoringIndicators to these scoring set names. For score_activities: selects the single scoring set the columnar response is projected against; pass one name. Auto-picked when the collection has exactly one configured set. Use list_scoring_sets to discover the configured names. An unknown name fails the call with the list of available names.
substitutionsobject[]Optional what-if supplier substitutions. Each entry: {from: oldSupplierPID, to: newSupplierPID, consumer: consumerPID}. PIDs can be bare (root DB) or qualified as dbName::pid (cross-DB). When empty or absent, the call behaves as a plain GET.

score_activities

LCA / ACV - rank N activities against one scoring set in one call. Returns a columnar JSON shape: {scoring_set, scoring_unit, functional_unit?, columns, rows, not_found, invalid}. 'columns' is the header (['name', 'process_id', 'web_url', 'total', <indicator keys...>]) and 'rows' is a 2D array of scalars - one row per resolved activity. Hoisting the constant metadata once and packing each activity as a flat array of scalars makes this shape ~6× smaller than a row-shaped JSON for batches of 24+ activities. The top-level 'functional_unit' is only emitted when every resolved row shares the same one; otherwise it is dropped and 'functional_unit' appears as a per-row column instead (the 'columns' header reflects which shape was emitted). Per-method scores are NOT included - call score_activity on a specific process_id for that drill-down. Unresolved process IDs land in not_found / invalid. The chosen scoring set must be unambiguous: pass scoring_sets: ["<one>"] when the collection has more than one scoring set configured. The 'web_url' column on each row is a deep link to the activity's impacts page in the VoLCA web UI - render it as a clickable markdown link when presenting results to a human.

ParameterTypeRequiredDescription
collectionstringMethod collection name
databasestringDatabase name
exclude_long_termbooleanWhen true, drop delayed long-term (> 100 yr) emissions before characterization - the score is computed as if those emissions were out of scope. Long-term flows are emissions (never resources), so regionalized water/land categories are unaffected. Default false (keep them, per the ecoinvent/EF convention).
process_idsstring[]Process IDs to score (activityUUID_productUUID). All resolved in one multi-RHS solve.
scoring_setsstring[]For score_activity: restricts the response's scoringResults / scoringUnits / scoringIndicators to these scoring set names. For score_activities: selects the single scoring set the columnar response is projected against; pass one name. Auto-picked when the collection has exactly one configured set. Use list_scoring_sets to discover the configured names. An unknown name fails the call with the list of available names.
summary_onlybooleanWhen true, score_activities replaces the per-indicator columns with a single 'dominant_indicator' column whose cells are objects {key, share_pct} (e.g. {"key": "ldu", "share_pct": 82.3}) - the indicator with the largest absolute share of each activity's total. Use this when ranking large batches before drilling into a single PID with score_activity. Default false.

list_scoring_sets

LCA / ACV - list formula-based scoring sets defined in loaded method collections. A scoring set is a configured aggregation of LCIA category scores into one or more weighted/normalized 'score' values (e.g. an overall single score plus per-area-of-protection sub-scores). For each set returns: name, display unit, variables referenced (with the impact category each binds to), computed intermediates, display labels (variable → human-readable indicator name shown in score breakdowns), normalization and weighting factors, and the score formulas. Use the returned set names as keys when interpreting score_activity / score_activities responses.

ParameterTypeRequiredDescription
collectionstringMethod collection name. If omitted, returns scoring sets across all loaded collections, grouped by collection.

get_gap_report

LCA / ACV - supplier-gap report of a database: every input demand still unsupplied after internal resolution and cross-database linking, aggregated per (product, location, unit) and ranked by demanding edges. Each gap carries the blocking reason, the number of consumer edges and distinct consumers, the total demanded amount, and the top consuming processes. Answers 'what is missing to switch or complete this database's background dependency?' - typically read right after a relink.

ParameterTypeRequiredDescription
databasestringDatabase name
limitintegerMax gap entries to return, biggest first (default: all). The header counts always cover the full report, so a truncated list stays countable.

get_quality_report

LCA / ACV - dataset-soundness report of a database, for the people who build or repair one: the structural defects a score cannot reveal. All checks run on staged and loaded databases alike: entries without exactly one reference exchange, coproduct allocation percentages that don't sum to 100% (or blocks where only some coproducts carry one), entries duplicated outright (same name, location and reference product), non-finite amounts or a zero reference amount, missing metadata (description, classification, location, units absent from the registry), geography the source never declared - read off the dataset name (SimaPro writes 'Unspecified' in whole databases) or filled in by the loader - stored amounts that disagree with the formulas documenting them (mathematicalRelation, checked at parse time), distinct names that merge under SimaPro's 80-character truncation, exchanges without the pedigree scores their database otherwise carries, reference products nothing in the database consumes (expected for final products), land transformation whose 'to' and 'from' areas don't balance within an activity, oxygen-demand or organic-carbon measures in a physically impossible order (BOD5 above COD, or dissolved above total organic carbon), flow CAS numbers whose check digit does not confirm them, and individual allocation percentages outside the 0-100% range. Each finding carries a severity (danger, warning, info), the activity it was found on, and a readable detail. Answers 'is this dataset well formed?' - the complement of the supplier-gap report, which answers 'what is this database missing?'

ParameterTypeRequiredDescription
databasestringDatabase name
limitintegerMax findings to return per check, worst first (default: all). Each check's offenderCount always covers its full list, so a truncated list stays countable.

get_computed_quality_report

LCA / ACV - computed-checks report of a LOADED database: what the data computes, judged against the catalogue's own norms. Scores every (activity, product) entry against one method collection (the single loaded one, or the 'collection' parameter) and reports: per-category score outliers, judged on a log scale within (category, reference-unit) groups by median/MAD - a mg-read-as-kg unit slip lands three orders of magnitude out; entries whose every category score is zero (empty or uncharacterized inventory); and negative category scores (info - legitimate where avoided-production credits or waste treatment dominate). Complements get_quality_report, which checks what the database STORES and runs on staged databases too; this one needs the matrices and a loaded method collection. Same finding shape: severity, the entry, a readable detail.

ParameterTypeRequiredDescription
collectionstringMethod collection to score the catalogue against. Defaults to the single loaded collection; required when several are loaded.
databasestringDatabase name
limitintegerMax findings to return per check, worst first (default: all). Each check's offenderCount always covers its full list, so a truncated list stays countable.

get_characterization_coverage

LCA / ACV - characterization-coverage report of a database against the loaded LCIA method collections, for the people who maintain databases. Surfaces the flows a method scores ONLY through a name bridge: VoLCA matches a factor to a flow that carries a different name for the same substance (via synonym or CAS number), so the flow is characterized here - but a tool that matches factors by their exact name has no such bridge and scores it as zero, silently. Each bridged flow is grouped under the name the method itself uses (its rename target). One entry per loaded collection, so two method versions can be compared side by side. Optionally filtered to a single collection. Answers 'which of this database's flow names would an exact-name tool fail to characterize?'

ParameterTypeRequiredDescription
collectionstringRestrict the report to one loaded method collection (from list_methods). If omitted, every loaded collection is reported, so two method versions can be compared side by side.
databasestringDatabase name
limitintegerMax bridge groups to return per collection (default: all). Each collection's bridgeGroupCount always covers its full list, so a truncated list stays countable.

edit_exchanges

LCA / ACV - change what one activity consumes and emits, keeping the activity itself. The only tool that writes data. Use it to adjust an imported dataset to the study at hand: drop a substance the scope excludes, correct an amount, add a supplier the dataset is missing. Everything the edit does not name stays as it is - classification, synonyms, parameters, pedigree, coproducts - which is why this exists rather than rewriting the activity. Only the inventory side is addressable: an input by its provider's process_id, a waste output by its treatment's process_id, a biosphere line by its flow id (from get_activity). The reference product and any coproduct are not reachable, because changing those changes what the activity IS. A selector that matches nothing is refused rather than silently doing nothing, and one that matches several lines edits all of them and says how many. Refused outright on a database the engine reads from its configuration: copy it first (that background data is shared with everyone). If the answer says transient, the edit is in memory only and an unload undoes it.

ParameterTypeRequiredDescription
add_biosphereobject[]Biosphere lines to add. Each is {direction, amount} plus either flow (an existing flow id) or name + compartment + unit to introduce a new one.
add_inputsobject[]Technosphere inputs to add. Each is {provider, amount} plus optional unit and comment. The flow follows from the provider.
add_waste_outputsobject[]Waste outputs to add. Each is {provider, amount} plus optional unit and comment, where the provider is the treatment process.
databasestringDatabase name
process_idstringProcess ID (activityUUID_productUUID format)
removeobject[]Lines to drop. Each is {kind, provider|flow}: kind "input" or "waste" with the provider's process_id, or kind "biosphere" with the flow id.
set_amountsobject[]Lines to restate. Each is {select: {kind, provider|flow}, amount}.