Skip to main content
Glama
SoapyRED

FreightUtils MCP Server

FreightUtils MCP Server

npm version License: MIT FreightUtils MCP server

Сервер Model Context Protocol, предоставляющий ИИ-агентам доступ к 18 инструментам для расчета грузоперевозок и справочным данным, охватывающим автомобильные, авиационные и морские перевозки.

Создан сертифицированным специалистом по планированию перевозок ADR для ИИ-агентов, разработчиков и профессионалов в сфере логистики.

Веб-сайт: https://www.freightutils.com Документация API: https://www.freightutils.com/api-docs


Инструменты (18)

Калькуляторы

Инструмент

Описание

ldm_calculator

Погонные метры (LDM) для европейских и американских грузовых прицепов

cbm_calculator

Кубические метры (CBM) для морских перевозок

chargeable_weight_calculator

Оплачиваемый вес авиаперевозки (объемный против фактического)

pallet_fitting_calculator

Оптимизация размещения коробок на паллетах с учетом поворота

container_lookup

Спецификации контейнеров ISO (10 типов) и расчет загрузки

unit_converter

Конвертация веса, объема, длины и специфических грузовых единиц

consignment_calculator

Расчет CBM, веса, LDM и оплачиваемого веса для сборных грузов

Опасные грузы (ADR)

Инструмент

Описание

adr_lookup

2939 записей UNECE ADR 2025

adr_exemption_calculator

Проверка исключения для малых количеств согласно ADR 1.1.3.6

adr_lq_eq_check

Проверка соответствия требованиям ограниченных (LQ) и освобожденных (EQ) количеств

Таможня и тарифы

Инструмент

Описание

hs_code_lookup

6940 кодов Гармонизированной системы (HS 2022)

uk_duty_calculator

Импортные пошлины и НДС Великобритании (данные в реальном времени из GOV.UK Trade Tariff)

incoterms_lookup

Incoterms 2020 — все 11 правил с точками перехода рисков и затрат

Справочные данные

Инструмент

Описание

airline_lookup

6352 авиакомпании с кодами IATA/ICAO и префиксами AWB

unlocode_lookup

116 129+ транспортных локаций UN/LOCODE

uld_lookup

15 типов авиационных грузовых единиц ULD (LD3, PMC и др.)

vehicle_lookup

17 типов грузовых автомобилей и прицепов

Композитные инструменты

Инструмент

Описание

shipment_summary

Объединяет расчет CBM + вес + LDM + ADR + пошлины в одном запросе


Related MCP server: ShippingRates

Установка

Claude Desktop / Claude Code (stdio)

Добавьте в конфигурацию MCP (claude_desktop_config.json или .claude/settings.json):

{
  "mcpServers": {
    "freightutils": {
      "command": "npx",
      "args": ["freightutils-mcp"]
    }
  }
}

Удаленный HTTP / SSE

Если ваш MCP-клиент поддерживает удаленные серверы, используйте канонический URL:

https://www.freightutils.com/api/mcp

Старый URL https://www.freightutils.com/api/mcp/mcp по-прежнему работает для обратной совместимости с существующими клиентами.

Для базового использования аутентификация не требуется.


Лимиты запросов

Все инструменты используют бесплатный API FreightUtils:

  • Анонимно: 25 запросов в день на IP-адрес

  • Бесплатный API-ключ: 100 запросов в день (регистрация на https://www.freightutils.com)

  • Pro: 50 000 запросов в месяц за £19/мес


Примеры запросов

После подключения ваш ИИ-агент сможет:

  • "Рассчитай CBM для коробки 120см × 80см × 100см, 24 штуки"

  • "Найди UN 1203 в базе данных ADR"

  • "Проверь, подпадает ли 200 л бензина под исключение ADR 1.1.3.6"

  • "Найди код ТН ВЭД для литиевых батарей"

  • "Что означает FOB в перевозках?"

  • "Сколько коробок 40×30×25 см поместится на европаллету?"

  • "Рассчитай погонные метры для 26 европаллет в фуре"

  • "Какова импортная пошлина Великобритании на ноутбуки из Китая?"


Источники данных

  • ADR 2025 — UNECE (лицензировано у Labeline.com)

  • HS 2022 — UN Comtrade (PDDL)

  • Авиакомпании — публичные данные IATA/ICAO, перекрестно проверенные

  • UN/LOCODE — UNECE

  • Пошлины Великобритании — API GOV.UK Trade Tariff в реальном времени

  • Контейнеры/ULD/Транспорт — спецификации ISO, IATA и отраслевые стандарты


Журнал изменений

1.0.6 — 2026-04-22

  • Безопасность: обновление @modelcontextprotocol/sdk до 1.26.0 для исправления CVE-2026-25536 (утечка данных между клиентами при повторном использовании общего транспорта/экземпляра сервера). См. GHSA-345p-7cg4-v4c7.

  • Изменений в API для пользователей нет. Те же 18 инструментов.


Ссылки


Лицензия

MIT — см. LICENSE.

Создано Мариусом Кристою, сертифицированным специалистом по планированию грузоперевозок ADR.

Available Tools

25 tools
adr_exemption_calculatorA
Read-onlyIdempotent
Inspect

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. Without a disambiguator the tool returns blocking_errors[AMBIGUOUS_UN_VARIANT] + human_review_required + candidates[] (each candidate's variant_index, packing_group, proper_shipping_name, transport_category, multiplier) and NO verdict, rather than silently guessing a 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, and scope flags where applicable), 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 and — on scope verdicts — not_subject_to_adr/conditions_ref/conditions[]/carriage_prohibited under result — or, when a UN 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).

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare readOnlyHint, idempotentHint, and destructiveHint, but the description goes further by disclosing concrete behavioral traits: deterministic arithmetic, no silent guessing on ambiguous UNs, NOT SUBJECT TO ADR and CARRIAGE PROHIBITED handling, rate limits with 429 retry behavior, and the non-legal-advice caveat. This adds substantial context beyond the annotations.

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 and dense, but this is a complex tool with multiple edge cases. Each section earns its place: invocation modes, ambiguity handling, scope verdicts, return fields, rate limits, and related tools. It is front-loaded with the core calculation and progressively covers exceptions, though it is not especially concise.

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?

The description covers what the tool does, when to use it, how to disambiguate inputs, edge cases for not-subject and prohibited carriage, rate limiting behavior, return structure, and limitations. Even with an output schema present, the description provides enough context for an agent to call this tool correctly without additional research.

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 description coverage is 100%, so the baseline is 3. The description adds useful parameter-level semantics beyond the schema, such as the precedence of items over un_number/quantity, the meaning of variant_index for concentration bands, and the consequence of omitting a disambiguator. It does repeat some schema detail, but it still enriches the agent's understanding of how parameters interact.

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 opens with a precise statement: 'Calculate ADR 1.1.3.6 "small load" exemption points for a dangerous-goods load.' This names the specific regulation, the computation, and the domain. It also distinguishes itself from related tools by naming adr_lookup and adr_lq_eq_check, so an agent can tell them apart.

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 clearly explains how to invoke the tool: single substance via un_number+quantity, mixed load via items[], and that items takes precedence. It also specifies when disambiguation is required, how scope verdicts are handled, and points to adr_lq_eq_check as the alternative for LQ/EQ relief routes. This is explicit and actionable.

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

adr_lookupA
Read-onlyIdempotent
Inspect

Look up European road dangerous-goods (ADR 2025) reference data for a substance: hazard class, classification code, packing group, labels, special provisions, limited/excepted quantities, transport category, tunnel restriction code and Kemler (hazard identification) number. Covers 2,939 entries across all 9 hazard classes, from UNECE ADR 2025 (ECE/TRANS/352).

Provide exactly ONE of: un_number (exact lookup — returns every packing-group variant of that UN number), search (case-insensitive partial match on the proper shipping name), or hazard_class (all entries in a class or division). un_number is normalised — "1203", "UN1203" and "un 1203" are equivalent, and normalized_input reports the correction; explosives keep their leading zero ("0004").

Behavior: read-only reference lookup; name searches return up to 50 entries, class filters up to 100. An unknown UN number or a search with no hits errors with the API's NOT_FOUND body and a retry hint. 28 Table A rows carry a scope remark instead of a packing group: those return packing_group null plus not_subject_to_adr (with conditions_ref, e.g. "5.5.3" for UN 1845 dry ice) or carriage_prohibited, and table_a_remark preserves the verbatim Table A text. 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: count and results[] — per entry: un_number, proper_shipping_name, class, classification_code, packing_group, labels, special_provisions, limited_quantity, excepted_quantity, transport_category, tunnel_restriction_code, hazard_identification_number, variant_index/variant_count and, on scope-flagged rows, not_subject_to_adr/carriage_prohibited/conditions_ref/table_a_remark — under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: a factual compilation of the ADR table, not legal or compliance advice; classification remains the consignor's responsibility — verify against the current UNECE ADR text.

Related: adr_lq_eq_check (checks quantities against the LQ/EQ values returned here), adr_exemption_calculator (1.1.3.6 small-load points), consignment_calculator (flags dangerous-goods lines by UN number).

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoCase-insensitive partial match on the proper shipping name (min 2 characters). Example: "acetone".
un_numberNoExact UN number — 4 digits, optionally "UN"-prefixed; explosives keep their leading zero. Examples: "1203", "UN1203", "0004".
hazard_classNoAll entries in an ADR class or division. Examples: "3" (flammable liquids), "6.1" (toxic), "1.4" (an explosives division).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/non-destructive annotations, the description discloses result caps (50 entries for search, 100 for class filters), NOT_FOUND error behavior, 429 rate-limit handling with retry_after_seconds, and special scope-flagged rows returning packing_group null with not_subject_to_adr/carriage_prohibited. None of this contradicts the annotations.

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 organized into clear blocks: purpose, input selection, behavior, returns, limitations, and related tools. It is long, but almost every sentence adds needed operational detail; the in-line return-field enumeration is partly redundant with the output schema but not excessive.

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?

The description covers input constraints, edge cases, error responses, rate limiting, volume limits, legal disclaimers, and sibling-tool routing. Combined with a high-coverage input schema, rich annotations, and an output schema, an agent has everything needed to decide whether to call this tool and how to call it correctly.

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?

The input schema already covers all three parameters, but the description adds selection constraints: exactly one of them, exact-only UN number with normalization examples, name search case-insensitive, and class/division matching. It also flags the leading-zero explosives edge case, which goes well beyond the schema's static descriptions.

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 leads with a specific verb and resource: 'Look up European road dangerous-goods (ADR 2025) reference data for a substance,' then lists the returned fields. It also explicitly distinguishes the tool from related siblings like adr_lq_eq_check, adr_exemption_calculator, and consignment_calculator.

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?

It clearly says to provide exactly ONE of un_number, search, or hazard_class and explains which one fits which lookup style. It also names alternatives for adjacent use cases and points to get_subscribe_link for rate-limit relief, so an agent knows when to call this tool versus another.

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

adr_lq_eq_checkA
Read-onlyIdempotent
Inspect

Check whether dangerous goods qualify for ADR Limited Quantity (LQ, ADR 3.4) or Excepted Quantity (EQ, ADR 3.5) relief. LQ compares each item's per-inner-packaging quantity against that substance's LQ maximum; EQ resolves the substance's E-code (E0-E5) and checks the per-inner limit, plus the per-outer limit when inner_packaging_qty is given.

Provide mode ("lq" or "eq") and 1-20 items, each with un_number, quantity and unit — ml or L for liquids, g or kg for solids; quantity is per INNER packaging, not the whole load.

Unit families: column (7a) states the limit in ONE dimension — a mass for some entries, a volume for others — and ADR supplies no density, so a mass quantity against a volume limit (or the reverse) CANNOT be compared. Those items return status 'inconclusive' with the dimension named, never a pass or a fail, and a batch holding any inconclusive item never reads overall_status 'qualifies'. Send the quantity in the unit given by lq_limit_unit to get a verdict. Multi-variant UNs: a UN number with more than one ADR Table A row (packing group / concentration variant — e.g. UN 1789 PG II LQ 1 L vs PG III LQ 5 L) needs packing_group (I|II|III) or variant_index (from adr_lookup) on that item to pin one row. Without a disambiguator the tool returns blocking_errors[AMBIGUOUS_UN_VARIANT] + human_review_required + candidates[] (each candidate's variant_index, packing_group, proper_shipping_name, limited_quantity, excepted_quantity) and NO verdict, rather than silently checking the wrong packing group. Single-row UNs are unchanged.

Behavior: deterministic reference check; each item gets a status and reason (an LQ value of "0" or code E0 means the relief is not permitted for that substance), with overall_status and summary counts across the batch. Table A rows listed "NOT SUBJECT TO ADR" (e.g. UN 1845 dry ice) get item status not_subject — outside ADR scope, neither a pass nor a fail — and an all-not-subject batch returns overall_status not_applicable; "CARRIAGE PROHIBITED" rows are not_permitted with the prohibition stated in reason. 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: mode, overall_status (qualifies | does_not_qualify | partial | not_applicable | inconclusive), items[] (un_number, variant_index, substance, class, packing_group, lq_limit or eq_code, quantity_entered, status, reason, and scope flags where applicable), summary {total_items, qualifying, exceeding, not_permitted, not_subject?, inconclusive?} and the ADR chapter references under result — or, when a UN is ambiguous, human_review_required + candidates[] with blocking_errors, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: a quantity-threshold check only — LQ/EQ relief also requires packaging, marking and documentation conformity that this tool does not assess; not legal advice, verify against the current UNECE ADR text.

Related: adr_lookup (the per-substance LQ/EQ values + variant_index), adr_exemption_calculator (the 1.1.3.6 load-points route instead).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesCheck mode: "lq" (Limited Quantity, ADR 3.4) or "eq" (Excepted Quantity, ADR 3.5).
itemsYesItems to check (1-20 per call).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A5/5.0
Behavior5/5

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

Annotations declare readOnlyHint and idempotentHint, and the description does not contradict them; it adds substantial behavioral context: deterministic reference check, per-item status/reason, ambiguous UNs producing blocking_errors and candidates with no verdict, not_subject/not_permitted states, rate limits with 429 retry behavior, and the limitation that packaging/marking/documentation compliance is not assessed.

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

Conciseness5/5

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

The description is long but proportioned to the domain's complexity. Every section—input requirements, unit families, ambiguous UNs, statuses, return envelope, limitations, related tools—adds necessary information and is front-loaded with the core purpose before expanding into edge cases.

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?

Given a complex tool with an output schema, the description still fully prepares an agent: it covers all input modes, edge cases, status values, overall_status possibilities, error behavior, rate limiting, and operational limitations. Nothing required to select and invoke the tool correctly is left to inference or missing.

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?

Schema description coverage is 100%, but the description compements meaningfully beyond the schema: 'quantity is per INNER packaging, not the whole load'; it explains mass-vs-volume dimension incompatibility leading to inconclusive status; and it clarifies when packing_group or variant_index are needed and when inner_packaging_qty applies in EQ mode.

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 opens with a specific verb and resource: 'Check whether dangerous goods qualify for ADR Limited Quantity (LQ, ADR 3.4) or Excepted Quantity (EQ, ADR 3.5) relief.' It clearly distinguishes itself from sibling tools by pointing to adr_lookup for per-substance values and adr_exemption_calculator for the 1.1.3.6 load-points route.

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?

Usage context is explicit: 'Provide mode ("lq" or "eq") and 1-20 items,' with required fields and units spelled out. It also tells agents when to use related tools instead, and advises 'Send the quantity in the unit given by lq_limit_unit to get a verdict,' plus the adr_exemption_calculator alternative for load-points checks.

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

airline_lookupA
Read-onlyIdempotent
Inspect

Search 6,357 airlines by name, IATA code, ICAO code, AWB prefix, or country. AWB prefixes are the first 3 digits of an air waybill number and identify the issuing carrier (e.g. 176 = Emirates).

Provide ONE parameter: query is a ranked fuzzy search across names and codes; iata / icao / prefix / country are exact filters.

Behavior: read-only; fuzzy query hits report their match quality through the envelope's confidence (basis match_quality, score 0-1) with a FUZZY_BEST_MATCH advisory naming the matched field; a query with no hits returns count 0 with a NO_MATCH advisory rather than an error. 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: count and results[] — per airline: airline_name, iata_code, icao_code, awb_prefix[], callsign, country, has_cargo, aliases and per-record verification fields — under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: this dataset's provenance is pending independent verification (the envelope's provenance_status says so) — confirm operationally critical codes with IATA/ICAO or the carrier.

Related: airport_lookup (searches AIRPORTS, not carriers), validate (checks an AWB number's check digit and names its airline from this dataset).

ParametersJSON Schema
NameRequiredDescriptionDefault
iataNoExact IATA code — 2 alphanumeric characters. Examples: "EK", "U2".
icaoNoExact ICAO code — 3 letters. Examples: "UAE", "BAW".
queryNoRanked fuzzy search across name, codes, prefix and country (min 2 chars). Example: "emirates".
prefixNoExact AWB prefix — the first 3 digits of an air waybill. Example: "176".
countryNoFilter by country name (min 2 chars). Example: "Netherlands".

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive; the description adds concrete behaviors beyond those: fuzzy match quality is surfaced via the envelope's confidence (0-1) and a FUZZY_BEST_MATCH advisory, no-hit queries return count 0 with NO_MATCH instead of an error, a 429 response includes retry_after_seconds, and dataset provenance is flagged as pending verification. That is meaningful transparency for a lookup in a critical logistics context.

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?

Organized into clearly labeled sections (Behavior, Returns, Limitations, Related) with a front-loaded summary. It is somewhat long, but almost every sentence carries distinct information; the rate-limit guidance could arguably be trimmed, yet it is directly actionable.

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 read-only, 0-required-param lookup with a rich output schema, the description covers input selection, behavior in edge cases, rate limits, return envelope highlights, verification caveats, and related tools. Nothing an agent needs to make a correct first call is missing.

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 schema already documents all five parameters and their formats. The description adds the rank-ordering behavior of query, the AWB prefix definition with '176 = Emirates', and the mutual-exclusion rule (provide exactly one parameter), which is not expressed in the schema.

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 precise action and resource ('Search 6,357 airlines'), lists the search axes, and distinguishes itself from airport_lookup in Related. The airline domain is unmistakable and its scope is fully delimited.

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?

It explicitly says to provide ONE parameter, explains the semantic difference between query (fuzzy ranked search) and iata/icao/prefix/country (exact filters), documents rate limits and a retry path, and points to validate/airport_lookup as alternatives. There is no ambiguity about when to use this tool.

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

airport_lookupA
Read-onlyIdempotent
Inspect

Look up an airport by IATA code (3 letters, e.g. "LHR"), ICAO code (4 chars, e.g. "EGLL"), or free-text name/city search (e.g. "heathrow"). Covers 85,555 airports worldwide (OurAirports, public domain, cross-checked vs OpenFlights + Wikidata).

Provide ONE of iata, icao, or query; the optional type filter narrows results. Behavior: read-only; exact code hits return one record; ambiguous name searches return ranked candidates (exact codes first, then larger airports) with match quality reported via the envelope's confidence (basis match_quality); an unknown code errors with a not-found message. 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: count and results[] — per airport: IATA + ICAO/ident, name, type (large/medium/small/heliport/closed/seaplane), municipality, region, country, latitude/longitude and elevation_ft — under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: reference data only — not for navigation; verify operationally critical codes with IATA / ICAO.

Related: nearest_airport (find airports FROM a coordinate), airline_lookup (searches CARRIERS / AWB prefixes, not airports), unlocode_lookup (general transport locations, of which airports are one function).

ParametersJSON Schema
NameRequiredDescriptionDefault
iataNoExact 3-letter IATA code. Example: "LHR".
icaoNoExact 4-character ICAO / ident. Example: "EGLL".
typeNoOptional filter by airport type.
queryNoName / city / municipality search (min 2 chars). Example: "heathrow".

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behaviors: exact code hits return one record, ambiguous name searches return ranked candidates with match_quality confidence, unknown codes produce a not-found error, and rate limits with 429/retry_after_seconds/Retry-After behavior are clearly explained. It also backs off recommendation and points to get_subscribe_link for higher limits.

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

Conciseness5/5

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

The description is long but every sentence earns its place: usage modes, data coverage, behavioral rules, rate limiting, response envelope, limitations, and sibling distinctions. It is front-loaded with the most essential information—lookup methods—and then provides structured depth without repetition.

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?

The description is fully complete for a lookup tool of this complexity. It covers input constraints, output shape, error/rate-limit behavior, limitations, and relationships to siblings. Combined with a rich output schema and full annotation coverage, there is no critical missing context for an agent to select and invoke the tool correctly.

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 schema coverage is 100%, the description adds significant semantic value: it states that iata, icao, and query are mutually exclusive ('Provide ONE of iata, icao, or query'), that type is a narrowing filter, and that query is free-text with minimum length. It also explains ranking behavior based on input choice, which is not captured in the schema.

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 states a specific action—'Look up an airport'—and clearly enumerates the supported lookup keys (IATA, ICAO, free-text name/city). It differentiates itself from related tools by explicitly naming nearest_airport, airline_lookup, and unlocode_lookup, making its purpose unambiguous.

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 and when not: it explicitly says 'Provide ONE of iata, icao, or query' and gives a dedicated 'Related' section contrasting this tool with nearest_airport (coordinate-based lookup), airline_lookup (carrier/AWB search), and unlocode_lookup (general transport locations). This removes ambiguity about alternative selections.

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

cbm_calculatorA
Read-onlyIdempotent
Inspect

Calculate cubic metres (CBM) for a shipment from per-piece dimensions. CBM is the standard volume unit in international shipping: 1 CBM = 1m x 1m x 1m = 1,000 litres, and ocean freight prices per "freight tonne" (1 CBM or 1,000 kg, whichever is greater).

Behavior: deterministic — identical inputs always return identical figures; total volume = pieces x per-piece CBM, with conversions to cubic feet, cubic inches and litres included. Missing or non-positive dimensions error with a validation message naming the parameter. 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: cbm_per_piece, total_cbm, cubic_feet, litres, cubic_inches and pieces under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Related: chargeable_weight_calculator (air billing weight from the same dims), consignment_calculator (multi-line totals), unit_converter (single conversions), shipment_summary (full composite analysis).

ParametersJSON Schema
NameRequiredDescriptionDefault
piecesNoNumber of identical pieces — total volume scales linearly. Default: 1.
width_cmYesWidth of one piece in centimetres (> 0). Example: 80.
height_cmYesHeight of one piece in centimetres (> 0). Example: 100.
length_cmYesLength of one piece in centimetres (> 0). Example: 120.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing determinism, the exact calculation formula, validation behavior for missing or non-positive dimensions, the 429 rate-limit contract with retry_after_seconds and Retry-After header, and the response fields. This is valuable operational behavior that annotations do not provide.

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

Conciseness5/5

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

The description is structured in clear sections — purpose, behavior, returns, related tools — with each sentence contributing useful information. No filler or redundant restatement of structured metadata appears, and the core purpose is front-loaded.

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 read-only, idempotent calculator with fully specified parameters and an output schema, the description covers the result payload, error behavior, rate limiting, retry handling, and alternative tools. No important invocation-related detail is missing.

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

Parameters3/5

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

The input schema already provides 100% documented parameter coverage, including descriptions, examples, and value constraints. The description adds helpful context about per-piece dimensions and linear scaling, but the schema is already doing the heavy lifting, so the baseline score of 3 is appropriate.

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?

Opens with a clear verb-resource action: 'Calculate cubic metres (CBM) for a shipment from per-piece dimensions' — then situates it in the shipping domain and distinguishes it from related tools. The purpose is specific and not merely a restatement of the tool name.

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 'Related' section explicitly names alternatives with their distinct use cases: chargeable_weight_calculator for air cargo billing weight, consignment_calculator for multi-line totals, unit_converter for single conversions, and shipment_summary for full composite analysis. This gives an agent concrete guidance on when to choose this tool versus a sibling.

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

chargeable_weight_calculatorA
Read-onlyIdempotent
Inspect

Calculate air freight chargeable weight — the greater of actual gross weight and volumetric weight, which is what airlines bill. Volumetric weight (kg) = (L x W x H in cm) / divisor; the IATA-standard divisor is 6,000 (1 CBM = 166.67 kg), while express integrators (DHL, FedEx, UPS) typically use 5,000.

Behavior: deterministic; per-piece volumetric weight is rounded to 2 decimal places before totalling; basis reports which weight governs ("volumetric" = cargo is light for its size, "actual" = dense). Air mode only — sea W/M (1 CBM = 1,000 kg) is covered by consignment_calculator with mode=sea. Missing or non-positive inputs error with the failing parameter named. 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: chargeable_weight_kg, basis, volumetric_weight_kg (total and per piece), gross_weight_kg, cbm, ratio, factor and pieces under result; normalized_input echoes the interpreted inputs and any defaults applied; plus confidence, _source and citation (the FreightUtils v1 response envelope).

Related: cbm_calculator (volume only), consignment_calculator (multi-line, all modes), uld_lookup (the equipment the freight flies in).

ParametersJSON Schema
NameRequiredDescriptionDefault
factorNoVolumetric divisor in cm³/kg. Default: 6000 (IATA standard); express carriers typically 5000.
piecesNoNumber of identical pieces. Default: 1.
width_cmYesWidth of one piece in centimetres (> 0). Example: 80.
height_cmYesHeight of one piece in centimetres (> 0). Example: 100.
length_cmYesLength of one piece in centimetres (> 0). Example: 120.
gross_weight_kgYesActual gross weight of the WHOLE shipment (all pieces) in kilograms. Example: 500.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark the operation as read-only and idempotent. The description adds important behavioral context beyond those: per-piece volumetric weight rounded to 2 decimals before totalling, basis reporting which weight governs, deterministic behavior, exact error behavior for missing/non-positive inputs, and rate-limit/retry handling via 429 responses. No contradiction with annotations.

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

Conciseness5/5

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

The description is long, but each section earns its place: main calculation, behavioral rules, error handling, response envelope, and related tools. It is front-loaded with the core purpose and then organized topically, so an agent can quickly extract the essential directive.

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?

Given the tool's complexity, the 6 parameters, output schema, and annotations, the description is complete: it covers scope, transformation logic, error conditions, rate limits, result envelope, and alternatives. It does not need to explain return values in detail because the output schema is present.

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 already 100%, so the baseline is 3. The description still adds meaning: it explains the formula (L x W x H cm divided by divisor), the IATA vs. express-carrier divisor conventions, per-piece interpretation, and the distinction between volumetric and actual weight across pieces. This goes beyond the schema but does not need to fully repeat parameter details.

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 opens with a specific verb-and-resource statement: 'Calculate air freight chargeable weight' and explains the core concept. It distinguishes the tool from explicit siblings (cbm_calculator, consignment_calculator, uld_lookup), so an agent can clearly tell what this tool is for.

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 explicitly states when this tool applies: air mode only, and when it does not: sea W/M is covered by consignment_calculator with mode=sea. It also points to related alternatives and even behavior on rate limits with get_subscribe_link. Nothing is left ambiguous about choice of tool.

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

consignment_calculatorA
Read-onlyIdempotent
Inspect

Calculate per-line and grand totals for a multi-item mixed consignment: CBM, loading metres (LDM), volumetric weight, and the mode-specific chargeable figure (air chargeable weight, sea revenue tonnes, road LDM), plus objective advisory flags.

Provide mode (sea | air | road, default road) and either lines[] (canonical — per line: quantity, dims {l,w,h,unit}, weight {value,unit}, optional description / hs_code / un_number / stackable) or the legacy flat items[] (dimensions in cm, weight in kg). Air uses an IATA volumetric divisor (default 6000, settable via options.air_volumetric_divisor); options.container_number / options.awb_number add a check-digit sanity flag.

Behavior: deterministic; flags are advisory only — implausible density, mode/option mismatch, dangerous-goods presence by UN number against ADR 2025, and container/AWB check-digit validity — and never state that a shipment is permitted or compliant. Invalid lines error naming the offending field. Canonical schema: https://www.freightutils.com/schema/consignment.v1.json. 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: schema_version, mode, per_line[] (cbm, gross_weight_kg, density, volumetric_weight_kg, ldm, revenue_tonnes, chargeable_weight_kg), totals (incl. billing_basis) and flags[] under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: best-effort deterministic calculation and reference data — not regulatory, customs or dangerous-goods compliance advice; classification, documentation and carrier acceptance remain your responsibility.

Related: cbm_calculator / chargeable_weight_calculator / ldm_calculator (single-figure versions), shipment_summary (adds vehicle/container suggestion and duty estimates), adr_lookup (what a flagged UN number is).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoTransport mode: sea | air | road. Default: road.
itemsNoLegacy flat alias — dimensions in cm, weight in kg. Prefer lines.
linesNoCanonical consignment lines (preferred, 1-50). Provide lines OR items.
optionsNoOptional settings.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive, and the description adds important behavioral detail on top of that: calculations are deterministic, flags are advisory and can never imply compliance, invalid lines error with the offending field, and the API is rate-limited with a 429 body containing retry_after_seconds and Retry-After. This gives an agent a clear picture of expected behavior, error handling, and side-effect constraints beyond what annotations provide. No contradiction with the annotations.

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

Conciseness5/5

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

The description is structured and front-loaded: the first sentence captures the core output, and subsequent paragraphs cover behavior, errors, return envelope, limitations, and related tools. Every clause earns its place — even the rate-limit and limitation notes directly affect invocation correctness — while distinct labels such as 'Behavior', 'Returns', and 'Limitations' keep it readily navigable.

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 complex tool with 4 parameters, nested objects, enums, an output schema, and many siblings, the description gives everything an agent needs: direct input combinations, schema, behavior, error semantics, rate-limit handling, return envelope, and explicit comparison to the alternatives. It also appropriately relies on the output schema for structural return details, but adds the meaningful caveat that flags are advisory and not compliance advice.

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?

The input schema already documents all parameters at 100% coverage, so the description does not need to re-explain every field. However, it adds valuable semantic context beyond the schema: the canonical vs legacy distinction, the default for mode, the IATA divisor default of 6000, and that options.container_number/awb_number trigger check-digit sanity flags. The description also clarifies that legacy items are 'dimensions in cm, weight in kg,' which the schema leaves somewhat implicit.

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 opens by stating the exact scope — calculate per-line and grand totals for a multi-item mixed consignment, naming each metric (CBM, LDM, volumetric weight, mode-specific chargeable figure) and the advisory flags. It differentiates the tool from siblings by explicitly labeling cbm_calculator, chargeable_weight_calculator, and ldm_calculator as 'single-figure versions' and by distinguishing shipment_summary as the tool that adds vehicle/container suggestion and duty estimates.

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 gives concrete guidance on when to choose this tool versus alternatives: single-figure modes are separate tools, shipment_summary is the next step for broader recommendations, and adr_lookup explains a flagged UN number. It also clarifies canonical lines[] vs legacy flat items[], and tells users to call get_subscribe_link when rate limits are hit.

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

container_lookupA
Read-onlyIdempotent
Inspect

Get ISO shipping-container specifications, with optional load-fit maths. Covers 10 types: 20ft/40ft standard, 40ft and 45ft high-cube, 20ft/40ft reefer, 20ft/40ft open-top and 20ft/40ft flat-rack.

Provide type as a slug (e.g. "20ft-standard", "40ft-high-cube") for one container's record; omit it to list all 10. Add item dimensions (item_length_cm/width_cm/height_cm, optional item_weight_kg and item_quantity) to also compute how many such items fit.

Behavior: read-only reference data with per-record provenance (sources, audited_at, decision_rationale); an unknown type errors with the valid slug list. Fit calculations are geometric best-effort — they do not model load distribution, securing or mixed cargo. 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: the container record — internal/external/door dimensions (cm), capacity_cbm, tare_weight_kg, max_gross_kg, max_payload_kg and euro/GMA pallet counts — under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: manufacturer-typical specs, provenance pending independent verification (the envelope's provenance_status says so) — actual equipment varies by lessor and line; confirm against the carrier's equipment guide.

Related: validate (checks a container NUMBER's ISO 6346 check digit — not specs), cbm_calculator / consignment_calculator (the cargo volume to fill it), uld_lookup (the air-freight equivalent).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoContainer slug. Examples: "20ft-standard", "40ft-high-cube", "20ft-reefer". Omit to list all 10 types.
item_quantityNoNumber of items to check against the container.
item_width_cmNoItem width in cm.
item_height_cmNoItem height in cm.
item_length_cmNoItem length in cm — provide all three item dims to get a load-fit calculation.
item_weight_kgNoItem weight in kg — caps the fit by max payload.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description reveals concrete behavior: per-record provenance, unknown-type errors returning the valid slug list, geometric best-effort fits with explicit non-modeling caveats, and rate limiting where 429 returns retry_after_seconds. This is rich behavior the annotations alone do not cover.

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?

While the description is long and dense, each sentence earns its place: covering supported types, invocation variants, fit semantics, provenance, error behavior, rate limits, and sibling routing. It is structured and front-loaded, but a little heavy for agents scanning quickly.

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?

Given readOnlyHint, idempotentHint, and openWorldHint=false, plus an output schema and 100% parameter schema coverage the description still fills important gaps: exact rate limits, best-effort fit limitations, error-response form, and related-tool routing. An agent has all the behavioral context needed to call it correctly.

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

Parameters3/5

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

Schema text already covers all six parameters at 100% coverage, including examples like '20ft-standard' and note that length is required to trigger the load-fit calculation. The description restates some of this framing (omit type to list all, adding dims computes fit) but does not add meaning significantly beyond the schema.

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 opens with a specific verb and resource: 'Get ISO shipping-container specifications, with optional load-fit maths.' It enumerates exactly which 10 container types are covered, and this high-level statement is sufficiently distinct from siblings like cbm_calculator, uld_lookup, and validate.

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

Usage Guidelines4/5

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

The Related section explicitly differentiates sibling tools: validate checks a container number's check digit, cbm_calculator/consignment_calculator handle cargo volume, and uld_lookup is the air-freight equivalent. This gives clear context for choosing this tool over alternatives, though it does not give an exhaustive when-not-to-use list.

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

emissions_calculatorA
Read-onlyIdempotent
Inspect

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 (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: 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 open factor, all under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: best-effort reference estimate from open 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).

ParametersJSON Schema
NameRequiredDescriptionDefault
massYesShipment mass, expressed in mass_unit. Example: 1000.
modeYesTransport mode.
basisNoEmissions basis: wtw = well-to-wheel incl. upstream (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.
mass_unitNoUnit for mass. Default: kg.
distance_kmYesTransport distance in kilometres — you provide it; the tool does not route.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A5/5.0
Behavior5/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior, and the description adds substantial behavioral detail beyond that: deterministic results, built-in empty running, low representativeness for sea/air, unknown inputs returning available:false rather than fabricated factors, and rate-limiting behavior with 429 handling. The description is fully consistent with the annotations.

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

Conciseness5/5

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

The description is long but every sentence earns its place. It front-loads the core formula and required inputs, then adds important parameter guidance, behavioral notes, return-envelope content, limitations, and sibling-tool distinctions. It is well-organized into functional paragraphs with no fluff or tautology.

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?

Given 7 parameters, an output schema, and a rich context from sibling tools, this description is complete: it covers input requirements, key parameters, edge cases (unknown returns, rate limits), the return envelope, limitations, and explicit distinction from related calculators. An agent has everything needed to select and invoke the tool correctly without external guesswork.

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 schema descriptions cover all 7 parameters, the tool description adds critical semantic nuance: actual gross mass vs chargeable/volumetric weight (a common air-freight mistake), the fact that distance is caller-provided with no routing behavior, the meaning of wtw vs ttw, and region/authority mappings (uk=DEFRA, us=EPA, fr=ADEME). This goes well beyond the schema's short field descriptions.

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?

Description opens with a specific verb and resource: 'Estimate freight transport greenhouse-gas emissions (kgCO2e) for a shipment leg' per ISO/GLEC standards. It clearly defines the calculation formula and the required inputs. The closing line distinguishes it from cbm_calculator, ldm_calculator, and chargeable_weight_calculator by stating those size/bill a shipment while this one estimates CO2e.

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?

Explicitly instructs when to use the tool and with what care: pass actual gross mass not chargeable weight, provide distance because the tool does not route, and do not add an empty-return leg. It also names sibling calculators that are distinct and directs to get_subscribe_link for higher rate limits. This is full usage guidance with both affirmative and exclusionary conditions.

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

hs_code_lookupA
Read-onlyIdempotent
Inspect

Search 6,940 WCO Harmonized System (HS 2022) commodity codes — the 6-digit international customs classification layer. The first 2 digits are the chapter, 4 the heading, 6 the subheading.

Provide ONE of: query (free-text description search, min 2 chars), code (2-6 digit lookup, returns the code plus its hierarchy), or section (Roman numeral I-XXI to browse a section).

Behavior: read-only; description search is keyword-based against official HS descriptions, so everyday product words can return zero rows — count 0 with an empty results[] is a valid answer (e.g. "laptop" and "computers" find nothing; "automatic data" matches the official phrasing "automatic data processing machines"); prefer the formal tariff wording. 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: the query/code echo, count and results[] (hscode, description and hierarchy context) under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: the 6-digit international level only — national tariff lines (8-10 digits) and duty rates are set per country; classification here is indicative, not a binding ruling.

Related: uk_duty_calculator (duty/VAT for a code found here), ics2_check (EU ENS goods-description quality — a different check entirely).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoExact HS code or prefix — 2, 4 or 6 digits. Example: "8471".
queryNoKeyword search on official HS descriptions (min 2 chars). Formal tariff wording works best. Example: "automatic data" rather than "laptop".
sectionNoBrowse a section by Roman numeral I-XXI. Example: "XVI" (machinery).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations provide readOnlyHint and idempotentHint, but the description goes far beyond by covering rate limits, 429 retry behavior, keyword search matching official WCO phrasing, and the validity of zero-row results. It also clearly states limitations around national tarrifi lines and legal binding. This is strong behavioral disclosure.

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

Conciseness5/5

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

The description is longer than average but every sentence earns its place: parameter modes, search behavior, rate-limits, return envelope, jurisdictional limitations, and related tools are each clearly structured. It avoids filler while remaining front-loaded with the core purpose.

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?

Given an output schema exists, the description still covers the full operational shape: invocation modes, valid answer semantics, error handling, and stale limitations. An agent can safely invoke it and interpret results without additional information.

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?

Input schema already documents all three parameters, so the baseline is 3. The description adds meaningful context: the hierarchy of 2/4/6-digit codes, the need for formal tariff wording in queries, and that section means Roman numeral I-XXI. This is more than the schema provides. A minor gap is there is no explicit handling of multiple parameter combinations beyond stating ONE.

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: searching 6,940 WCO Harmonized System HS 2022 codes at the 6-digit international layer. It further explains the code structure and clearly differentiates this lookup from related tools.

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 explicitly says when to use this tool vs alternatives, including which parameter mode to choose. It names uk_duty_calculator and ics2_check as related but different tools, and directs callers to get_subscribe_link for rate limiting. This leaves no ambiguity about selection.

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

ics2_checkA
Read-onlyIdempotent
Inspect

Check a goods description against the official EU ICS2 stop-words list — terms the European Commission deems too vague or generic for an entry summary declaration (ENS) goods-description field (data element 18 05 000 000).

Pass description=. Behavior: deterministic term matching against the in-force EU list; each flagged term carries a note (a standalone stop-word means automatic rejection, an embedded one means make the description more specific); clean=true means no listed term matched — it does NOT guarantee acceptance, and no binary accepted/rejected verdict is given. 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: the description echo, flagged[] (term + note), clean, caveat and disclaimer under result, plus a _source citing the EU list and legal basis, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: STRICTLY a reference check — not an ENS filing, not a customs-compliance determination, not legal advice; the EU list is non-exhaustive and updated periodically.

Related: hs_code_lookup (commodity codes — a different field of the ENS), uk_duty_calculator (duty/VAT, unrelated to ENS screening). Use BEFORE filing an ENS — for customs/documentation teams, brokers and agents building filing pipelines.

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionYesThe goods description to check. Example: "gifts" (flagged) vs "wooden toys for retail" (specific).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.7/5.0
Behavior5/5

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

注解已声明readOnlyHint、idempotentHint和destructiveHint,描述在此基础上补充关键行为信息:确定性匹配、无二进制接受/拒绝裁决、clean≠保证通过、限流机制(429响应含retry_after_seconds)、以及超出限制时应调用get_subscribe_link。还披露了非穷尽列表、定期更新等能力边界,远超注解能表达的内容。

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

Conciseness5/5

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

描述虽然较长,但每个句子都有明确的信息价值:从核心行为、返回结构、速率限制、限制条款到相关工具路由,信息密度高,没有冗余内容。关键用法说明(确定性匹配、clean含义、非保证性质)前置,限制和替代品放在后部层次清晰。

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?

对于单参数工具,描述已覆盖输入方向、输出结构(echo/flagged/clean/result/caveat/_source等)、已知行为特化、限流边界、误差与使用场景,以及相关工具链接。尽管输出schema存在,描述仍然显式列出返回的关键字段,帮助代理预期输出语义;因此上下文完备,无需额外推断。

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

Parameters3/5

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

输入schema只有一个desc参数,且覆盖了100%,自带对比示例('gifts' vs 'wooden toys for retail'),因此参数语义已经由schema充分完成。描述中仅复述'Pass description=<goods description>',没有在schema示例之外增加大量新的参数语义或格式约束,按基线评分3分。

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?

描述用明确动词+宾语+范围说明工具功能:检查货物描述匹配欧盟ICS2禁止词列表,用于ENS申报。同时通过与兄弟工具hs_code_lookup和uk_duty_calculator的对比,清晰区分职责范围,代理无需打开schema即可理解工具用途。

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?

明确说明使用场景(在提交ENS之前进行筛查)、目标用户(海关/文件团队、报关行、代理)、以及何时不使用本工具(不是提交ENS,不是合规判定,不是法律建议)。还明确指出哪些兄弟工具用于其他功能的替代选择,让代理能做出正确的路由决策。

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

incoterms_lookupA
Read-onlyIdempotent
Inspect

Look up the 11 Incoterms 2020 trade rules — who pays for transport, insurance and customs clearance, and where risk transfers from seller to buyer. 7 rules work for any transport mode (EXW, FCA, CPT, CIP, DAP, DPU, DDP); 4 are sea/inland-waterway only (FAS, FOB, CFR, CIF).

Provide code for one rule, category (any_mode | sea_only) for a filtered list, or neither to list all 11. Behavior: read-only reference; an unknown code errors with the valid code list. 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: the rule record — name, category, summary, seller_responsibility, buyer_responsibility, risk_transfer, cost_transfer, insurance, export/import clearance, best_for and watch_out — under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: summarised guidance on ICC Incoterms 2020; the ICC publication is the binding text and specific contract wording prevails.

Related: uk_duty_calculator (accepts an incoterm when composing the CIF value), shipment_summary (composite analysis).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoThree-letter Incoterms 2020 code. Examples: "FOB", "CIF", "EXW", "DAP".
categoryNoFilter the list: any_mode (7 rules) or sea_only (4 rules).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.6/5.0
Behavior5/5

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

The description is read-only, idempotent, and harmful: true for readOnlyHint, so the baseline transparency burden is reduced. It meaningfully adds behavior: read-only reference, errors on unknown codes, rate-limited to 25 requests/day for anonymous use, with retry semantics for 429 responses and a Retry-After header. It also summarizes the response fields, giving more than annotations alone would provide.

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

Conciseness5/5

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

The description is efficient and logically structured: purpose first, then parameter modes, then behavior/error/rate-limit considerations, then return value. Every sentence adds operational value, and the wording is compact with no repetitive padding.

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

Completeness4/5

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

For a simple two-optional-parameter tool, the description covers invocation, list filtering, error behavior, rate limits, retry handling, and output shape. It is slightly ambiguous about whether code and category can be combined, and it does not explicitly state that list results are an array, but the output schema is available and covered most of that. Overall it provides enough context for correct use.

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% because both code and category have descriptions and examples. The description adds meaning beyond the schema by defining the three valid modes: single code, category-filtered list, or neither to list all 11. This clarifies interaction between the two optional parameters, though it does not explicitly state what happens if both code and category are sent.

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 opens with a specific verb and resource: lookup the 11 Incoterms 2020 trade rules, and specifically covers payment for transport/insurance/customs plus risk transfer. It sharpens purpose by splitting the rules into any-mode versus sea-only modes, which clearly differentiates the domain from sibling lookup tools. This is not a tautology and gives a clear, distinct purpose.

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

Usage Guidelines4/5

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

The description explicitly explains how to call the tool: provide a code, provide a category, or provide neither for a complete listing, and it warns that unknown codes error with the valid code list. It also directs heavy users to get_subscribe_link for higher rate limits. It lacks an explicit 'when not to use this' statement relative to other lookup siblings, but the intended invocation context is otherwise clear.

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

ldm_calculatorA
Read-onlyIdempotent
Inspect

Calculate loading metres (LDM) for European road freight — how much trailer length a pallet load occupies. 1 LDM = 1 linear metre of a 2.4m-wide trailer; a standard artic is 13.6 LDM.

Provide a pallet preset OR custom length_mm + width_mm — omitting both errors with a usage hint. Behavior: deterministic; stackable=true with stack_height 2 or 3 divides the floor footprint accordingly; fits reports whether the load fits the chosen vehicle's LENGTH (give weight_kg to also see total_weight_kg against the vehicle's max payload); utilisation_percent is of the vehicle's length. 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: ldm, vehicle (name, length_m, max_payload_kg), utilisation_percent, pallet_spaces (used/available), total_weight_kg, fits and warnings under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Related: vehicle_lookup (the trailer specs behind the vehicle presets), pallet_fitting_calculator (boxes onto one pallet), consignment_calculator (mixed lines including LDM).

ParametersJSON Schema
NameRequiredDescriptionDefault
palletNoPallet preset: euro=1200x800mm, uk=1200x1000mm, half=800x600mm, quarter=600x400mm. Provide this OR length_mm + width_mm.
vehicleNoVehicle preset: artic = 13.6m curtainsider (default), rigid10 = DEPRECATED, removal in 3.0.0 (it still answers with the same figures and returns a DEPRECATED advisory in warnings[]; its 10 m length is published by no manufacturer for any rigid — use custom with vehicle_length_m, or artic), rigid75 = 7.5t rigid, luton = 3.5t Luton van, us53 = 53ft US/Canada trailer, us48 = 48ft US trailer, or custom. EU presets divide by the 2.40 m loading-metre convention; US trailers divide by their own 2.591 m internal width, because loading metres are not the North American pricing unit.
quantityNoNumber of pallets. Default: 1.
width_mmNoCustom pallet width in millimetres. Example: 980.
length_mmNoCustom pallet length in millimetres (use with width_mm instead of a preset). Example: 1140.
stackableNoWhether pallets can be double/triple-stacked — halves (or thirds) the floor footprint. Default: false.
weight_kgNoWeight per pallet in kg — enables the payload side of the fits check.
stack_heightNoStack height when stackable: 2 or 3. Default: 2.
vehicle_length_mNoCustom vehicle load length in metres (required when vehicle=custom).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.9/5.0
Behavior5/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description needs to add only behavioral context, which it does: rate-limiting at 25/day with 429 retry handling, deterministic behavior, stackable semantics, the length-only fits check, and the warning/depreceived advisories. No contradiction with the annotations.

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

Conciseness5/5

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

The description is long but every sentence earns its place: it defines, lists required/optional combinations, explains behavioral results, names rate-limit/retry rules, and routes to siblings. The structure is logical — concept, usage, behavior, output, related tools — with no filler or repetition.

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?

Given 9 parameters, 2 enums, no required params, and an output schema, the description is complete enough to invoke the tool correctly. It covers the critical success condition (pallet vs custom dimensions), vehicle presets including deprecation, rate limits and retry, the result envelope fields, and the sibling-tool routing. Nothing an agent needs to call it correctly is missing.

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% with rich descriptions for every parameter, so the schema does most of the heavy lifting. The description adds useful cross-parameter semantics that the schema alone cannot convey: the 'pallet preset OR custom length_mm + width_mm' exclusivity, the stack_stack_height effect on floor footprint, and the effect of weight_gg enabling the payload part of fits.

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 opens with a specific verb and resource: 'Calculate loading metres (LDM) for European road freight' and defines the unit precisely ('1 LDM = 1 linear metre of a 2.4m-wide trailer'). It differentiates this calculator from related sibling tools by pointing to vehicle_lookup, pallet_fitting_calculator, and consignment_calculator with distinct one-line scopes.

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 gives explicit usage rules: 'Provide a pallet preset OR custom length_cm + width_mm — omitting both fails with a usage hint,' and explains optional-parameter trade-offs such as 'give weight_kg to also see total_weight_kg' and 'stackable = true with stack_height 2 or 3'. It also names alternatives through the Related list, letting the agent route to the right sibling.

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

nearest_airportA
Read-onlyIdempotent
Inspect

Find the airports nearest to a caller-provided latitude/longitude, sorted by great-circle (haversine) distance with distance_km on each result. Searches 85,555 airports (OurAirports, public domain).

Provide latitude and longitude (decimal degrees); optional radius_km, max_results (1-50, default 10) and type filter (e.g. large_airport only). Coordinates are INPUT only — nothing is stored or logged.

Behavior: deterministic distance sort; confidence reflects proximity and airport size (a large airport within 25 km scores high; closed/heliport/seaplane results cap lower). This tool does NOT geocode place names and does NOT compute routes — pass coordinates you already hold. 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: count and results[] (the airport record plus distance_km) under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: reference data only — not for navigation; verify codes with IATA / ICAO.

Related: airport_lookup (exact code or name lookup, no distance), unlocode_lookup (named transport-location search).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOptional filter by airport type. Example: "large_airport".
latitudeYesLatitude in decimal degrees (-90 to 90). Example: 51.47.
longitudeYesLongitude in decimal degrees (-180 to 180). Example: -0.4543.
radius_kmNoMaximum distance in kilometres — omit for no radius cap.
max_resultsNoMaximum results (1-50). Default: 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds significant behavioral context: coordinate inputs are not stored or logged, the sort is deterministic, confidence semantics are explained, rate limiting is disclosed with retry_after_seconds and Retry-After header, and the tool is reference-only, not for navigation. This goes well beyond the annotations.

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

Conciseness5/5

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

The description is detailed but every sentence carries operational value: scope, dataset size, required and optional parameters, exclusionary behavior, rate-limit details, output format, limitations, and related tools. The key purpose is front-loaded, and there is no 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?

The description covers required inputs, optional parameters, output response envelope, error behavior, limitations, data source, and sibling tools. There is an output schema present, so return values are contextualized. The definition is more than complete for an agent to select and invoke it correctly.

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

Parameters3/5

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

The input schema already defines all parameters with ranges, examples, and defaults; the description mostly restates this. It adds no truly new parameter semantics beyond what is in the schema, so a baseline of 3 is appropriate.

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 opens with a specific verb and resource: 'Find the airports nearest to a caller-provided latitude/longitude, sorted by great-circle (haversine) distance.' It clearly differentiates itself from siblings like airport_lookup and unlocode_lookup by stating it does not geocode place names and does not compute routes.

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 explicitly states when to use this tool ('pass coordinates you already hold') and what it does NOT do ('does NOT geocode place names and does NOT compute routes'). It also names related alternatives (airport_lookup, unlocode_lookup) with their different purposes.

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

pallet_fitting_calculatorA
Read-onlyIdempotent
Inspect

Calculate how many identical boxes fit on a pallet: boxes per layer (trying 90-degree rotation when allowed), layer count within the max height, totals, volume utilisation and weight capping.

Behavior: deterministic geometric packing of one box size in aligned rows and columns — it does not model interlocked or mixed-orientation patterns; weight_limited reports when max_payload_kg caps the count below the geometric fit; pallet_deck_height_cm defaults to 15. Missing or non-positive dimensions error naming the parameter. 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: boxes_per_layer, layers, total_boxes, orientation, boxes_per_row/col, usable_height_cm, utilisation_percent, total_box_volume_cbm, wasted_space_cbm and the weight fields under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: a theoretical best-effort fit — real stacking obeys carton strength, overhang and load-stability rules it does not model.

Related: ldm_calculator (pallets into trailer length), vehicle_lookup (pallet capacity per vehicle), container_lookup (pallets into containers).

ParametersJSON Schema
NameRequiredDescriptionDefault
box_width_cmYesBox width in cm.
box_height_cmYesBox height in cm.
box_length_cmYesBox length in cm.
box_weight_kgNoWeight per box in kg — enables the weight-capping check.
allow_rotationNoTry 90-degree box rotation for the best layer fit. Default: true.
max_payload_kgNoMaximum pallet payload in kg. Example: 1000.
pallet_width_cmYesPallet width in cm. Example: 80 (euro pallet).
pallet_length_cmYesPallet length in cm. Example: 120 (euro pallet).
pallet_max_height_cmYesMaximum stack height in cm INCLUDING the pallet deck. Example: 180.
pallet_deck_height_cmNoPallet deck height in cm. Default: 15.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial behavioral details beyond the annotations: deterministic geometric fitting only, no interlocked or mixed orientations, weight-limit capping behavior, default pallet_deck_height_cm, error behavior for missing or non-positive dimensions, and rate-limiting with retry details and 429 handling. The description does not contradict annotations and enriches what it means for the operation to be read-only and idempotent.

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

Conciseness5/5

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

The description is structured into clear labeled sections: Behavior, Returns, Limitations, Related. The first sentence delivers the core purpose, and each additional section provides vital operational context without wasted words. It is longer than average but every sentence serves a functional purpose.

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?

The description covers the full calling context: what the result includes, which alternative tools to consider, limitations, rate limiting, retry behavior, and callback to a subscription tool for higher limits. The presence of an output schema is not ambiguous, and the in-description return list is sufficient for an agent to plan its use.

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

Parameters3/5

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

Schema description coverage is 100% with each parameter described, including defaults and examples. The description does not introduce new parameter semantics beyond that, though it confirms the relation between max_payload_kg and weight_limited and allow_rotation with the mention of 90-degree rotation. Since the schema already carries the full parameter meaning, a baseline 3 is appropriate.

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 opens with a specific verb and resource: 'Calculate how many identical boxes fit on a pallet' and enumerates the exact outputs. It distinguishes itself from related tools by citeing ldm_calculator, vehicle_lookup, and container_lookup with their different roles.

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

Usage Guidelines4/5

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

Related tools are named with their distinct purposes ('pallets into trailer length', 'capacity per vehicle', 'pallets into containers'), which implicitly routes an agent. No explicit 'when to use vs when not' statement is present, but the limitations paragraph makes the scope clear.

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

resolve_referenceA
Read-onlyIdempotent
Inspect

Resolve an arbitrary freight identifier — one opaque string in, typed and cited candidates out. The agent front door: when you hold an identifier-ish token ("176", "UN1845", "NLRTM", "FOB", "22G1", "MSKU1100810", "D/E") and do not know which lookup tool fits, call this FIRST and follow the candidate's api_url / canonical_url (or the matching sibling tool) for depth.

Provide q: ONE identifier (single token, max 32 chars). Thirteen grammars all run — UN numbers, AWB prefixes, airline IATA/ICAO, airport IATA/ICAO, UN/LOCODE, ISO 6346 container numbers (check digit computed), HS codes (6-10 digits; national lines resolve at their 6-digit international parent), Incoterms, ADR tunnel codes, ULD serials, ISO container size/type codes. Ambiguity is the product: colliding grammars return MULTIPLE ranked candidates ("LHR" is Heathrow AND an Egyptian carrier's ICAO), never a silent guess.

Behavior: deterministic — normalize (trim, uppercase, collapse spaces/dashes, strip a UN prefix), match ALL grammars, rank by record-hit > verification status > static dataset prior (airlines/adr/unlocode first) > stable tiebreak; every candidate carries rank_basis so the ordering is inspectable. Zero candidates is a VALID result (count 0 + note), never an error. A failed container check digit returns a candidate with valid:false rather than dropping it. 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: query, normalized, count and candidates[] — each with entity_type, identifier_type, value_normalized, summary, record (the core fields the matching dataset holds), verification_status + verification_basis, rank_basis, canonical_url, api_url and a per-candidate dataset citation — under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: v1 is SINGLE-TOKEN resolution, not free-text extraction — pass one identifier, not a manifest line; SCAC/BIC codes are not yet covered; a match asserts the identifier is known/well-formed, not that a shipment exists.

Related: every lookup tool this resolves into — adr_lookup, airline_lookup, airport_lookup, unlocode_lookup, hs_code_lookup, incoterms_lookup, container_lookup, uld_lookup, validate.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesOne freight identifier — e.g. "176", "UN1845", "NLRTM", "FOB", "LHR", "22G1", "MSKU1100810", "090111", "AKE12345AB", "D/E".

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.8/5.0
Behavior5/5

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

Although annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, the description adds rich behavioral detail: deterministic normalization, exhaustive grammar matching, ranked candidates with inspectable basis, a valid zero-result case, failed check-digit handling, and rate-limit behavior with 429 + retry_after_seconds. This substantially exceeds the minimal safety profile provided by annotations and informs the agent about edge cases, ordering, and failure modes.

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 longer than most, but almost every sentence carries functional content, and the first section immediately communicates the tool's role. It is front-loaded with the use case and then proceeds methodically through behavior, return data, and limitations. The response-schema field enumeration is somewhat redundant with the output schema, but in a complex multi-format tool that redundancy helps the agent mentally map results.

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?

Given the tool's high complexity (thirteen grammars, ranking, rate limiting, output envelope) and the rich input/output schemas, the description is exceptionally complete. It explains what the result list contains, how to interpret zero results and invalid check digits, what happens under rate limiting, and which sibling tools to route to for depth. Nothing an agent needs to make a correct call or interpret the output is missing.

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 description coverage for q is 100%, so the baseline is 3. The description goes beyond the schema by clarifying q must be a single token (max 32 chars), not free text or a manifest line, and by giving identity context (normalization strips prefixes, colliding grammars produce multiple candidates). This adds important semantic nuance about granularity and ambiguity that is not present in the schema alone.

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 opens with a precise verb and resource: "Resolve an arbitrary freight identifier — one opaque string in, typed and cited candidates out." It immediately distinguishes itself from the many sibling lookup tools by framing itself as the agent front door for ambiguous identifier tokens, and reinforces this with a long list of identifier examples. This is a specific, actionable purpose that an agent can reliably select on.

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 explicitly states when to use the tool: "call this FIRST" when holding an identifier-ish token and not knowing which lookup tool fits, and then "follow the candidate's api_url / canonical_url (or the matching sibling tool) for depth." It also gives true exclusions — single-token only, not free-text, SCAC/BIC not covered — and lists the resolved sibling tools, so an agent receives both inclusion and exclusion criteria.

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

shipment_summaryA
Read-onlyIdempotent
Inspect

Composite shipment analysis in one call: volume (CBM), gross and chargeable weight, road LDM with pallet spaces and a vehicle suggestion (road mode), volumetric weight (air), revenue tonnes with a container suggestion (sea), dangerous-goods presence for items carrying un_number, and UK duty estimates for items carrying hs_code + customs_value.

Provide mode (road | air | sea | multimodal) and items[] (dims in cm, weight in kg, quantity; optional stackable, pallet_type, hs_code, un_number, customs_value); origin/destination and incoterm refine the duty leg.

Behavior: calls the ldm_calculator, adr_lookup and uk_duty_calculator engines directly; CBM, volumetric weight and revenue tonnes are the same arithmetic inline rather than a call out. Road LDM uses the 2.40 m loading-metre convention divisor and, like ldm_calculator, treats an item with no stackable flag as NOT stacked. modeSpecific.palletSpaces is pallet FLOOR POSITIONS (the figure ldm_calculator reports); palletRows is the separate row count. Sections that cannot run (e.g. duty without a customs value) surface in warnings instead of failing the whole call. 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: mode, itemCount, totals {pieces, grossWeight, volumeCBM, chargeableWeight, billingBasis}, modeSpecific (LDM / pallet floor positions / pallet rows / suggested vehicle, or revenue tonnes / container), warnings and dataVersion (road mode attributes the vehicle dataset and the LDM divisor) under result — note this composite's result uses camelCase field names (legacy shape); plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: a planning summary, not a quotation or compliance determination.

Related: consignment_calculator (canonical snake_case lines[] shape with advisory flags), cbm_calculator, chargeable_weight_calculator, ldm_calculator, adr_lookup, uk_duty_calculator. ldm_calculator, adr_lookup and uk_duty_calculator are the engines this actually calls; the rest are the single-purpose equivalents of arithmetic it does inline.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesTransport mode — selects the mode-specific section of the result.
itemsYesShipment items with dimensions, weight and optional HS/UN codes.
originNoOrigin — ISO country code and optional UN/LOCODE.
incotermNoIncoterms 2020 three-letter code. Examples: "DAP", "EXW", "FOB".
destinationNoDestination — ISO country code and optional UN/LOCODE.
freight_costNoFreight cost in GBP for the duty calculation.
insurance_costNoInsurance cost in GBP for the duty calculation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already carry readOnlyHint/idempotentHint/destructive=false, and the description adds substantial behavior beyond them: the 2.40 m loading-metre divisor, 'no stackable flag treated as NOT stacked', palletSpaces as floor positions versus palletRows, partial failures surfacing in warnings instead of failing the call, the 25 requests/day IP rate limit with 429 retry_after_seconds and Retry-After header, and the legacy camelCase result shape. No contradiction with annotations.

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?

Long (~350 words) but front-loaded: the first sentence states the entire scope, followed by clean Inputs/Behavior/Returns/Limitations/Related sections. Some redundancy exists (engine calls and pallet floor positions appear twice), but for a composite tool merging three engines across four modes, dense detail is warranted rather than waste.

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, 4-mode composite with nested objects and an output schema, the description is complete: all input semantics, mode-specific conventions, error/rate-limit handling, return shape summary, limitations ('planning summary, not a quotation or compliance determination'), and sibling routing are covered. The existence of an output schema excuses full return-value enumeration.

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 adds relational meaning beyond individual field docs: 'origin/destination and incoterm refine the duty leg,' the conditional enabling of sections (hs_code + customs_value → duty; un_number → DG), and a compressed statement of the items[] field set and units. This is a modest but real increment over the schema.

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?

Opens with 'Composite shipment analysis in one call' and itemizes every computation: CBM, gross/chargeable weight, road LDM with pallet spaces and vehicle suggestion, volumetric weight, revenue tonnes with container suggestion, DG presence, and UK duty. The specific resource and scope are unmistakable, and the Related section hard-distinguishes it from the single-purpose 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?

Explicitly names alternatives and their relationship: consignment_calculator (canonical snake_case lines[] shape with advisory flags), the three engines it actually cals (ldm_calculator, adr_lookup, uk_duty_calculator), and 'the rest are the single-purpose equivalents of arithmetic it does inline.' Also routes to get_subscribe_link for higher rate limits. When-to-us vs alternatives is fully stated.

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

uk_duty_calculatorA
Read-onlyIdempotent
Inspect

Estimate UK import duty and VAT for a commodity code using the LIVE GOV.UK Trade Tariff — rates are fetched per request, not from a static table. The CIF value is composed from customs_value + freight_cost + insurance_cost; duty = CIF x the duty rate for the origin country; VAT (typically 20%) applies on the duty-inclusive value.

Provide commodity_code (6-10 digits), origin_country (ISO-2) and customs_value in GBP; freight_cost, insurance_cost and incoterm are optional refinements.

Behavior: live lookup plus deterministic arithmetic on the returned rate; an unknown or non-declarable commodity code errors with HMRC's message (a 6-digit code may need extending to its 8/10-digit declarable line); origin-dependent measures the tariff cannot resolve automatically surface in warnings. 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: commodity_code and description, origin country, cif_value, duty_rate (+ percent), duty_amount, vat_rate, vat_amount, total_import_taxes, total_landed_cost and warnings under result; validity.as_of marks the live-rate timestamp; plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: an estimate, not a customs ruling — excise, quotas, anti-dumping measures, reliefs and origin-proof requirements can change the outcome; confirm with a customs broker or HMRC before relying on it.

Related: hs_code_lookup (find the 6-digit code first), incoterms_lookup (who actually pays these costs).

ParametersJSON Schema
NameRequiredDescriptionDefault
incotermNoIncoterms 2020 basis of the customs_value — documents which costs are already included.
freight_costNoFreight cost in GBP — added to the CIF value. Default: 0.
customs_valueYesGoods value in GBP. Example: 1000.
commodity_codeYesHS/UK tariff code, 6-10 digits. Example: "8471300000" (portable computers). 6-digit codes may need the declarable 8/10-digit line.
insurance_costNoInsurance cost in GBP — added to the CIF value. Default: 0.
origin_countryYesISO 2-letter country of origin. Examples: "CN", "DE", "US".

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.6/5.0
Behavior5/5

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

The description adds a substantial amount beyond the annotations: rates are fetched live per request, unknown or non-declarable codes error with HMRC's message, origin-dependent measures surface as warnings, and there is a rate limit with 429 handling and a retry_after_seconds field. This is exactly the behavioral detail an agent needs and uses.

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 longer than typical but every section serves a purpose: behavior, returns, limitations, related tools. The core purpose and formula are front-loaded, and optional details are clearly segmented. Some return-field details could be left to the output schema, but nothing feels wasted.

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?

Given the tool's complexity, the rich output schema, 6 parameters, external dependency (live GOV.UK Tariff), rate limits, and related workflows, the description is complete. It covers error behavior, retry logic, return fields, limitations, and alternative/related tools. An agent can predict the tool's behavior and side effects without further documentation.

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?

The schema already covers all 6 parameters with detailed descriptions and examples, so the baseline is met. The description adds extra meaning by defining the CIF calculation, stating optional parameters default to 0, and noting that commodity_code may need extension from 6 to 8/10 digits. It doesn't fully expand on incoterm semantics, but the schema covers that.

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 opens with a specific verb and resource: 'Estimate UK import duty and VAT for a commodity code using the LIVE GOV.UK Trade Tariff'. It goes on to explain the calculation formula and clearly separates this tool from siblings like hs_code_lookup and incoterms_lookup, so an agent can tell which tool to invoke.

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

Usage Guidelines4/5

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

It explicitly identifies required versus optional inputs and provides related-tool guidance such as 'hs_code_lookup (find the 6-digit code first)' and 'incoterms_lookup (who actually pays these costs)'. It does not spell out exact 'use this instead of' conditions, but the context makes the intended usage clear.

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

uld_lookupA
Read-onlyIdempotent
Inspect

Look up air-cargo ULD (Unit Load Device) specifications — 16 types spanning lower-deck containers (AKE/LD3 and family), main-deck pallets (PMC, PAG and family) and temperature-controlled units. Each record carries external/internal/door dimensions (cm), tare and max gross weight (kg), usable volume (m³), deck position and compatible aircraft.

Provide type as an IATA code ("AKE", "PMC") or slug ("ake-ld3"); omit it to list all 16; category (container | pallet | special) and deck (lower | main) filter the list.

Behavior: read-only; an unknown type errors with the valid list; per-record provenance (sources, audited_at, decision_rationale) is included. 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: the ULD record (or filtered list) under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: specs are compiled from manufacturer and carrier-published sources with ≥7 cited sources per record. Provenance is PENDING, not verified — read the envelope's provenance_status rather than this sentence. Second-agent coverage is now COMPLETE — every cited record-URL pairing has been opened and verdicted by a second agent, and 145 of 148 citations carry a timestamped read (the 3 without one were never opened, and say so). COVERAGE IS NOT AGREEMENT, which is why provenance is still pending: reading every page is what made the disagreements visible, not what resolved them. The second agent also WITHDRAWS stamps — pages a first pass had confirmed turned out not to list the code, or to disagree once somebody read the words around them — so treat an unstamped citation as evidence that was tried and failed, not evidence not yet gathered. CORROBORATION IS COUNTED BY PUBLISHER, NOT BY URL: the 148 citations resolve to 125 distinct sources, because several records cite one publisher at several of its own addresses (one carrier's pallet table appears in three of its documents) and several forwarders republish a single upstream template. Two citations of the same source cannot corroborate each other, so a long source list is not the same as a well-corroborated record. Treat tare_weight with particular caution: it is confirmed by no non-tertiary source on 13 of the 16 records. PGA's 565 kg is now read-confirmed by one carrier (Cathay, basis stated on the page as including nets) while two other carrier pages publish 535 kg and 505-545 kg on that same basis, so it is the top of a contested band rather than an agreed figure. Confidence is medium and a PROVENANCE_PENDING advisory rides every response. Pallet records (PMC, PAG, PGA, PLA, PAJ, PMCQ7) have NO internal dimensions — a pallet has no walls or roof; read max_build_up_height_cm for the aircraft contour ceiling and do not multiply dimensions to get a volume. Airline-specific ULD variants still differ; confirm operationally critical dimensions with the carrier.

Related: chargeable_weight_calculator (what the cargo inside is billed at), container_lookup (the sea-freight equivalent), airline_lookup (whose aircraft it flies on).

ParametersJSON Schema
NameRequiredDescriptionDefault
deckNoFilter by deck position.
typeNoIATA ULD code or slug. Examples: "AKE", "PMC", "ake-ld3". Omit to list all 16.
categoryNoFilter by ULD category.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/destructive annotations, it discloses unknown-type error behavior, rate limiting with 429 and retry_after_seconds, Retry-After header, pending provenance status, and pallet-specific caveats like no internal dimensions. This is rich, honest behavioral context. It is also consistent with the annotations.

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 front-loaded with the core look-up purpose and organized into explicit sections: behavior, returns, limitations, and related tools. The length is mostly justified by substantive caveats; however, the limitations paragraphs are unusually verbose and repetitive in places,

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?

It covers input values, return envelope structure, error and retry behavior, rate limits, data provenance, domain-specific caveats about pallet dimensions and weight figure reliability, and related tools. Combined with the 100% schema coverage and an output schema, an agent can invoke and interrogate this tool safely.

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

Parameters3/5

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

The input schema already documents all parameters at 100% coverage, including the same examples ('AKE', 'PMC', 'ake-ld3') and filters. The description adds little beyond restating filter behavior and the omission rule, so the high baseline of 3 is appropriate.

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 opens with a precise verb and resource — 'Look up air-cargo ULD specifications' — and immediately scopes 16 types across lower-deck containers, main-deck pallets, and temperature-controlled units. It differentiates itself from siblings like container_lookup and airline_lookup via the Related line, so an agent can tell them apart.

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

Usage Guidelines4/5

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

Usage is explicit: provide IATA code/slug or omit for a full list, and use category/deck to filter. The Related line gives alternative tools with clear one-phrase distinctions: chargeable_weight_calculator for billing, container_lookup for sea freight, airline_lookup for aircraft. It lacks an explicit 'do not use when...' but the alternatives are stated.

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

unit_converterA
Read-onlyIdempotent
Inspect

Convert freight and logistics units: weight (kg, lbs, oz, tonnes, short_tons, long_tons), volume (cbm, cuft, cuin, litres, gal_us, gal_uk), length (cm, inches, m, feet, mm), plus two freight-specific targets valid only FROM cbm — chargeable_kg (air volumetric weight at the IATA 6,000 divisor, 1 CBM = 166.67 kg) and freight_tonnes (sea W/M, 1 CBM = 1 freight tonne).

Behavior: deterministic; the response names both units and states the formula used. Cross-dimension conversions (e.g. kg to litres) and freight targets from a non-cbm source error with the accepted-unit list. Note: short ton (US) = 2,000 lb, long ton (UK) = 2,240 lb, metric tonne = 2,204.6 lb. 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: input {value, unit, name}, result {value, unit, name}, formula and note under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Related: cbm_calculator (dimensions to volume first), chargeable_weight_calculator (proper air billing weight with pieces and a custom divisor).

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget unit — any same-dimension unit, plus chargeable_kg and freight_tonnes (both only valid from cbm).
fromYesSource unit — weight (kg, lbs, oz, tonnes, short_tons, long_tons), volume (cbm, cuft, cuin, litres, gal_us, gal_uk) or length (cm, inches, m, feet, mm). Must be the same dimension as "to".
valueYesThe numeric value to convert. Example: 5.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A5/5.0
Behavior5/5

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

Beyond the readOnly and idempotent annotations, the description discloses deterministic behavior, formula naming in responses, cross-dimension error behavior with accepted-unit lists, rate limits with retry headers, and specific unit definitions such as IATA divisor, short ton, and long ton. This gives the agent essential runtime expectations.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: unit inventory, special freight targets, behavior, error handling, rate limiting, return envelope, and sibling-tool routing. It is long because the tool genuinely has multiple behaviors to document, and there is no 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 dimensional restrictions, freight-specific targets, rate limiting, error bodies, and a defined response envelope, the description covers all these aspects without missing any critical context. It even explains when to use sibling tools first, making it effectively self-contained.

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 schema coverage is 100%, the description adds significant meaning: category groupings for units, the IATA 6,000 divisor making 1 CBM = 166.67 kg, the sea W/M freight tonne rule, and the exact difference between tonnes, short tons, and long tons. This goes well beyond the enum lists in the schema.

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 states a specific verb and resource: converting freight and logistics units across weight, volume, and length dimensions, with two freight-specific targets. It distinguishes itself from sibling calculators by naming cbm_calculator and chargeable_weight_calculator as related but different tools.

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?

It explicitly gives usage context: dimensions must match, freight targets are only valid from cbm, and it names alternatives — cbm_calculator for dimension-to-volume conversion and chargeable_weight_calculator for proper air billing with pieces and a custom divisor. It also advises retry behavior on 429 and directing users to get_subscribe_link for higher limits.

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

unlocode_lookupA
Read-onlyIdempotent
Inspect

Search 116,232 UN/LOCODE transport locations worldwide — ports, airports, rail and road terminals, inland container depots and border crossings. Codes are 5 characters: a 2-letter ISO country code + a 3-character location code (GBLHR = London Heathrow, NLRTM = Rotterdam).

Provide code for an exact record, or query (name search, min 2 chars) optionally narrowed by country and function_type; limit caps results (default 20, max 100).

Behavior: read-only; exact code hits are provenance-based while fuzzy name hits report match quality via the envelope's confidence (basis match_quality); an unknown code errors with a not-found message. 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: the location record(s) — code, name and name_ascii, country, subdivision, functions[], status, coordinates {lat, lon} and iata_code where assigned — under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: an administrative code list (UNECE UN/LOCODE 2025-1) — confirm operational status and coordinates with the port or authority before critical use.

Related: airport_lookup (airport-specific records including ICAO codes), nearest_airport (find airports by coordinates).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoExact UN/LOCODE — 5 characters. Examples: "GBLHR", "NLRTM".
limitNoMaximum results. Default: 20, max: 100.
queryNoLocation name search (min 2 chars). Examples: "rotterdam", "heathrow".
countryNoFilter by 2-letter ISO country code. Examples: "GB", "NL".
function_typeNoFilter by location function.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the behavioral paragraph adds meaningful context: exact code hits are provenance-based, fuzzy name hits expose confidence via match quality, unknown codes produce not-ound, and 429 response carries retry_after seconds and Retry-After header. This is exactly the extra behavior information an agent needs beyond annotations. No contradiction with annotations.

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

Conciseness5/5

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

The description is front-loaded with a precise one-line summary, then proceeds into code structure, usage modes and behavior. No sentence is wasted; even the 429/back-off detail earns its place because it is operational guidance an agent would otherwise lack. The length is justified by six-dimensional as in this is a complex tool.

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

Completeness4/5

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

The description covers input options, return content, error behavior, rate limits, retry instructions, and alternatives for higher limits. The only meaningful gap is what happens when no parameters are provided: all schema properties are optional, but the description implies a code or query should be passed. That edge case is not resolved.

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?

Input schema has 100% description coverage, so the schema carries most of the meaning. The description adds value by framing code vs. query as two modes and noting that country/function_type optionally narrow the name query. That is useful relational/parametric semantics. The examples slightly duplicate schema examples, so not quite max.

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 opens with a precise verb-resource pair: 'Search 116,232 UN/LOCODE transport locations worldwide' and enumerates the exact set of location categories. It anchors the resource with the 5-character code structure and true examples (GBLHR, NLRTM), so there is no ambiguity against sibling lookup tools like airport_lookup or container_lookup.

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

Usage Guidelines4/5

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

The description gives clear usage modes: provide code for exact record, or name query (min 2 chars) with country/function filters, and states limit caps/default. It also directs the agent to get_subscribble_link on rate-limit, which is useful alternative guidance. It does not explicitly contrast with sibling lookup tools, but the UNLOCODE-specific search conditions are clear.

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

validateA
Read-onlyIdempotent
Inspect

Validate and parse freight identifiers by their public check-digit algorithms: shipping container numbers (ISO 6346), air waybill (AWB) numbers (IATA modulus-7) and IMO ship identification numbers.

Two modes: pass text= to find and validate every identifier in it (e.g. a booking-email line), OR pass value= + type=<container|awb|imo> to validate one.

Behavior: deterministic check-digit arithmetic; per identifier found it reports type, the normalised form, valid (pass/fail), expected vs actual check digit, and details (container: owner prefix + equipment category; AWB: airline prefix + the operating airline resolved from the AWB-prefix dataset; IMO: the 7-digit number); text mode with no identifiers found returns an empty found[] with a note. 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: found[] (each entry with its own _source naming the standard applied) and disclaimer under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: STRUCTURAL ONLY — a valid check digit means well-formed, NOT that the container, shipment or vessel exists or is active; not a registry or tracking lookup.

Related: container_lookup (container TYPE specs, not numbers), airline_lookup (the AWB-prefix dataset the airline resolution uses).

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoArbitrary string to scan for container / AWB / IMO identifiers (parse mode). Provide this OR value+type. Example: "2 cntrs MSKU3068808 / TGHU7654325 on AWB 176-12345675".
typeNoIdentifier type for value: container = ISO 6346, awb = IATA air waybill, imo = IMO ship number.
valueNoA single identifier to validate (typed mode). Requires type. Example: "MSKU3068808".

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.6/5.0
Behavior5/5

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

Even with annotations providing readOnlyHint and idempotentHint, the description richly supplements by disclosing the output detail, the modes, rate-limit behavior with 429 retry_after_seconds, and specific return fields per identifier. It also sets structural limititation explicitly. Nothing in the description contradicts annotations; in fact, annotations align with it.

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 well structured: it leads with a precise purpose, then separates modes, behavior, rate limits, return contract, limitations, and related tools. It is more verbose than strictly necessary, and some return-envelope detail might be redundant with the output schema, but each remaining sentence adds useful operational context.

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?

Given the tool delays with multiple inances, standards, modes, limitations, and a rate limit, the description covers all aspects needed for an AI agent to select and invoke it correctly. It includes enough detail about return envelope, error handling, and relationship to siblings/related tools. No obvious context gap for correct invocation or interpretation.

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

Parameters3/5

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

All three parameters already have full descriptions and examples inside the schema, so schema description coverage is 100%, raising the baseline to 3. The description does helpfully clarify the mutual exclusion of text versus value+type, but it doesn't go materially beyond what the schema already communicates in terms of parameter meaning.

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 clearly states that the tool validates and parses freight identifiers across three named standards (ISO 6346 containers, IATA AWB, IMO), which is specific and informative. It also differentiates itself from sibling tools like container_lookup and airline_lookup, explicitly saying container_lookup is about type specs and airline_lookup uses the AWB-prefix dataset.

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 gives explicit on/usage: pass text to scan arbitrary content or pass value with type to validate one identifier. It includes contextual guidance and 'Related' tool alternatives. It also warns what it is not (not a registry or tracking lookup), which reduces risky misuse.

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

vehicle_lookupA
Read-onlyIdempotent
Inspect

Look up road-freight vehicle and trailer specifications — 17 types: EU articulated trailers (standard/mega curtainsider, box, reefer, double-deck, flatbed, low-loader), US 53ft/48ft dry vans, rigid trucks (7.5-26 t) and vans (Luton, Transit, Sprinter). Each record carries internal dimensions, payload and gross weights, euro/UK pallet capacity, axle configuration and features.

Provide slug (e.g. "standard-curtainsider") for one record; omit it to list all 17; category (articulated | rigid | van) and region (EU | US) filter the list.

Behavior: read-only; an unknown slug errors with the valid list; per-record provenance (sources, audited_at, decision_rationale) is included. 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: the vehicle record (or filtered list) under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: typical specs, provenance pending independent verification (the envelope's provenance_status says so) — real equipment varies by operator and build; legal payload is set by the vehicle's plated weights.

Related: ldm_calculator (whether a pallet load fits), pallet_fitting_calculator, consignment_calculator.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoVehicle slug. Examples: "standard-curtainsider", "mega-trailer". Omit to list all 17.
regionNoFilter by region.
categoryNoFilter by vehicle category.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

TDQS

A4.6/5.0
Behavior5/5

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

Beyond annotations (readonly, idempotent, non-destructive), the description enriches behavior with substantial context: unknown slugs return an error listing valid ones, per-record provenance includes sources and auditations, rate limiting (20 requests/day IP) produces an 429 with specific retry fields, and return tra data comes with caveats (typical specs, pending verification). This gives an agent realistic expectations about errors, limits, and data quality.

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 dense and well-structured, with labeled sections for behavior, returns, limitations, and related tools; it does not waste space. It is longer than necessary because it covers rate limits, error bodies, and provenance, but those are genuinely useful details. A minar redundancy exists between 'omitting it to list all' and the later mention of a filtered list, but overall it remains efficient.

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?

With an output schema present, the description need not duplicate return-fade types and instead covers what the schema does not convey: the FreigheUtils response envelope (result, confidence, _source, citable), literal limits of access, the exact shape of stale limits errors, and the related tools and limitations. Everything an agent needs to successfully call and interpret vehicle_lookup is avaiable.

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?

Sceema covegerage is 100%, but thesccema already describes each parameter (slug examples, región, category). The description adds behavior beyond the schema: providing a slug returns one record, omitting it lists all 17, category and region function as list filters, and an unknown slug errors with the valid set. This is valuated interaction context not present in schess.

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 uses a specific verb-resource pair ('Look up road-freight vehicle and tarai trailer specifications') and immediately delimiters the exact scope with a concrete list of 17 types. This clearly separates it from sibling tools like airline_lookup, container_lookup, and the calculator tools, which serve different domains and tasks.

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

Usage Guidelines4/5

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

Cares clear how to invoke the tool: provide a slug for one record, omit it to list all, and optionally filter by category or region. It also points to alternative tools for related needs — ldm_calculator for pallet-fit questions and get_subscribe_link for rate-limit scafes — but it does not explicitly state 'when not to use this tool' in favor of each calculator.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv2.17.3
    • Changedadr_exemption_calculator4 fields changed
      • 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"
        +}
    • Changedshipment_summary2 fields changed
      • addedInput schema / properties / items / items / properties / adr_quantity
        Added value: +{
        +  "description": "OPTIONAL ADR 1.1.3.6.3 quantity for this dangerous-goods line, in adr_quantity_unit. SEPARATE from weight, which is gross package mass — 1.1.3.6.3 counts none of its four categories that way. Supply both on EVERY dangerous-goods line and adrFlags.totalPoints is calculated; omit either and it stays null.",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / items / items / properties / adr_quantity_unit
        Added value: +{
        +  "description": "Dimension of adr_quantity. CHECKED against the dimension 1.1.3.6.3 counts for the row — a litres entry given kilograms still withholds the total.",
        +  "enum": [
        +    "L",
        +    "kg"
        +  ],
        +  "type": "string"
        +}
  2. 25 tool updatesv2.17.2
    • Changedadr_exemption_calculator6 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"
        +]
      • 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"
        +  }
        +]
    • Changedadr_lookup6 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"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "count": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "meta": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": {},
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "results": {
        -        "anyOf": [
        -          {
        -            "items": {
        -              "additionalProperties": true,
        -              "properties": {
        -                "class": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "classification_code": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "excepted_quantity": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "hazard_identification_number": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "labels": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "limited_quantity": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "packing_group": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "proper_shipping_name": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "special_provisions": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "transport_category": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "tunnel_restriction_code": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "un_number": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "variant_count": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "variant_index": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "count": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "meta": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": {},
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "results": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "additionalProperties": true,
        +              "properties": {
        +                "carriage_prohibited": {
        +                  "type": [
        +                    "boolean",
        +                    "null"
        +                  ]
        +                },
        +                "class": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "classification_code": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "conditions_ref": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "excepted_quantity": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "hazard_identification_number": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "labels": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "limited_quantity": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "not_subject_to_adr": {
        +                  "type": [
        +                    "boolean",
        +                    "null"
        +                  ]
        +                },
        +                "packing_group": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "proper_shipping_name": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "special_provisions": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "table_a_remark": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "transport_category": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "tunnel_restriction_code": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "un_number": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "variant_count": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "variant_index": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "type": "object"
        +  }
        +]
    • Changedadr_lq_eq_check6 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"
        +]
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "candidates": {
        -        "anyOf": [
        -          {
        -            "items": {
        -              "additionalProperties": true,
        -              "properties": {
        -                "excepted_quantity": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "item_index": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "limited_quantity": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "packing_group": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "proper_shipping_name": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "un_number": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "variant_index": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "human_review_required": {
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "items": {
        -        "anyOf": [
        -          {
        -            "items": {
        -              "additionalProperties": true,
        -              "properties": {
        -                "class": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "eq_code": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "lq_limit": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "lq_limit_unit": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "lq_limit_value": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "packing_group": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "quantity_entered": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "reason": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "status": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "substance": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "un_number": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "unit_entered": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "variant_index": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "mode": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "overall_status": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "references": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": {},
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "summary": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": true,
        -            "properties": {
        -              "exceeding": {
        -                "type": [
        -                  "number",
        -                  "null"
        -                ]
        -              },
        -              "not_permitted": {
        -                "type": [
        -                  "number",
        -                  "null"
        -                ]
        -              },
        -              "qualifying": {
        -                "type": [
        -                  "number",
        -                  "null"
        -                ]
        -              },
        -              "total_items": {
        -                "type": [
        -                  "number",
        -                  "null"
        -                ]
        -              }
        -            },
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "candidates": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "additionalProperties": true,
        +              "properties": {
        +                "excepted_quantity": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "item_index": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "limited_quantity": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "packing_group": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "proper_shipping_name": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "un_number": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "variant_index": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "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"
        +                  ]
        +                },
        +                "eq_code": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "lq_limit": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "lq_limit_unit": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "lq_limit_value": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "not_subject_to_adr": {
        +                  "type": [
        +                    "boolean",
        +                    "null"
        +                  ]
        +                },
        +                "packing_group": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "quantity_entered": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "reason": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "status": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "substance": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "un_number": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "unit_entered": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "variant_index": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "mode": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "overall_status": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "references": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": {},
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "summary": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": true,
        +            "properties": {
        +              "exceeding": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "not_permitted": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "not_subject": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "qualifying": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "total_items": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "type": "object"
        +  }
        +]
    • Changedairline_lookup5 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"
        +]
    • Changedairport_lookup5 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"
        +]
    • Changedcbm_calculator5 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"
        +]
    • Changedchargeable_weight_calculator5 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"
        +]
    • Changedconsignment_calculator5 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"
        +]
    • Changedcontainer_lookup5 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"
        +]
    • Changedemissions_calculator5 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"
        +]
    • Changedget_subscribe_link5 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"
        +]
    • Changedhs_code_lookup5 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"
        +]
    • Changedics2_check5 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"
        +]
    • Changedincoterms_lookup5 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"
        +]
    • Changedldm_calculator5 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"
        +]
    • Changednearest_airport5 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"
        +]
    • Changedpallet_fitting_calculator5 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"
        +]
    • Addedresolve_reference
    • Changedshipment_summary5 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"
        +]
    • Changeduk_duty_calculator5 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"
        +]
    • Changeduld_lookup5 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"
        +]
    • Changedunit_converter5 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"
        +]
    • Changedunlocode_lookup5 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"
        +]
    • Changedvalidate5 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"
        +]
    • Changedvehicle_lookup5 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"
        +]
  3. 1 tool updatev2.14.1
    • Changedldm_calculator2 fields changed
      • changedInput schema / properties / vehicle / description
        Previous value: -"Vehicle preset: artic 13.6m (default), rigid10 = 10m rigid, rigid75 = 7.5t rigid, luton van, or custom."New value: +"Vehicle preset: artic = 13.6m curtainsider (default), rigid10 = DEPRECATED, removal in 3.0.0 (it still answers with the same figures and returns a DEPRECATED advisory in warnings[]; its 10 m length is published by no manufacturer for any rigid — use custom with vehicle_length_m, or artic), rigid75 = 7.5t rigid, luton = 3.5t Luton van, us53 = 53ft US/Canada trailer, us48 = 48ft US trailer, or custom. EU presets divide by the 2.40 m loading-metre convention; US trailers divide by their own 2.591 m internal width, because loading metres are not the North American pricing unit."
      • changedInput schema / properties / vehicle / enum
        Previous value: -[
        -  "artic",
        -  "rigid10",
        -  "rigid75",
        -  "luton",
        -  "custom"
        -]New value: +[
        +  "artic",
        +  "rigid10",
        +  "rigid75",
        +  "luton",
        +  "us53",
        +  "us48",
        +  "custom"
        +]
  4. 2 tool updatesv2.12.1
    • Changedadr_exemption_calculator5 fields changed
      • 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"
        +  }
        +]
    • Changedadr_lq_eq_check3 fields changed
      • addedInput schema / properties / items / items / 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.",
        +  "enum": [
        +    "I",
        +    "II",
        +    "III"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / items / items / 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 sharing a packing group (concentration bands). Ignored for single-row UNs.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "properties": {
        -      "items": {
        -        "anyOf": [
        -          {
        -            "items": {
        -              "additionalProperties": true,
        -              "properties": {
        -                "class": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "eq_code": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "lq_limit": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "lq_limit_unit": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "lq_limit_value": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "packing_group": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "quantity_entered": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "reason": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "status": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "substance": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "un_number": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "unit_entered": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "mode": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "overall_status": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "references": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": {},
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "summary": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": true,
        -            "properties": {
        -              "exceeding": {
        -                "type": [
        -                  "number",
        -                  "null"
        -                ]
        -              },
        -              "not_permitted": {
        -                "type": [
        -                  "number",
        -                  "null"
        -                ]
        -              },
        -              "qualifying": {
        -                "type": [
        -                  "number",
        -                  "null"
        -                ]
        -              },
        -              "total_items": {
        -                "type": [
        -                  "number",
        -                  "null"
        -                ]
        -              }
        -            },
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "candidates": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "additionalProperties": true,
        +              "properties": {
        +                "excepted_quantity": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "item_index": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "limited_quantity": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "packing_group": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "proper_shipping_name": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "un_number": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "variant_index": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "human_review_required": {
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "items": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "additionalProperties": true,
        +              "properties": {
        +                "class": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "eq_code": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "lq_limit": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "lq_limit_unit": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "lq_limit_value": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "packing_group": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "quantity_entered": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "reason": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "status": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "substance": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "un_number": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "unit_entered": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "variant_index": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "mode": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "overall_status": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "references": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": {},
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "summary": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": true,
        +            "properties": {
        +              "exceeding": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "not_permitted": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "qualifying": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "total_items": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "type": "object"
        +  }
        +]
  5. 1 tool updatev2.11.1
    • Changeduld_lookup1 field changed
      • changedInput schema / properties / type / description
        Previous value: -"IATA ULD code or slug. Examples: \"AKE\", \"PMC\", \"ake-ld3\". Omit to list all 15."New value: +"IATA ULD code or slug. Examples: \"AKE\", \"PMC\", \"ake-ld3\". Omit to list all 16."
  6. 24 tool updatesv2.11.0
    • Changedadr_exemption_calculator6 fields changed
      • 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"
        +}
    • Changedadr_lookup4 fields changed
      • changedInput schema / properties / hazard_class / description
        Previous value: -"Filter by hazard class (e.g., \"3\" for flammable liquids)"New value: +"All entries in an ADR class or division. Examples: \"3\" (flammable liquids), \"6.1\" (toxic), \"1.4\" (an explosives division)."
      • changedInput schema / properties / search / description
        Previous value: -"Search by substance name (min 2 characters)"New value: +"Case-insensitive partial match on the proper shipping name (min 2 characters). Example: \"acetone\"."
      • changedInput schema / properties / un_number / description
        Previous value: -"UN number (e.g., \"1203\", \"UN1203\")"New value: +"Exact UN number — 4 digits, optionally \"UN\"-prefixed; explosives keep their leading zero. Examples: \"1203\", \"UN1203\", \"0004\"."
      • 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": {
        +            "count": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "meta": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "results": {
        +              "anyOf": [
        +                {
        +                  "items": {
        +                    "additionalProperties": true,
        +                    "properties": {
        +                      "class": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "classification_code": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "excepted_quantity": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "hazard_identification_number": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "labels": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "limited_quantity": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "packing_group": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "proper_shipping_name": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "special_provisions": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "transport_category": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "tunnel_restriction_code": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "un_number": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "variant_count": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "variant_index": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      }
        +                    },
        +                    "type": "object"
        +                  },
        +                  "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"
        +}
    • Changedadr_lq_eq_check7 fields changed
      • changedInput schema / properties / items / description
        Previous value: -"Items to check (max 20 per call)"New value: +"Items to check (1-20 per call)."
      • changedInput schema / properties / items / items / properties / inner_packaging_qty / description
        Previous value: -"Number of inner packagings (EQ mode only)"New value: +"EQ mode only: number of inner packagings per outer package, for the per-outer limit check. Example: 10."
      • changedInput schema / properties / items / items / properties / quantity / description
        Previous value: -"Quantity of substance per inner packaging"New value: +"Quantity per INNER packaging, in the chosen unit. Example: 0.5."
      • changedInput schema / properties / items / items / properties / un_number / description
        Previous value: -"UN number (1–4 digits, e.g. \"1203\")"New value: +"UN number — 4 digits, optionally \"UN\"-prefixed; explosives keep the leading zero. Examples: \"1203\", \"UN1263\"."
      • changedInput schema / properties / items / items / properties / unit / description
        Previous value: -"Unit of measurement"New value: +"Unit: \"ml\" or \"L\" for liquids, \"g\" or \"kg\" for solids."
      • changedInput schema / properties / mode / description
        Previous value: -"Check mode: 'lq' (Limited Quantity, ADR 3.4) or 'eq' (Excepted Quantity, ADR 3.5)"New value: +"Check mode: \"lq\" (Limited Quantity, ADR 3.4) or \"eq\" (Excepted Quantity, ADR 3.5)."
      • 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": {
        +            "items": {
        +              "anyOf": [
        +                {
        +                  "items": {
        +                    "additionalProperties": true,
        +                    "properties": {
        +                      "class": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "eq_code": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "lq_limit": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "lq_limit_unit": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "lq_limit_value": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "packing_group": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "quantity_entered": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "reason": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "status": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "substance": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "un_number": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "unit_entered": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      }
        +                    },
        +                    "type": "object"
        +                  },
        +                  "type": "array"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "mode": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "overall_status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "references": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "summary": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": true,
        +                  "properties": {
        +                    "exceeding": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "not_permitted": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "qualifying": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "total_items": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "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"
        +}
    • Changedairline_lookup6 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"Filter by country name (min 2 chars)"New value: +"Filter by country name (min 2 chars). Example: \"Netherlands\"."
      • changedInput schema / properties / iata / description
        Previous value: -"Exact IATA code (2 alphanumeric chars)"New value: +"Exact IATA code — 2 alphanumeric characters. Examples: \"EK\", \"U2\"."
      • changedInput schema / properties / icao / description
        Previous value: -"Exact ICAO code (3 letters)"New value: +"Exact ICAO code — 3 letters. Examples: \"UAE\", \"BAW\"."
      • changedInput schema / properties / prefix / description
        Previous value: -"AWB prefix (3 digits, e.g., \"176\")"New value: +"Exact AWB prefix — the first 3 digits of an air waybill. Example: \"176\"."
      • changedInput schema / properties / query / description
        Previous value: -"General search (name, code, prefix, or country — min 2 chars)"New value: +"Ranked fuzzy search across name, codes, prefix and country (min 2 chars). Example: \"emirates\"."
      • 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": {
        +            "count": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "meta": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "results": {
        +              "anyOf": [
        +                {
        +                  "items": {
        +                    "additionalProperties": true,
        +                    "properties": {
        +                      "airline_name": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "aliases": {
        +                        "anyOf": [
        +                          {
        +                            "items": {
        +                              "type": "string"
        +                            },
        +                            "type": "array"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "audited_at": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "awb_prefix": {
        +                        "anyOf": [
        +                          {
        +                            "items": {
        +                              "type": "string"
        +                            },
        +                            "type": "array"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ]
        +                      },
        +                      "callsign": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "country": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "has_cargo": {
        +                        "type": [
        +                          "boolean",
        +                          "null"
        +                        ]
        +                      },
        +                      "iata_code": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "icao_code": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "slug": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "verified": {
        +                        "type": [
        +                          "boolean",
        +                          "null"
        +                        ]
        +                      }
        +                    },
        +                    "type": "object"
        +                  },
        +                  "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"
        +}
    • Changedairport_lookup28 fields changed
      • changedInput schema / properties / iata / description
        Previous value: -"Exact 3-letter IATA code"New value: +"Exact 3-letter IATA code. Example: \"LHR\"."
      • changedInput schema / properties / icao / description
        Previous value: -"Exact 4-character ICAO / ident"New value: +"Exact 4-character ICAO / ident. Example: \"EGLL\"."
      • changedInput schema / properties / query / description
        Previous value: -"Name / city / municipality search (min 2 chars)"New value: +"Name / city / municipality search (min 2 chars). Example: \"heathrow\"."
      • changedInput schema / properties / type / description
        Previous value: -"Optional filter by airport type"New value: +"Optional filter by airport type."
      • removedOutput schema / properties / _source / properties / authority
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / _source / properties / checked
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / _source / properties / data_vintage
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _source / properties / dataset
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _source / properties / licence
        Removed value: -{
        -  "type": "string"
        -}
      • 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 / retrieved_via
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _source / properties / type
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _source / required
        Previous value: -[
        -  "type",
        -  "authority"
        -]New value: +[
        +  "name",
        +  "checked",
        +  "provenance_status"
        +]
      • 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": {},
        +            "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
        Added value: +{
        +  "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"
        +}
      • removedOutput schema / properties / count
        Removed value: -{
        -  "type": "number"
        -}
      • removedOutput schema / properties / disclaimer
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / envelope_version
        Added value: +{
        +  "const": "1",
        +  "type": "string"
        +}
      • removedOutput schema / properties / meta
        Removed value: -{
        -  "additionalProperties": {},
        -  "type": "object"
        -}
      • addedOutput schema / properties / normalized_input
        Added value: +{
        +  "additionalProperties": {},
        +  "type": "object"
        +}
      • addedOutput schema / properties / ok
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / result
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "properties": {
        +        "count": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "disclaimer": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "meta": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": {},
        +              "type": "object"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "results": {
        +          "anyOf": [
        +            {
        +              "items": {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "country": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "country_name": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "elevation_ft": {
        +                    "type": [
        +                      "number",
        +                      "null"
        +                    ]
        +                  },
        +                  "iata_code": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "ident": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "latitude": {
        +                    "type": [
        +                      "number",
        +                      "null"
        +                    ]
        +                  },
        +                  "longitude": {
        +                    "type": [
        +                      "number",
        +                      "null"
        +                    ]
        +                  },
        +                  "municipality": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "name": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "region": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "type": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    }
        +  ]
        +}
      • removedOutput schema / properties / results
        Removed value: -{
        -  "items": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "country": {
        -        "type": "string"
        -      },
        -      "country_name": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "elevation_ft": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "iata_code": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "ident": {
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "type": "number"
        -      },
        -      "longitude": {
        -        "type": "number"
        -      },
        -      "municipality": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "name": {
        -        "type": "string"
        -      },
        -      "region": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "ident",
        -      "iata_code",
        -      "name",
        -      "type",
        -      "municipality",
        -      "region",
        -      "country",
        -      "country_name",
        -      "latitude",
        -      "longitude",
        -      "elevation_ft"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / validity
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "as_of": {
        +      "type": "string"
        +    },
        +    "effective_from": {
        +      "type": "string"
        +    },
        +    "effective_to": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "as_of"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / warnings
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "details": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "message"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "count",
        -  "results",
        -  "disclaimer",
        -  "_source"
        -]New value: +[
        +  "envelope_version",
        +  "ok",
        +  "result",
        +  "confidence",
        +  "_source",
        +  "citation"
        +]
    • Changedcbm_calculator5 fields changed
      • changedInput schema / properties / height_cm / description
        Previous value: -"Height in centimetres"New value: +"Height of one piece in centimetres (> 0). Example: 100."
      • changedInput schema / properties / length_cm / description
        Previous value: -"Length in centimetres"New value: +"Length of one piece in centimetres (> 0). Example: 120."
      • changedInput schema / properties / pieces / description
        Previous value: -"Number of identical pieces (default: 1)"New value: +"Number of identical pieces — total volume scales linearly. Default: 1."
      • changedInput schema / properties / width_cm / description
        Previous value: -"Width in centimetres"New value: +"Width of one piece in centimetres (> 0). Example: 80."
      • 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": {
        +            "cbm_per_piece": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cubic_feet": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "cubic_inches": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "litres": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "meta": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "pieces": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "total_cbm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "total_volume_m3": {
        +              "type": [
        +                "number",
        +                "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"
        +}
    • Changedchargeable_weight_calculator7 fields changed
      • changedInput schema / properties / factor / description
        Previous value: -"Volumetric divisor (default: 6000 IATA standard, DHL uses 5000)"New value: +"Volumetric divisor in cm³/kg. Default: 6000 (IATA standard); express carriers typically 5000."
      • changedInput schema / properties / gross_weight_kg / description
        Previous value: -"Actual gross weight in kilograms"New value: +"Actual gross weight of the WHOLE shipment (all pieces) in kilograms. Example: 500."
      • changedInput schema / properties / height_cm / description
        Previous value: -"Height in centimetres"New value: +"Height of one piece in centimetres (> 0). Example: 100."
      • changedInput schema / properties / length_cm / description
        Previous value: -"Length in centimetres"New value: +"Length of one piece in centimetres (> 0). Example: 120."
      • changedInput schema / properties / pieces / description
        Previous value: -"Number of identical pieces (default: 1)"New value: +"Number of identical pieces. Default: 1."
      • changedInput schema / properties / width_cm / description
        Previous value: -"Width in centimetres"New value: +"Width of one piece in centimetres (> 0). Example: 80."
      • 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": {
        +            "basis": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "cbm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "chargeable_weight_kg": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "factor": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "gross_weight_kg": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "meta": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "pieces": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "ratio": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "volumetric_weight_kg": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "volumetric_weight_per_piece_kg": {
        +              "type": [
        +                "number",
        +                "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"
        +}
    • Changedconsignment_calculator28 fields changed
      • changedInput schema / properties / items / description
        Previous value: -"Deprecated flat alias — dimensions in cm, weight in kg. Prefer lines."New value: +"Legacy flat alias — dimensions in cm, weight in kg. Prefer lines."
      • changedInput schema / properties / items / items / properties / description / description
        Previous value: -"Item description"New value: +"Item description."
      • changedInput schema / properties / items / items / properties / gross_weight / description
        Previous value: -"Gross weight per piece in kg"New value: +"Gross weight per piece in kg."
      • changedInput schema / properties / items / items / properties / height / description
        Previous value: -"Height in cm"New value: +"Height in cm."
      • changedInput schema / properties / items / items / properties / length / description
        Previous value: -"Length in cm"New value: +"Length in cm."
      • changedInput schema / properties / items / items / properties / pallet_type / description
        Previous value: -"Pallet type (informational)"New value: +"Pallet type (informational)."
      • changedInput schema / properties / items / items / properties / quantity / description
        Previous value: -"Number of pieces (default 1)"New value: +"Number of pieces. Default: 1."
      • changedInput schema / properties / items / items / properties / width / description
        Previous value: -"Width in cm"New value: +"Width in cm."
      • changedInput schema / properties / lines / description
        Previous value: -"Canonical consignment lines (preferred). Provide lines OR items."New value: +"Canonical consignment lines (preferred, 1-50). Provide lines OR items."
      • changedInput schema / properties / lines / items / properties / description / description
        Previous value: -"Optional item label"New value: +"Optional item label."
      • changedInput schema / properties / lines / items / properties / dims / description
        Previous value: -"Dimensions with unit"New value: +"Per-piece dimensions with unit."
      • changedInput schema / properties / lines / items / properties / dims / properties / h / description
        Previous value: -"Height in the given unit"New value: +"Height in the given unit."
      • changedInput schema / properties / lines / items / properties / dims / properties / l / description
        Previous value: -"Length in the given unit"New value: +"Length in the given unit."
      • changedInput schema / properties / lines / items / properties / dims / properties / unit / description
        Previous value: -"Dimension unit"New value: +"Dimension unit."
      • changedInput schema / properties / lines / items / properties / dims / properties / w / description
        Previous value: -"Width in the given unit"New value: +"Width in the given unit."
      • changedInput schema / properties / lines / items / properties / hs_code / description
        Previous value: -"Optional HS commodity code (6–10 digits)"New value: +"Optional HS commodity code (6-10 digits)."
      • changedInput schema / properties / lines / items / properties / quantity / description
        Previous value: -"Number of identical pieces"New value: +"Number of identical pieces on this line."
      • changedInput schema / properties / lines / items / properties / stackable / description
        Previous value: -"Stack two-high (halves loading-metre footprint)"New value: +"Stack two-high (halves the loading-metre footprint)."
      • changedInput schema / properties / lines / items / properties / un_number / description
        Previous value: -"Optional UN number for dangerous-goods reference"New value: +"Optional UN number — triggers the dangerous-goods advisory flag."
      • changedInput schema / properties / lines / items / properties / weight / description
        Previous value: -"Weight with unit"New value: +"Per-piece weight with unit."
      • changedInput schema / properties / lines / items / properties / weight / properties / unit / description
        Previous value: -"Weight unit"New value: +"Weight unit."
      • changedInput schema / properties / lines / items / properties / weight / properties / value / description
        Previous value: -"Gross weight per piece"New value: +"Gross weight per piece."
      • changedInput schema / properties / mode / description
        Previous value: -"Transport mode: sea | air | road (default road)"New value: +"Transport mode: sea | air | road. Default: road."
      • changedInput schema / properties / options / description
        Previous value: -"Optional settings"New value: +"Optional settings."
      • changedInput schema / properties / options / properties / air_volumetric_divisor / description
        Previous value: -"IATA volumetric divisor in cm³/kg (default 6000). Air only."New value: +"IATA volumetric divisor in cm³/kg. Default: 6000. Air mode only."
      • changedInput schema / properties / options / properties / awb_number / description
        Previous value: -"IATA 11-digit air waybill number, check-digit validated"New value: +"IATA 11-digit air waybill number — check-digit validated into flags."
      • changedInput schema / properties / options / properties / container_number / description
        Previous value: -"ISO 6346 container number, check-digit validated"New value: +"ISO 6346 container number — check-digit validated into flags."
      • 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": {
        +            "air_volumetric_divisor": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "disclaimer": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "flags": {
        +              "anyOf": [
        +                {
        +                  "items": {},
        +                  "type": "array"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "mode": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "per_line": {
        +              "anyOf": [
        +                {
        +                  "items": {
        +                    "additionalProperties": true,
        +                    "properties": {
        +                      "cbm": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "chargeable_weight_kg": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "density_kg_per_m3": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "description": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "gross_weight_kg": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "ldm": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "quantity": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "revenue_tonnes": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "volumetric_weight_kg": {
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      }
        +                    },
        +                    "type": "object"
        +                  },
        +                  "type": "array"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "schema_version": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "totals": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "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"
        +}
    • Changedcontainer_lookup7 fields changed
      • changedInput schema / properties / item_height_cm / description
        Previous value: -"Item height in cm"New value: +"Item height in cm."
      • changedInput schema / properties / item_length_cm / description
        Previous value: -"Item length in cm (for loading calculation)"New value: +"Item length in cm — provide all three item dims to get a load-fit calculation."
      • changedInput schema / properties / item_quantity / description
        Previous value: -"Number of items"New value: +"Number of items to check against the container."
      • changedInput schema / properties / item_weight_kg / description
        Previous value: -"Item weight in kg"New value: +"Item weight in kg — caps the fit by max payload."
      • changedInput schema / properties / item_width_cm / description
        Previous value: -"Item width in cm"New value: +"Item width in cm."
      • changedInput schema / properties / type / description
        Previous value: -"Container slug (e.g., \"20ft-standard\", \"40ft-high-cube\"). Omit to list all types."New value: +"Container slug. Examples: \"20ft-standard\", \"40ft-high-cube\", \"20ft-reefer\". Omit to list all 10 types."
      • 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": {
        +            "audited_at": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "capacity_cbm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "containers": {
        +              "anyOf": [
        +                {
        +                  "items": {},
        +                  "type": "array"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "count": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "description": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "door_height_cm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "door_width_cm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "euro_pallets": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "external_height_cm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "external_length_cm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "external_width_cm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "gma_pallets": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "internal_height_cm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "internal_length_cm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "internal_width_cm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "iso_code": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "loading": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "max_gross_kg": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "max_payload_kg": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "notes": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "slug": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "tare_weight_kg": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "verified": {
        +              "type": [
        +                "boolean",
        +                "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"
        +}
    • Changedemissions_calculator40 fields changed
      • changedInput schema / properties / basis / description
        Previous value: -"Emissions basis: wtw = well-to-wheel incl. upstream (default), ttw = tank-to-wheel / operation only"New value: +"Emissions basis: wtw = well-to-wheel incl. upstream (default), ttw = tank-to-wheel / operation only."
      • changedInput schema / properties / distance_km / description
        Previous value: -"Transport distance in kilometres — you provide it; the tool does not route"New value: +"Transport distance in kilometres — you provide it; the tool does not route."
      • changedInput schema / properties / mass / description
        Previous value: -"Shipment mass, expressed in mass_unit. Example: 1000"New value: +"Shipment mass, expressed in mass_unit. Example: 1000."
      • changedInput schema / properties / mass_unit / description
        Previous value: -"Unit for mass (default: kg)"New value: +"Unit for mass. Default: kg."
      • changedInput schema / properties / mode / description
        Previous value: -"Transport mode"New value: +"Transport mode."
      • 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: -{
        -  "type": "boolean"
        -}
      • removedOutput schema / properties / available_for
        Removed value: -{
        -  "additionalProperties": false,
        -  "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": {},
        +            "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
      • 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: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / emissions
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "basis_used": {
        -      "type": "string"
        -    },
        -    "primary_kgco2e": {
        -      "type": "number"
        -    },
        -    "ttw_kgco2e": {
        -      "type": [
        -        "number",
        -        "null"
        -      ]
        -    },
        -    "wtw_kgco2e": {
        -      "type": [
        -        "number",
        -        "null"
        -      ]
        -    }
        -  },
        -  "required": [
        -    "wtw_kgco2e",
        -    "ttw_kgco2e",
        -    "primary_kgco2e",
        -    "basis_used"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / empty_running
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / envelope_version
        Added value: +{
        +  "const": "1",
        +  "type": "string"
        +}
      • removedOutput schema / properties / factor
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "authority": {
        -      "type": "string"
        -    },
        -    "edition": {
        -      "type": "string"
        -    },
        -    "id": {
        -      "type": "string"
        -    },
        -    "mode": {
        -      "type": "string"
        -    },
        -    "region": {
        -      "type": "string"
        -    },
        -    "sub_mode": {
        -      "type": "string"
        -    },
        -    "ttw": {
        -      "type": [
        -        "number",
        -        "null"
        -      ]
        -    },
        -    "unit": {
        -      "type": "string"
        -    },
        -    "wtw": {
        -      "type": [
        -        "number",
        -        "null"
        -      ]
        -    }
        -  },
        -  "required": [
        -    "id",
        -    "mode",
        -    "sub_mode",
        -    "authority",
        -    "edition",
        -    "region",
        -    "unit",
        -    "wtw",
        -    "ttw"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / inputs
        Removed value: -{
        -  "additionalProperties": false,
        -  "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: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / message
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / methodology
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / normalized_input
        Added value: +{
        +  "additionalProperties": {},
        +  "type": "object"
        +}
      • addedOutput schema / properties / ok
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / representativeness
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / result
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "properties": {
        +        "_source": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": {},
        +              "type": "object"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "available": {
        +          "type": [
        +            "boolean",
        +            "null"
        +          ]
        +        },
        +        "available_for": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": {},
        +              "type": "object"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "confidence": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "disclaimer": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "emissions": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": true,
        +              "properties": {
        +                "basis_used": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "primary_kgco2e": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "ttw_kgco2e": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "wtw_kgco2e": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "empty_running": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "factor": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": true,
        +              "properties": {
        +                "authority": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "edition": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "id": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "mode": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "region": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "sub_mode": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "ttw": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "unit": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "wtw": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "inputs": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": {},
        +              "type": "object"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "mass_basis": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "message": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "methodology": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "representativeness": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "summary": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "tonne_km": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    }
        +  ]
        +}
      • removedOutput schema / properties / summary
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / tonne_km
        Removed value: -{
        -  "type": "number"
        -}
      • addedOutput schema / properties / validity
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "as_of": {
        +      "type": "string"
        +    },
        +    "effective_from": {
        +      "type": "string"
        +    },
        +    "effective_to": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "as_of"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / warnings
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "details": {
        +        "additionalProperties": {},
        +        "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"
        +]
    • Changedget_subscribe_link2 fields changed
      • changedInput schema / properties / tier / description
        Previous value: -"Tier to surface (only \"pro\" supported today)"New value: +"Tier to surface. Only \"pro\" is supported today."
      • 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": {
        +            "currency": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "monthly_limit": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "monthly_price": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "note": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "tier": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "url": {
        +              "type": [
        +                "string",
        +                "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"
        +}
    • Changedhs_code_lookup4 fields changed
      • changedInput schema / properties / code / description
        Previous value: -"Exact HS code lookup (2-6 digits)"New value: +"Exact HS code or prefix — 2, 4 or 6 digits. Example: \"8471\"."
      • changedInput schema / properties / query / description
        Previous value: -"Search by product description (min 2 chars)"New value: +"Keyword search on official HS descriptions (min 2 chars). Formal tariff wording works best. Example: \"automatic data\" rather than \"laptop\"."
      • changedInput schema / properties / section / description
        Previous value: -"Browse by section (Roman numeral I–XXI, e.g., \"II\")"New value: +"Browse a section by Roman numeral I-XXI. Example: \"XVI\" (machinery)."
      • 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": {
        +            "code": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "count": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "meta": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "query": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "results": {
        +              "anyOf": [
        +                {
        +                  "items": {
        +                    "additionalProperties": {},
        +                    "type": "object"
        +                  },
        +                  "type": "array"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "section": {
        +              "type": [
        +                "string",
        +                "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"
        +}
    • Changedics2_check29 fields changed
      • changedInput schema / properties / description / description
        Previous value: -"The goods description to check against the EU ICS2 stop-words list."New value: +"The goods description to check. Example: \"gifts\" (flagged) vs \"wooden toys for retail\" (specific)."
      • removedOutput schema / properties / _source / properties / authority
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / _source / properties / checked
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / _source / properties / dataset
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _source / properties / legal_basis
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _source / properties / licence
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _source / properties / list_in_force
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / _source / properties / name
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / _source / properties / non_exhaustive
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / _source / properties / provenance_status
        Added value: +{
        +  "enum": [
        +    "verified",
        +    "pending-verification",
        +    "computed",
        +    "live"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / properties / _source / properties / retrieved
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _source / properties / retrieved_via
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _source / properties / type
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _source / required
        Previous value: -[
        -  "type",
        -  "authority",
        -  "dataset",
        -  "legal_basis",
        -  "list_in_force",
        -  "source_url",
        -  "licence",
        -  "retrieved",
        -  "non_exhaustive",
        -  "retrieved_via"
        -]New value: +[
        +  "name",
        +  "checked",
        +  "provenance_status"
        +]
      • 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": {},
        +            "type": "object"
        +          },
        +          "tool": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "action"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "message",
        +      "recovery"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / caveat
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / citation
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "qualifier": {
        +      "type": "string"
        +    },
        +    "text": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "text"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / properties / clean
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / confidence
        Added value: +{
        +  "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"
        +}
      • removedOutput schema / properties / description
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / disclaimer
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / envelope_version
        Added value: +{
        +  "const": "1",
        +  "type": "string"
        +}
      • removedOutput schema / properties / flagged
        Removed value: -{
        -  "items": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "note": {
        -        "type": "string"
        -      },
        -      "term": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "term",
        -      "note"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / normalized_input
        Added value: +{
        +  "additionalProperties": {},
        +  "type": "object"
        +}
      • addedOutput schema / properties / ok
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / result
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "properties": {
        +        "caveat": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "clean": {
        +          "type": [
        +            "boolean",
        +            "null"
        +          ]
        +        },
        +        "description": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "disclaimer": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "flagged": {
        +          "anyOf": [
        +            {
        +              "items": {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "note": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "term": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / validity
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "as_of": {
        +      "type": "string"
        +    },
        +    "effective_from": {
        +      "type": "string"
        +    },
        +    "effective_to": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "as_of"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / warnings
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "details": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "message"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "description",
        -  "flagged",
        -  "clean",
        -  "caveat",
        -  "_source",
        -  "disclaimer"
        -]New value: +[
        +  "envelope_version",
        +  "ok",
        +  "result",
        +  "confidence",
        +  "_source",
        +  "citation"
        +]
    • Changedincoterms_lookup3 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Filter by transport mode category"New value: +"Filter the list: any_mode (7 rules) or sea_only (4 rules)."
      • changedInput schema / properties / code / description
        Previous value: -"Incoterm code (3 letters, e.g., \"FOB\", \"CIF\", \"EXW\")"New value: +"Three-letter Incoterms 2020 code. Examples: \"FOB\", \"CIF\", \"EXW\", \"DAP\"."
      • 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": {
        +            "best_for": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "buyer_responsibility": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "category": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "code": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "cost_transfer": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "count": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "export_clearance": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "import_clearance": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "insurance": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "results": {
        +              "anyOf": [
        +                {
        +                  "items": {},
        +                  "type": "array"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "risk_transfer": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "seller_responsibility": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "slug": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "summary": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "watch_out": {
        +              "type": [
        +                "string",
        +                "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"
        +}
    • Changedldm_calculator10 fields changed
      • changedInput schema / properties / length_mm / description
        Previous value: -"Custom pallet length in mm (use instead of preset)"New value: +"Custom pallet length in millimetres (use with width_mm instead of a preset). Example: 1140."
      • changedInput schema / properties / pallet / description
        Previous value: -"Pallet preset. Euro=1200x800mm, UK=1200x1000mm, Half=800x600mm, Quarter=600x400mm"New value: +"Pallet preset: euro=1200x800mm, uk=1200x1000mm, half=800x600mm, quarter=600x400mm. Provide this OR length_mm + width_mm."
      • changedInput schema / properties / quantity / description
        Previous value: -"Number of pallets (default: 1)"New value: +"Number of pallets. Default: 1."
      • changedInput schema / properties / stack_height / description
        Previous value: -"Stack height: 2 or 3 (default: 2)"New value: +"Stack height when stackable: 2 or 3. Default: 2."
      • changedInput schema / properties / stackable / description
        Previous value: -"Can pallets be stacked? (default: false)"New value: +"Whether pallets can be double/triple-stacked — halves (or thirds) the floor footprint. Default: false."
      • changedInput schema / properties / vehicle / description
        Previous value: -"Vehicle type (default: artic 13.6m)"New value: +"Vehicle preset: artic 13.6m (default), rigid10 = 10m rigid, rigid75 = 7.5t rigid, luton van, or custom."
      • changedInput schema / properties / vehicle_length_m / description
        Previous value: -"Custom vehicle length in metres (required if vehicle=custom)"New value: +"Custom vehicle load length in metres (required when vehicle=custom)."
      • changedInput schema / properties / weight_kg / description
        Previous value: -"Weight per pallet in kg"New value: +"Weight per pallet in kg — enables the payload side of the fits check."
      • changedInput schema / properties / width_mm / description
        Previous value: -"Custom pallet width in mm (use instead of preset)"New value: +"Custom pallet width in millimetres. Example: 980."
      • 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": {
        +            "fits": {
        +              "type": [
        +                "boolean",
        +                "null"
        +              ]
        +            },
        +            "ldm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "meta": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "pallet_spaces": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": true,
        +                  "properties": {
        +                    "available": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "used": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "total_weight_kg": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "utilisation_percent": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "vehicle": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": true,
        +                  "properties": {
        +                    "length_m": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "max_payload_kg": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "name": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "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"
        +}
    • Changednearest_airport29 fields changed
      • changedInput schema / properties / latitude / description
        Previous value: -"Latitude in decimal degrees (-90 to 90)"New value: +"Latitude in decimal degrees (-90 to 90). Example: 51.47."
      • changedInput schema / properties / longitude / description
        Previous value: -"Longitude in decimal degrees (-180 to 180)"New value: +"Longitude in decimal degrees (-180 to 180). Example: -0.4543."
      • changedInput schema / properties / max_results / description
        Previous value: -"Max results to return (1-50, default 10)"New value: +"Maximum results (1-50). Default: 10."
      • changedInput schema / properties / radius_km / description
        Previous value: -"Optional maximum distance in kilometres"New value: +"Maximum distance in kilometres — omit for no radius cap."
      • changedInput schema / properties / type / description
        Previous value: -"Optional filter by airport type"New value: +"Optional filter by airport type. Example: \"large_airport\"."
      • removedOutput schema / properties / _source / properties / authority
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / _source / properties / checked
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / _source / properties / data_vintage
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _source / properties / dataset
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _source / properties / licence
        Removed value: -{
        -  "type": "string"
        -}
      • 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 / retrieved_via
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / _source / properties / type
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / _source / required
        Previous value: -[
        -  "type",
        -  "authority"
        -]New value: +[
        +  "name",
        +  "checked",
        +  "provenance_status"
        +]
      • 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": {},
        +            "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
        Added value: +{
        +  "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"
        +}
      • removedOutput schema / properties / count
        Removed value: -{
        -  "type": "number"
        -}
      • removedOutput schema / properties / disclaimer
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / envelope_version
        Added value: +{
        +  "const": "1",
        +  "type": "string"
        +}
      • removedOutput schema / properties / meta
        Removed value: -{
        -  "additionalProperties": {},
        -  "type": "object"
        -}
      • addedOutput schema / properties / normalized_input
        Added value: +{
        +  "additionalProperties": {},
        +  "type": "object"
        +}
      • addedOutput schema / properties / ok
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / result
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "properties": {
        +        "count": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "disclaimer": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "meta": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": {},
        +              "type": "object"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "results": {
        +          "anyOf": [
        +            {
        +              "items": {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "country": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "country_name": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "elevation_ft": {
        +                    "type": [
        +                      "number",
        +                      "null"
        +                    ]
        +                  },
        +                  "iata_code": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "ident": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "latitude": {
        +                    "type": [
        +                      "number",
        +                      "null"
        +                    ]
        +                  },
        +                  "longitude": {
        +                    "type": [
        +                      "number",
        +                      "null"
        +                    ]
        +                  },
        +                  "municipality": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "name": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "region": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "type": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    }
        +  ]
        +}
      • removedOutput schema / properties / results
        Removed value: -{
        -  "items": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "country": {
        -        "type": "string"
        -      },
        -      "country_name": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "distance_km": {
        -        "type": "number"
        -      },
        -      "elevation_ft": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "iata_code": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "ident": {
        -        "type": "string"
        -      },
        -      "latitude": {
        -        "type": "number"
        -      },
        -      "longitude": {
        -        "type": "number"
        -      },
        -      "municipality": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "name": {
        -        "type": "string"
        -      },
        -      "region": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "type": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "ident",
        -      "iata_code",
        -      "name",
        -      "type",
        -      "municipality",
        -      "region",
        -      "country",
        -      "country_name",
        -      "latitude",
        -      "longitude",
        -      "elevation_ft",
        -      "distance_km"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / validity
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "as_of": {
        +      "type": "string"
        +    },
        +    "effective_from": {
        +      "type": "string"
        +    },
        +    "effective_to": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "as_of"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / warnings
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "details": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "message"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "count",
        -  "results",
        -  "disclaimer",
        -  "_source"
        -]New value: +[
        +  "envelope_version",
        +  "ok",
        +  "result",
        +  "confidence",
        +  "_source",
        +  "citation"
        +]
    • Changedpallet_fitting_calculator11 fields changed
      • changedInput schema / properties / allow_rotation / description
        Previous value: -"Allow 90-degree box rotation (default: true)"New value: +"Try 90-degree box rotation for the best layer fit. Default: true."
      • changedInput schema / properties / box_height_cm / description
        Previous value: -"Box height in cm"New value: +"Box height in cm."
      • changedInput schema / properties / box_length_cm / description
        Previous value: -"Box length in cm"New value: +"Box length in cm."
      • changedInput schema / properties / box_weight_kg / description
        Previous value: -"Box weight in kg"New value: +"Weight per box in kg — enables the weight-capping check."
      • changedInput schema / properties / box_width_cm / description
        Previous value: -"Box width in cm"New value: +"Box width in cm."
      • changedInput schema / properties / max_payload_kg / description
        Previous value: -"Maximum pallet payload weight in kg"New value: +"Maximum pallet payload in kg. Example: 1000."
      • changedInput schema / properties / pallet_deck_height_cm / description
        Previous value: -"Pallet deck height in cm (default: 15)"New value: +"Pallet deck height in cm. Default: 15."
      • changedInput schema / properties / pallet_length_cm / description
        Previous value: -"Pallet length in cm"New value: +"Pallet length in cm. Example: 120 (euro pallet)."
      • changedInput schema / properties / pallet_max_height_cm / description
        Previous value: -"Maximum stack height in cm (including pallet deck)"New value: +"Maximum stack height in cm INCLUDING the pallet deck. Example: 180."
      • changedInput schema / properties / pallet_width_cm / description
        Previous value: -"Pallet width in cm"New value: +"Pallet width in cm. Example: 80 (euro pallet)."
      • 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": {
        +            "boxes_per_col": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "boxes_per_layer": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "boxes_per_row": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "layers": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "meta": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "orientation": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "pallet_volume_cbm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "remaining_weight_capacity_kg": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "total_box_volume_cbm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "total_boxes": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "total_weight_kg": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "usable_height_cm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "utilisation_percent": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "wasted_space_cbm": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "weight_limited": {
        +              "type": [
        +                "boolean",
        +                "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"
        +}
    • Changedshipment_summary19 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"Destination location — ISO country code and optional UN/LOCODE"New value: +"Destination — ISO country code and optional UN/LOCODE."
      • changedInput schema / properties / freight_cost / description
        Previous value: -"Optional freight cost in GBP for duty calculation"New value: +"Freight cost in GBP for the duty calculation."
      • changedInput schema / properties / incoterm / description
        Previous value: -"Incoterms 2020 three-letter code (e.g. 'DAP', 'EXW', 'FOB')"New value: +"Incoterms 2020 three-letter code. Examples: \"DAP\", \"EXW\", \"FOB\"."
      • changedInput schema / properties / insurance_cost / description
        Previous value: -"Optional insurance cost in GBP for duty calculation"New value: +"Insurance cost in GBP for the duty calculation."
      • changedInput schema / properties / items / description
        Previous value: -"Array of shipment items with dimensions, weight, and optional HS/UN codes"New value: +"Shipment items with dimensions, weight and optional HS/UN codes."
      • changedInput schema / properties / items / items / properties / customs_value / description
        Previous value: -"Customs value per item in GBP"New value: +"Customs value per item in GBP — enables the duty section."
      • addedInput schema / properties / items / items / properties / description / description
        Added value: +"Optional item label."
      • changedInput schema / properties / items / items / properties / height / description
        Previous value: -"Height in cm"New value: +"Height in cm."
      • changedInput schema / properties / items / items / properties / hs_code / description
        Previous value: -"HS code for customs"New value: +"HS code — enables the duty section together with customs_value."
      • changedInput schema / properties / items / items / properties / length / description
        Previous value: -"Length in cm"New value: +"Length in cm."
      • changedInput schema / properties / items / items / properties / pallet_type / description
        Previous value: -"Pallet standard the item sits on, if any"New value: +"Pallet standard the item sits on, if any."
      • changedInput schema / properties / items / items / properties / quantity / description
        Previous value: -"Number of items"New value: +"Number of items."
      • changedInput schema / properties / items / items / properties / stackable / description
        Previous value: -"Whether this item can be stacked (affects pallet fitting calc)"New value: +"Whether this item can be stacked (affects pallet fitting)."
      • changedInput schema / properties / items / items / properties / un_number / description
        Previous value: -"UN number for dangerous goods"New value: +"UN number — enables the dangerous-goods section."
      • changedInput schema / properties / items / items / properties / weight / description
        Previous value: -"Gross weight per item in kg"New value: +"Gross weight per item in kg."
      • changedInput schema / properties / items / items / properties / width / description
        Previous value: -"Width in cm"New value: +"Width in cm."
      • changedInput schema / properties / mode / description
        Previous value: -"Transport mode"New value: +"Transport mode — selects the mode-specific section of the result."
      • changedInput schema / properties / origin / description
        Previous value: -"Origin location — ISO country code and optional UN/LOCODE"New value: +"Origin — ISO country code and optional UN/LOCODE."
      • 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": {
        +            "adr": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "dataVersion": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "disclaimer": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "duty": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "itemCount": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "mode": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "modeSpecific": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "totals": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": true,
        +                  "properties": {
        +                    "billingBasis": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "chargeableWeight": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "grossWeight": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "pieces": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "volumeCBM": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "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"
        +}
    • Changeduk_duty_calculator7 fields changed
      • changedInput schema / properties / commodity_code / description
        Previous value: -"HS/tariff code (6–10 digits, e.g., \"847989\")"New value: +"HS/UK tariff code, 6-10 digits. Example: \"8471300000\" (portable computers). 6-digit codes may need the declarable 8/10-digit line."
      • changedInput schema / properties / customs_value / description
        Previous value: -"Goods value in GBP"New value: +"Goods value in GBP. Example: 1000."
      • changedInput schema / properties / freight_cost / description
        Previous value: -"Freight cost in GBP (added to CIF value)"New value: +"Freight cost in GBP — added to the CIF value. Default: 0."
      • changedInput schema / properties / incoterm / description
        Previous value: -"Incoterm basis"New value: +"Incoterms 2020 basis of the customs_value — documents which costs are already included."
      • changedInput schema / properties / insurance_cost / description
        Previous value: -"Insurance cost in GBP (added to CIF value)"New value: +"Insurance cost in GBP — added to the CIF value. Default: 0."
      • changedInput schema / properties / origin_country / description
        Previous value: -"ISO 2-letter origin country code (e.g., \"CN\", \"DE\")"New value: +"ISO 2-letter country of origin. Examples: \"CN\", \"DE\", \"US\"."
      • 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": {
        +            "cif_value": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "commodity_code": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "commodity_description": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "disclaimer": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "duty_amount": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "duty_rate": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "duty_rate_percent": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "origin_country": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "origin_country_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "source": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "total_import_taxes": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "total_landed_cost": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "vat_amount": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "vat_rate": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "vat_rate_percent": {
        +              "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"
        +}
    • Changeduld_lookup4 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Filter by category"New value: +"Filter by ULD category."
      • changedInput schema / properties / deck / description
        Previous value: -"Filter by deck position"New value: +"Filter by deck position."
      • changedInput schema / properties / type / description
        Previous value: -"ULD code (e.g., \"AKE\", \"PMC\") or slug (e.g., \"ake-ld3\"). Omit to list all."New value: +"IATA ULD code or slug. Examples: \"AKE\", \"PMC\", \"ake-ld3\". Omit to list all 15."
      • 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": {
        +            "count": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "meta": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "result": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "results": {
        +              "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"
        +}
    • Changedunit_converter4 fields changed
      • changedInput schema / properties / from / description
        Previous value: -"Source unit — weight (kg, lbs, oz, tonnes, short_tons, long_tons), volume (cbm, cuft, cuin, litres, gal_us, gal_uk) or length (cm, inches, m, feet, mm)"New value: +"Source unit — weight (kg, lbs, oz, tonnes, short_tons, long_tons), volume (cbm, cuft, cuin, litres, gal_us, gal_uk) or length (cm, inches, m, feet, mm). Must be the same dimension as \"to\"."
      • changedInput schema / properties / to / description
        Previous value: -"Target unit — any source unit, plus the freight targets chargeable_kg and freight_tonnes (only valid from cbm)"New value: +"Target unit — any same-dimension unit, plus chargeable_kg and freight_tonnes (both only valid from cbm)."
      • changedInput schema / properties / value / description
        Previous value: -"The value to convert"New value: +"The numeric value to convert. Example: 5."
      • 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": {
        +            "formula": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "input": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": true,
        +                  "properties": {
        +                    "name": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "unit": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "value": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "note": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "result": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": true,
        +                  "properties": {
        +                    "name": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "unit": {
        +                      "type": [
        +                        "string",
        +                        "null"
        +                      ]
        +                    },
        +                    "value": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "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"
        +}
    • Changedunlocode_lookup6 fields changed
      • changedInput schema / properties / code / description
        Previous value: -"Exact UN/LOCODE lookup (e.g., \"GBLHR\", \"NLRTM\")"New value: +"Exact UN/LOCODE — 5 characters. Examples: \"GBLHR\", \"NLRTM\"."
      • changedInput schema / properties / country / description
        Previous value: -"Filter by country code (e.g., \"GB\", \"NL\")"New value: +"Filter by 2-letter ISO country code. Examples: \"GB\", \"NL\"."
      • changedInput schema / properties / function_type / description
        Previous value: -"Filter by location function"New value: +"Filter by location function."
      • changedInput schema / properties / limit / description
        Previous value: -"Max results (default: 20, max: 100)"New value: +"Maximum results. Default: 20, max: 100."
      • changedInput schema / properties / query / description
        Previous value: -"Search by location name (e.g., \"rotterdam\", \"heathrow\")"New value: +"Location name search (min 2 chars). Examples: \"rotterdam\", \"heathrow\"."
      • 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": {
        +            "audited_at": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "code": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "coordinates": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": true,
        +                  "properties": {
        +                    "lat": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    },
        +                    "lon": {
        +                      "type": [
        +                        "number",
        +                        "null"
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "count": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "country": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "functions": {
        +              "anyOf": [
        +                {
        +                  "items": {
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "iata_code": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "location_code": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "name_ascii": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "results": {
        +              "anyOf": [
        +                {
        +                  "items": {},
        +                  "type": "array"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "status": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "subdivision": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "verified": {
        +              "type": [
        +                "boolean",
        +                "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"
        +}
    • Changedvalidate17 fields changed
      • changedInput schema / properties / text / description
        Previous value: -"Arbitrary string to scan for container / AWB / IMO identifiers (parse mode). Provide this OR value+type."New value: +"Arbitrary string to scan for container / AWB / IMO identifiers (parse mode). Provide this OR value+type. Example: \"2 cntrs MSKU3068808 / TGHU7654325 on AWB 176-12345675\"."
      • changedInput schema / properties / type / description
        Previous value: -"Identifier type for value: container = ISO 6346, awb = IATA Air Waybill, imo = IMO ship number."New value: +"Identifier type for value: container = ISO 6346, awb = IATA air waybill, imo = IMO ship number."
      • changedInput schema / properties / value / description
        Previous value: -"A single identifier to validate (typed mode). Requires type."New value: +"A single identifier to validate (typed mode). Requires type. Example: \"MSKU3068808\"."
      • addedOutput schema / properties / _source
        Added value: +{
        +  "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"
        +}
      • 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": {},
        +            "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
        Added value: +{
        +  "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"
        +}
      • removedOutput schema / properties / disclaimer
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / envelope_version
        Added value: +{
        +  "const": "1",
        +  "type": "string"
        +}
      • removedOutput schema / properties / found
        Removed value: -{
        -  "items": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "_source": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "authority": {
        -            "type": "string"
        -          },
        -          "computed_by": {
        -            "type": "string"
        -          },
        -          "reference": {
        -            "type": "string"
        -          },
        -          "source_url": {
        -            "type": "string"
        -          },
        -          "standard": {
        -            "type": "string"
        -          },
        -          "type": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "type",
        -          "standard",
        -          "reference",
        -          "authority",
        -          "source_url",
        -          "computed_by"
        -        ],
        -        "type": "object"
        -      },
        -      "check_digit": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "actual": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          },
        -          "expected": {
        -            "type": [
        -              "number",
        -              "null"
        -            ]
        -          }
        -        },
        -        "required": [
        -          "expected",
        -          "actual"
        -        ],
        -        "type": "object"
        -      },
        -      "details": {
        -        "additionalProperties": {},
        -        "type": "object"
        -      },
        -      "normalised": {
        -        "type": "string"
        -      },
        -      "raw": {
        -        "type": "string"
        -      },
        -      "type": {
        -        "type": "string"
        -      },
        -      "valid": {
        -        "type": "boolean"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "raw",
        -      "normalised",
        -      "valid",
        -      "check_digit",
        -      "details",
        -      "_source"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / normalized_input
        Added value: +{
        +  "additionalProperties": {},
        +  "type": "object"
        +}
      • removedOutput schema / properties / note
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / ok
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / result
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "properties": {
        +        "disclaimer": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "found": {
        +          "anyOf": [
        +            {
        +              "items": {
        +                "additionalProperties": true,
        +                "properties": {
        +                  "_source": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": {},
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "check_digit": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": {},
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "details": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": {},
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "normalised": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "raw": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "type": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "valid": {
        +                    "type": [
        +                      "boolean",
        +                      "null"
        +                    ]
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "note": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": {},
        +      "type": "object"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / validity
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "as_of": {
        +      "type": "string"
        +    },
        +    "effective_from": {
        +      "type": "string"
        +    },
        +    "effective_to": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "as_of"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / warnings
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "details": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "message"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "found",
        -  "disclaimer"
        -]New value: +[
        +  "envelope_version",
        +  "ok",
        +  "result",
        +  "confidence",
        +  "_source",
        +  "citation"
        +]
    • Changedvehicle_lookup4 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Filter by category"New value: +"Filter by vehicle category."
      • changedInput schema / properties / region / description
        Previous value: -"Filter by region"New value: +"Filter by region."
      • changedInput schema / properties / slug / description
        Previous value: -"Vehicle slug (e.g., \"standard-curtainsider\"). Omit to list all."New value: +"Vehicle slug. Examples: \"standard-curtainsider\", \"mega-trailer\". Omit to list all 17."
      • 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": {
        +            "count": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "meta": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "result": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "results": {
        +              "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"
        +}
  7. 1 tool updatev2.10.1
    • Changedemissions_calculator7 fields changed
      • 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: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / empty_running
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / mass_basis
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / representativeness
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / summary
        Added value: +{
        +  "type": "string"
        +}
  8. 5 tool updatesv2.10.0
    • Addedairport_lookup
    • Addedemissions_calculator
    • Addedics2_check
    • Addednearest_airport
    • Addedvalidate
  9. 9 tool updatesv2.5.0
    • Changedairline_lookup8 fields changed
      • changedInput schema / properties / iata / description
        Previous value: -"Exact IATA code (2 chars, e.g., \"EK\")"New value: +"Exact IATA code (2 alphanumeric chars)"
      • removedInput schema / properties / iata / maxLength
        Removed value: -2
      • removedInput schema / properties / iata / minLength
        Removed value: -2
      • addedInput schema / properties / iata / pattern
        Added value: +"^[A-Za-z0-9]{2}$"
      • changedInput schema / properties / icao / description
        Previous value: -"Exact ICAO code (3 chars, e.g., \"UAE\")"New value: +"Exact ICAO code (3 letters)"
      • removedInput schema / properties / icao / maxLength
        Removed value: -3
      • removedInput schema / properties / icao / minLength
        Removed value: -3
      • addedInput schema / properties / icao / pattern
        Added value: +"^[A-Za-z]{3}$"
    • Changedcontainer_lookup1 field changed
      • addedInput schema / properties / type / minLength
        Added value: +2
    • Changedhs_code_lookup4 fields changed
      • addedInput schema / properties / code / pattern
        Added value: +"^\\d{2,6}$"
      • addedInput schema / properties / query / minLength
        Added value: +2
      • changedInput schema / properties / section / description
        Previous value: -"Browse by section (Roman numeral, e.g., \"II\")"New value: +"Browse by section (Roman numeral I–XXI, e.g., \"II\")"
      • addedInput schema / properties / section / pattern
        Added value: +"^[ivxIVX]{1,5}$"
    • Changedincoterms_lookup2 fields changed
      • changedInput schema / properties / code / description
        Previous value: -"Incoterm code (e.g., \"FOB\", \"CIF\", \"EXW\")"New value: +"Incoterm code (3 letters, e.g., \"FOB\", \"CIF\", \"EXW\")"
      • addedInput schema / properties / code / pattern
        Added value: +"^[A-Za-z]{3}$"
    • Changeduk_duty_calculator5 fields changed
      • changedInput schema / properties / incoterm / description
        Previous value: -"Incoterm (e.g., \"FOB\", \"CIF\", \"EXW\")"New value: +"Incoterm basis"
      • addedInput schema / properties / incoterm / enum
        Added value: +[
        +  "EXW",
        +  "FCA",
        +  "FAS",
        +  "FOB",
        +  "CFR",
        +  "CIF",
        +  "CPT",
        +  "CIP",
        +  "DAP",
        +  "DPU",
        +  "DDP"
        +]
      • removedInput schema / properties / origin_country / maxLength
        Removed value: -2
      • removedInput schema / properties / origin_country / minLength
        Removed value: -2
      • changedInput schema / properties / origin_country / pattern
        Previous value: -"^[A-Z]{2}$"New value: +"^[A-Za-z]{2}$"
    • Changeduld_lookup2 fields changed
      • changedInput schema / properties / type / description
        Previous value: -"ULD code (e.g., \"AKE\", \"PMC\"). Omit to list all."New value: +"ULD code (e.g., \"AKE\", \"PMC\") or slug (e.g., \"ake-ld3\"). Omit to list all."
      • addedInput schema / properties / type / minLength
        Added value: +2
    • Changedunit_converter4 fields changed
      • changedInput schema / properties / from / description
        Previous value: -"Source unit code (e.g., \"kg\", \"cbm\", \"cm\")"New value: +"Source unit — weight (kg, lbs, oz, tonnes, short_tons, long_tons), volume (cbm, cuft, cuin, litres, gal_us, gal_uk) or length (cm, inches, m, feet, mm)"
      • addedInput schema / properties / from / enum
        Added value: +[
        +  "kg",
        +  "lbs",
        +  "oz",
        +  "tonnes",
        +  "short_tons",
        +  "long_tons",
        +  "cbm",
        +  "cuft",
        +  "cuin",
        +  "litres",
        +  "gal_us",
        +  "gal_uk",
        +  "cm",
        +  "inches",
        +  "m",
        +  "feet",
        +  "mm"
        +]
      • changedInput schema / properties / to / description
        Previous value: -"Target unit code (e.g., \"lbs\", \"cuft\", \"inches\")"New value: +"Target unit — any source unit, plus the freight targets chargeable_kg and freight_tonnes (only valid from cbm)"
      • addedInput schema / properties / to / enum
        Added value: +[
        +  "kg",
        +  "lbs",
        +  "oz",
        +  "tonnes",
        +  "short_tons",
        +  "long_tons",
        +  "cbm",
        +  "cuft",
        +  "cuin",
        +  "litres",
        +  "gal_us",
        +  "gal_uk",
        +  "cm",
        +  "inches",
        +  "m",
        +  "feet",
        +  "mm",
        +  "chargeable_kg",
        +  "freight_tonnes"
        +]
    • Changedunlocode_lookup8 fields changed
      • removedInput schema / properties / code / maxLength
        Removed value: -5
      • removedInput schema / properties / code / minLength
        Removed value: -5
      • changedInput schema / properties / code / pattern
        Previous value: -"^[A-Z0-9]{5}$"New value: +"^[A-Za-z0-9]{5}$"
      • removedInput schema / properties / country / maxLength
        Removed value: -2
      • removedInput schema / properties / country / minLength
        Removed value: -2
      • changedInput schema / properties / country / pattern
        Previous value: -"^[A-Z]{2}$"New value: +"^[A-Za-z]{2}$"
      • removedInput schema / properties / function
        Removed value: -{
        -  "description": "Filter by function: port, airport, rail, road, icd, border",
        -  "type": "string"
        -}
      • addedInput schema / properties / function_type
        Added value: +{
        +  "description": "Filter by location function",
        +  "enum": [
        +    "port",
        +    "airport",
        +    "rail",
        +    "road",
        +    "icd",
        +    "border"
        +  ],
        +  "type": "string"
        +}
    • Changedvehicle_lookup1 field changed
      • addedInput schema / properties / slug / minLength
        Added value: +2
  10. 1 tool updatev2.4.1
    • Changedconsignment_calculator15 fields changed
      • changedInput schema / properties / items / description
        Previous value: -"Array of consignment items"New value: +"Deprecated flat alias — dimensions in cm, weight in kg. Prefer lines."
      • changedInput schema / properties / items / items / properties / gross_weight / description
        Previous value: -"Gross weight per item in kg"New value: +"Gross weight per piece in kg"
      • addedInput schema / properties / items / items / properties / gross_weight / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / items / items / properties / pallet_type / description
        Previous value: -"Pallet type"New value: +"Pallet type (informational)"
      • changedInput schema / properties / items / items / properties / pallet_type / enum
        Previous value: -[
        -  "euro",
        -  "uk",
        -  "us",
        -  "custom",
        -  "none"
        -]New value: +[
        +  "none",
        +  "euro",
        +  "uk",
        +  "us",
        +  "custom"
        +]
      • changedInput schema / properties / items / items / properties / quantity / description
        Previous value: -"Number of items (default: 1)"New value: +"Number of pieces (default 1)"
      • changedInput schema / properties / items / items / properties / stackable / description
        Previous value: -"Can items be stacked?"New value: +"Can the item be stacked?"
      • changedInput schema / properties / items / items / required
        Previous value: -[
        -  "length",
        -  "width",
        -  "height"
        -]New value: +[
        +  "length",
        +  "width",
        +  "height",
        +  "gross_weight"
        +]
      • addedInput schema / properties / items / maxItems
        Added value: +50
      • addedInput schema / properties / items / minItems
        Added value: +1
      • addedInput schema / properties / lines
        Added value: +{
        +  "description": "Canonical consignment lines (preferred). Provide lines OR items.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "description": {
        +        "description": "Optional item label",
        +        "type": "string"
        +      },
        +      "dims": {
        +        "additionalProperties": false,
        +        "description": "Dimensions with unit",
        +        "properties": {
        +          "h": {
        +            "description": "Height in the given unit",
        +            "exclusiveMinimum": 0,
        +            "type": "number"
        +          },
        +          "l": {
        +            "description": "Length in the given unit",
        +            "exclusiveMinimum": 0,
        +            "type": "number"
        +          },
        +          "unit": {
        +            "description": "Dimension unit",
        +            "enum": [
        +              "mm",
        +              "cm",
        +              "m",
        +              "in"
        +            ],
        +            "type": "string"
        +          },
        +          "w": {
        +            "description": "Width in the given unit",
        +            "exclusiveMinimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "l",
        +          "w",
        +          "h",
        +          "unit"
        +        ],
        +        "type": "object"
        +      },
        +      "hs_code": {
        +        "description": "Optional HS commodity code (6–10 digits)",
        +        "type": "string"
        +      },
        +      "quantity": {
        +        "description": "Number of identical pieces",
        +        "exclusiveMinimum": 0,
        +        "type": "integer"
        +      },
        +      "stackable": {
        +        "description": "Stack two-high (halves loading-metre footprint)",
        +        "type": "boolean"
        +      },
        +      "un_number": {
        +        "description": "Optional UN number for dangerous-goods reference",
        +        "type": "string"
        +      },
        +      "weight": {
        +        "additionalProperties": false,
        +        "description": "Weight with unit",
        +        "properties": {
        +          "unit": {
        +            "description": "Weight unit",
        +            "enum": [
        +              "kg",
        +              "g",
        +              "t",
        +              "lb"
        +            ],
        +            "type": "string"
        +          },
        +          "value": {
        +            "description": "Gross weight per piece",
        +            "exclusiveMinimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "value",
        +          "unit"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "quantity",
        +      "dims",
        +      "weight"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 50,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedInput schema / properties / mode / description
        Previous value: -"Transport mode (default: road)"New value: +"Transport mode: sea | air | road (default road)"
      • changedInput schema / properties / mode / enum
        Previous value: -[
        -  "road",
        -  "air",
        -  "sea"
        -]New value: +[
        +  "sea",
        +  "air",
        +  "road"
        +]
      • addedInput schema / properties / options
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Optional settings",
        +  "properties": {
        +    "air_volumetric_divisor": {
        +      "description": "IATA volumetric divisor in cm³/kg (default 6000). Air only.",
        +      "exclusiveMinimum": 0,
        +      "type": "number"
        +    },
        +    "awb_number": {
        +      "description": "IATA 11-digit air waybill number, check-digit validated",
        +      "type": "string"
        +    },
        +    "container_number": {
        +      "description": "ISO 6346 container number, check-digit validated",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "items"
        -]
  11. 11 tool updatesv2.1.1
    • Changedadr_exemption_calculator2 fields changed
      • 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}$"
    • Changedadr_lookup2 fields changed
      • addedInput schema / properties / search / minLength
        Added value: +2
      • addedInput schema / properties / un_number / pattern
        Added value: +"^(UN)?\\d{4}$"
    • Addedadr_lq_eq_check
    • Changedairline_lookup7 fields changed
      • addedInput schema / properties / country / minLength
        Added value: +2
      • addedInput schema / properties / iata / maxLength
        Added value: +2
      • addedInput schema / properties / iata / minLength
        Added value: +2
      • addedInput schema / properties / icao / maxLength
        Added value: +3
      • addedInput schema / properties / icao / minLength
        Added value: +3
      • addedInput schema / properties / prefix / pattern
        Added value: +"^\\d{3}$"
      • addedInput schema / properties / query / minLength
        Added value: +2
    • Addedconsignment_calculator
    • Addedget_subscribe_link
    • Addedshipment_summary
    • Addeduk_duty_calculator
    • Addeduld_lookup
    • Addedunlocode_lookup
    • Addedvehicle_lookup
  12. 11 tool updatesv1.0.0
    • First observedadr_exemption_calculator
    • First observedadr_lookup
    • First observedairline_lookup
    • First observedcbm_calculator
    • First observedchargeable_weight_calculator
    • First observedcontainer_lookup
    • First observedhs_code_lookup
    • First observedincoterms_lookup
    • First observedldm_calculator
    • First observedpallet_fitting_calculator
    • First observedunit_converter

TDQS

A4.4/5.0
Disambiguation4/5

The set is largely organized into crisp reference-lookup vs. calculator families, and each tool's Related notes make the intended use clear. A few pairs require careful reading to distinguish (airline_lookup vs airport_lookup, consignment_calculator vs shipment_summary, validate vs resolve_reference), which keeps it from a perfect score.

Naming Consistency4/5

A clear noun_action pattern prevails: 9 *_lookup tools for reference data and 8 *_calculator tools for numeric work, and these families make the primary use obvious at a glance. Exceptions like unit_converter, validate, resolve_reference, nearest_airport, ics2_check and get_subscribe_link deviate or mix suffixes, but each is still a readable, llm-inferable name.

Tool Count4/5

At 25 tools the server is at the upper end of a practical MCP surface, though the manifest is genuinely a multiple-mode freight suite (air/sea/road, dangerous goods, custom, equipment, reference codes, carbon) and each tool is focused where the stereotypes might overlap. The one honestly unnecessary tool is get_subscribe_link which is a meta/ subscription operation, but it is isolated.

Completeness4/5

Domain coverage is thorough: reference lookups, freight calculators for air/sea/road, pallet/vehicle/container equipment, ADR exemption and limited-quantity checks, customs screening, bond/duty, emissions and universal identifier validation. Minor gaps (non-UK duty only, no global routing or rate-construction features) are a conscious scope boundary and not would-be fatal to workflows.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    The first logistics/WMS MCP server for AI agents. Rate shopping, inventory management, order tracking, fleet logistics, AI-powered route optimization, demand forecasting, and supply chain analytics. 18 tools across 3 tiers.
    20
    17
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Ocean container shipping intelligence for AI agents — D\&D tariffs, freight rates, vessel schedules, port congestion, inland haulage across 6 major carriers. 24 MCP tools.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to pack trucks and shipping containers by generating validated 3D load plans with metrics like LDM, linear feet, and pallet positions through the Hansatic packing API.
    3
    19
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SoapyRED/freightutils-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server