Skip to main content
Glama

Freight Emissions Calculator

emissions_calculator
Read-onlyIdempotent

Estimate freight transport greenhouse-gas emissions (kgCO2e) for a shipment leg, per ISO 14083:2023 / GLEC Framework v3.2: emissions = mass x distance x a published emission-intensity factor (kgCO2e/tonne-km).

Provide mass + distance_km + mode (road | rail | sea | air | inland_waterway); optionally choose sub_mode, region/authority (uk = DEFRA, us = EPA, fr = ADEME) and basis (wtw default, or ttw). IMPORTANT: pass ACTUAL GROSS MASS, not chargeable/volumetric weight (a common air-freight mistake — see mass_basis in the result). Distance must be provided — this tool does NOT route, geocode, or compute distances.

Behavior: deterministic given the same factor edition; the fleet-average factor already includes average empty running (see empty_running) — do NOT add your own empty-return leg; sea and air are low-representativeness generic defaults (real emissions vary materially by vessel/aircraft, load factor and routing — see representativeness and the result summary). An unknown mode/sub_mode/region returns available:false with the covered options, never a fabricated factor. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

Returns: well-to-wheel AND tank-to-wheel emissions where the factor has both, the exact factor used (value, authority, edition), the tonne-km activity and a per-result _source citing BOTH the ISO method and the specific published factor, all under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: best-effort reference estimate from published factors (DEFRA / EPA / ADEME) — NOT a verified or audited carbon report.

Related: distinct from cbm_calculator / ldm_calculator / chargeable_weight_calculator (those size or bill a shipment; this one estimates its CO2e).

Identifiers: Each record carries fu_id, a stable FreightUtils identifier (and fu_version_id where the dataset has editions); resolve_reference resolves one to exactly its record.

Input Schema

NameRequiredDescriptionDefault
massYesShipment mass, expressed in mass_unit. Example: 1000
modeYesTransport mode
basisNoEmissions basis: wtw = well-to-wheel incl. upstream energy (default), ttw = tank-to-wheel / operation only
regionNoFactor source/region: uk = DEFRA, us = EPA, fr = ADEME. Default is per-mode.
sub_modeNoOptional sub-mode / vehicle class (e.g. "articulated", "container ship", "long-haul"). Omit for the representative default; an unknown value returns available:false with the covered list.
mass_unitNoUnit for mass (default: kg)
distance_kmYesTransport distance in kilometres — you provide it; the tool does not route or compute distance

Output Schema

NameRequiredDescriptionDefault
okYes
_metaNo
as_ofNo
resultYes
statusNo
_sourceYes
editionNo
citationYes
validityNo
warningsNo
confidenceYes
missing_inputsNo
blocking_errorsNo
envelope_versionYes
normalized_inputNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / _meta / properties / upstream
      Added value: +{
      +  "additionalProperties": {},
      +  "properties": {
      +    "datasets": {
      +      "additionalProperties": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "kind": {
      +            "anyOf": [
      +              {
      +                "enum": [
      +                  "watched",
      +                  "checksum-only",
      +                  "manual"
      +                ],
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "last_success": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "reason": {
      +            "type": "string"
      +          },
      +          "stale": {
      +            "type": "boolean"
      +          },
      +          "state": {
      +            "enum": [
      +              "in_step",
      +              "changed_upstream",
      +              "schema_drift",
      +              "unreachable",
      +              "window_missed",
      +              "unknown"
      +            ],
      +            "type": "string"
      +          },
      +          "window_days": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "state",
      +          "kind",
      +          "last_success",
      +          "window_days",
      +          "stale"
      +        ],
      +        "type": "object"
      +      },
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "stale": {
      +      "type": "boolean"
      +    },
      +    "state": {
      +      "enum": [
      +        "in_step",
      +        "changed_upstream",
      +        "schema_drift",
      +        "unreachable",
      +        "window_missed",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "state_read_at": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "state",
      +    "stale",
      +    "state_read_at",
      +    "datasets"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / _meta / properties / ids
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "pattern": {
      +      "type": "string"
      +    },
      +    "scheme": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "scheme",
      +    "pattern"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changed
    • removedOutput schema / properties / _meta / properties / receipt / properties / reason / const
      Removed value: -"key_required"
    • addedOutput schema / properties / _meta / properties / receipt / properties / reason / enum
      Added value: +[
      +  "key_required",
      +  "quota"
      +]
  4. Changed1 schema field changed
    • addedOutput schema / properties / _meta / properties / receipt
      Added value: +{
      +  "additionalProperties": {},
      +  "properties": {
      +    "created_at": {
      +      "type": "string"
      +    },
      +    "dataset_version": {
      +      "additionalProperties": {
      +        "type": "string"
      +      },
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "engine_version": {
      +      "type": "string"
      +    },
      +    "inputs": {},
      +    "reason": {
      +      "const": "key_required",
      +      "type": "string"
      +    },
      +    "receipt_hash": {
      +      "type": "string"
      +    },
      +    "result": {
      +      "additionalProperties": {},
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "schema_version": {
      +      "type": "string"
      +    },
      +    "stored": {
      +      "const": false,
      +      "type": "boolean"
      +    },
      +    "tool": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "stored",
      +    "reason",
      +    "schema_version",
      +    "receipt_hash",
      +    "created_at",
      +    "tool",
      +    "inputs",
      +    "dataset_version",
      +    "engine_version",
      +    "result"
      +  ],
      +  "type": "object"
      +}
  5. Changed1 schema field changed
    • addedOutput schema / properties / _meta / properties / edition_basis
      Added value: +{
      +  "type": "string"
      +}
  6. Changed1 schema field changed
    • addedOutput schema / properties / _meta
      Added value: +{
      +  "additionalProperties": {},
      +  "properties": {
      +    "check_id": {
      +      "type": "string"
      +    },
      +    "receipt_url": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  7. Changed5 schema fields changed
    • addedOutput schema / properties / as_of
      Added value: +{
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
    • addedOutput schema / properties / edition
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "applies_from": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "may_apply_until": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "name": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "applies_from",
      +        "may_apply_until"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / envelope_version / enum
      Previous value: -[
      -  "1",
      -  "1.1"
      -]New value: +[
      +  "1",
      +  "1.1",
      +  "1.2"
      +]
    • addedOutput schema / properties / missing_inputs
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / status
      Added value: +{
      +  "enum": [
      +    "ok",
      +    "partial",
      +    "not_found",
      +    "unsupported",
      +    "ambiguous"
      +  ],
      +  "type": "string"
      +}
  8. Changed2 schema fields changed
    • removedOutput schema / properties / validity / properties / effective_to / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / validity / properties / effective_to / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  9. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  10. Changed5 schema fields changed
    • addedOutput schema / properties / _source / properties / authority_current_edition
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / _source / properties / checked_at
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / _source / properties / dataset_edition
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / envelope_version / const
      Removed value: -"1"
    • addedOutput schema / properties / envelope_version / enum
      Added value: +[
      +  "1",
      +  "1.1"
      +]
  11. Changed37 schema fields changed
    • removedOutput schema / properties / _source / description
      Removed value: -"Citability envelope: ISO method + the specific open factor used (authority, edition, value, basis, last_verified date, source, licence)"
    • addedOutput schema / properties / _source / properties / checked
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / _source / properties / computed_by
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / _source / properties / factor
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "authority": {
      -      "type": "string"
      -    },
      -    "basis": {
      -      "type": "string"
      -    },
      -    "edition": {
      -      "type": "string"
      -    },
      -    "last_verified": {
      -      "type": "string"
      -    },
      -    "licence": {
      -      "type": "string"
      -    },
      -    "source_url": {
      -      "type": "string"
      -    },
      -    "unit": {
      -      "type": "string"
      -    },
      -    "value": {
      -      "type": "number"
      -    }
      -  },
      -  "required": [
      -    "authority",
      -    "edition",
      -    "value",
      -    "unit",
      -    "basis",
      -    "last_verified",
      -    "source_url",
      -    "licence"
      -  ],
      -  "type": "object"
      -}
    • addedOutput schema / properties / _source / properties / name
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / _source / properties / provenance_status
      Added value: +{
      +  "enum": [
      +    "verified",
      +    "pending-verification",
      +    "computed",
      +    "live"
      +  ],
      +  "type": "string"
      +}
    • removedOutput schema / properties / _source / properties / reference
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / _source / properties / standard
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / _source / properties / type
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / _source / required
      Previous value: -[
      -  "type",
      -  "standard",
      -  "reference",
      -  "source_url",
      -  "computed_by",
      -  "factor"
      -]New value: +[
      +  "name",
      +  "checked",
      +  "provenance_status"
      +]
    • removedOutput schema / properties / available
      Removed value: -{
      -  "description": "True if a factor matched and emissions were computed; false if the combination is not covered",
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / available_for
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Present when available:false — the covered modes/regions/sub-modes",
      -  "properties": {
      -    "modes": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "regions_for_mode": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "sub_modes": {
      -      "items": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "id": {
      -            "type": "string"
      -          },
      -          "region": {
      -            "type": "string"
      -          },
      -          "sub_mode": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "region",
      -          "id",
      -          "sub_mode"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    }
      -  },
      -  "required": [
      -    "modes",
      -    "regions_for_mode",
      -    "sub_modes"
      -  ],
      -  "type": "object"
      -}
    • addedOutput schema / properties / blocking_errors
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "recovery": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "action": {
      +            "type": "string"
      +          },
      +          "params": {
      +            "additionalProperties": {},
      +            "propertyNames": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          "tool": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "action"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "message",
      +      "recovery"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / citation
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "qualifier": {
      +      "type": "string"
      +    },
      +    "text": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "text"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / confidence / additionalProperties
      Added value: +false
    • removedOutput schema / properties / confidence / description
      Removed value: -"Human-readable confidence label for representativeness"
    • addedOutput schema / properties / confidence / properties
      Added value: +{
      +  "basis": {
      +    "enum": [
      +      "deterministic",
      +      "provenance",
      +      "match_quality",
      +      "freshness"
      +    ],
      +    "type": "string"
      +  },
      +  "level": {
      +    "enum": [
      +      "high",
      +      "medium",
      +      "low"
      +    ],
      +    "type": "string"
      +  },
      +  "score": {
      +    "maximum": 1,
      +    "minimum": 0,
      +    "type": "number"
      +  }
      +}
    • addedOutput schema / properties / confidence / required
      Added value: +[
      +  "level",
      +  "basis"
      +]
    • changedOutput schema / properties / confidence / type
      Previous value: -"string"New value: +"object"
    • removedOutput schema / properties / disclaimer
      Removed value: -{
      -  "description": "Best-effort estimate; not a verified carbon report",
      -  "type": "string"
      -}
    • removedOutput schema / properties / emissions
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Computed emissions: WTW + TTW where available, plus the primary value per basis",
      -  "properties": {
      -    "basis_used": {
      -      "type": "string"
      -    },
      -    "primary_kgco2e": {
      -      "type": "number"
      -    },
      -    "ttw_kgco2e": {
      -      "anyOf": [
      -        {
      -          "type": "number"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ]
      -    },
      -    "wtw_kgco2e": {
      -      "anyOf": [
      -        {
      -          "type": "number"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ]
      -    }
      -  },
      -  "required": [
      -    "wtw_kgco2e",
      -    "ttw_kgco2e",
      -    "primary_kgco2e",
      -    "basis_used"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / empty_running
      Removed value: -{
      -  "description": "Whether the fleet-average factor already embeds average empty running (\"sector_average_included\" → do NOT add your own empty-return leg) or the source does not state it (\"see_source\")",
      -  "type": "string"
      -}
    • addedOutput schema / properties / envelope_version
      Added value: +{
      +  "const": "1",
      +  "type": "string"
      +}
    • removedOutput schema / properties / factor
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "The exact emission-intensity factor used",
      -  "properties": {
      -    "authority": {
      -      "type": "string"
      -    },
      -    "edition": {
      -      "type": "string"
      -    },
      -    "id": {
      -      "type": "string"
      -    },
      -    "mode": {
      -      "type": "string"
      -    },
      -    "region": {
      -      "type": "string"
      -    },
      -    "sub_mode": {
      -      "type": "string"
      -    },
      -    "ttw": {
      -      "anyOf": [
      -        {
      -          "type": "number"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ]
      -    },
      -    "unit": {
      -      "type": "string"
      -    },
      -    "wtw": {
      -      "anyOf": [
      -        {
      -          "type": "number"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ]
      -    }
      -  },
      -  "required": [
      -    "id",
      -    "mode",
      -    "sub_mode",
      -    "authority",
      -    "edition",
      -    "region",
      -    "unit",
      -    "wtw",
      -    "ttw"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / inputs
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Echo of the resolved inputs (incl. defaults applied)",
      -  "properties": {
      -    "basis": {
      -      "type": "string"
      -    },
      -    "distance_km": {
      -      "type": "number"
      -    },
      -    "mass": {
      -      "type": "number"
      -    },
      -    "mass_tonnes": {
      -      "type": "number"
      -    },
      -    "mass_unit": {
      -      "type": "string"
      -    },
      -    "mode": {
      -      "type": "string"
      -    },
      -    "region": {
      -      "type": "string"
      -    },
      -    "sub_mode": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "mass",
      -    "mass_unit",
      -    "mass_tonnes",
      -    "distance_km",
      -    "mode",
      -    "sub_mode",
      -    "region",
      -    "basis"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / mass_basis
      Removed value: -{
      -  "description": "Mass basis the factor expects: always \"actual_gross_mass\" — NOT chargeable/volumetric weight (a common air-freight mistake)",
      -  "type": "string"
      -}
    • removedOutput schema / properties / message
      Removed value: -{
      -  "description": "Present when available:false — why no factor matched",
      -  "type": "string"
      -}
    • removedOutput schema / properties / methodology
      Removed value: -{
      -  "description": "ISO 14083:2023 / GLEC Framework v3.2",
      -  "type": "string"
      -}
    • addedOutput schema / properties / normalized_input
      Added value: +{
      +  "additionalProperties": {},
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / ok
      Added value: +{
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / representativeness
      Removed value: -{
      -  "description": "How representative the generic default factor is: \"low\" for sea/air (varies materially by vessel/aircraft type, load, routing), \"medium\" for road/rail/inland",
      -  "type": "string"
      -}
    • addedOutput schema / properties / result
      Added value: +{
      +  "additionalProperties": {},
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • removedOutput schema / properties / summary
      Removed value: -{
      -  "description": "Primary human-readable one-line result — carries the empty-running + actual-gross-mass notes and, for sea/air, a high-variance warning. Surface this to the user, do not drop it.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / tonne_km
      Removed value: -{
      -  "description": "Transport activity = mass (tonnes) × distance (km)",
      -  "type": "number"
      -}
    • addedOutput schema / properties / validity
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "as_of": {
      +      "type": "string"
      +    },
      +    "effective_from": {
      +      "type": "string"
      +    },
      +    "effective_to": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "as_of"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / warnings
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "details": {
      +        "additionalProperties": {},
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "available",
      -  "methodology",
      -  "disclaimer"
      -]New value: +[
      +  "envelope_version",
      +  "ok",
      +  "result",
      +  "confidence",
      +  "_source",
      +  "citation"
      +]
  12. Changed8 schema fields changed
    • changedOutput schema / properties / _source / description
      Previous value: -"Citability envelope: ISO method + the specific open factor used (authority, edition, value, basis, source, licence)"New value: +"Citability envelope: ISO method + the specific open factor used (authority, edition, value, basis, last_verified date, source, licence)"
    • addedOutput schema / properties / _source / properties / factor / properties / last_verified
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / _source / properties / factor / required
      Previous value: -[
      -  "authority",
      -  "edition",
      -  "value",
      -  "unit",
      -  "basis",
      -  "source_url",
      -  "licence"
      -]New value: +[
      +  "authority",
      +  "edition",
      +  "value",
      +  "unit",
      +  "basis",
      +  "last_verified",
      +  "source_url",
      +  "licence"
      +]
    • addedOutput schema / properties / confidence
      Added value: +{
      +  "description": "Human-readable confidence label for representativeness",
      +  "type": "string"
      +}
    • addedOutput schema / properties / empty_running
      Added value: +{
      +  "description": "Whether the fleet-average factor already embeds average empty running (\"sector_average_included\" → do NOT add your own empty-return leg) or the source does not state it (\"see_source\")",
      +  "type": "string"
      +}
    • addedOutput schema / properties / mass_basis
      Added value: +{
      +  "description": "Mass basis the factor expects: always \"actual_gross_mass\" — NOT chargeable/volumetric weight (a common air-freight mistake)",
      +  "type": "string"
      +}
    • addedOutput schema / properties / representativeness
      Added value: +{
      +  "description": "How representative the generic default factor is: \"low\" for sea/air (varies materially by vessel/aircraft type, load, routing), \"medium\" for road/rail/inland",
      +  "type": "string"
      +}
    • addedOutput schema / properties / summary
      Added value: +{
      +  "description": "Primary human-readable one-line result — carries the empty-running + actual-gross-mass notes and, for sea/air, a high-variance warning. Surface this to the user, do not drop it.",
      +  "type": "string"
      +}
  13. Added

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/closed-world), the description discloses determinism given the same factor edition, that the fleet-average factor already includes empty running, that sea/air factors are low-representativeness defaults, that unknown mode/sub_mode/region returns available:false rather than a fabricated factor, and that rate-limit errors carry reset_at. That is substantial behavior beyond structured fields, though it stops short of stating latency or caching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the formula and required inputs, which is good, but it is long (~350 words) and re-enumerates schema facts already given (mode list, region=DEFRA/EPA/ADEME, basis default), and the closing 'Identifiers' paragraph about fu_id/fu_version_id/resolve_reference is tangential to calling this tool. Dense but not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, enum-heavy, read-only calculator with full schema coverage, an output schema, and rich annotations, nothing an agent needs is missing: inputs, defaults, failure modes, return envelope (result, confidence, _source, citation), and the reference-only limitation are all covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by adding a real semantic trap — 'pass ACTUAL GROSS MASS, not chargeable/volumetric weight (a common air-freight mistake — see mass_basis in the result)' — and by tying basis/region choices to their default and authority mapping. It does repeat several enum values verbatim from the schema, which caps it below 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Estimate freight transport greenhouse-gas emissions (kgCO2e) for a shipment leg') and gives the governing standard (ISO 14083:2023 / GLEC v3.2) plus the formula. It explicitly differentiates itself from cbm_calculator / ldm_calculator / chargeable_weight_calculator as 'estimates its CO2e' vs 'size or bill a shipment', so an agent can route between siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the required inputs, the optional selectors, and a hard precondition: 'Distance must be provided — this tool does NOT route, geocode, or compute distances', which prevents the most likely misuse. It also warns against a specific alternative behavior ('do NOT add your own empty-return leg') and names the sibling tools it is not, giving both when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.