Server definition
- Hash
- sha256:f867de0ea0a4cb4d08bdb3c82495dbf2baabb3da792af12e6ab5fe4413132b18
- What it is
- What a remote MCP server returned when asked what it offers: 6 tools
The blob, as servednamed by its sha256
{
"instructions": "Carbonara calculates freight transport greenhouse gas emissions (kg CO2e) following the GLEC Framework v3.2 and ISO 14083:2023.\n\nHow to use it:\n1. For each leg of the trip you need the mode (road, rail, sea, air, inland_waterway), a vehicle type, and where it goes. Use find_places to turn place names into coordinates or UN/LOCODE/IATA codes; Carbonara routes the distance itself (roads, railways, waterways, sea lanes). Use list_vehicle_types to pick vehicle types; the short aliases (hgv, hgv_artic_33t, van, freight_train, container_ship, container_barge, air_freight, roro, ...) cover most cases.\n2. Call calculate_shipment for one shipment, calculate_shipments for several, emissions_report for an ISO 14083 style report over many.\n3. Every result says how it was calculated: the distance and how it was found, the factor and its source, any distance adjustment, the method and data type, notes on road legs Carbonara added or ends it moved to a port or terminal, and warnings. calculate_shipment adds a step-by-step calculation sheet with the GLEC page and ISO clause behind each step. Read it, and show the user the parts that matter.\n\nBe careful with:\n- Truck load: load_factor is a share of DESNZ's average full load (17.9 t for an articulated truck), not of the truck's rated payload as in GLEC or EcoTransIT. If the user knows the tonnes on the truck, pass load_tonnes instead.\n- Assumptions: tell the user which vehicle types and loads you chose and why.\n- Results are calculations following GLEC/ISO 14083, not certified figures; never declare ISO 14083 conformity for the user.\nget_methodology explains everything in detail.",
"tools": [
{
"description": "Calculates one shipment's greenhouse gas emissions (kg CO2e: well-to-wheel, tank-to-wheel, well-to-tank) following the GLEC Framework v3.2 and ISO 14083. Routes each leg's distance from its coordinates or codes. Returns the result per leg (distance and how it was found, method, data type, emission factor and its source, distance adjustment, notes on legs Carbonara added) and a step-by-step calculation sheet with the arithmetic and the GLEC page and ISO 14083 clause behind each step.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"add_road_legs": {
"description": "Add road legs where the legs don't join up (gaps over 5 km), and to a port or terminal when a sea, rail or river leg starts or ends off its network (default true). Added legs are marked in the result.",
"type": "boolean"
},
"container_load": {
"description": "With teu: a container load profile defined by the dataset, instead of teu_net_tonnes",
"type": "string"
},
"hubs": {
"description": "Hub stops (transhipment, storage); needs a dataset with hub factors.",
"items": {
"additionalProperties": false,
"properties": {
"hub_type": {
"description": "Hub type from the dataset",
"type": "string"
},
"id": {
"description": "Hub label",
"type": "string"
}
},
"required": [
"hub_type"
],
"type": "object"
},
"type": "array"
},
"id": {
"description": "Your reference for the shipment",
"type": "string"
},
"legs": {
"description": "The legs in order, from where the shipper hands the goods over to where the consignee receives them.",
"items": {
"additionalProperties": false,
"description": "One transport movement with one mode and vehicle type (an ISO 14083 transport chain element).",
"properties": {
"country": {
"description": "With energy_kwh_per_tkm: ISO 3166 alpha-3 country whose grid supplies the electricity, e.g. DEU",
"type": "string"
},
"distance_km": {
"description": "The distance, if known. When given, it is used as is and not routed; say what kind it is with distance_type. Leave it out to route from the coordinates (preferred).",
"type": "number"
},
"distance_type": {
"description": "Kind of distance_km: sfd = shortest feasible route, gcd = great circle, actual = actually travelled (e.g. odometer). Decides the distance adjustment factor (DAF) applied.",
"enum": [
"sfd",
"gcd",
"actual"
],
"type": "string"
},
"empty_trip_factor": {
"description": "Trucks, with load_tonnes or load_factor: empty km driven per loaded km (e.g. 0.3).",
"type": "number"
},
"energy_kwh_per_tkm": {
"description": "Electric trains or trucks: electricity per tonne-km (the operator's figure; no default), with country.",
"type": "number"
},
"from": {
"additionalProperties": false,
"description": "A place: coordinates (lat and lon, optionally name), or a code instead. Use find_places to look up coordinates or codes for a place name.",
"properties": {
"code": {
"description": "Instead of lat/lon: a UN/LOCODE (e.g. NLRTM for Rotterdam) or IATA airport code (e.g. CPH)",
"type": "string"
},
"lat": {
"description": "Latitude, decimal degrees",
"maximum": 90,
"minimum": -90,
"type": "number"
},
"lon": {
"description": "Longitude, decimal degrees",
"maximum": 180,
"minimum": -180,
"type": "number"
},
"name": {
"description": "Label for the place, shown in results",
"type": "string"
}
},
"type": "object"
},
"fuel": {
"additionalProperties": false,
"description": "Measured fuel for the vehicle trip this leg is part of (primary data).",
"properties": {
"amount": {
"description": "Amount in the fuel's unit (litres for the aliases)",
"type": "number"
},
"fuel": {
"description": "Fuel id or alias: diesel, petrol, hvo, marine_gas_oil, marine_fuel_oil, jet_fuel (per litre), electricity/<ISO3 country> (kWh), or others from list_vehicle_types with include_fuels",
"type": "string"
},
"vehicle_tonne_km": {
"description": "Total tonne-km of the whole trip, to give this shipment its share of the fuel. Leave out if the trip carried only this shipment.",
"type": "number"
}
},
"required": [
"fuel",
"amount"
],
"type": "object"
},
"id": {
"description": "Your label for the leg",
"type": "string"
},
"load_factor": {
"description": "Trucks: load as a share (0-1) of the load model's payload, DESNZ's average full load (17.9 t for an articulated truck over 33 t), NOT of the truck's rated payload as in GLEC or EcoTransIT. Give load_tonnes or load_factor, not both.",
"type": "number"
},
"load_tonnes": {
"description": "Trucks: the tonnes on the truck (all cargo, averaged over the loaded km), which switches the leg to the load model. Prefer this over load_factor when the weight is known.",
"type": "number"
},
"mode": {
"enum": [
"road",
"rail",
"sea",
"air",
"inland_waterway"
],
"type": "string"
},
"to": {
"additionalProperties": false,
"description": "A place: coordinates (lat and lon, optionally name), or a code instead. Use find_places to look up coordinates or codes for a place name.",
"properties": {
"code": {
"description": "Instead of lat/lon: a UN/LOCODE (e.g. NLRTM for Rotterdam) or IATA airport code (e.g. CPH)",
"type": "string"
},
"lat": {
"description": "Latitude, decimal degrees",
"maximum": 90,
"minimum": -90,
"type": "number"
},
"lon": {
"description": "Longitude, decimal degrees",
"maximum": 180,
"minimum": -180,
"type": "number"
},
"name": {
"description": "Label for the place, shown in results",
"type": "string"
}
},
"type": "object"
},
"vehicle_type": {
"description": "A short alias or a full id from list_vehicle_types. Common: road hgv (average truck), hgv_artic_33t (articulated truck over 33 t, a 40 t semitrailer), hgv_rigid, van; rail freight_train; sea container_ship (short-sea factor under 2,000 km, deep-sea from 2,000 km), bulk_carrier, general_cargo, roro, ropax; air air_freight; inland_waterway barge, container_barge.",
"type": "string"
}
},
"required": [
"mode",
"vehicle_type"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"teu": {
"description": "Containers in TEU, instead of weight_kg; needs teu_net_tonnes",
"type": "number"
},
"teu_net_tonnes": {
"description": "With teu: net cargo tonnes per TEU (container tare is not added)",
"type": "number"
},
"weight_kg": {
"description": "Cargo weight in kg (or give teu instead)",
"type": "number"
}
},
"required": [
"legs"
],
"type": "object"
},
"name": "calculate_shipment",
"outputSchema": null
},
{
"description": "Calculates several shipments at once, each like calculate_shipment. A failing shipment doesn't stop the others; each failure says why and whether sending it again can help. Set explain to add calculation sheets (first 25 shipments).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"add_road_legs": {
"description": "Add road legs where the legs don't join up (gaps over 5 km), and to a port or terminal when a sea, rail or river leg starts or ends off its network (default true). Added legs are marked in the result.",
"type": "boolean"
},
"explain": {
"description": "Add the step-by-step calculation sheet of each shipment (up to 25)",
"type": "boolean"
},
"shipments": {
"description": "The shipments. Without an API key the public service takes up to 100 per call; with one, up to 10,000.",
"items": {
"additionalProperties": false,
"properties": {
"add_road_legs": {
"description": "Add road legs where the legs don't join up (gaps over 5 km), and to a port or terminal when a sea, rail or river leg starts or ends off its network (default true). Added legs are marked in the result.",
"type": "boolean"
},
"container_load": {
"description": "With teu: a container load profile defined by the dataset, instead of teu_net_tonnes",
"type": "string"
},
"hubs": {
"description": "Hub stops (transhipment, storage); needs a dataset with hub factors.",
"items": {
"additionalProperties": false,
"properties": {
"hub_type": {
"description": "Hub type from the dataset",
"type": "string"
},
"id": {
"description": "Hub label",
"type": "string"
}
},
"required": [
"hub_type"
],
"type": "object"
},
"type": "array"
},
"id": {
"description": "Your reference for the shipment",
"type": "string"
},
"legs": {
"description": "The legs in order, from where the shipper hands the goods over to where the consignee receives them.",
"items": {
"additionalProperties": false,
"description": "One transport movement with one mode and vehicle type (an ISO 14083 transport chain element).",
"properties": {
"country": {
"description": "With energy_kwh_per_tkm: ISO 3166 alpha-3 country whose grid supplies the electricity, e.g. DEU",
"type": "string"
},
"distance_km": {
"description": "The distance, if known. When given, it is used as is and not routed; say what kind it is with distance_type. Leave it out to route from the coordinates (preferred).",
"type": "number"
},
"distance_type": {
"description": "Kind of distance_km: sfd = shortest feasible route, gcd = great circle, actual = actually travelled (e.g. odometer). Decides the distance adjustment factor (DAF) applied.",
"enum": [
"sfd",
"gcd",
"actual"
],
"type": "string"
},
"empty_trip_factor": {
"description": "Trucks, with load_tonnes or load_factor: empty km driven per loaded km (e.g. 0.3).",
"type": "number"
},
"energy_kwh_per_tkm": {
"description": "Electric trains or trucks: electricity per tonne-km (the operator's figure; no default), with country.",
"type": "number"
},
"from": {
"additionalProperties": false,
"description": "A place: coordinates (lat and lon, optionally name), or a code instead. Use find_places to look up coordinates or codes for a place name.",
"properties": {
"code": {
"description": "Instead of lat/lon: a UN/LOCODE (e.g. NLRTM for Rotterdam) or IATA airport code (e.g. CPH)",
"type": "string"
},
"lat": {
"description": "Latitude, decimal degrees",
"maximum": 90,
"minimum": -90,
"type": "number"
},
"lon": {
"description": "Longitude, decimal degrees",
"maximum": 180,
"minimum": -180,
"type": "number"
},
"name": {
"description": "Label for the place, shown in results",
"type": "string"
}
},
"type": "object"
},
"fuel": {
"additionalProperties": false,
"description": "Measured fuel for the vehicle trip this leg is part of (primary data).",
"properties": {
"amount": {
"description": "Amount in the fuel's unit (litres for the aliases)",
"type": "number"
},
"fuel": {
"description": "Fuel id or alias: diesel, petrol, hvo, marine_gas_oil, marine_fuel_oil, jet_fuel (per litre), electricity/<ISO3 country> (kWh), or others from list_vehicle_types with include_fuels",
"type": "string"
},
"vehicle_tonne_km": {
"description": "Total tonne-km of the whole trip, to give this shipment its share of the fuel. Leave out if the trip carried only this shipment.",
"type": "number"
}
},
"required": [
"fuel",
"amount"
],
"type": "object"
},
"id": {
"description": "Your label for the leg",
"type": "string"
},
"load_factor": {
"description": "Trucks: load as a share (0-1) of the load model's payload, DESNZ's average full load (17.9 t for an articulated truck over 33 t), NOT of the truck's rated payload as in GLEC or EcoTransIT. Give load_tonnes or load_factor, not both.",
"type": "number"
},
"load_tonnes": {
"description": "Trucks: the tonnes on the truck (all cargo, averaged over the loaded km), which switches the leg to the load model. Prefer this over load_factor when the weight is known.",
"type": "number"
},
"mode": {
"enum": [
"road",
"rail",
"sea",
"air",
"inland_waterway"
],
"type": "string"
},
"to": {
"additionalProperties": false,
"description": "A place: coordinates (lat and lon, optionally name), or a code instead. Use find_places to look up coordinates or codes for a place name.",
"properties": {
"code": {
"description": "Instead of lat/lon: a UN/LOCODE (e.g. NLRTM for Rotterdam) or IATA airport code (e.g. CPH)",
"type": "string"
},
"lat": {
"description": "Latitude, decimal degrees",
"maximum": 90,
"minimum": -90,
"type": "number"
},
"lon": {
"description": "Longitude, decimal degrees",
"maximum": 180,
"minimum": -180,
"type": "number"
},
"name": {
"description": "Label for the place, shown in results",
"type": "string"
}
},
"type": "object"
},
"vehicle_type": {
"description": "A short alias or a full id from list_vehicle_types. Common: road hgv (average truck), hgv_artic_33t (articulated truck over 33 t, a 40 t semitrailer), hgv_rigid, van; rail freight_train; sea container_ship (short-sea factor under 2,000 km, deep-sea from 2,000 km), bulk_carrier, general_cargo, roro, ropax; air air_freight; inland_waterway barge, container_barge.",
"type": "string"
}
},
"required": [
"mode",
"vehicle_type"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"teu": {
"description": "Containers in TEU, instead of weight_kg; needs teu_net_tonnes",
"type": "number"
},
"teu_net_tonnes": {
"description": "With teu: net cargo tonnes per TEU (container tare is not added)",
"type": "number"
},
"weight_kg": {
"description": "Cargo weight in kg (or give teu instead)",
"type": "number"
}
},
"required": [
"legs"
],
"type": "object"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"shipments"
],
"type": "object"
},
"name": "calculate_shipments",
"outputSchema": null
},
{
"description": "Calculates shipments and returns a report with the basic content ISO 14083 asks for at the level of transport services (GLEC v3.2 Section 2 Ch.1): coverage and failures, totals split into TTW and WTT, intensity, per mode and hub type, energy carriers, data quality (primary/modelled/default shares, sources, models), distance adjustments, and notes. Returned as Markdown and as structured data.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"add_road_legs": {
"description": "Add road legs where the legs don't join up (gaps over 5 km), and to a port or terminal when a sea, rail or river leg starts or ends off its network (default true). Added legs are marked in the result.",
"type": "boolean"
},
"declare_iso": {
"description": "Add the ISO 14083:2023 conformity statement. Only when the user explicitly confirms that their data collection and boundaries conform.",
"type": "boolean"
},
"organisation": {
"description": "Organisation the report is for",
"type": "string"
},
"period_from": {
"description": "Start of the period covered, YYYY-MM-DD",
"type": "string"
},
"period_to": {
"description": "End of the period covered, YYYY-MM-DD",
"type": "string"
},
"reference": {
"description": "Where supporting information can be found",
"type": "string"
},
"shipments": {
"description": "The shipments. Without an API key the public service takes up to 100 per call; with one, up to 10,000.",
"items": {
"additionalProperties": false,
"properties": {
"add_road_legs": {
"description": "Add road legs where the legs don't join up (gaps over 5 km), and to a port or terminal when a sea, rail or river leg starts or ends off its network (default true). Added legs are marked in the result.",
"type": "boolean"
},
"container_load": {
"description": "With teu: a container load profile defined by the dataset, instead of teu_net_tonnes",
"type": "string"
},
"hubs": {
"description": "Hub stops (transhipment, storage); needs a dataset with hub factors.",
"items": {
"additionalProperties": false,
"properties": {
"hub_type": {
"description": "Hub type from the dataset",
"type": "string"
},
"id": {
"description": "Hub label",
"type": "string"
}
},
"required": [
"hub_type"
],
"type": "object"
},
"type": "array"
},
"id": {
"description": "Your reference for the shipment",
"type": "string"
},
"legs": {
"description": "The legs in order, from where the shipper hands the goods over to where the consignee receives them.",
"items": {
"additionalProperties": false,
"description": "One transport movement with one mode and vehicle type (an ISO 14083 transport chain element).",
"properties": {
"country": {
"description": "With energy_kwh_per_tkm: ISO 3166 alpha-3 country whose grid supplies the electricity, e.g. DEU",
"type": "string"
},
"distance_km": {
"description": "The distance, if known. When given, it is used as is and not routed; say what kind it is with distance_type. Leave it out to route from the coordinates (preferred).",
"type": "number"
},
"distance_type": {
"description": "Kind of distance_km: sfd = shortest feasible route, gcd = great circle, actual = actually travelled (e.g. odometer). Decides the distance adjustment factor (DAF) applied.",
"enum": [
"sfd",
"gcd",
"actual"
],
"type": "string"
},
"empty_trip_factor": {
"description": "Trucks, with load_tonnes or load_factor: empty km driven per loaded km (e.g. 0.3).",
"type": "number"
},
"energy_kwh_per_tkm": {
"description": "Electric trains or trucks: electricity per tonne-km (the operator's figure; no default), with country.",
"type": "number"
},
"from": {
"additionalProperties": false,
"description": "A place: coordinates (lat and lon, optionally name), or a code instead. Use find_places to look up coordinates or codes for a place name.",
"properties": {
"code": {
"description": "Instead of lat/lon: a UN/LOCODE (e.g. NLRTM for Rotterdam) or IATA airport code (e.g. CPH)",
"type": "string"
},
"lat": {
"description": "Latitude, decimal degrees",
"maximum": 90,
"minimum": -90,
"type": "number"
},
"lon": {
"description": "Longitude, decimal degrees",
"maximum": 180,
"minimum": -180,
"type": "number"
},
"name": {
"description": "Label for the place, shown in results",
"type": "string"
}
},
"type": "object"
},
"fuel": {
"additionalProperties": false,
"description": "Measured fuel for the vehicle trip this leg is part of (primary data).",
"properties": {
"amount": {
"description": "Amount in the fuel's unit (litres for the aliases)",
"type": "number"
},
"fuel": {
"description": "Fuel id or alias: diesel, petrol, hvo, marine_gas_oil, marine_fuel_oil, jet_fuel (per litre), electricity/<ISO3 country> (kWh), or others from list_vehicle_types with include_fuels",
"type": "string"
},
"vehicle_tonne_km": {
"description": "Total tonne-km of the whole trip, to give this shipment its share of the fuel. Leave out if the trip carried only this shipment.",
"type": "number"
}
},
"required": [
"fuel",
"amount"
],
"type": "object"
},
"id": {
"description": "Your label for the leg",
"type": "string"
},
"load_factor": {
"description": "Trucks: load as a share (0-1) of the load model's payload, DESNZ's average full load (17.9 t for an articulated truck over 33 t), NOT of the truck's rated payload as in GLEC or EcoTransIT. Give load_tonnes or load_factor, not both.",
"type": "number"
},
"load_tonnes": {
"description": "Trucks: the tonnes on the truck (all cargo, averaged over the loaded km), which switches the leg to the load model. Prefer this over load_factor when the weight is known.",
"type": "number"
},
"mode": {
"enum": [
"road",
"rail",
"sea",
"air",
"inland_waterway"
],
"type": "string"
},
"to": {
"additionalProperties": false,
"description": "A place: coordinates (lat and lon, optionally name), or a code instead. Use find_places to look up coordinates or codes for a place name.",
"properties": {
"code": {
"description": "Instead of lat/lon: a UN/LOCODE (e.g. NLRTM for Rotterdam) or IATA airport code (e.g. CPH)",
"type": "string"
},
"lat": {
"description": "Latitude, decimal degrees",
"maximum": 90,
"minimum": -90,
"type": "number"
},
"lon": {
"description": "Longitude, decimal degrees",
"maximum": 180,
"minimum": -180,
"type": "number"
},
"name": {
"description": "Label for the place, shown in results",
"type": "string"
}
},
"type": "object"
},
"vehicle_type": {
"description": "A short alias or a full id from list_vehicle_types. Common: road hgv (average truck), hgv_artic_33t (articulated truck over 33 t, a 40 t semitrailer), hgv_rigid, van; rail freight_train; sea container_ship (short-sea factor under 2,000 km, deep-sea from 2,000 km), bulk_carrier, general_cargo, roro, ropax; air air_freight; inland_waterway barge, container_barge.",
"type": "string"
}
},
"required": [
"mode",
"vehicle_type"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"teu": {
"description": "Containers in TEU, instead of weight_kg; needs teu_net_tonnes",
"type": "number"
},
"teu_net_tonnes": {
"description": "With teu: net cargo tonnes per TEU (container tare is not added)",
"type": "number"
},
"weight_kg": {
"description": "Cargo weight in kg (or give teu instead)",
"type": "number"
}
},
"required": [
"legs"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"title": {
"description": "Report title",
"type": "string"
}
},
"required": [
"shipments"
],
"type": "object"
},
"name": "emissions_report",
"outputSchema": null
},
{
"description": "Finds cities, sea and inland ports, rail and road terminals, inland depots, border crossings and airports by name, UN/LOCODE or IATA code, with coordinates, from an embedded list (GeoNames, UN/LOCODE, OurAirports). Use it to fill a leg's from and to.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"kinds": {
"description": "Only places of these kinds: port (sea or inland port), rail and road (terminals), airport, inland (inland clearance depot), border (crossing), city. E.g. [\"port\"] for a sea or river leg, [\"airport\"] for an air leg",
"items": {
"enum": [
"city",
"port",
"rail",
"road",
"airport",
"inland",
"border"
],
"type": "string"
},
"type": "array"
},
"limit": {
"description": "Most results (default 10)",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "Place name, UN/LOCODE (NLRTM) or IATA code (CPH)",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "find_places",
"outputSchema": null
},
{
"description": "Explains the whole method: scope (WTW, TTW, WTT), inputs, the four calculation methods with formulas, how distances are routed, distance adjustment factors, added road legs, the emission factor datasets and their sources and limitations, data quality, what every result field means, errors, and how to present results.",
"inputSchema": {
"additionalProperties": false,
"type": "object"
},
"name": "get_methodology",
"outputSchema": null
},
{
"description": "Lists the vehicle types (and their short aliases) with their emission factors: g CO2e per tonne-km tank-to-wheel and well-to-tank, the distance type they are per, source and year, and for trucks the load model's payload (what load_factor 1 means). Optionally the fuels for the fuel method.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"include_fuels": {
"description": "Also list fuels and their factors",
"type": "boolean"
},
"mode": {
"enum": [
"road",
"rail",
"sea",
"air",
"inland_waterway"
],
"type": "string"
},
"search": {
"description": "Only vehicle types whose id, alias or source contains this, e.g. \"container\" or \"refrigerated\"",
"type": "string"
}
},
"type": "object"
},
"name": "list_vehicle_types",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:f867de0ea0a4cb4d08bdb3c82495dbf2baabb3da792af12e6ab5fe4413132b18 | sha256sum