Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

FreightUtils MCP Server

REMOTE · WWW.FREIGHTUTILS.COM · 2 COMPONENTS

Neutral freight reference + validation layer for AI agents: ADR, HS, UN/LOCODE, freight math

−1 this week 84 Trust /100

Last scanned (1 hour ago)

Scores higher than 89% of remote servers

Reachable. Last reached 5 Nov 2026.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security80
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation. See how to fix → View diagnostics → Partial
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
  • DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
Schema Quality & AI Usability57
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 22562 tokens (~867/item across 26 items; 26 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 99% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 26 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 26 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
What we tested

Checks we ran (13)

  • TLS certificate
  • Authorization
  • HTTPS
  • HSTS header
  • DNSSEC
  • Transport
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Does not apply to this hosted endpoint (2)

  • Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
  • Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 0
    • Tool “adr_consignment_check” rewrote its description, which is the text the model reads security
    • Tool “adr_exemption_calculator” rewrote its description, which is the text the model reads security
    • Schema quality: 754 → 839 ▼ functional
    • Schema quality: 18859 → 20817 ▼ functional
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
    • Server version: 2.30.0 → 2.31.0 functional
    • Server version: 2.29.0 → 2.30.0 functional
    • Server version: 2.28.0 → 2.29.0 functional
    • New tool “adr_consignment_check” functional
    • “adr_consignment_check” added an optional parameter “crew” cosmetic
    • “adr_consignment_check” reworded the description of “vehicle” cosmetic
    • “shipment_summary” reworded the description of “consignment” cosmetic
    • “consignment_calculator” reworded the description of “consignment” cosmetic
    • “adr_exemption_calculator” reworded the description of “consignment” cosmetic
  • 4 Nov 26 0
    • Tool “adr_exemption_calculator” rewrote its description, which is the text the model reads security
    • Tool “adr_lookup” rewrote its description, which is the text the model reads security
    • Server version: 2.27.0 → 2.28.0 functional
    • “adr_exemption_calculator” added an optional parameter “icao_limited_quantity” cosmetic
    • “adr_exemption_calculator” reworded the description of “un_number” cosmetic
    • “adr_exemption_calculator” reworded the description of “basis” cosmetic
    • “adr_exemption_calculator” reworded the description of “items” cosmetic
  • 31 Oct 26 0
    • Tool “nearest_airport” rewrote its description, which is the text the model reads security
    • Tool “airport_lookup” rewrote its description, which is the text the model reads security
    • Tool “airline_lookup” rewrote its description, which is the text the model reads security
    • Server version: 2.26.0 → 2.27.0 functional
    • “nearest_airport” added an optional parameter “include_all” cosmetic
  • 30 Oct 26 −1
    • Tool “consignment_calculator” rewrote its description, which is the text the model reads security
    • Tool “shipment_summary” rewrote its description, which is the text the model reads security
    • Tool “adr_exemption_calculator” rewrote its description, which is the text the model reads security
    • Tool “adr_lq_eq_check” rewrote its description, which is the text the model reads security
    • Tool “adr_lookup” rewrote its description, which is the text the model reads security
    • Tool “resolve_reference” rewrote its description, which is the text the model reads security
    • Schema quality: 606 → 709 ▼ functional
    • Server version: 2.25.0 → 2.26.0 functional
    • Server version: 2.24.0 → 2.25.0 functional
    • “adr_lq_eq_check” added an optional parameter “as_of” cosmetic
    • “consignment_calculator” added an optional parameter “as_of” cosmetic
    • “consignment_calculator” added an optional parameter “edition” cosmetic
    • “shipment_summary” added an optional parameter “as_of” cosmetic
    • “shipment_summary” added an optional parameter “edition” cosmetic
    • “adr_lq_eq_check” added an optional parameter “edition” cosmetic
    • “adr_exemption_calculator” added an optional parameter “as_of” cosmetic
    • “adr_exemption_calculator” added an optional parameter “edition” cosmetic
    • “adr_lookup” added an optional parameter “as_of” cosmetic
    • “adr_lookup” added an optional parameter “edition” cosmetic
    • “validate” added an optional parameter “consignment” cosmetic
    • “adr_exemption_calculator” added an optional parameter “consignment” cosmetic
    • “adr_lookup” added an optional parameter “include_codes” cosmetic
    • “adr_lookup” added an optional parameter “include_statements” cosmetic
    • “adr_lookup” added an optional parameter “un_numbers” cosmetic
    • “airline_lookup” added an optional parameter “codes” cosmetic
    • “airport_lookup” added an optional parameter “codes” cosmetic
    • “consignment_calculator” added an optional parameter “consignment” cosmetic
    • “hs_code_lookup” added an optional parameter “codes” cosmetic
    • “shipment_summary” added an optional parameter “consignment” cosmetic
    • “uk_duty_calculator” added an optional parameter “lines” cosmetic
    • “unlocode_lookup” added an optional parameter “codes” cosmetic
    • “adr_exemption_calculator” reworded the description of “packing_group” cosmetic
    • “uk_duty_calculator” reworded the description of “origin_country” cosmetic
    • “adr_exemption_calculator” reworded the description of “unit” cosmetic
    • “adr_exemption_calculator” reworded the description of “variant_index” cosmetic
    • “shipment_summary” reworded the description of “items” cosmetic
    • “shipment_summary” reworded the description of “mode” cosmetic
    • “uk_duty_calculator” reworded the description of “customs_value” cosmetic
    • “adr_exemption_calculator” reworded the description of “un_number” cosmetic
    • “validate” reworded the description of “type” cosmetic
    • “adr_exemption_calculator” reworded the description of “items” cosmetic
    • “adr_exemption_calculator” reworded the description of “basis” cosmetic
    • “shipment_summary” made “items” optional cosmetic
    • “shipment_summary” made “mode” optional cosmetic
    • “uk_duty_calculator” made “commodity_code” optional cosmetic
    • “uk_duty_calculator” made “customs_value” optional cosmetic
    • “uk_duty_calculator” made “origin_country” optional cosmetic
  • 29 Oct 26 0
    • Tool “unlocode_lookup” rewrote its description, which is the text the model reads security
    • Server version: 2.23.0 → 2.24.0 functional
    • “adr_lookup” reworded the description of “search” cosmetic
    • “airline_lookup” reworded the description of “query” cosmetic
    • “airport_lookup” reworded the description of “query” cosmetic
  • 28 Oct 26 0
    • Tool “adr_lookup” rewrote its description, which is the text the model reads security
    • Server version: 2.22.5 → 2.23.0 functional
  • 14 Oct 26 0
    • Tool “emissions_calculator” rewrote its description, which is the text the model reads security
    • Tool “hs_code_lookup” rewrote its description, which is the text the model reads security
    • Tool “airline_lookup” rewrote its description, which is the text the model reads security
    • Tool “validate” rewrote its description, which is the text the model reads security
    • Server version: 2.22.4 → 2.22.5 functional
    • Server version: 2.22.3 → 2.22.4 functional
    • Server version: 2.22.2 → 2.22.3 functional
  • 13 Oct 26 +2
    • Judged manipulation: unverified → pass ▲ security
    • “shipment_summary” reworded the description of “freight_cost” cosmetic
    • “shipment_summary” reworded the description of “insurance_cost” cosmetic
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://www.freightutils.com/api/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=www.freightutils.com CN=YR2,O=Let's Encrypt,C=US 16 Sept 2026 15 Dec 2026 RSA 2048 SHA256-RSA 6b12e639a2d8c9cedeb936792a5a1e0ab80
SANs: www.freightutils.com
CN=YR2,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA 4ebd24947e24d394802d84a52fd5b319
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of www.freightutils.com. — Not signed

Zone DS Keys Algorithms Outcome
. Trust anchor 20326, 38696 8, 8 Verified
com. DS published 19718 13 Verified
freightutils.com. No DS Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
content-security-policy base-uri 'self'; object-src 'none'; frame-ancestors 'none'; frame-src 'none'; form-action 'self' https://checkout.stripe.com https://billing.stripe.com; img-src 'self' data:; font-src 'self' https://fonts.gstatic.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; connect-src 'self' https://o4511273302556672.ingest.de.sentry.io; media-src 'self'; worker-src 'self'; manifest-src 'self'; upgrade-insecure-requests
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), microphone=(), geolocation=(self), browsing-topics=()

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://www.freightutils.com/api/mcp Verified 200
http (plaintext) http://www.freightutils.com/api/mcp HTTPS enforced 308 https://www.freightutils.com/api/mcp
MCP tools · 26 exposed · ~22,562 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
adr_consignment_check ~3,481

One call on the consignment object for the ADR picture of a road load: the 1.1.3.6 small-load verdict, the limited / excepted quantity check of each line, the tunnel restriction code of the whole load against the tunnels on the route, each line's transport-document entry, mixed loading (7.5.2, with the foodstuffs precautions of 7.5.4), and the vehicle side — orange-coloured plates and placards (5.3), the documents, fire extinguishers and equipment on the transport unit (8.1), and driver training (8.2); and the UN packaging mark of each line (6.1.3.1). The rules are page-cited to the free UNECE ADR 2025 publication. Provide lines[] — each dangerous-goods line with un_number, quantity {value, unit, basis} and, where it applies, packing_group / variant_index, packages {count, type, gross_kg, un_mark (the UN packaging mark as printed, 6.1.3.1)}, inner_packaging {quantity, unit, per_outer?, regime?} and (ID lines only) icao_limited_quantity — and optionally journey {date, tunnels_on_route (A–E), mode}, vehicle {max_mass_t (the transport unit's maximum permissible mass — the 8.1.4.1 band, 3.4.13), foodstuffs_carried (ADR 7.5.4), fire_extinguishers_kg[], orange_plates_displayed, placards_displayed, equipment_8_1_5[] (the 8.1.5 items by name), instructions_in_writing}, crew {adr_training_certificate, specialisations[] (class_1, class_7, tanks), photo_identification, awareness_training_1_3}, edition and as_of. journey.date is the default as_of; an as_of that contradicts it is refused. Behavior: deterministic. The 1.1.3.6 check is the adr_exemption_calculator's answer, whole (basis, basis_until, strict_adr_2027, items[].state incl. EXCLUDED_NIL / BLOCKED / AIR_ONLY_ID). The LQ / EQ checks are the adr_lq_eq_check answer per line with inner_packaging. The tunnel check assigns the whole load the most restrictive code (8.6.3.2, ranked by the categories the 8.6.4 table forbids for the carriage), gives which tunnels on the route the load may use without and with the 1.1.3.6 reli…

NameTypeReqDescription
as_ofstring–YYYY-MM-DD the answer is for (default today, UTC); picks the ADR edition when edition is omitted, and is echoed in the answer and its check receipt.
crewobject–The vehicle crew, for the driver-training and document checks (ADR 8.2, 8.1.2). Facts only — no name.
editionstring–ADR edition: "2025" or "2027". Wins over as_of. Omit it and as_of picks the edition by the legal timeline: before 2027-01-01 ADR 2025; from 2027-01-01 ADR 2027 (ADR 2025 may still be applied until 20…
journeyobject––
linesarrayyesThe lines of the load (1–50). Required.
optionsobject–The consignment object's options; not read by this check.
vehicleobject–Read: max_mass_t (8.1.4.1, 3.4.13), foodstuffs_carried (7.5.4) and the vehicle-side inputs (5.3, 8.1).
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

adr_exemption_calculator ~3,774

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. An item quantity may be 0: the goods are not carried, the line is left out of the load (state EXCLUDED_NIL) and named in a warning — a load of nothing but zeros is refused, never cleared. 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_looku…

NameTypeReqDescription
as_ofstring–YYYY-MM-DD the answer is for (default today, UTC); picks the ADR edition when edition is omitted, and is echoed in the answer and its check receipt.
basisstring–OPTIONAL. 'net' or 'gross'. ADR 1.1.3.6.3 counts the dangerous goods themselves, never the packaging. A 'gross' mass on an entry counted by mass is used only as an upper bound of the net mass: the lo…
consignmentobject–Alternative to the other arguments: the consignment object (https://www.freightutils.com/schema/consignment-object.v1.json) — lines[] (description, un_number, packing_group, variant_index, quantity {…
editionstring–ADR edition: "2025" or "2027". Wins over as_of. Omit it and as_of picks the edition by the legal timeline: before 2027-01-01 ADR 2025; from 2027-01-01 ADR 2027 (ADR 2025 may still be applied until 20…
icao_limited_quantityboolean–OPTIONAL, only with an ID-prefixed un_number (e.g. ID8000): true states that the packages are limited quantities conforming to the ICAO Technical Instructions (the 3.4.8 mark, or 3.4.10). Only then i…
itemsarray–Items for a mixed load. An item quantity may be 0: the goods are not carried, the line is left out of the load and named in a warning (a load of nothing but zeros is refused). With items[], the singl…
packing_groupstring–Packing group (I, II or III) — only needed to disambiguate a UN that has more than one ADR Table A row (e.g. UN 1789). Ignored for single-row UNs.
quantitynumber–Quantity on the ADR 1.1.3.6.3 basis: net kg for solids and liquefied, refrigerated or dissolved gases; litres for liquids; receptacle water capacity in litres for compressed or adsorbed gases and che…
un_numberstring–UN number for single check (4 digits, optionally "UN"-prefixed) — or an ID-prefixed air-only number such as "ID8000", which has no ADR Table A entry: counted out of 1.1.3.6 (AIR_ONLY_ID) only with ic…
unitstring–OPTIONAL. The dimension `quantity` is stated in — 'L' or 'kg'. Omit it and the number is taken as already on the ADR 1.1.3.6.3 basis (the historical contract). Supply it and it is CHECKED against the…
variant_indexinteger–ADR Table A variant index (as returned by adr_lookup) — pins one row when a UN has several variants that share a packing group (e.g. concentration bands). Ignored for single-row UNs.
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

adr_lookup ~1,649

Look up the full European road dangerous-goods (ADR 2025) Table A entry for a substance — all 20 columns, from class, packing group and labels through special provisions, limited/excepted quantities, packing instructions, tank codes, carriage provisions, transport category, tunnel restriction code and hazard identification number — and what each of those codes means (resolved_codes). 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, all 20 Table A columns: un_number, proper_shipping_name, class, classification_code, packing_group, labels, special_provisions, limited_quantity, excepted_quantity, packing_instructions, special_/mixed_packing_provisions, portable_tank_instructions/_special_provisions, tank_code, tank_special_provisions, vehicle_for_tank_carriage, carriage_packages/_bulk/_loading_unloading_handling/_operation, transport_…

NameTypeReqDescription
as_ofstring–YYYY-MM-DD the answer is for (default today, UTC); picks the ADR edition when edition is omitted, and is echoed in the answer and its check receipt.
editionstring–ADR edition: "2025" or "2027". Wins over as_of. Omit it and as_of picks the edition by the legal timeline: before 2027-01-01 ADR 2025; from 2027-01-01 ADR 2027 (ADR 2025 may still be applied until 20…
hazard_classstring–Filter by ADR hazard class (Table A column (3a)). Examples: "3" (flammable liquids), "6.1" (toxic), "8" (corrosive), "1" (explosives — the division and compatibility group are in classification_code,…
include_codesstring–include_codes: "none" | "compact" | "full" — resolved_codes beside results[]: one entry per distinct code in Table A columns (5)–(20) across the answer, with its meaning in FreightUtils' own words (c…
include_statementsboolean–true adds statements[] to every row: short plain-word statements (tunnel, transport category, labels, packing, tanks, carriage) assembled from the code meanings and the 8.6.4 / 1.1.3.6.3 tables, each…
limitinteger–search / hazard_class only: rows per page (default 10; at most 50 for search, 100 for hazard_class).
offsetinteger–search / hazard_class only: rows to skip (default 0). The response gives total and next_offset.
searchstring–Case-insensitive partial match on the proper shipping name (2 to 200 characters). Example: "acetone".
un_numberstring–Exact UN number — 4 digits, optionally "UN"-prefixed; explosives keep their leading zero. Examples: "1203", "UN1203", "UN 1203", "0004".
un_numbersarray–Batch: up to 50 UN numbers, answered in one call as results[] in input order, each as its own un_number lookup with its own status. Send alone (include_codes may go beside it).
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

adr_lq_eq_check ~1,346

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 i…

NameTypeReqDescription
as_ofstring–YYYY-MM-DD the answer is for (default today, UTC); picks the ADR edition when edition is omitted, and is echoed in the answer and its check receipt.
editionstring–ADR edition: "2025" or "2027". Wins over as_of. Omit it and as_of picks the edition by the legal timeline: before 2027-01-01 ADR 2025; from 2027-01-01 ADR 2027 (ADR 2025 may still be applied until 20…
itemsarrayyesItems to check (1–20 per call).
modestringyesCheck mode: 'lq' (Limited Quantity, ADR 3.4) or 'eq' (Excepted Quantity, ADR 3.5)
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

airline_lookup ~651

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); prefix_shared + prefix_holders on every record with a prefix; on cargo records operational_status (active / ceased / unknown) with operational_status_basis, restrictions[] when the EU or UK Air Safety List names the carrier, and carrier-published cargo_website / tracking_url_template / dg_acceptance_url where they exist — 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).

NameTypeReqDescription
codesarray–Batch: up to 50 airline codes — 2 characters IATA, 3 letters ICAO, 3 digits AWB prefix — answered as results[] in input order, each with its own status. Send alone.
countrystring–Filter by country name (min 2 chars)
fullboolean–Lists only: true returns full records (provenance, sources, rationale) instead of summary rows. A single-record call always returns the full record.
iatastring–Exact IATA code (2 alphanumeric chars)
icaostring–Exact ICAO code (3 letters)
limitinteger–Lists only: rows per page (default: every row for summaries; 5 with full: true).
offsetinteger–Lists only: rows to skip (default 0). The response gives total and next_offset.
prefixstring–AWB prefix (3 digits)
querystring–General search (name, code, prefix or country — 2 to 200 chars)
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

airport_lookup ~413

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 86,248 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).

NameTypeReqDescription
codesarray–Batch: up to 50 airport codes — 3 letters IATA, 4 characters ICAO — answered as results[] in input order, each with its own status. Send alone.
iatastring–Exact IATA code (3 letters)
icaostring–Exact ICAO / ident (4 chars)
querystring–Name / city / municipality search (2 to 200 chars)
typestring–Optional filter by airport type
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

cbm_calculator ~343

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).

NameTypeReqDescription
height_cmnumberyesHeight in centimetres
length_cmnumberyesLength in centimetres
piecesinteger–Number of identical pieces (default: 1)
width_cmnumberyesWidth in centimetres
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

chargeable_weight_calculator ~494

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).

NameTypeReqDescription
factorinteger–Volumetric divisor (default: 6000)
gross_weight_kgnumberyesActual gross weight in kilograms of ALL pieces together (the total, not one piece) — the dimensions are per piece.
height_cmnumberyesHeight in centimetres
length_cmnumberyesLength in centimetres
piecesinteger–Number of identical pieces (default: 1)
width_cmnumberyesWidth in centimetres
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

consignment_calculator ~951

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). Editions: edition ("2025" | "2027") and as_of (YYYY-MM-DD) choose the ADR edition — edition wins, else the date picks it (ADR 2025 before 2027-01-01, ADR 2027 from then; ADR 2025 may still be applied until 2027-06-30). An answer on a named edition carries adr_edition; neither sent, the answer is ADR 2025 until 2027-01-01. 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_calculato…

NameTypeReqDescription
as_ofstring–YYYY-MM-DD the answer is for (default today, UTC); picks the ADR edition when edition is omitted, and is echoed in the answer and its check receipt.
consignmentobject–Alternative to the other arguments: the consignment object (https://www.freightutils.com/schema/consignment-object.v1.json) — lines[] (description, un_number, packing_group, variant_index, quantity {…
editionstring–ADR edition: "2025" or "2027". Wins over as_of. Omit it and as_of picks the edition by the legal timeline: before 2027-01-01 ADR 2025; from 2027-01-01 ADR 2027 (ADR 2025 may still be applied until 20…
itemsarray–Deprecated flat alias — dimensions in cm, weight in kg. Prefer "lines". Provide lines OR items.
linesarray–Canonical consignment lines (preferred). Each: { quantity, dims:{l,w,h,unit}, weight:{value,unit}, optional description / hs_code / un_number / stackable }.
modestring–Transport mode: sea | air | road (default road). Selects the chargeable-weight basis.
optionsobject–Optional: { air_volumetric_divisor, container_number, awb_number }.
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

container_lookup ~711

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 equivale…

NameTypeReqDescription
fullboolean–Lists only: true returns full records (provenance, sources, rationale) instead of summary rows. A single-record call always returns the full record.
item_height_cmnumber–Load fit: item height in cm.
item_length_cmnumber–Load fit: item length in cm (with item_width_cm and item_height_cm, and type).
item_quantityinteger–Load fit: number of items (default 1).
item_weight_kgnumber–Load fit: weight of ONE item in kg (default 0 — no weight check).
item_width_cmnumber–Load fit: item width in cm.
limitinteger–Lists only: rows per page (default: every row for summaries; 5 with full: true).
offsetinteger–Lists only: rows to skip (default 0). The response gives total and next_offset.
typestring–Container slug (e.g., "20ft-standard", "40ft-high-cube"). Omit to list all.
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

emissions_calculator ~596

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).

NameTypeReqDescription
basisstring–Emissions basis: wtw = well-to-wheel incl. upstream energy (default), ttw = tank-to-wheel / operation only
distance_kmnumberyesTransport distance in kilometres — you provide it; the tool does not route or compute distance
massnumberyesShipment mass, expressed in mass_unit. Example: 1000
mass_unitstring–Unit for mass (default: kg)
modestringyesTransport mode
regionstring–Factor source/region: uk = DEFRA, us = EPA, fr = ADEME. Default is per-mode.
sub_modestring–Optional sub-mode / vehicle class (e.g. "articulated", "container ship", "long-haul"). Omit for the representative default; an unknown value returns available:false with the covered list.
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

get_subscribe_link ~114

Return the FreightUtils pricing page URL with the Pro plan's request limit (50,000 per month) and price. Use when the user asks about FreightUtils plans, pricing or API limits. Behavior: static local response — no API call, never rate-limited, no account or payment action; the user opens the URL in a browser. Returns: url, tier, monthly_limit, monthly_price, currency and note under result.

NameTypeReqDescription
tierstring–Tier to surface (only "pro" supported today)
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

hs_code_lookup ~492

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).

NameTypeReqDescription
codestring–Exact HS code: 2–6 digits, written with or without dots or spaces (e.g. "847130", "8471.30", "0901").
codesarray–Batch: up to 50 HS codes, answered as results[] in input order, each as its own code lookup with its own status. Send alone.
querystring–Search by product description (min 2 chars)
sectionstring–Browse by section (Roman numeral I–XXI)
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

ics2_check ~295

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=<goods 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.

NameTypeReqDescription
descriptionstringyesThe goods description to check against the EU ICS2 stop-words list.
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

incoterms_lookup ~433

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).

NameTypeReqDescription
categorystring–Filter by mode
codestring–Incoterm code (3 letters, e.g., "FOB", "CIF")
fullboolean–Lists only: true returns full records (provenance, sources, rationale) instead of summary rows. A single-record call always returns the full record.
limitinteger–Lists only: rows per page (default: every row for summaries; 5 with full: true).
offsetinteger–Lists only: rows to skip (default 0). The response gives total and next_offset.
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

ldm_calculator ~603

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).

NameTypeReqDescription
length_mmnumber–Custom pallet length in mm
palletstring–Pallet preset
quantityinteger–Number of pallets (default: 1)
stack_heightinteger–Stack height 2 or 3
stackableboolean–Can pallets be stacked?
vehiclestring–Vehicle type. DEPRECATED: rigid10 (removal in 3.0.0) — its 10 m length is published by no manufacturer; use custom with vehicle_length_m, or artic.
vehicle_length_mnumber–Custom vehicle length in m
weight_kgnumber–Weight per pallet in kg
width_mmnumber–Custom pallet width in mm
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

nearest_airport ~429

Find the airports nearest to a caller-provided latitude/longitude, sorted by great-circle (haversine) distance with distance_km on each result. Searches 86,248 airports (OurAirports, public domain). Provide latitude and longitude (decimal degrees); optional radius_km, max_results (1-50, default 10), type filter (e.g. large_airport only) and include_all. By default only airports with scheduled airline service and an IATA code are ranked — never a heliport or a closed field; include_all: true ranks every type except closed fields, and type filters on that type. 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, results[] (the airport record plus distance_km), distance_basis ("great_circle"), filter (scheduled_iata / all / type) and filter_description 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).

NameTypeReqDescription
include_allboolean–Default false: only airports with scheduled airline service and an IATA code (no heliports). true: every airport type except closed fields.
latitudenumberyesLatitude in decimal degrees (-90 to 90)
longitudenumberyesLongitude in decimal degrees (-180 to 180)
max_resultsinteger–Max results to return (1–50, default 10)
radius_kmnumber–Optional maximum distance in kilometres
typestring–Optional filter by airport type
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

pallet_fitting_calculator ~494

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).

NameTypeReqDescription
allow_rotationboolean–Allow 90-degree rotation (default: true)
box_height_cmnumberyesBox height in cm
box_length_cmnumberyesBox length in cm
box_weight_kgnumber–Box weight in kg
box_width_cmnumberyesBox width in cm
max_payload_kgnumber–Max pallet payload in kg
pallet_deck_height_cmnumber–Pallet deck height (default: 15cm)
pallet_length_cmnumberyesPallet length in cm
pallet_max_height_cmnumberyesMax stack height in cm
pallet_width_cmnumberyesPallet width in cm
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

resolve_reference ~682

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). Fourteen 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, ADR Table A codes (special provisions, packing instructions and their PP/B/L provisions, MP, T/BK/TP, tank codes, TU/TC/TE/TA/TT/TM, V/VC/AP/CV/S, vehicle designations, labels, hazard identification numbers — e.g. "TU9" → its meaning, section and review status; a well-formed code no Table A row carries, e.g. "P999", is pattern_only), 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; "336" is an ADR special provision AND a hazard identification number), 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), verifi…

NameTypeReqDescription
qstringyesOne freight identifier — e.g. "176", "UN1845", "NLRTM", "FOB", "LHR", "22G1", "MSKU1100810", "090111", "AKE12345AB", "D/E".
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

shipment_summary ~1,199

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, chargeableW…

NameTypeReqDescription
as_ofstring–YYYY-MM-DD the answer is for (default today, UTC); picks the ADR edition when edition is omitted, and is echoed in the answer and its check receipt.
consignmentobject–Alternative to the other arguments: the consignment object (https://www.freightutils.com/schema/consignment-object.v1.json) — lines[] (description, un_number, packing_group, variant_index, quantity {…
destinationobject–Destination location — ISO country code and optional UN/LOCODE
editionstring–ADR edition: "2025" or "2027". Wins over as_of. Omit it and as_of picks the edition by the legal timeline: before 2027-01-01 ADR 2025; from 2027-01-01 ADR 2027 (ADR 2025 may still be applied until 20…
freight_costnumber–Optional freight cost in GBP for duty calculation, 0 or more (default 0)
incotermstring–Incoterms 2020 three-letter code (e.g. 'DAP', 'EXW', 'FOB')
insurance_costnumber–Optional insurance cost in GBP for duty calculation, 0 or more (default 0)
itemsarray–Array of shipment items with dimensions, weight, and optional HS/UN codes. Required unless the consignment object is sent.
modestring–Transport mode. Required unless the consignment object is sent.
originobject–Origin location — ISO country code and optional UN/LOCODE
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

uk_duty_calculator ~633

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).

NameTypeReqDescription
commodity_codestring–UK tariff commodity code — a declarable 10 digits, spaces allowed (a 6- or 8-digit code is refused with the declarable codes beneath it)
customs_valuenumber–Customs value in GBP. Required unless lines[] is sent.
freight_costnumber–Freight cost in GBP, 0 or more (default 0)
incotermstring–Incoterm basis
insurance_costnumber–Insurance cost in GBP, 0 or more (default 0)
linesarray–Batch: up to 10 lines, each { commodity_code, origin_country, customs_value, freight_cost?, insurance_cost?, incoterm? } — answered as results[] in input order, each as its own call (each line its ow…
origin_countrystring–ISO 2-letter country of origin (e.g. "CN", "US"). Required unless lines[] is sent.
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

uld_lookup ~931

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 some…

NameTypeReqDescription
categorystring–Filter by ULD category
deckstring–Filter by deck position
fullboolean–Lists only: true returns full records (provenance, sources, rationale) instead of summary rows. A single-record call always returns the full record.
limitinteger–Lists only: rows per page (default: every row for summaries; 5 with full: true).
offsetinteger–Lists only: rows to skip (default 0). The response gives total and next_offset.
typestring–ULD code (e.g., "AKE", "PMC") or slug (e.g., "ake-ld3"). Omit to list all.
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

unit_converter ~429

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).

NameTypeReqDescription
fromstringyesSource 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)
tostringyesTarget unit — any source unit, plus the freight targets chargeable_kg and freight_tonnes (only valid from cbm)
valuenumberyesValue to convert
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

unlocode_lookup ~438

Search 116,086 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).

NameTypeReqDescription
codestring–Exact UN/LOCODE lookup (e.g. "GBLHR", "GB LHR", "NLRTM")
codesarray–Batch: up to 50 UN/LOCODEs, answered as results[] in input order, each with its own status. Send alone.
countrystring–ISO 2-letter country code filter (e.g. "GB", "NL")
function_typestring–Filter by location function
limitinteger–Max results (default 20)
querystring–Search by name or code (e.g. "Rotterdam", "GBLHR", "LHR")
NameTypeReqDescription
_metaobject––
_sourceobjectyes–
as_ofstring––
blocking_errorsarray––
citationobjectyes–
confidenceobjectyes–
edition–––
envelope_versionstringyes–
missing_inputsarray––
normalized_inputobject––
okbooleanyes–
resultobjectyes–
statusstring––
validityobject––
warningsarray––

No examples provided.

Install

How do I install the FreightUtils MCP Server server?

FreightUtils MCP Server is a hosted endpoint at https://www.freightutils.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · www.freightutils.com

# add to Claude Code
claude mcp add --transport http soapyred-freightutils 'https://www.freightutils.com/api/mcp'
Common questions

What is the FreightUtils MCP Server server?

FreightUtils MCP Server is listed in the public MCP registry as io.github.SoapyRED/freightutils. Neutral freight reference + validation layer for AI agents: ADR, HS, UN/LOCODE, freight math. This page covers its hosted endpoint (https://www.freightutils.com/api/mcp).

Is the FreightUtils MCP Server server safe to use?

FreightUtils MCP Server scores 84 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the FreightUtils MCP Server server expose?

FreightUtils MCP Server exposes 26 tools: cbm_calculator, chargeable_weight_calculator, ldm_calculator, adr_lookup, adr_exemption_calculator, and 21 more. Their descriptions and schemas cost roughly 22,562 tokens of context every time the server is loaded.

Does the FreightUtils MCP Server server require authentication?

No. We connected to FreightUtils MCP Server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the FreightUtils MCP Server server still maintained?

FreightUtils MCP Server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What did VerifyMCP test on the FreightUtils MCP Server server?

VerifyMCP ran 13 checks on FreightUtils MCP Server, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.