Skip to main content
Glama
SoapyRED

FreightUtils MCP Server

FreightUtils MCP Server

npm version npm downloads (total) npm downloads (month) License: MIT FreightUtils MCP server

The neutral freight reference layer for AI agents.

FreightUtils is the neutral freight reference layer for AI agents — source-backed dangerous-goods, customs, location and freight-calculation data an agent can call and cite, from primary sources (ADR 2025 / UNECE, HS 2022 / WCO, IATA-regulated airline prefixes). Neutral by design: no freight to sell and no carrier to push — a lookup returns what the named source says, with the citation attached so an agent can inspect it rather than take our word for it, regardless of who carries the load.

This Model Context Protocol server gives AI agents access to 25 freight calculation and reference tools, covering road, air, and sea freight. Built by a UK ADR-certified freight transport planner.

Every response cites its source — a _source block with the authority, edition, licence where held, and a verification status an agent can read — and the tools are deterministic, not generated answers. Reference only: never filing, booking, or legal advice, and results state when human review is required (validate is structural check-digit validation only; a clean ics2_check is not ENS acceptance; emissions figures are estimates, not audited reports).

Since 2.11.0, every tool also declares a typed outputSchema and returns structuredContent — the FreightUtils v1 response envelope: the answer under result, plus confidence, normalized_input, warnings, _source and a ready-to-use citation. The legacy flat JSON text channel is unchanged (byte-identical), so existing text-parsing consumers are unaffected.

Website: https://www.freightutils.com API Docs: https://www.freightutils.com/api-docs


Tools (25)

Calculators

Tool

Description

ldm_calculator

Loading metres for European and US road trailers

cbm_calculator

Cubic metres for sea freight

chargeable_weight_calculator

Air freight chargeable weight (volumetric vs actual)

pallet_fitting_calculator

Box-on-pallet optimisation with rotation

container_lookup

ISO container specs (10 types) and loading calculation

unit_converter

Weight, volume, length, and freight-specific conversions

consignment_calculator

Multi-item CBM, LDM, volumetric & mode-specific chargeable weight (sea/air/road) + advisory flags

emissions_calculator

Freight CO2e via the ISO 14083 / GLEC distance-based method — open DEFRA/EPA/ADEME factors (WTW + TTW); use actual gross mass (not chargeable/volumetric); result carries empty_running + representativeness (sea/air = low) + a summary

Dangerous Goods (ADR)

Tool

Description

adr_lookup

2,939 UNECE ADR 2025 entries

adr_exemption_calculator

ADR 1.1.3.6 small load exemption check

adr_lq_eq_check

Limited and Excepted Quantity eligibility

Some UN numbers have more than one ADR Table A row (packing groups, concentration bands). When a bare UN number matches rows that give different answers, the ADR tools never pick one: they withhold the verdict and return the candidate rows, and you pin one with packing_group or variant_index. The rules, with worked cases (UN 1789, UN 1790 PG I, UN 2215 PG III): the ADR 1.1.3.6 calculator in the API docs.

Customs & Tariff

Tool

Description

hs_code_lookup

6,940 Harmonized System tariff codes (HS 2022)

uk_duty_calculator

UK import duty and VAT (live GOV.UK Trade Tariff data)

incoterms_lookup

Incoterms 2020 — all 11 rules with risk/cost transfer points

ics2_check

Flag EU ICS2 unacceptable goods-description terms (stop-words) before filing an ENS — reference only

Reference Data

Tool

Description

resolve_reference

Resolve any freight identifier ("176", "UN1845", "NLRTM", "FOB") to typed, ranked, cited candidates when its type is unknown

airline_lookup

6,356 airlines with IATA/ICAO codes and AWB prefixes

unlocode_lookup

116,232+ UN/LOCODE transport locations

airport_lookup

85,555 airports by IATA/ICAO code, name or city (OurAirports)

nearest_airport

Nearest airports to a latitude/longitude, by great-circle distance

uld_lookup

16 air cargo ULD types (LD3, PMC, etc.)

vehicle_lookup

17 road freight vehicles and trailers

Validation

Tool

Description

validate

Parse any text (a booking line, an email) to find & validate every container (ISO 6346), AWB (modulus-7) and IMO number in it — or validate a single identifier by type

Composite

Tool

Description

shipment_summary

Chains CBM + weight + LDM + ADR + duty in one call

Plans

Tool

Description

get_subscribe_link

The pricing page URL with the Pro plan's limit and price (50,000/month at £19/mo)


Related MCP server: hansatic-mcp

Installation

Claude (claude.ai, desktop and mobile apps, Cowork)

Add FreightUtils from Claude's connector directory: https://claude.ai/directory/connectors/freightutils. Or add it as a custom connector — Customize → Connectors → Add custom connector — with the URL https://www.freightutils.com/api/mcp. No API key, no sign-in. Setup, limits and privacy: freightutils.com/mcp#use-in-claude.

Claude Desktop / Claude Code (stdio)

Add to your MCP config (claude_desktop_config.json or .claude/settings.json):

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

Remote HTTP / SSE

If your MCP client supports remote servers, use the canonical URL:

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

The older URL https://www.freightutils.com/api/mcp/mcp still works for backwards compatibility with existing clients.

No API key required to get started — anonymous calls work out of the box (see Rate Limits below).

Authenticating with a Pro key

Anonymous usage caps at 25 requests/day per IP. If you have a free or Pro API key, set FREIGHTUTILS_API_KEY in the environment that runs the MCP server. The package reads it from process.env and attaches Authorization: Bearer <key> to every outbound /api/* call — same key the remote https://www.freightutils.com/api/mcp transport already honors.

stdio config example with the env var wired through:

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

Get a key at freightutils.com/api-docs (free, 100/day) or freightutils.com/pricing (Pro, 50,000/month). Backwards compatible — unset env var preserves the existing anonymous behaviour.

With no key set, the server says so once at start-up, on stderr (stdout carries only the MCP protocol), so a key you meant to set and missed shows up in your client's MCP log rather than at the first 429:

freightutils-mcp: FREIGHTUTILS_API_KEY is not set, so calls use the anonymous tier — 25 requests per day per IP address. Set the key to use your plan's limit: https://www.freightutils.com/pricing

Verify your setup

After adding FreightUtils to your MCP client config, fully quit and relaunch the client (Claude Desktop, Cursor, Cline). MCP servers are only loaded at client startup; editing the config in a running session does nothing until restart.

Then run the install diagnostic from a terminal:

npx freightutils-mcp ping

You should see three ticks and All checks passed:

FreightUtils MCP Diagnostic
───────────────────────────
package: freightutils-mcp@<installed version>
health:  https://www.freightutils.com/api/mcp/health

[1/3] Backend health (https://www.freightutils.com/api/mcp/health)
      ✓ status=ok mcp_version=<current> tools_registered=<current> (143ms)

[2/3] MCP handshake (in-process via InMemoryTransport)
      ✓ server freightutils-mcp@<installed version> initialized; tools/list returned <n> tools

[3/3] End-to-end tool call (cbm_calculator l=120 w=80 h=100)
      ✓ cbm_calculator → total=0.96 m³ (expected 0.96) (218ms)

All checks passed. Your FreightUtils MCP install is working.

If any check shows ✗, see Troubleshooting below. Exit code is 0 on all-pass and 1 on any failure, so the command works in CI / health-check scripts too.


Troubleshooting

Symptom

Likely cause

Fix

Tools not appearing in the MCP client after editing the config

Client wasn't fully restarted

Quit and relaunch (Cmd+Q on macOS / right-click → Quit on Windows tray). Closing the window is not enough.

npx freightutils-mcp ping check 1 fails with a network error

DNS, proxy, or the website is unreachable from your network

Check the status page at https://www.freightutils.com/status. If you're behind a corporate proxy, set HTTPS_PROXY. Override the host for ping with FREIGHTUTILS_API_URL=<base-url>.

npx freightutils-mcp ping check 2 fails

Broken local install (npx cache or stale Node version)

Re-install: rm -rf ~/.npm/_npx && npm install -g freightutils-mcp and rerun. Requires Node 18 or newer.

Tool calls return HTTP 429 / "rate_limited"

Anonymous IP cap of 25 requests/day exceeded

If you have a FreightUtils Pro API key, set FREIGHTUTILS_API_KEY in your environment before invoking the MCP. The package passes it through automatically on every outbound call. See https://www.freightutils.com/pricing if you need a key.

"Server failed to start" / spawn error in client logs

npx not on PATH, or Node older than 18

Install Node 18+. On macOS, an absolute path in the config ("command": "/opt/homebrew/bin/npx") avoids PATH issues for GUI-launched clients.

Specific tool returns isError: true

Bad input shape, or an unknown lookup key (UN number / HS code / AWB prefix not in the dataset)

The tool's error body names the offending field. Verify against the schema at https://www.freightutils.com/api-docs or call the corresponding playground endpoint to confirm the input shape.

The full diagnostic flow lives at the /api-docs#mcp-setup section on the website. The live backend status is callable from inside any MCP client at GET /api/mcp/health — useful when you don't have shell access during a conversation.


Rate Limits

All tools call the free FreightUtils API:

  • Anonymous: 25 requests/day per IP

  • Free API key: 100 requests/day (register at https://www.freightutils.com)

  • Pro: 50,000 requests/month at £19/month


Security and data

  • Read-only. Every tool is a lookup or a calculation, declared readOnlyHint: true and destructiveHint: false. The server changes nothing, anywhere.

  • No file system, no shell. The server reads no file except its own package.json, starts no process and opens no port — it talks over stdio only.

  • One destination. Tool inputs go only to https://www.freightutils.com/api (or the base you set in FREIGHTUTILS_API_URL), over HTTPS. get_subscribe_link answers locally and sends nothing.

  • The key stays in the environment. FREIGHTUTILS_API_KEY is read from the environment and sent only as an Authorization: Bearer header to that host — never logged, never written to disk, never put in an error message.

  • stdout is the protocol. Nothing but MCP JSON-RPC goes to stdout; the one start-up notice goes to stderr.

  • Two validation layers. Each tool's Zod schema checks types, formats and the API's own limits before any call is made (the three ADR tools — adr_exemption_calculator, adr_lq_eq_check, shipment_summary — also refuse, by name, a field they do not read). The API then validates every request again on the server and refuses what it cannot answer with a 400 naming the field.

  • Errors keep their meaning. A failed call is reported by kind: network failure, timeout (30 s, or FREIGHTUTILS_TIMEOUT_MS), the API's own 4xx refusal, a 429 with its reset_at, or a 5xx — never with a stack trace, a request header or the contents of a server error page.

  • Two direct runtime dependencies: @modelcontextprotocol/sdk and zod. CI fails on any high or critical advisory in the production dependency tree, and Dependabot watches it.

  • Reporting a vulnerability: see SECURITY.md.


Example Prompts

Once connected, your AI agent can:

  • "Calculate CBM for a box 120cm × 80cm × 100cm, 24 pieces"

  • "Look up UN 1203 in the ADR database"

  • "Check if 200L of petrol qualifies for ADR 1.1.3.6 exemption"

  • "Find the HS code for lithium batteries"

  • "What does FOB mean in shipping?"

  • "How many boxes of 40×30×25cm fit on a euro pallet?"

  • "Calculate loading metres for 26 euro pallets on an artic trailer"

  • "What's the UK import duty on laptops from China?"


Data Sources

  • ADR 2025 — UNECE, ECE/TRANS/352, applicable 1 Jan 2025; given legal effect by EU Directive 2008/68/EC (consolidated). Factual compilation, best-effort — not legal advice, not a regulatory authority.

  • HS 2022 — HS 2022 descriptions from UN Comtrade's H6 classification (UN Statistics Division); the WCO maintains the Harmonized System nomenclature. No named open licence.

  • Airlines — compiled by FreightUtils from public sources. Verified records cite carrier-published pages and FAA Order JO 7340.2 field by field; the rest are pending verification. IATA and ICAO assign these codes, but this dataset is not published or endorsed by IATA or ICAO, and no licence or "open data" claim is made for it.

  • UN/LOCODE 2025-1 — UNECE official release artifact, coordinates strict-validated. UN/LOCODE © UNECE, CC BY 4.0 (as UNECE states for UN/CEFACT standards).

  • UK duty — the live GOV.UK Trade Tariff API, pulled per request, so there is no local copy that can drift.

  • Containers / ULD / vehicles — ISO, IATA and industry-standard specifications.

  • Emissions factors — published DEFRA / EPA / ADEME factors (currently DEFRA 2026 + EPA 2025

    • ADEME Base Carbone v23.11), combined by the ISO 14083 / GLEC distance-based method. Estimates, not audited reports.

Public provenance wording is maintained in the FreightUtils repository's docs/DATA_PROVENANCE.md and copied here, not written from memory — so a source that is re-attributed there cannot keep being cited here.


Changelog

Release notes: CHANGELOG.md in this repo and GitHub Releases.

A README that carries its own copy of the changelog is why three directories showed 2.4.0 as the latest release for three months after 2.4.0 had been superseded. One source now.


Other ways to use FreightUtils

FreightUtils ships across multiple distribution surfaces. Pick the one that fits how you work:

Same data, same compliance reference set (ADR 2025, HS 2022, IATA-regulated airline prefixes), every surface kept in sync.


License

MIT — see LICENSE.

Built by Marius Cristoiu, ADR-certified freight transport planner.

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 and say whether it qualifies. Each substance's transport category (Table A column (15), 0-4) sets a points multiplier (1.1.3.6.4: 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); points = quantity x multiplier. The rule (1.1.3.6.2), for dangerous goods carried in packages: goods of ONE transport category qualify when their TOTAL on the transport unit stays within that category's 1.1.3.6.3 column (3) maximum — category 1: 20, 2: 333, 3: 1,000 (kg or L); note-a entries 50 kg; category 4 unlimited; category 0: 0 — however it is split across lines; goods of DIFFERENT categories qualify when the 1.1.3.6.4 points sum does not exceed 1,000. This calculator also holds every line, and every substance summed across its lines, to its category maximum — on a mixed load that is stricter than 1.1.3.6.4 (the conservative side). 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 load — never both: every field of the single-substance form (un_number, quantity, packing_group, variant_index, unit, basis) sent beside items[] is refused (the API answers 400 naming the field), never dropped — put it on the item it belongs to, a substance as an item of its own. Quantities are in kg or litres per the substance's ADR unit. un_number also takes an ID-prefixed air-only number (e.g. "ID8000") — see Routing.

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

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

Routing: every returned line carries state, in the words the FreightUtils document check uses — COUNTED (evaluated on one Table A row: its points, or a category 0 / CARRIAGE PROHIBITED row that settles the load), AIR_ONLY_ID, NOT_SUBJECT_TO_ADR, or BLOCKED (no points from the line as sent — withheld, basis_mismatch or category_unresolved; the line's own flag says which). AIR_ONLY_ID: an ID-prefixed number such as ID 8000 (consumer commodity) is an air-only identifier with no ADR Table A entry, so it gives no transport category and nothing is counted for it (items[].air_only_id true, row fields null). Each such line carries a warning stating the condition that 0 rests on: it is the ADR answer when the packages are limited quantities to the ICAO Technical Instructions (3.4.9 and 3.4.10 deem them to meet 3.4.1-3.4.4; goods exempted under 1.1.3.4.2 are not taken into account by 1.1.3.6.5) — goods not in such packages must be entered under their own UN numbers. Only the ID prefix makes a line air-only — an ID number is never read as the UN number with the same digits — and an all-air-only load returns total_points 0, exempt true with its own message, never "1.1.3.6 exemption applies" and never not_subject_to_adr.

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. Fields are checked by name: a field the tool does not read is refused with a tool error naming it and listing the accepted ones, never ignored. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

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

Limitations: a deterministic calculation over reference data, not legal advice — 1.1.3.6 relieves goods carried in packages only (not in bulk or in tanks), and this calculator takes no packaging input; 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. Single-substance form only — sent beside items[] it is refused; set it on each item.
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. Single-substance form only — sent beside items[] it is refused; set it on each item.
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. Single-substance form only — sent beside items[] it is refused. Example: 100.
un_numberNoUN number for a single-substance check — 4 digits, optionally "UN"-prefixed — or an ID-prefixed air-only number such as "ID8000" (routed AIR_ONLY_ID, nothing counted — the warning on that line states the limited-quantity condition). Single-substance form only — sent beside items[] it is refused; send the substance as an item. 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 — sent beside items[] it is refused; set it on each item.
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 — sent beside items[] it is refused; set it on each item.

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 (readOnly, idempotent, non-destructive) set a low bar, and the description goes far past them: it discloses the 400-on-mixed-fields refusal, blocking_errors/AMBIGUOUS_UN_VARIANT behavior, withheld lines, null-vs-false semantics for exempt, rate-limit reset_at, and the deterministic-not-legal-advice caveat.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is an unusually long wall of text with overlapping restatements (ID/air-only behavior appears in both the Routing and scope passages, and again in the schema). Much of it earns its place for edge cases, yet the density and repetition make it harder to scan than it needs to be.

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 complexity (multi-variant UNs, mixed loads, scope verdicts, air-only IDs) and the rich output schema and annotations, the description still covers the limitations, the envelope fields, and the full edge-case taxonomy. 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 already 100%, but the description adds meaning the schema doesn't: the packing_group-equivalence rule, when variant_index is required, the ID-prefix air-only routing, and why basis='gross' yields no points. That is meaningful depth beyond the 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?

Opens with a specific verb+resource+outcome: 'Calculate ADR 1.1.3.6 small load exemption points for a dangerous-goods load and say whether it qualifies.' It explicitly names the relief route (1.1.3.6) and distinguishes itself from siblings by pointing to adr_lookup and adr_lq_eq_check as the alternative 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?

States exactly when to use each input form (single substance vs items[]) and that they must never be combined, and names the alternative tools for the data lookup and the LQ/EQ relief routes. The Routing section gives explicit conditions under which lines are counted, withheld or rejected.

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; a name search or class filter is a paged list — total, truncated and next_offset, with offset and limit (at most 50 per search page, 100 per class page) — never a silently cut list. A search with no hits errors with suggestions: the closest proper shipping names in Table A ("acetne" → ACETONE, UN 1090). 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: a limit error carries reset_at, the UTC time the allowance resets.

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
limitNosearch / hazard_class only: rows per page (default and maximum 50 for a search, 100 for a class).
offsetNosearch / hazard_class only: rows to skip (default 0). The response gives total and next_offset.
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", "UN 1203", "0004".
hazard_classNoAll entries in an ADR class (Table A column (3a)). Examples: "3" (flammable liquids), "6.1" (toxic), "1" (explosives — the division and compatibility group are in classification_code, e.g. "1.4S").

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?

Goes well beyond the read-only/idempotent annotations: discloses pagination shape (total, truncated, next_offset; 50 vs 100 page caps), that no-hit searches error with name suggestions, that 28 Table A scope rows return packing_group null plus not_subject_to_adr/carriage_prohibited, and rate-limit errors carrying reset_at. This is exactly the behavioral context annotations cannot supply.

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

Conciseness3/5

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

Front-loaded and clearly sectioned, but long, and the 'Returns:' block enumerates per-entry fields that are already carried by the output schema, so those sentences do not fully earn their place. The mode-selection and edge-case sentences do earn theirs.

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?

An output schema exists, so return values need not be re-described; the description nonetheless covers usage modes, error and edge-case behavior, normalization, and a legal-limitations caveat. Nothing an agent needs to call this 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 description coverage is already 100%, so the baseline is 3, but the description adds real meaning on top: the mutual-exclusivity constraint ('exactly ONE of') that the schema does not encode, and the normalization rule ('1203', 'UN1203', 'un 1203' are equivalent) plus leading-zero handling for explosives.

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 (look up) and resource (ADR 2025 European dangerous-goods reference data for a substance), and immediately enumerates the returned fields. It also distinguishes itself from siblings like adr_lq_eq_check and adr_exemption_calculator by naming them and their distinct roles.

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 states the selection rule: 'Provide exactly ONE of: un_number ... search ... or hazard_class', with the semantics of each mode (exact lookup returning all packing-group variants, partial name match, class-wide listing). The Related line routes the agent to the right alternative tools for adjacent tasks.

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. A packing_group that still leaves several rows is enough when those rows agree on class, column (7a), column (7b) and scope (UN 1790 PG I: two concentration bands, both LQ 0 / E0) — the item is answered with equivalent_variants + variant_note naming the rows it holds for; only when the rows DISAGREE does it still ask for variant_index, and candidates[] then lists only that packing group's rows. With no disambiguator at all: a single-item call, or a batch where EVERY item is ambiguous, returns blocking_errors[AMBIGUOUS_UN_VARIANT] + human_review_required + candidates[] (each candidate's item_index, un_number, variant_index, packing_group, proper_shipping_name, limited_quantity, excepted_quantity) and NO verdict; a MIXED batch withholds only the ambiguous item (status 'withheld', withheld true, row fields null) while the other items are answered, overall_status never reads 'qualifies' while an item is withheld, summary carries withheld, and the envelope carries human_review_required + candidates[] plus one AMBIGUOUS_UN_VARIANT warning per withheld item. Never a silently checked 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. Fields are checked by name: a field the tool does not read is refused with a tool error naming it and listing the accepted ones, never ignored. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

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 — within_limit | exceeds_limit | not_permitted | not_subject | inconclusive | withheld — reason, scope flags where applicable, withheld + ambiguity_reason on a withheld item, and equivalent_variants + variant_note when a packing group resolved by equivalence), summary {total_items, qualifying, exceeding, not_permitted, not_subject?, inconclusive?, withheld?}, the ADR chapter references, and human_review_required + candidates[] when any item is withheld — all under result — or, when every item 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

A4.5/5.0
Behavior5/5

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

Annotations only declare read-only, idempotent, closed-world; the description adds far more: mass-vs-volume dimension mismatches return 'inconclusive' rather than pass/fail, multi-variant UN disambiguation rules and equivalence, withholding behavior in mixed batches, not_subject / not_permitted statuses, field-name validation errors, and a rate-limit error carrying reset_at. This is a rich behavioral disclosure well beyond the structured fields.

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

Conciseness3/5

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

It is front-loaded and organized into Behavior / Returns / Limitations / Related paragraphs, but the ambiguity paragraph is extremely dense and clause-heavy, and much of the long Returns listing duplicates the output schema that already exists. Several conditions are restated (overall_status never reading 'qualifies' appears for both inconclusive and withheld cases), which costs efficiency.

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

Completeness5/5

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

For a tool with this much edge-case behavior, the description is complete: it covers statuses, ambiguity handling, scope exclusions (not subject to ADR, carriage prohibited), rate limits, the response envelope, and explicit limitations. An output schema exists, so the return-value coverage is generous rather than required, but 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%, so the baseline is 3, but the description goes further: it clarifies that quantity is per INNER packaging (not the whole load), spells out the unit families (ml/L liquids, g/kg solids), and explains packing_group vs variant_index disambiguation including when a packing group suffices via equivalent variants. It stops short of adding anything on inner_packaging_qty beyond what the schema says.

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 opening sentence gives 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' — with the exact ADR chapters named. It also distinguishes itself from siblings by explaining what LQ and EQ actually compare, so an agent can tell it apart from adr_lookup without opening the schema.

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 states the required inputs (mode plus 1-20 items), which mode does what, and routes elsewhere via 'Related: adr_lookup (the per-substance LQ/EQ values + variant_index), adr_exemption_calculator (the 1.1.3.6 load-points route instead).' The alternatives are named with the condition that selects them, though it never explicitly says when LQ relief checking is the wrong route versus those siblings beyond the limitations note.

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,356 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 that contains no name falls back to the closest names in the dataset ("Emirats" → Emirates). A query or country answer is a list: summary rows, 25 per page, with total, truncated and next_offset (full: true for full records); an iata / icao / prefix answer is the holder records in full. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

Returns: count and results[] — per airline: airline_name, iata_code, icao_code, awb_prefix[], callsign, country, has_cargo and verification fields (aliases and sources in full records) — 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 when one record holds the prefix, otherwise lists the candidates).

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoLists only: true returns full records (provenance, sources, rationale) instead of summary rows, five per page by default. A single-record call always returns the full record.
iataNoExact IATA code — 2 alphanumeric characters. Examples: "EK", "U2".
icaoNoExact ICAO code — 3 letters. Examples: "UAE", "BAW".
limitNoLists only: rows per page (default: every summary row; 5 with full: true).
queryNoRanked fuzzy search across name, codes, prefix and country (min 2 chars). Example: "emirates".
offsetNoLists only: rows to skip (default 0). The response gives total and next_offset.
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
Behavior5/5

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

Goes well beyond the annotations (which only declare read-only/idempotent/non-destructive) by disclosing fuzzy-match confidence semantics, the FUZZY_BEST_MATCH advisory, no-name fallback behavior with a concrete example, pagination row counts, full-vs-summary behavior, and a rate limit whose error carries reset_at. It also flags the provenance caveat.

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?

Front-loads purpose and is organized into Behavior, Returns, Limitations and Related blocks. It is on the long side, and the 'Returns' enumeration of per-airline fields is largely redundant given a structured output schema exists, but the content is dense and each block earns its place.

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 an 8-parameter, no-required-params lookup with annotations and an output schema, the description covers purpose, invocation mode, fuzzy/fallback semantics, pagination, rate limiting, and a data-provenance limitation. 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%, so the baseline is 3, but the description adds real meaning: it explains that query is a ranked fuzzy search while iata/icao/prefix/country are exact filters, and defines the AWB prefix concept (first 3 digits of an air waybill, e.g. 176 = Emirates). The 'Provide ONE parameter' constraint is also semantics not 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?

States a specific verb and resource (search airlines) plus the exact search dimensions (name, IATA, ICAO, AWB prefix, country) and the dataset size. It also names sibling tools it is NOT (airport_lookup searches airports, not carriers), so an agent can distinguish it without opening a schema.

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?

Explicitly tells the agent to provide ONE parameter and splits usage semantics into fuzzy (query) vs exact (iata/icao/prefix/country), which is actionable guidance. The Related section names the alternative tools and their distinct scopes, though it stops short of a full when-not-this-tool-rule.

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: a limit error carries reset_at, the UTC time the allowance resets.

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

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description goes well beyond them: exact code hits return one record, ambiguous searches return ranked candidates with confidence (basis match_quality), unknown codes raise a not-found error, and rate limiting surfaces reset_at. Error and rate-limit semantics are exactly the kind of context annotations cannot carry.

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?

Well front-loaded: identification and input rule come first, behavior and limitations after. The 'Returns:' block enumerates fields that the output schema already defines, which is mild redundancy, but the sectioning keeps it scannable and no sentence is filler.

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

Completeness5/5

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

For a reference-lookup tool with annotations and an output schema present, this covers the remaining agent-facing questions: input exclusivity, matching/ranking behavior, error shape, rate-limit signaling, and a data-accuracy limitation. Nothing needed 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%, so the per-parameter syntax is already documented and the baseline is 3. The description adds real semantics the schema does not encode: the exactly-one-of constraint among iata/icao/query and the fact that type narrows rather than selects. It stops short of explaining tie-breaking or match-quality thresholds.

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 (look up an airport) plus the three accepted lookup keys and the dataset scope (85,555 airports). It explicitly differentiates itself from nearby siblings: nearest_airport (coordinate-based), airline_lookup (carriers/AWB, not airports), unlocode_lookup (general transport locations). An agent can route correctly without opening any 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?

Gives an explicit selection rule — 'Provide ONE of iata, icao, or query' — and explains what the optional type filter does. The Related section names each alternative and the condition that selects it, including a clear when-not for airline_lookup and unlocode_lookup.

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 (totals are computed from unrounded figures and rounded only for display), with conversions to cubic feet, cubic inches and litres (exact factors: 1 ft = 0.3048 m). Missing or non-positive dimensions error with a validation message naming the parameter. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

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). Field names as this package serves them (snake_case); the hosted /api/mcp endpoint serves the same fields in camelCase (e.g. total_cbm → totalCbm).

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.4/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description layers on substantial extra behavior: deterministic identity of outputs, totals computed from unrounded figures and rounded only for display, exact conversion factors, validation errors that name the offending parameter, and rate-limit errors carrying reset_at. This is exactly the added context that annotations cannot supply.

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 purpose is front-loaded in the first sentence, followed by behavior, returns and related tools in a clean progression with no filler. The Returns paragraph partially duplicates the output schema's field list, which is the only notable redundancy in an otherwise tight definition.

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 deterministic calculator with a validation surface, the definition covers inputs, arithmetic semantics, rounding, error and rate-limit behavior, and even the snake_case vs camelCase field-naming difference between the package and the hosted endpoint. 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.

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (pieces plus the three dimensions) are already documented in the schema with types, bounds and examples. The description restates the linear scaling relationship (pieces x per-piece CBM) but adds no new syntax or format guidance beyond the schema, so the baseline 3 applies.

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 — 'Calculate cubic metres (CBM) for a shipment from per-piece dimensions' — and immediately defines the domain term. The Related section names the adjacent calculators, so an agent can tell this apart from chargeable_weight_calculator, consignment_calculator and unit_converter without opening any schema.

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 line routes the agent with explicit conditions: use chargeable_weight_calculator for air billing weight from the same dims, consignment_calculator for multi-line totals, unit_converter for single conversions, shipment_summary for composite analysis. This is clear alternative mapping, though it stops short of stating an explicit 'do not use this when…' exclusion.

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; the dimensions are per piece and gross_weight_kg is the TOTAL for all pieces; totals are computed from unrounded figures and rounded only for display (10,000 pieces of 5 x 5 x 6 cm = 250 kg); 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: a limit error carries reset_at, the UTC time the allowance resets.

Returns: chargeable_weight_kg, basis, volumetric_weight_kg (the total; the hosted endpoint names it volumetricWeightTotalKg) and volumetric_weight_per_piece_kg, gross_weight_kg, cbm, ratio, factor and pieces under result; normalized_input echoes the interpreted inputs (gross_weight_basis, dimensions_basis) and any defaults applied; plus confidence, _source and citation (the FreightUtils v1 response envelope). Field names as this package serves them (snake_case); the hosted /api/mcp endpoint serves the same fields in camelCase (e.g. total_cbm → totalCbm).

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.8/5.0
Behavior5/5

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

Annotations already establish readOnly/idempotent/non-destructive, so the bar is easily cleared, and the description still adds substantial behavior: deterministic output, unrounded-then-rounded-for-display math with a worked example (10,000 pcs = 250 kg), the meaning of basis values, explicit input-validation error behavior, and rate-limit reset_at semantics. This is exactly the context annotations cannot carry.

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?

Front-loaded with the core formula and then the per-piece/total and rounding caveats, so the important content is not buried. It is dense but generally earns its length; the extended field-by-field return listing and camelCase/snake_case mapping notes are somewhat redundant given a full output schema exists, which keeps it from a 5.

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 calculator with 6 parameters and an output schema, every decision an agent must make — which weight governs, per-piece vs total inputs, divisor choice, unit basis, error and rate-limit behavior — is covered. Nothing needed to invoke 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%, so the baseline is 3, but the description earns above baseline by disambiguating the trickiest parameter relationship — dimensions are per piece while gross_weight_kg is the TOTAL across all pieces — a distinction that is easy to get wrong even with the schema text present.

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 ('Calculate air freight chargeable weight') and immediately defines the computation (greater of actual gross weight and volumetric weight). It squarely distinguishes itself from siblings by naming cbm_calculator, consignment_calculator and uld_lookup with a short role for each.

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 scopes itself to air mode and states the exclusion — sea W/M is handled by consignment_calculator with mode=sea — so an agent knows both when to use it and when to route elsewhere. The Related line adds a secondary routing map for volume-only and multi-line cases.

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: a limit error carries reset_at, the UTC time the allowance resets.

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.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 description adds substantial non-schema context: deterministic behavior, advisory-only flags that never assert compliance or permission, invalid lines erroring with the offending field name, and a rate limit whose error carries reset_at. This is exactly the extra behavioral layer the annotations don't 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?

Dense but well-organized and front-loaded: purpose first, then inputs, behavior, returns, limitations, related tools. The Returns paragraph partly duplicates the output schema, which is mild waste, but the rest earns its place.

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 nested schema, full schema coverage, annotations, and an output schema, the description covers everything an agent still needs: alternative parameter forms, defaults, error semantics, rate-limit behavior, and the advisory/non-compliance boundary.

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, but the description adds genuine meaning beyond the schema: it marks lines[] as canonical vs. legacy items[], states the air divisor default of 6000 and that container_number/awb_number drive a check-digit flag. This helps an agent choose the right parameter shape rather than merely restating 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?

States a specific verb (calculate) and the precise outputs (CBM, LDM, volumetric weight, mode-specific chargeable figure) for multi-item mixed consignments. It explicitly distinguishes itself from the single-figure siblings (cbm_calculator, chargeable_weight_calculator, ldm_calculator) and shipment_summary.

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?

Gives clear input guidance (provide mode plus lines[] or legacy items[]) and names the related tools with the differentiated conditions in parentheses, e.g. shipment_summary 'adds vehicle/container suggestion and duty estimates'. It stops short of an explicit 'use X instead when Y' rule, but the routing is unambiguous.

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 as summary rows (full: true for full records). 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); type is read in any letter case, as the ISO size-type code ("45G1") or the short form of its name ("40HC"); an unknown type errors with the valid slugs and the closest one ("20ft-standrd" → 20ft-standard). Fit calculations are geometric best-effort — they do not model load distribution, securing or mixed cargo. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

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). Field names as this package serves them (snake_case); the hosted /api/mcp endpoint serves the same fields in camelCase (e.g. total_cbm → totalCbm). A list (no single record asked for) returns summary rows with total, truncated, next_offset and detail_hint; full: true returns full records five per page, with offset / limit to page.

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
fullNoLists only: true returns full records (provenance, sources, rationale) instead of summary rows, five per page by default. A single-record call always returns the full record.
typeNoContainer slug. Examples: "20ft-standard", "40ft-high-cube", "20ft-reefer". Omit to list all 10 types.
limitNoLists only: rows per page (default: every summary row; 5 with full: true).
offsetNoLists only: rows to skip (default 0). The response gives total and next_offset.
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_kgNoWeight of ONE item in kg — caps the fit by max payload. 0 or omitted: no weight check.

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 declare read-only, idempotent, non-destructive and closed-world, so the safety profile is covered — but the description goes further and adds real behavioral context: per-record provenance, case-insensitive/ISO-code/short-form type parsing, the unknown-type error with slug suggestions, the rate limit and its reset_at behavior, and the request envelope (confidence, _source, citation, provenance_status).

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?

Purpose, coverage and the primary type/omit choice are front-loaded, and the prose is dense but organised. It is however long for a reference lookup, and parts of it restate schema-level semantics already documented per-parameter (full, limit/offset paging, item weight behavior).

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 9-parameter, zero-required reference tool with an output schema, everything needed to call and interpret it is present: the type slug format and error recovery, the list vs single-record modes with pagination and truncation flags, the fit-calculation method and its documented limitations, and the manufacturer-typical-specs caveat.

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, but the description adds meaning the schema does not carry: 'type' is accepted in any letter case, as the ISO size-type code ('45G1') or the short name form ('40HC'), and an unknown value errors with the valid slugs plus the closest match. It also clarifies that item dims together trigger the fit calculation and weight caps it by max payload.

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 opening sentence states a specific verb and resource ('Get ISO shipping-container specifications, with optional load-fit maths') and immediately scopes coverage to 10 named container types. It is clearly distinguishable from siblings like uld_lookup (air freight) and validate (check digits), which the description also names explicitly.

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 gives explicit mode-selection rules: provide 'type' for one record, omit it to list all 10, add item dimensions to get a load-fit calculation. The 'Related' block routes the agent away from this tool for adjacent jobs (validate for ISO 6346 numbers, cbm/consignment calculators for cargo volume filled, uld_lookup for the air equivalent), with the distinguishing condition stated for each.

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: a limit error carries reset_at, the UTC time the allowance resets.

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

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

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

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. When the factor publishes only the other basis the answer uses it and says so (basis_note, BASIS_SUBSTITUTED).
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

A4.8/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantial context beyond them: deterministic output, empty running already baked into the fleet-average factor, unknown mode/region returning available:false rather than a fabricated factor, rate limiting with reset_at, and basis substitution behavior. This is genuinely rich 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.

Conciseness4/5

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

Front-loaded with the formula and required inputs, then progressively adds caveats and limitations. It is dense and long, but nearly every sentence carries actionable content (mass_basis warning, no-routing constraint, empty-running note, rate-limit behavior). Not padded, though it could be trimmed marginally.

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 calculator with an output schema, the description still covers the return envelope (wtw/ttw, factor edition, tonne-km, _source), confidence, limitations, and failure modes. Nothing an agent needs to call or interpret 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% and enum values are documented, so the schema carries much of the load. The description still adds real meaning beyond it: mass must be ACTUAL GROSS MASS not chargeable/volumetric weight, distance must be supplied by the caller, and region maps to specific authorities (uk=DEFRA, us=EPA, fr=ADEME). Slightly above baseline.

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 (estimate) and resource (freight transport GHG emissions in kgCO2e), gives the exact formula and the ISO 14083 / GLEC v3.2 standard. It also explicitly distinguishes itself from cbm_calculator / ldm_calculator / chargeable_weight_calculator, so an agent can pick it without opening any 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?

Explicitly states when to use it (mass + distance + mode, with optional sub_mode/region/basis), when NOT to expect anything (this tool does NOT route, geocode, or compute distances), and names the sibling tools it is distinct from. The alternative-selection rule is fully stated.

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, written with or without dots or spaces — "8471.30" is 847130 — returns the code plus its hierarchy), or section (Roman numeral I-XXI to browse a section).

Behavior: read-only; description search runs first against the HS 2022 descriptions (UN Comtrade H6); when none contains the words, it falls back to the UK Trade Tariff search references (HMRC's index of everyday goods names), so "laptop" finds 847130 and "computers" finds heading 8471. A fallback match is medium confidence: matched_via names HMRC's index, the citation asks you to confirm the code, and the formal tariff wording ("automatic data processing machines") stays the surest search. count 0 with an empty results[] is still a valid answer when neither finds the words. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

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, with or without dots or spaces. Examples: "8471", "8471.30".
queryNoSearch words (min 2 chars), matched against the official HS descriptions first, then HMRC everyday goods names (medium confidence). Examples: "automatic data", "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.8/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent, but the description adds substantial behavior: the two-stage search with HMRC fallback, the medium-confidence signaling (matched_via, citation), count 0 as a valid answer, and rate-limit behavior with reset_at. This goes well beyond structured fields.

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 but well-structured with labeled sections (Behavior, Returns, Limitations, Related) and the core instruction front-loaded. Every sentence carries information, though the Returns paragraph partially duplicates what the output schema already provides, costing a little economy.

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?

An output schema exists, so return values needn't be restated, yet the description also covers fallback semantics, confidence, rate limits, and scope limits. Nothing an agent needs to invoke 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%, so the baseline is 3, but the description adds real meaning: it explains that query searches HS 2022 descriptions first then falls back to HMRC everyday names, that code returns the hierarchy, and that section browses a section. Minor gating detail (min 2 chars, dots/spaces) is echoed from the schema but the fallback semantics are genuinely additive.

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 precise verb+resource with scope: 'Search 6,940 WCO Harmonized System (HS 2022) commodity codes — the 6-digit international customs classification layer.' It clearly separates itself from siblings like uk_duty_calculator (duty/VAT) and ics2_check (ENS description quality). An agent can identify the tool without opening the 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?

Explicitly instructs 'Provide ONE of: query, code, or section' and describes the condition for each mode. The Related block names alternatives with their distinct purposes, and the Limitations section states when the tool is NOT appropriate (national tariff lines, duty rates).

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: a limit error carries reset_at, the UTC time the allowance resets.

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). Intended for checking a goods description before an ENS is filed.

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.6/5.0
Behavior5/5

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

Annotations already establish the safe read profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), and the description adds substantial context beyond them: deterministic term matching, per-term notes distinguishing standalone vs embedded stop-words, the crucial caveat that clean=true does not mean acceptance, absence of a binary verdict, and rate limits with a reset_at field. This is exactly the behavioral disclosure a caller needs.

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?

Front-loaded with the core action and dense with useful detail; the behavior, caveat and limitations sections are well ordered. It loses a point for the awkward 'Returns:' paragraph that names '_source' twice and restates return values already covered by the output schema.

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 single-parameter reference checker with annotations and an output schema, every dimension an agent needs is covered: purpose, scope, caveats, rate-limit behavior, legal limitations, and sibling relationships. The redundant return enumeration is harmless rather than a gap.

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?

There is one parameter at 100% schema description coverage, and the schema already provides the example ('gifts' flagged vs 'wooden toys for retail' specific), so the baseline is 3. The description adds only the semantic framing that this maps to ENS data element 18 05 000 000 and how flagged terms are interpreted, not new syntactic or format guidance.

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 ('Check a goods description against the official EU ICS2 stop-words list') and immediately scopes it to the ENS goods-description field. It explicitly separates itself from siblings like hs_code_lookup ('a different field of the ENS') and uk_duty_calculator ('unrelated to ENS screening'). An agent can select this without opening any 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?

Gives explicit when-to-use ('checking a goods description before an ENS is filed') and when-not ('not an ENS filing, not a customs-compliance determination, not legal advice'). It also names two related siblings and states why they are different fields, so alternative selection is unambiguous.

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 (a list is summary rows — code, name, category, summary — with full: true for the full rules). Behavior: read-only reference; an unknown code errors with the valid code list, and DAT — replaced in Incoterms 2020 — names its successor, DPU (ICC). Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

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".
fullNoLists only: true returns full records (provenance, sources, rationale) instead of summary rows, five per page by default. A single-record call always returns the full record.
limitNoLists only: rows per page (default: every summary row; 5 with full: true).
offsetNoLists only: rows to skip (default 0). The response gives total and next_offset.
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.8/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 description adds substantial behavior beyond them: an unknown code errors with the valid code list, DAT resolves to its successor DPU (ICC), and the tool is rate-limited with a reset_at timestamp in the error. This is exactly the operational context an agent cannot infer from structured fields.

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?

It is long, but segmented into scannable blocks (guidance, Returns, Limitations, Related) and front-loads the core purpose. Almost every sentence carries distinct information (category split, list shape, error behavior), though the density is near the upper limit for a reference lookup.

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 5-param, 0-required reference tool with an output schema and full annotation coverage, the description supplies the category model, list-vs-record behavior, error semantics and authoritative-source caveat. 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%, so the baseline is 3. The description adds meaning on top by explaining the code-only vs category-only vs neither combinations, what a summary list row contains, and that a single-record call always returns the full record — useful semantics beyond the per-field schema text.

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

Purpose5/5

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

The description states a specific verb+resource ('Look up the 11 Incoterms 2020 trade rules') and immediately scopes it by naming which rules belong to each transport category. It names the sibling tools it relates to (uk_duty_calculator, shipment_summary), so an agent can position it among the 25 lookup/calculator siblings without opening the 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?

Explicitly enumerates the invocation patterns: pass 'code' for one rule, 'category' for a filtered list, or neither to list all 11. It also states when full:true applies and points to related tools, leaving no ambiguity about when to pick this tool versus alternatives.

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 is true only when the load fits the vehicle's LENGTH, its pallet FLOOR POSITIONS and — when weight_kg is given — its max PAYLOAD; each failed limit is named in warnings[] with its numbers. Euro and UK pallets count as their own floor positions (pallet_spaces.basis says which), other footprints as Euro equivalents. The vehicle's floor positions are its record's own count only when that count is a floor count; a weight-limited or unverified count (the 7.5t rigid stores 8, its 6.1 x 2.4 m deck holds 15) is not, and the positions come from the deck instead — pallet_spaces.floor_positions_basis says which, record_count is the stored figure. Without weight_kg the payload is not checked: payload_checked is false and an info warning gives the payload. utilisation_percent is of the vehicle's length. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

Returns: ldm, vehicle (name, length_m, max_payload_kg), utilisation_percent, pallet_spaces (used, available, basis, floor_positions_basis, floor_positions_note, record_count, record_count_basis), total_weight_kg, payload_checked, fits and warnings under result, plus confidence, _source and citation (the FreightUtils v1 response envelope). Field names as this package serves them (snake_case); the hosted /api/mcp endpoint serves the same fields in camelCase (e.g. total_cbm → totalCbm).

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.5/5.0
Behavior5/5

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

Far exceeds what the annotations provide: it discloses the fits logic (length, floor positions, and payload only when weight_kg is given), how stackable/stack_height divide the footprint, when payload_checked is false, how floor positions are derived versus record counts, and that rate limits return reset_at. None of this is derivable from readOnlyHint/idempotentHint.

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

Conciseness3/5

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

Purpose and input contract are front-loaded, but the middle is a dense semicolon-chained paragraph, and the 'Returns:' block enumerates fields the output schema already declares — wasted space given an output schema exists. Every claim is relevant, yet it could be trimmed considerably.

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 9-parameter calculator with edge cases (stacking, payload limits, deprecated presets, floor-position basis, rate limits), the description covers the behavior an agent needs and the annotations cover safety. Nothing essential 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?

With 100% schema coverage the baseline is 3, but the description adds genuine meaning the schema doesn't: 'Euro and UK pallets count as their own floor positions', that weight_kg is what activates the payload side of fits, and the LDM convention behind the vehicle presets. It stops short of a full per-parameter treatment, so not a 5.

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

Purpose5/5

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

States a specific verb and resource ('Calculate loading metres (LDM) for European road freight') and immediately defines the concept ('how much trailer length a pallet load occupies'), so an agent knows exactly what this computes. It also names its siblings (vehicle_lookup, pallet_fitting_calculator, consignment_calculator), separating this tool from adjacent calculators.

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?

Gives a clear input contract ('Provide a pallet preset OR custom length_mm + width_mm — omitting both errors with a usage hint') and routes to alternatives via the Related line. It doesn't state an explicit when-not-to-use case, but the sibling routing is concrete enough that an agent can pick correctly.

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: a limit error carries reset_at, the UTC time the allowance resets.

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.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds substantial context beyond them: deterministic distance sort, how confidence is computed (proximity + airport size, with caps on closed/heliport/seaplane), a rate-limit behavior including reset_at semantics, input-only/no-logging guarantee, and the reference-data limitation.

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?

Front-loaded with the core operation, then organized into Behavior/Returns/Limitations/Related sections that each earn their place. Slight redundancy in restating decimal-degree latitude/longitude already covered by the schema.

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?

An output schema exists, yet the description still usefully names the return shape (count, results[] with distance_km, confidence, _source, citation envelope), and covers limitations, rate limits, and sibling routing for a 5-param tool. Nothing material 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 baseline is 3, but the description adds value: it states max_results range and default (1-50, default 10), gives a type-filter example ('large_airport only'), and clarifies coordinates are input-only. It stops short of documenting radius_km semantics beyond what the schema says.

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+resource ('Find the airports nearest to a caller-provided latitude/longitude') with the sorting method (haversine distance) and result field (distance_km). It explicitly distinguishes itself from airport_lookup (exact code or name, no distance) and unlocode_lookup.

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?

Explicit when-not guidance: 'does NOT geocode place names and does NOT compute routes — pass coordinates you already hold.' It names both relevant alternatives with the condition that selects them (airport_lookup for exact code/name, unlocode_lookup for named transport-location search), plus a limitation about verifying codes.

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, footprint and 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, counted in whole layers (notes say when a part layer is left out, and why nothing fits when no box fits); pallet_deck_height_cm defaults to 15. Missing or non-positive dimensions error naming the parameter. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

Returns: boxes_per_layer, layers, total_boxes, orientation, boxes_per_row/col, usable_height_cm, utilisation_percent (the share of the pallet FOOTPRINT one layer covers), volume_utilisation_percent (box volume over the usable envelope), total_box_volume_cbm, wasted_space_cbm, max_boxes_by_weight, notes and the weight fields under result, plus confidence, _source and citation (the FreightUtils v1 response envelope). Field names as this package serves them (snake_case); the hosted /api/mcp endpoint serves the same fields in camelCase (e.g. total_cbm → totalCbm).

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.6/5.0
Behavior5/5

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

Annotations already establish the safe read-only, idempotent profile, and the description adds substantial context beyond that: deterministic aligned-row packing with no interlocked/mixed-orientation modelling, weight_limited semantics for payload capping in whole layers, the pallet_deck_height_cm default of 15, error behaviour naming the offending parameter, and rate-limit errors carrying reset_at. This is exactly the value-add structured fields cannot carry.

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 definition is long, but it is clearly front-loaded and partitioned into Behavior / Returns / Limitations / Related labels, and nearly every sentence carries distinct operational information. A minor amount of the Returns enumeration could be trimmed since an output schema exists, but nothing is padding.

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 10-parameter computational tool with an output schema, the description covers behaviour, defaults, error and rate-limit handling, output field semantics, a camelCase/snake_case caveat, and explicit modelling limitations. Nothing an agent needs to invoke 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%, so the baseline is 3, but the description adds real meaning: it explains that allow_rotation triggers a 90-degree attempt, that weight_limited reports payload capping below geometric fit, and how whole-layer counting and the part-layer note work. It also clarifies the output naming convention (snake_case here vs camelCase on the hosted endpoint).

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 opening sentence states a specific verb and resource ('Calculate how many identical boxes fit on a pallet') and enumerates the exact outputs (boxes per layer, layer count, totals, utilisation, weight capping). The Related line explicitly distinguishes it from ldm_calculator, vehicle_lookup and container_lookup, so an agent can tell it apart from siblings without opening any schema.

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 names three sibling tools and gives each one's distinct scope (pallets into trailer length, pallet capacity per vehicle, pallets into containers), which is strong routing context. It stops short of explicit when-to-use/when-not-to-use phrasing, so it is clear context rather than full conditional guidance.

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. Use when you hold one identifier-ish token ("176", "UN1845", "NLRTM", "FOB", "22G1", "MSKU1100810", "D/E") and do not know what kind of identifier it is: each candidate names its entity type and carries the api_url and canonical_url of its full record.

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: a limit error carries reset_at, the UTC time the allowance resets.

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.5/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description layers substantial behavior on top: the deterministic normalize-match-rank pipeline, the exact ranking precedence with inspectable rank_basis, zero candidates being a valid non-error result, failed container check digits returning valid:false instead of being dropped, and rate-limit errors carrying reset_at. It also candidly states the limit of what a match asserts. This is well beyond what structured fields convey.

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

Conciseness3/5

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

The purpose is front-loaded and the 'Behavior'/'Limitations'/'Related' labeling makes it scannable. However, the dedicated 'Returns:' paragraph enumerates fields that the output schema already defines, making a ~100-word block functionally redundant, and the example token list is repeated verbatim in the schema. It is informative but over-long for a one-parameter tool.

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 single-input meta-resolver the description covers everything an agent needs: input constraints, the grammars dispatched, ranking and ambiguity semantics, failure and rate-limit handling, and the explicit scope limits of v1. Return values are also present in the output schema, so nothing material 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?

Schema coverage is 100% and the schema already supplies the example tokens, so the baseline is 3. The description adds real value by enumerating the thirteen grammars that consume the parameter and stating the ambiguity contract (colliding grammars return multiple ranked candidates, never a silent guess), but it contributes no syntax or format detail the schema lacks.

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 precise verb+resource+scope: 'Resolve an arbitrary freight identifier — one opaque string in, typed and cited candidates out.' It explicitly positions itself apart from siblings by naming the lookups it resolves into (adr_lookup, airline_lookup, airport_lookup, unlocode_lookup, etc.) and by stating the discriminating condition (use when you do NOT know the identifier's kind).

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?

Gives an explicit when-to-use trigger ('when you hold one identifier-ish token ... and do not know what kind of identifier it is'), explicit when-NOT boundaries ('SINGLE-TOKEN resolution, not free-text extraction — pass one identifier, not a manifest line'; SCAC/BIC not covered), and enumerates the alternative lookup tools. The routing decision against siblings is inferable without opening any schema.

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 PER ITEM, quantity; optional stackable, pallet_type, hs_code, un_number, customs_value PER ITEM, and adr_quantity — the TOTAL for the dangerous-goods line, all pieces together); 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. The suggested vehicle is the smallest that holds the load by its length, its payload and its pallet floor positions — the record's own count when it is a floor count, otherwise worked from its deck (a 7.5t rigid holds 15 Euro pallets on the floor; modeSpecific.suggestedVehicleFloorPositions says which) — and trailerUtilisation is of that vehicle (utilisationBasis names it); the suggested container is the smallest dry box whose record holds the volume and payload. Sections that cannot run (e.g. duty without a customs value) surface in warnings instead of failing the whole call. Fields are checked by name: a field the tool does not read is refused with a tool error naming it and listing the accepted ones, never ignored. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

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, 0 or more. Default: 0.
insurance_costNoInsurance cost in GBP for the duty calculation, 0 or more. Default: 0.

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 read-only/idempotent/non-destructive/closed-world, yet the description adds substantial context beyond them: which engines it invokes versus computes inline, the 2.40 m LDM divisor and non-stacked default, palletSpaces-as-floor-positions vs palletRows, how the vehicle and container are chosen, that unrunnable sections surface in warnings, that unknown field names are refused with a tool error listing accepted ones, and rate-limit behavior carrying reset_at.

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?

Front-loaded with the value proposition and organized into input / behavior / returns / limitations / related blocks. It is long and repeats some schema content (notably adr_quantity), but nearly every sentence conveys a distinct behavioral fact rather than 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 composite with nested items, enums, output schema and multiple downstream engines, the description covers the full picture: required inputs, per-section enablement rules, fallback-to-warnings behavior, engine provenance, and an explicit 'planning summary, not a quotation or compliance determination' limitation. Redundant return-value detail is harmless given the output schema exists.

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 would be 3, but the description adds meaning the schema does not: dims in cm and weight in kg are PER ITEM (quantity multiplies), adr_quantity is a per-LINE total distinct from gross weight, and origin/destination/incoterm 'refine the duty leg'. It restates some schema text, but the cross-field clarifications earn the extra point.

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 concrete verb+resource ('Composite shipment analysis in one call') and enumerates exactly what it computes (volume, weights, LDM, volumetric weight, revenue tonnes, DG presence, duty). The Related section explicitly distinguishes this composite from the single-purpose siblings (ldm_calculator, adr_lookup, uk_duty_calculator are the engines it calls; cbm_calculator etc. are the inline equivalents). An agent can route correctly without opening another schema.

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?

Tells the agent exactly what to supply (mode + items[]) and what optional inputs unlock which sections (hs_code + customs_value enable duty; un_number enables DG). The Related list clarifies which tools this one wraps versus duplicates, but it stops short of an explicit 'use X instead when Y' rule versus consignment_calculator, which is the closest sibling.

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 (a declarable 10-digit code), 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; a 6- or 8-digit code is refused — never padded with zeros to a code you did not send — with declarable_codes, the 10-digit codes beneath it in the UK Trade Tariff (610910 → 6109100010, 6109100090); an origin that is not an ISO 3166-1 country is refused; origin-dependent measures the tariff cannot resolve automatically surface in warnings. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

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 (amounts in GBP); validity.as_of marks the live-rate timestamp; plus confidence, _source and citation (the FreightUtils v1 response envelope). Field names as this package serves them (snake_case); the hosted /api/mcp endpoint serves the same fields in camelCase (e.g. total_cbm → totalCbm).

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, 0 or more — added to the CIF value. Default: 0.
customs_valueYesGoods value in GBP. Example: 1000.
commodity_codeYesUK tariff commodity code — the declarable 10 digits. Example: "8471300000" (portable computers). A 6- or 8-digit code is refused with the declarable codes beneath it.
insurance_costNoInsurance cost in GBP, 0 or more — 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?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial value beyond them: live per-request rate fetching, refusal of 6-/8-digit codes with declarable_codes returned, refusal of non-ISO origins, origin-dependent measures surfacing as warnings, and a rate-limit error carrying reset_at. This is exactly the behavioral disclosure an agent needs.

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?

Front-loaded with purpose and formula, then behavior, returns, limitations, and related tools in a scannable structure. It is dense but nearly every sentence carries distinct operational information; the snake_case/camelCase endpoint note is the one mildly tangential addition.

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?

A complex, revenue-relevant calculation tool with a live external dependency, and the description covers computation, failure modes, rate limiting, return envelope semantics, and explicit limitations (excise, quotas, anti-dumping, not a customs ruling). Combined with the output schema and annotations, 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%, so the schema already documents all six parameters and the baseline is 3. The description goes further by explaining the CIF composition formula (customs_value + freight_cost + insurance_cost), the duty and VAT arithmetic, and the role of incoterm as documenting which costs are already included.

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+resource (estimate UK import duty and VAT for a commodity code) and immediately distinguishes itself from its siblings by naming hs_code_lookup and incoterms_lookup and their roles. An agent knows exactly what this tool computes and when it is the right choice.

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?

Gives a clear workflow prerequisite (hs_code_lookup to find the 6-digit code first) and marks which parameters are required vs optional refinements. It never states an explicit when-not-to-use case (e.g. duty-only or VAT-only scenarios), so it falls short of a clean 5.

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"), slug ("ake-ld3") or the record's own name when one record carries it ("LD3" → AKE); 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 closest codes; a single record carries its provenance (sources, audited_at, decision_rationale). A list (no single record asked for) returns summary rows with total, truncated, next_offset and detail_hint; full: true returns full records five per page, with offset / limit to page. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

Returns: the ULD record (or the list) under result, plus confidence, _source and citation (the FreightUtils v1 response envelope). Field names as this package serves them (snake_case); the hosted /api/mcp endpoint serves the same fields in camelCase (e.g. total_cbm → totalCbm).

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.
fullNoLists only: true returns full records (provenance, sources, rationale) instead of summary rows, five per page by default. A single-record call always returns the full record.
typeNoIATA ULD code or slug. Examples: "AKE", "PMC", "ake-ld3". Omit to list all 16.
limitNoLists only: rows per page (default: every summary row; 5 with full: true).
offsetNoLists only: rows to skip (default 0). The response gives total and next_offset.
categoryNoFilter by ULD category.

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?

Well past what the annotations cover (readOnly/idempotent/openWorld=false): it discloses error behavior (unknown type errors with closest codes), rate-limit semantics with reset_at, pagination mechanics (full/limit/offset, five per page), envelope shape, a PROVENANCE_PENDING advisory, and contested-data warnings (PGA tare band, tare confirmed by no non-tertiary source on 13 of 16 records). This is unusually rich behavioral context for a read tool.

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

Conciseness3/5

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

Purpose, behavior, returns and limitations are front-loaded and reasonably ordered, but the middle section on second-agent coverage, stamp withdrawal and publisher-level corroboration runs very long relative to what an agent needs to select and invoke the tool. The operational warnings earn their place; the verification narrative is over-expanded.

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 needn't explain return values, yet it still notes the envelope, casing differences between local and hosted endpoints, and pallet records lacking internal dimensions with a pointer to max_build_up_height_cm. Nothing needed to call it correctly or interpret the data cautiously 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 baseline is 3, but the description adds meaning beyond the schema by noting that type also accepts the record's own informal name ("LD3" → AKE), which the schema does not state. It otherwise restates the code/slug examples and omit-to-list behavior already documented 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 opening states a specific verb and resource (look up air-cargo ULD specifications) and quantifies scope (16 types across lower-deck containers, main-deck pallets, temperature-controlled units). It explicitly separates itself from siblings like container_lookup (the sea-freight equivalent) and chargeable_weight_calculator, so an agent can route without opening schemas.

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

Usage Guidelines4/5

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

It gives concrete selection mechanics (pass a type code/slug to get one record, omit to list all 16, use category/deck to filter) and a Related list that frames alternatives by function. It stops short of stating explicit when-not-to-use conditions or task-level triggers for choosing this over, say, ldm_calculator or pallet_fitting_calculator.

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: m³ x 1,000,000 / 6000) and freight_tonnes (sea W/M, 1 CBM = 1 freight tonne).

Behavior: deterministic, on the exact legal factors (1 lb = 0.45359237 kg, 1 in = 2.54 cm); the response names both units and states the formula used. Cross-dimension conversions (e.g. kg to litres), a negative value and freight targets from a non-cbm source are refused with the accepted units listed by category. Note: short ton (US) = 2,000 lb, long ton (UK) = 2,240 lb, metric tonne = 2,204.6 lb. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

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, 0 or more. Example: 5.

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 declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: deterministic behavior on exact legal factors, refusal behavior with accepted units listed by category, the response naming both units and formula, and rate limiting with reset_at in the error. This is exactly the extra behavioral detail annotations cannot convey.

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?

Front-loaded with the core purpose and unit categories, then behavior, then returns, then related tools. Dense but well-organized; the ton-definition note is mildly extraneous but supports the stated exact-factor behavior, so little is 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?

Though an output schema exists and return values needn't be spelled out, the description still summarizes the envelope, and it covers behavior, refusals, rate limits, and alternative tools. Nothing an agent needs to invoke this 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% and both enum params are documented, so the baseline is 3. The description adds genuine meaning beyond the schema by giving the actual conversion formulas for chargeable_kg (IATA 6,000 divisor) and freight_tonnes (W/M), and clarifying the ton variants.

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 (Convert) and the exact resource scope (freight/logistics units across weight, volume, length, plus two freight-specific targets). It names sibling tools cbm_calculator and chargeable_weight_calculator, so an agent can distinguish it without opening any 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?

Explicitly routes the agent: the 'Related' line gives cbm_calculator as the step for dimensions-to-volume and chargeable_weight_calculator for proper air billing with pieces/custom divisor. It also states hard usage constraints (freight targets only FROM cbm, cross-dimension and negative values refused), covering both when to use and when not.

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). The spaced notation "GB LHR" reads as GBLHR in either.

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: a limit error carries reset_at, the UTC time the allowance resets.

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, optionally spaced. Examples: "GBLHR", "GB LHR", "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.8/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description still adds substantive behavior: exact hits are provenance-based while fuzzy name hits carry confidence via envelope basis match_quality, an unknown code produces a not-found error, and rate limiting surfaces reset_at (UTC reset time). The 116,232-record fixed list also corroborates openWorldHint=false rather than contradicting 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?

Front-loaded with purpose and code format, then clearly sectioned into invocation, behavior, returns and limitations. It is dense and mostly earns its length, but the 'Returns:' block partially duplicates the existing output schema and could be trimmed.

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 5-parameter lookup with full schema coverage, annotations and an output schema, this description covers everything an agent needs: what it is, how to call it, error and rate-limit behavior, and the authoritative-source caveat about confirming operational status. Nothing material 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 baseline is 3, but the description adds real value beyond it: the spaced notation rule ('GB LHR' resolves to GBLHR), the min-2-char query constraint, and the limit default/max. It stops short of explaining how code and query interact when both are supplied, or how country/function_type behave on a mass name match.

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+resource (search the UN/LOCODE transport-location list) and immediately scopes the domain with the code format and concrete examples (GBLHR, NLRTM). It explicitly differentiates itself from the two closest siblings, airport_lookup and nearest_airport, so an agent can route without opening schemas.

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

Usage Guidelines5/5

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

Gives the two invocation modes (exact `code` vs. `query` name search) and the narrowing filters (country, function_type, limit). The 'Related:' line names both alternatives and the condition that selects each (airport-specific records with ICAO codes; coordinate-based airport search), which is the explicit routing an agent needs.

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 airline from the AWB-prefix dataset when ONE record holds the prefix — when several do (e.g. 020: Lufthansa and Lufthansa Cargo), airline is null and airline_candidates[] lists every holder with airline_note saying why, never a guessed carrier; IMO: the 7-digit number); text mode with no identifiers found returns an empty found[] with a note. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

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 — value without type is refused. 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?

Annotations already establish read-only, idempotent, non-destructive and closed-world, so the bar is lower; the description still adds substantial behavioral context: deterministic check-digit arithmetic, per-identifier reporting fields, the ambiguous-airline-prefix resolution rule (airline null plus airline_candidates[] rather than a guess), empty-result behavior, rate limiting with reset_at, and the FreightUtils v1 response envelope.

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?

Front-loaded with purpose and modes, then behavior, returns, limitations and related tools in clearly labelled blocks. It is long, but nearly every sentence carries non-redundant information for a multi-mode validator, so it is dense rather than padded.

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 three-parameter validator with an output schema, the description covers everything an agent needs: mode selection, enum values, resolution edge cases, empty results, rate-limit signaling, and the structural-only limitation. The existence of an output schema means return-value detail is a bonus rather than a requirement, and it is supplied anyway.

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%, so the schema already documents all three parameters, the enum, the 'value requires type' constraint and examples. The description restates the mode split but adds no syntax or semantic detail beyond what the schema provides; 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?

States a specific verb (validate/parse) and resource (freight identifiers), enumerating the three standards (ISO 6346, IATA modulus-7, IMO) it applies. It also explicitly distinguishes itself from siblings by noting container_lookup is about container TYPE specs rather than numbers, and airline_lookup is the prefix dataset used for resolution.

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 lays out the two mutually exclusive modes (text=<arbitrary string> to scan, or value=<identifier> + type=<enum> for one) with a concrete example for each. It names the related tools and the condition that separates them, and adds a clear when-not statement ('STRUCTURAL ONLY — not a registry or tracking lookup').

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 and the closest slugs; a single record carries its provenance (sources, audited_at, decision_rationale). A list (no single record asked for) returns summary rows with total, truncated, next_offset and detail_hint; full: true returns full records five per page, with offset / limit to page. Rate-limited: a limit error carries reset_at, the UTC time the allowance resets.

Returns: the vehicle record (or the list) under result, plus confidence, _source and citation (the FreightUtils v1 response envelope). Field names as this package serves them (snake_case); the hosted /api/mcp endpoint serves the same fields in camelCase (e.g. total_cbm → totalCbm).

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
fullNoLists only: true returns full records (provenance, sources, rationale) instead of summary rows, five per page by default. A single-record call always returns the full record.
slugNoVehicle slug. Examples: "standard-curtainsider", "mega-trailer". Omit to list all 17.
limitNoLists only: rows per page (default: every summary row; 5 with full: true).
offsetNoLists only: rows to skip (default 0). The response gives total and next_offset.
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?

Annotations already cover read-only/idempotent/non-destructive, but the description goes well beyond them: unknown-slug error behavior (returns valid list plus closest slugs), provenance on single records, list-row shape with total/truncated/next_offset/detail_hint, five-per-page pagination under full:true, and a rate-limit error carrying reset_at. That is unusually rich operational disclosure.

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 but front-loaded and sectioned (capabilities, behavior, returns, limitations, related), with no filler sentences. It is on the verbose side for a lookup tool, and the camelCase/snake_case envelope note could be shorter, but each block carries usable information.

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 explain return values, yet it still covers error paths, pagination, rate limits, envelope field naming differences between the package and hosted endpoint, and an explicit limitations paragraph on provenance and plated weights. 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 description coverage is 100%, so the baseline is 3, but the description adds cross-parameter meaning the schema documents only piecewise: that a single-record call always returns the full record regardless of full, and that the default page size shifts to five when full:true. It also explains the slug/list/filter interplay as a workflow.

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+resource ('look up road-freight vehicle and trailer specifications') and enumerates the 17 vehicle types covered, including EU articulated trailers, US dry vans, rigids and vans. This is clearly distinguishable from siblings such as container_lookup or uld_lookup, which cover different equipment domains.

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?

Gives explicit selection rules: supply a slug for one record, omit it to list all 17, and use category/region to filter the list. It also names three related tools (ldm_calculator, pallet_fitting_calculator, consignment_calculator) as downstream calculations, though it stops short of saying when NOT 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 20 tool updatesv2.22.3
    • Changedadr_exemption_calculator7 fields changed
      • addedInput schema / properties / items / items / properties / quantity / maximum
        Added value: +1000000000
      • changedInput schema / properties / items / items / properties / un_number / pattern
        Previous value: -"^(?:(?:UN)?\\d{4}|\\s*ID\\s*[-:.]?\\s*\\d{4}\\s*)$"New value: +"^(?:\\s*(?:UN\\s*)?\\d{4}\\s*|\\s*ID\\s*[-:.]?\\s*\\d{4}\\s*)$"
      • addedInput schema / properties / items / items / properties / variant_index / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / items / minItems
        Added value: +1
      • addedInput schema / properties / quantity / maximum
        Added value: +1000000000
      • changedInput schema / properties / un_number / pattern
        Previous value: -"^(?:(?:UN)?\\d{4}|\\s*ID\\s*[-:.]?\\s*\\d{4}\\s*)$"New value: +"^(?:\\s*(?:UN\\s*)?\\d{4}\\s*|\\s*ID\\s*[-:.]?\\s*\\d{4}\\s*)$"
      • addedInput schema / properties / variant_index / maximum
        Added value: +9007199254740991
    • Changedadr_lookup6 fields changed
      • changedInput schema / properties / hazard_class / description
        Previous value: -"All entries in an ADR class or division. Examples: \"3\" (flammable liquids), \"6.1\" (toxic), \"1.4\" (an explosives division)."New value: +"All entries in an ADR class (Table A column (3a)). Examples: \"3\" (flammable liquids), \"6.1\" (toxic), \"1\" (explosives — the division and compatibility group are in classification_code, e.g. \"1.4S\")."
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "search / hazard_class only: rows per page (default and maximum 50 for a search, 100 for a class).",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "search / hazard_class only: rows to skip (default 0). The response gives total and next_offset.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedInput schema / properties / un_number / description
        Previous value: -"Exact UN number — 4 digits, optionally \"UN\"-prefixed; explosives keep their leading zero. Examples: \"1203\", \"UN1203\", \"0004\"."New value: +"Exact UN number — 4 digits, optionally \"UN\"-prefixed; explosives keep their leading zero. Examples: \"1203\", \"UN1203\", \"UN 1203\", \"0004\"."
      • changedInput schema / properties / un_number / pattern
        Previous value: -"^(UN)?\\d{4}$"New value: +"^(?:UN\\s*)?\\d{4}$"
      • 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": {
        -                "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"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "properties": {
        +      "count": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "limit": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "meta": {
        +        "anyOf": [
        +          {
        +            "additionalProperties": {},
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "next_offset": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "offset": {
        +        "type": [
        +          "number",
        +          "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"
        +          }
        +        ]
        +      },
        +      "total": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "truncated": {
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "type": "object"
        +  }
        +]
    • Changedadr_lq_eq_check5 fields changed
      • addedInput schema / properties / items / items / properties / inner_packaging_qty / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / items / items / properties / quantity / maximum
        Added value: +1000000000
      • changedInput schema / properties / items / items / properties / un_number / description
        Previous value: -"UN number — 4 digits, optionally \"UN\"-prefixed; explosives keep the leading zero. Examples: \"1203\", \"UN1263\"."New value: +"UN number — 4 digits, optionally \"UN\"-prefixed; explosives keep the leading zero. Examples: \"1203\", \"UN1263\", \"UN 1263\", \"0004\"."
      • changedInput schema / properties / items / items / properties / un_number / pattern
        Previous value: -"^(UN)?\\d{4}$"New value: +"^\\s*(?:UN\\s*)?\\d{4}\\s*$"
      • addedInput schema / properties / items / items / properties / variant_index / maximum
        Added value: +9007199254740991
    • Changedairline_lookup3 fields changed
      • addedInput schema / properties / full
        Added value: +{
        +  "description": "Lists only: true returns full records (provenance, sources, rationale) instead of summary rows, five per page by default. A single-record call always returns the full record.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Lists only: rows per page (default: every summary row; 5 with full: true).",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Lists only: rows to skip (default 0). The response gives total and next_offset.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedcbm_calculator1 field changed
      • addedInput schema / properties / pieces / maximum
        Added value: +9007199254740991
    • Changedchargeable_weight_calculator2 fields changed
      • addedInput schema / properties / factor / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / pieces / maximum
        Added value: +9007199254740991
    • Changedconsignment_calculator7 fields changed
      • addedInput schema / properties / lines / items / properties / description / maxLength
        Added value: +200
      • addedInput schema / properties / lines / items / properties / hs_code / pattern
        Added value: +"^\\d{6,10}$"
      • addedInput schema / properties / lines / items / properties / quantity / maximum
        Added value: +100000
      • addedInput schema / properties / lines / items / properties / un_number / pattern
        Added value: +"^(UN)?\\d{4}$"
      • addedInput schema / properties / options / properties / air_volumetric_divisor / maximum
        Added value: +10000
      • addedInput schema / properties / options / properties / awb_number / maxLength
        Added value: +20
      • addedInput schema / properties / options / properties / container_number / maxLength
        Added value: +20
    • Changedcontainer_lookup7 fields changed
      • addedInput schema / properties / full
        Added value: +{
        +  "description": "Lists only: true returns full records (provenance, sources, rationale) instead of summary rows, five per page by default. A single-record call always returns the full record.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / item_quantity / maximum
        Added value: +9007199254740991
      • changedInput schema / properties / item_weight_kg / description
        Previous value: -"Item weight in kg — caps the fit by max payload."New value: +"Weight of ONE item in kg — caps the fit by max payload. 0 or omitted: no weight check."
      • removedInput schema / properties / item_weight_kg / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / item_weight_kg / minimum
        Added value: +0
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Lists only: rows per page (default: every summary row; 5 with full: true).",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Lists only: rows to skip (default 0). The response gives total and next_offset.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedemissions_calculator1 field 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. When the factor publishes only the other basis the answer uses it and says so (basis_note, BASIS_SUBSTITUTED)."
    • Changedhs_code_lookup3 fields changed
      • changedInput schema / properties / code / description
        Previous value: -"Exact HS code or prefix — 2, 4 or 6 digits. Example: \"8471\"."New value: +"Exact HS code or prefix — 2, 4 or 6 digits, with or without dots or spaces. Examples: \"8471\", \"8471.30\"."
      • removedInput schema / properties / code / pattern
        Removed value: -"^\\d{2,6}$"
      • changedInput schema / properties / query / description
        Previous value: -"Keyword search on official HS descriptions (min 2 chars). Formal tariff wording works best. Example: \"automatic data\" rather than \"laptop\"."New value: +"Search words (min 2 chars), matched against the official HS descriptions first, then HMRC everyday goods names (medium confidence). Examples: \"automatic data\", \"laptop\"."
    • Changedics2_check1 field changed
      • addedInput schema / properties / description / minLength
        Added value: +1
    • Changedincoterms_lookup3 fields changed
      • addedInput schema / properties / full
        Added value: +{
        +  "description": "Lists only: true returns full records (provenance, sources, rationale) instead of summary rows, five per page by default. A single-record call always returns the full record.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Lists only: rows per page (default: every summary row; 5 with full: true).",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Lists only: rows to skip (default 0). The response gives total and next_offset.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedldm_calculator2 fields changed
      • addedInput schema / properties / quantity / maximum
        Added value: +9007199254740991
      • changedOutput schema / properties / result / anyOf
        Previous value: -[
        -  {
        -    "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"
        -  }
        -]New value: +[
        +  {
        +    "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"
        +                ]
        +              },
        +              "floor_positions_basis": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "used": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "payload_checked": {
        +        "type": [
        +          "boolean",
        +          "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"
        +  }
        +]
    • Changedshipment_summary13 fields changed
      • changedInput schema / properties / freight_cost / description
        Previous value: -"Freight cost in GBP for the duty calculation."New value: +"Freight cost in GBP for the duty calculation, 0 or more. Default: 0."
      • addedInput schema / properties / freight_cost / minimum
        Added value: +0
      • changedInput schema / properties / insurance_cost / description
        Previous value: -"Insurance cost in GBP for the duty calculation."New value: +"Insurance cost in GBP for the duty calculation, 0 or more. Default: 0."
      • addedInput schema / properties / insurance_cost / minimum
        Added value: +0
      • changedInput schema / properties / items / items / properties / adr_quantity / description
        Previous value: -"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."New value: +"OPTIONAL ADR 1.1.3.6.3 quantity for this dangerous-goods line — the total for the whole line, all pieces together (never per piece), 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."
      • addedInput schema / properties / items / items / properties / adr_quantity / maximum
        Added value: +1000000000
      • changedInput schema / properties / items / items / properties / customs_value / description
        Previous value: -"Customs value per item in GBP — enables the duty section."New value: +"Customs value in GBP PER ITEM (per piece), 0 or more — multiplied by quantity for the line; the duty estimate uses the sum over all lines. Enables the duty section with hs_code."
      • addedInput schema / properties / items / items / properties / customs_value / minimum
        Added value: +0
      • addedInput schema / properties / items / items / properties / quantity / maximum
        Added value: +1000000
      • changedInput schema / properties / items / items / properties / weight / description
        Previous value: -"Gross weight per item in kg."New value: +"Gross weight in kg PER ITEM (per piece) — multiplied by quantity."
      • addedInput schema / properties / items / items / properties / weight / minimum
        Added value: +0
      • addedInput schema / properties / items / maxItems
        Added value: +50
      • addedInput schema / properties / items / minItems
        Added value: +1
    • Changeduk_duty_calculator6 fields changed
      • changedInput schema / properties / commodity_code / description
        Previous value: -"HS/UK tariff code, 6-10 digits. Example: \"8471300000\" (portable computers). 6-digit codes may need the declarable 8/10-digit line."New value: +"UK tariff commodity code — the declarable 10 digits. Example: \"8471300000\" (portable computers). A 6- or 8-digit code is refused with the declarable codes beneath it."
      • changedInput schema / properties / commodity_code / pattern
        Previous value: -"^\\d{6,10}$"New value: +"^[\\d\\s]{6,14}$"
      • changedInput schema / properties / freight_cost / description
        Previous value: -"Freight cost in GBP — added to the CIF value. Default: 0."New value: +"Freight cost in GBP, 0 or more — added to the CIF value. Default: 0."
      • addedInput schema / properties / freight_cost / minimum
        Added value: +0
      • changedInput schema / properties / insurance_cost / description
        Previous value: -"Insurance cost in GBP — added to the CIF value. Default: 0."New value: +"Insurance cost in GBP, 0 or more — added to the CIF value. Default: 0."
      • addedInput schema / properties / insurance_cost / minimum
        Added value: +0
    • Changeduld_lookup3 fields changed
      • addedInput schema / properties / full
        Added value: +{
        +  "description": "Lists only: true returns full records (provenance, sources, rationale) instead of summary rows, five per page by default. A single-record call always returns the full record.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Lists only: rows per page (default: every summary row; 5 with full: true).",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Lists only: rows to skip (default 0). The response gives total and next_offset.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedunit_converter2 fields changed
      • changedInput schema / properties / value / description
        Previous value: -"The numeric value to convert. Example: 5."New value: +"The numeric value to convert, 0 or more. Example: 5."
      • addedInput schema / properties / value / minimum
        Added value: +0
    • Changedunlocode_lookup2 fields changed
      • changedInput schema / properties / code / description
        Previous value: -"Exact UN/LOCODE — 5 characters. Examples: \"GBLHR\", \"NLRTM\"."New value: +"Exact UN/LOCODE — 5 characters, optionally spaced. Examples: \"GBLHR\", \"GB LHR\", \"NLRTM\"."
      • changedInput schema / properties / code / pattern
        Previous value: -"^[A-Za-z0-9]{5}$"New value: +"^\\s*[A-Za-z]{2}[\\s-]?[A-Za-z0-9]{3}\\s*$"
    • Changedvalidate1 field changed
      • changedInput schema / properties / value / description
        Previous value: -"A single identifier to validate (typed mode). Requires type. Example: \"MSKU3068808\"."New value: +"A single identifier to validate (typed mode). Requires type — value without type is refused. Example: \"MSKU3068808\"."
    • Changedvehicle_lookup3 fields changed
      • addedInput schema / properties / full
        Added value: +{
        +  "description": "Lists only: true returns full records (provenance, sources, rationale) instead of summary rows, five per page by default. A single-record call always returns the full record.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Lists only: rows per page (default: every summary row; 5 with full: true).",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Lists only: rows to skip (default 0). The response gives total and next_offset.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
  2. 1 tool updatev2.20.0
    • Changedadr_exemption_calculator10 fields changed
      • changedInput schema / properties / basis / description
        Previous value: -"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."New value: +"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. Single-substance form only — sent beside items[] it is refused; set it on each item."
      • changedInput schema / properties / items / items / properties / un_number / description
        Previous value: -"UN number — 4 digits, optionally \"UN\"-prefixed. Example: \"1263\"."New value: +"UN number — 4 digits, optionally \"UN\"-prefixed — or an ID-prefixed air-only number such as \"ID8000\" (routed AIR_ONLY_ID; the warning on that line states the limited-quantity condition the 0 rests on). Example: \"1263\"."
      • changedInput schema / properties / items / items / properties / un_number / pattern
        Previous value: -"^(UN)?\\d{4}$"New value: +"^(?:(?:UN)?\\d{4}|\\s*ID\\s*[-:.]?\\s*\\d{4}\\s*)$"
      • changedInput schema / properties / packing_group / description
        Previous value: -"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."New value: +"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 — sent beside items[] it is refused; set it on each item."
      • changedInput schema / properties / quantity / description
        Previous value: -"Quantity for the single-substance check, in kg or litres per the substance's ADR unit. Example: 100."New value: +"Quantity for the single-substance check, in kg or litres per the substance's ADR unit. Single-substance form only — sent beside items[] it is refused. Example: 100."
      • changedInput schema / properties / un_number / description
        Previous value: -"UN number for a single-substance check — 4 digits, optionally \"UN\"-prefixed. Example: \"1203\"."New value: +"UN number for a single-substance check — 4 digits, optionally \"UN\"-prefixed — or an ID-prefixed air-only number such as \"ID8000\" (routed AIR_ONLY_ID, nothing counted — the warning on that line states the limited-quantity condition). Single-substance form only — sent beside items[] it is refused; send the substance as an item. Example: \"1203\"."
      • changedInput schema / properties / un_number / pattern
        Previous value: -"^(UN)?\\d{4}$"New value: +"^(?:(?:UN)?\\d{4}|\\s*ID\\s*[-:.]?\\s*\\d{4}\\s*)$"
      • changedInput schema / properties / unit / description
        Previous value: -"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."New value: +"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. Single-substance form only — sent beside items[] it is refused; set it on each item."
      • changedInput schema / properties / variant_index / description
        Previous value: -"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."New value: +"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 — sent beside items[] it is refused; set it on each item."
      • 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"
        -          }
        -        ]
        -      },
        -      "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"
        -  }
        -]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": {
        +                "air_only_id": {
        +                  "type": [
        +                    "boolean",
        +                    "null"
        +                  ]
        +                },
        +                "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"
        +                  ]
        +                },
        +                "state": {
        +                  "anyOf": [
        +                    {
        +                      "enum": [
        +                        "COUNTED",
        +                        "AIR_ONLY_ID",
        +                        "NOT_SUBJECT_TO_ADR",
        +                        "BLOCKED"
        +                      ],
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                },
        +                "transport_category": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "un_number": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "variant_index": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "message": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "not_subject_to_adr": {
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "threshold": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "total_points": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "warnings": {
        +        "anyOf": [
        +          {
        +            "items": {},
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "type": "object"
        +  }
        +]
  3. 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"
        +}
  4. 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"
        +]
  5. 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"
        +]
  6. 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"
        +  }
        +]
  7. 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."
  8. 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"
        +}
  9. 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"
        +}
  10. 5 tool updatesv2.10.0
    • Addedairport_lookup
    • Addedemissions_calculator
    • Addedics2_check
    • Addednearest_airport
    • Addedvalidate
  11. 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
  12. 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"
        -]

TDQS

A4.3/5.0

Scored across 25 tools

Disambiguation4/5

Most tools have clearly distinct domains and purposes, and descriptions extensively cross-reference related tools. However, there are borderline overlaps such as consignment_calculator vs shipment_summary, the trio of ADR tools, and validate vs resolve_reference, which could occasionally cause misselection. Boundaries are generally well documented, so ambiguity is minor.

Naming Consistency4/5

All names use snake_case consistently and are highly readable, with most following a noun_calculator or noun_lookup pattern. A few tools deviate by starting with a verb (validate, resolve_reference, get_subscribe_link) or using a different structure (shipment_summary, ics2_check), but these are minor deviations within an otherwise predictable naming scheme.

Tool Count3/5

At 25 tools, the server sits at the upper end of the recommended 3-15 range and feels heavy even for a broad freight-utilities domain. While each tool covers a distinguishable subdomain (calculations, lookups, validation, ADR, customs, conversions), the count risks overwhelming an agent and could benefit from consolidation or clearer grouping.

Completeness4/5

The surface covers a wide range of freight utilities: core weight/volume/LDM calculations, equipment and location lookups, Incoterms, HS codes, ADR checks, UK duty estimation, emissions, and identifier validation/resolution. Minor gaps remain, such as non-UK duty estimation, booking/tracking operations, and document generation, but these are outside the apparent scope of a utility/reference server and agents can work around them.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • 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
    D
    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
    7 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to query and manage logistics shipment data, supporting operations like tracking, quoting, and performance analysis via nine tools backed by a demo dataset or a REST API.
    9
    253 npm
    MIT