Skip to main content
Glama
SoapyRED

FreightUtils MCP Server

adr_exemption_calculator

Read-onlyIdempotent

Calculate ADR 1.1.3.6 small-load exemption points for dangerous goods. Enter UN numbers and quantities to determine if your load qualifies for reduced ADR requirements at 1,000 points or less.

Instructions

Calculate ADR 1.1.3.6 "small load" exemption points for a dangerous-goods load. Each substance's transport category (0-4) sets a points multiplier (category 1 x50, 2 x3, 3 x1, 4 x0; the nine ADR 1.1.3.6.3 note-a entries UN 0081/0082/0084/0241/0331/0332/0482/1005/1017 are x20 with a 50 kg per-transport-unit cap); points = quantity x multiplier, and a load totalling 1,000 points or less qualifies for reduced ADR requirements. Transport category 0 substances can NEVER use this exemption — has_category_zero flags them.

Provide un_number + quantity for a single substance, or items[] for a mixed load (items takes precedence if both are given). Quantities are in kg or litres per the substance's ADR unit.

Multi-variant UNs: a UN number with more than one ADR Table A row (packing group / concentration variant — e.g. UN 1789 PG II vs PG III have different transport categories) needs packing_group (I|II|III) or variant_index (from adr_lookup) to pin one row. A packing_group that still leaves several rows is enough when those rows agree on class, transport category, scope and the 1.1.3.6.3 counted dimension (UN 1790 PG I: two concentration bands, both category 1) — the verdict is returned with items[].equivalent_variants + variant_note naming the rows it holds for; only when the rows DISAGREE (UN 2215 PG III: MOLTEN is category 0, the solid category 3) does it still ask for variant_index, and candidates[] then lists only that packing group's rows. With no disambiguator at all: a single-line call, or a load where EVERY line is ambiguous, returns blocking_errors[AMBIGUOUS_UN_VARIANT] + human_review_required + candidates[] (each candidate's item_index, un_number, variant_index, packing_group, proper_shipping_name, transport_category, multiplier) and NO verdict; a MIXED load withholds only the ambiguous line (items[].withheld true, points null, row fields null) while every other line keeps its points; total_points is null (1.1.3.6.4 sums every line, one term is unknown) and exempt is null UNLESS the resolved lines alone already disqualify the load — a CARRIAGE PROHIBITED entry, a category 0 entry, a per-substance maximum exceeded, or a partial sum already over 1,000 — in which case exempt is false with the ladder message (and carriage_prohibited true where that is the reason), because no packing group can undo those. warnings state the resolved lines' partial sum, candidates[] carry expected_unit (the 1.1.3.6.3 counted dimension — the only difference for UN 3375 PG II, liquid in L vs solid in kg), and the envelope carries human_review_required + candidates[] plus one AMBIGUOUS_UN_VARIANT warning per withheld line. Never a silently guessed row. Single-row UNs are unchanged.

Scope verdicts: Table A rows listed "NOT SUBJECT TO ADR" or "CARRIAGE PROHIBITED" never enter the points math. An all-not-subject load (e.g. UN 1845 dry ice) returns not_subject_to_adr true with a dedicated message ("Not subject to ADR (road). Section 5.5.3 applies: ...") and, for dry ice, conditions[] quoting the ADR 2025 section 5.5.3 requirements verbatim (ventilation, package marking, warning mark, documentation, training). A load containing a CARRIAGE PROHIBITED entry returns exempt false with carriage_prohibited true. In a mixed load, not-subject items are excluded from the points and the exclusion is stated in warnings.

Behavior: deterministic points arithmetic over ADR 2025 reference data; a UN that cannot be found returns blocking_errors (NOT_FOUND); exempt is the overall verdict. Rate-limited (anonymous use: 25 requests/day per IP): a 429 error body carries retry_after_seconds and a Retry-After header — back off and retry, or call get_subscribe_link for higher limits.

Returns: items[] (each with packing_group, variant_index, transport_category, multiplier, points, quantity_unit/quantity_basis/expected_unit when a unit or basis was declared, scope flags where applicable, withheld + ambiguity_reason on an unpinned multi-variant line, and equivalent_variants + variant_note when a packing group resolved by equivalence), total_points (NULL when no verdict was reached), threshold (1000), exempt (NULL when no verdict was reached — never false as a stand-in), has_category_zero, has_quantity_exceedance, warnings, message, human_review_required + candidates[] when any line is withheld, and — on scope verdicts — not_subject_to_adr/conditions_ref/conditions[]/carriage_prohibited under result — or, when every line is ambiguous, human_review_required + candidates[] with blocking_errors, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: a deterministic calculation over reference data, not legal advice — even exempt loads keep core duties (packaging, marking, documentation), and mixed-packing rules still apply; verify against the current UNECE ADR text.

Related: adr_lookup (per-substance data incl. transport category + variant_index), adr_lq_eq_check (the LQ/EQ relief routes instead of 1.1.3.6).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
unitNoOPTIONAL. The dimension `quantity` is stated in. Omit it and the number is taken as already on the ADR 1.1.3.6.3 basis (unchanged behaviour). Supply it and it is CHECKED against the dimension 1.1.3.6.3 counts for that Table A row — litres for liquids and for compressed or adsorbed gases, kilograms for solids, liquefied/refrigerated/dissolved gases and articles. A mismatch returns total_points null, exempt null and items[].basis_mismatch true, naming the dimension the entry is counted in.
basisNoOPTIONAL. ADR 1.1.3.6.3 counts the dangerous goods themselves, never the packaging, so a quantity declared 'gross' returns no points in ANY unit — send the net figure instead.
itemsNoMixed-load items (use INSTEAD of un_number/quantity).
quantityNoQuantity for the single-substance check, in kg or litres per the substance's ADR unit. Example: 100.
un_numberNoUN number for a single-substance check — 4 digits, optionally "UN"-prefixed. Example: "1203".
packing_groupNoPacking group (I, II or III) — only needed to disambiguate a UN with more than one ADR Table A row (e.g. UN 1789). Ignored for single-row UNs. Single-substance form only.
variant_indexNoADR Table A variant index (as returned by adr_lookup) — pins one row when a UN has several variants that share a packing group (concentration bands). Ignored for single-row UNs. Single-substance form only.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv2.17.3
    • addedInput schema / properties / basis
      Added value: +{
      +  "description": "OPTIONAL. ADR 1.1.3.6.3 counts the dangerous goods themselves, never the packaging, so a quantity declared 'gross' returns no points in ANY unit — send the net figure instead.",
      +  "enum": [
      +    "net",
      +    "gross"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / items / items / properties / basis
      Added value: +{
      +  "description": "OPTIONAL. ADR 1.1.3.6.3 counts the dangerous goods themselves, never the packaging, so a quantity declared 'gross' returns no points in ANY unit — send the net figure instead.",
      +  "enum": [
      +    "net",
      +    "gross"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / items / items / properties / unit
      Added value: +{
      +  "description": "OPTIONAL. The dimension `quantity` is stated in. Omit it and the number is taken as already on the ADR 1.1.3.6.3 basis (unchanged behaviour). Supply it and it is CHECKED against the dimension 1.1.3.6.3 counts for that Table A row — litres for liquids and for compressed or adsorbed gases, kilograms for solids, liquefied/refrigerated/dissolved gases and articles. A mismatch returns total_points null, exempt null and items[].basis_mismatch true, naming the dimension the entry is counted in.",
      +  "enum": [
      +    "L",
      +    "kg"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / unit
      Added value: +{
      +  "description": "OPTIONAL. The dimension `quantity` is stated in. Omit it and the number is taken as already on the ADR 1.1.3.6.3 basis (unchanged behaviour). Supply it and it is CHECKED against the dimension 1.1.3.6.3 counts for that Table A row — litres for liquids and for compressed or adsorbed gases, kilograms for solids, liquefied/refrigerated/dissolved gases and articles. A mismatch returns total_points null, exempt null and items[].basis_mismatch true, naming the dimension the entry is counted in.",
      +  "enum": [
      +    "L",
      +    "kg"
      +  ],
      +  "type": "string"
      +}
  2. Changed6 schema fields changedv2.17.2
    • 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"
      +]
    • changedOutput schema / properties / result / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {
      -      "candidates": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": true,
      -              "properties": {
      -                "item_index": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "multiplier": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "packing_group": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "proper_shipping_name": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "transport_category": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "un_number": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "variant_index": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "exempt": {
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "has_category_zero": {
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "has_quantity_exceedance": {
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "human_review_required": {
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "items": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": true,
      -              "properties": {
      -                "class": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "multiplier": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "packing_group": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "points": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "proper_shipping_name": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "quantity": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "transport_category": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "un_number": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "variant_index": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "message": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "threshold": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "total_points": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "warnings": {
      -        "anyOf": [
      -          {
      -            "items": {},
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "candidates": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "item_index": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "multiplier": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "packing_group": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "proper_shipping_name": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "transport_category": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "un_number": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "variant_index": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "carriage_prohibited": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "conditions": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "heading": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "note": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "ref": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "requirement": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "conditions_ref": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "exempt": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "has_category_zero": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "has_quantity_exceedance": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "human_review_required": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "items": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "carriage_prohibited": {
      +                  "type": [
      +                    "boolean",
      +                    "null"
      +                  ]
      +                },
      +                "class": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "conditions_ref": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "multiplier": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "not_subject_to_adr": {
      +                  "type": [
      +                    "boolean",
      +                    "null"
      +                  ]
      +                },
      +                "packing_group": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "points": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "proper_shipping_name": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "quantity": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "transport_category": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "un_number": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "variant_index": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "message": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "not_subject_to_adr": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "threshold": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "total_points": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "warnings": {
      +        "anyOf": [
      +          {
      +            "items": {},
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "type": "object"
      +  }
      +]
  3. Changed5 schema fields changedv2.12.1
    • addedInput schema / properties / items / items / properties / packing_group
      Added value: +{
      +  "description": "Packing group for a multi-variant UN.",
      +  "enum": [
      +    "I",
      +    "II",
      +    "III"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / items / items / properties / variant_index
      Added value: +{
      +  "description": "ADR Table A variant index for a multi-variant UN.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / packing_group
      Added value: +{
      +  "description": "Packing group (I, II or III) — only needed to disambiguate a UN with more than one ADR Table A row (e.g. UN 1789). Ignored for single-row UNs. Single-substance form only.",
      +  "enum": [
      +    "I",
      +    "II",
      +    "III"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / variant_index
      Added value: +{
      +  "description": "ADR Table A variant index (as returned by adr_lookup) — pins one row when a UN has several variants that share a packing group (concentration bands). Ignored for single-row UNs. Single-substance form only.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedOutput schema / properties / result / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {
      -      "exempt": {
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "has_category_zero": {
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "has_quantity_exceedance": {
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "items": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": true,
      -              "properties": {
      -                "class": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "multiplier": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "points": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "proper_shipping_name": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "quantity": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "transport_category": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "un_number": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "message": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "threshold": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "total_points": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "warnings": {
      -        "anyOf": [
      -          {
      -            "items": {},
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "candidates": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "item_index": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "multiplier": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "packing_group": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "proper_shipping_name": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "transport_category": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "un_number": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "variant_index": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "exempt": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "has_category_zero": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "has_quantity_exceedance": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "human_review_required": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "items": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "class": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "multiplier": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "packing_group": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "points": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "proper_shipping_name": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "quantity": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "transport_category": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "un_number": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "variant_index": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "message": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "threshold": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "total_points": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "warnings": {
      +        "anyOf": [
      +          {
      +            "items": {},
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "type": "object"
      +  }
      +]
  4. Changed6 schema fields changedv2.11.0
    • changedInput schema / properties / items / description
      Previous value: -"Array of items for mixed-load calculation (use instead of single un_number/quantity)"New value: +"Mixed-load items (use INSTEAD of un_number/quantity)."
    • changedInput schema / properties / items / items / properties / quantity / description
      Previous value: -"Quantity in kg or litres"New value: +"Quantity in kg or litres per the substance's ADR unit."
    • changedInput schema / properties / items / items / properties / un_number / description
      Previous value: -"UN number"New value: +"UN number — 4 digits, optionally \"UN\"-prefixed. Example: \"1263\"."
    • changedInput schema / properties / quantity / description
      Previous value: -"Quantity in kg or litres for single-substance check"New value: +"Quantity for the single-substance check, in kg or litres per the substance's ADR unit. Example: 100."
    • changedInput schema / properties / un_number / description
      Previous value: -"UN number for single-substance check"New value: +"UN number for a single-substance check — 4 digits, optionally \"UN\"-prefixed. Example: \"1203\"."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "_source": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "checked": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "provenance_status": {
      +          "enum": [
      +            "verified",
      +            "pending-verification",
      +            "computed",
      +            "live"
      +          ],
      +          "type": "string"
      +        },
      +        "source_url": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "checked",
      +        "provenance_status"
      +      ],
      +      "type": "object"
      +    },
      +    "blocking_errors": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "code": {
      +            "type": "string"
      +          },
      +          "message": {
      +            "type": "string"
      +          },
      +          "recovery": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "action": {
      +                "type": "string"
      +              },
      +              "params": {
      +                "additionalProperties": {},
      +                "type": "object"
      +              },
      +              "tool": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "action"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "code",
      +          "message",
      +          "recovery"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "citation": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "qualifier": {
      +          "type": "string"
      +        },
      +        "text": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "text"
      +      ],
      +      "type": "object"
      +    },
      +    "confidence": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "basis": {
      +          "enum": [
      +            "deterministic",
      +            "provenance",
      +            "match_quality",
      +            "freshness"
      +          ],
      +          "type": "string"
      +        },
      +        "level": {
      +          "enum": [
      +            "high",
      +            "medium",
      +            "low"
      +          ],
      +          "type": "string"
      +        },
      +        "score": {
      +          "maximum": 1,
      +          "minimum": 0,
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "level",
      +        "basis"
      +      ],
      +      "type": "object"
      +    },
      +    "envelope_version": {
      +      "const": "1",
      +      "type": "string"
      +    },
      +    "normalized_input": {
      +      "additionalProperties": {},
      +      "type": "object"
      +    },
      +    "ok": {
      +      "type": "boolean"
      +    },
      +    "result": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": true,
      +          "properties": {
      +            "exempt": {
      +              "type": [
      +                "boolean",
      +                "null"
      +              ]
      +            },
      +            "has_category_zero": {
      +              "type": [
      +                "boolean",
      +                "null"
      +              ]
      +            },
      +            "has_quantity_exceedance": {
      +              "type": [
      +                "boolean",
      +                "null"
      +              ]
      +            },
      +            "items": {
      +              "anyOf": [
      +                {
      +                  "items": {
      +                    "additionalProperties": true,
      +                    "properties": {
      +                      "class": {
      +                        "type": [
      +                          "string",
      +                          "null"
      +                        ]
      +                      },
      +                      "multiplier": {
      +                        "type": [
      +                          "number",
      +                          "null"
      +                        ]
      +                      },
      +                      "points": {
      +                        "type": [
      +                          "number",
      +                          "null"
      +                        ]
      +                      },
      +                      "proper_shipping_name": {
      +                        "type": [
      +                          "string",
      +                          "null"
      +                        ]
      +                      },
      +                      "quantity": {
      +                        "type": [
      +                          "number",
      +                          "null"
      +                        ]
      +                      },
      +                      "transport_category": {
      +                        "type": [
      +                          "string",
      +                          "null"
      +                        ]
      +                      },
      +                      "un_number": {
      +                        "type": [
      +                          "string",
      +                          "null"
      +                        ]
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "message": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "threshold": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "total_points": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "warnings": {
      +              "anyOf": [
      +                {
      +                  "items": {},
      +                  "type": "array"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": {},
      +          "type": "object"
      +        }
      +      ]
      +    },
      +    "validity": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "as_of": {
      +          "type": "string"
      +        },
      +        "effective_from": {
      +          "type": "string"
      +        },
      +        "effective_to": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "as_of"
      +      ],
      +      "type": "object"
      +    },
      +    "warnings": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "code": {
      +            "type": "string"
      +          },
      +          "details": {
      +            "additionalProperties": {},
      +            "type": "object"
      +          },
      +          "message": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "code",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "envelope_version",
      +    "ok",
      +    "result",
      +    "confidence",
      +    "_source",
      +    "citation"
      +  ],
      +  "type": "object"
      +}
  5. Changed2 schema fields changedv2.1.1
    • addedInput schema / properties / items / items / properties / un_number / pattern
      Added value: +"^(UN)?\\d{4}$"
    • addedInput schema / properties / un_number / pattern
      Added value: +"^(UN)?\\d{4}$"
  6. First observedv1.0.0

TDQS

A4.9/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the readOnly/idempotent annotations: deterministic arithmetic, rate limiting with 429 retry behavior, blocking_errors for unknown UNs, never guessing ambiguous variants, and specific handling for not-subject and carriage-prohibited scope verdicts. It also clearly documents the partial-verdict behavior when only some mixed-load lines are ambiguous.

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

Conciseness4/5

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

The description is long, but every section carries operational content and the tool is genuinely complex. It front-loads the core calculation and qualification rule before diving into edge cases, and it organizes behavior into clear clusters: multi-variant UNs, scope verdicts, returns, and limitations. Slightly tighter wording could improve it, but none of the length is filler.

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 tool with this many edge cases, the description is remarkably complete. It covers ambiguous variants, equivalence, withheld lines, partial sums, scope verdicts, rate limits, return envelope fields, and the 'not legal advice' caveat. The presence of an output schema also reduces the burden, and the description still covers what the schema does not, such as human_review_required and candidates[] behavior.

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

Parameters5/5

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

Although the schema already has 100% parameter coverage, the description adds meaning the schema does not: items takes precedence over un_number/quantity, packing_group can resolve by equivalence in some cases, variant_index comes from adr_lookup, and unit/basis semantics are tied to ADR 1.1.3.6.3 counted dimensions. It also warns about basis_mismatch and gross-weight misuse, going well beyond the schema text.

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?

The description names a specific verb and resource: calculating ADR 1.1.3.6 'small load' exemption points for dangerous-goods loads. It clearly distinguishes itself from adr_lookup and adr_lq_eq_check by stating it is the 1.1.3.6 route rather than the LQ/EQ relief route, so an agent can select it correctly among siblings.

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?

The description tells the agent exactly when to use this tool: for ADR 1.1.3.6 exemption calculations, with per-substance data coming from adr_lookup and LQ/EQ relief alternatives coming from adr_lq_eq_check. It also explains both supported call forms (single-substance vs items[]) and when disambiguators like packing_group or variant_index are needed, giving clear decision guidance.

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