soapyred avatar

FreightUtils MCP Server

soapyred/freightutils-mcp

Built by a certified freight planner, this server wraps 19 logistics calculation and reference tools into Claude. You get ADR 2025 dangerous goods lookups across 2,939 entries, HS code tariff search, UK duty calculation with live GOV.UK data, and UN/LOCODE resolution for 116,000+ transport locations. The calculators handle loading metres, CBM, chargeable weight, and pallet fitting with rotation. It chains operations too: shipment_summary runs CBM, weight, LDM, ADR checks, and duty in one call. Ships with both stdio and remote HTTP transports. Anonymous usage caps at 25 requests per day; set FREIGHTUTILS_API_KEY for 100 daily on the free tier or 50,000 monthly at nineteen pounds. Useful if you're quoting shipments, validating dangerous goods compliance, or building freight workflows that need structured logistics data instead of hallucinated tariff codes.

GitHub stars
8
tools
26
transport
STDIO, HTTP
last updated
Nov 6, 2026

Install

From registry metadata
$ npx add-mcp https://www.freightutils.com/api/mcp --name freightutils

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http freightutils https://www.freightutils.com/api/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 26 tools

Verified live against the running server on Nov 6, 2026.

cbm_calculatorCalculate 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: deterministi...4 params

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: deterministi...

Parameters* required
height_cm*number
Height in centimetres
length_cm*number
Length in centimetres
piecesinteger
Number of identical pieces (default: 1)
width_cm*number
Width in centimetres
chargeable_weight_calculatorCalculate 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,...6 params

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

Parameters* required
factorinteger
Volumetric divisor (default: 6000)
gross_weight_kg*number
Actual gross weight in kilograms of ALL pieces together (the total, not one piece) — the dimensions are per piece.
height_cm*number
Height in centimetres
length_cm*number
Length in centimetres
piecesinteger
Number of identical pieces (default: 1)
width_cm*number
Width in centimetres
ldm_calculatorCalculate 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 hi...9 params

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

Parameters* required
length_mmnumber
Custom pallet length in mm
palletstring
Pallet presetone of euro · uk · half · quarter
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.one of artic · rigid10 · rigid75 · luton · us53 · us48
vehicle_length_mnumber
Custom vehicle length in m
weight_kgnumber
Weight per pallet in kg
width_mmnumber
Custom pallet width in mm
adr_lookupLook 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, tu...10 params

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, tu...

Parameters* required
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...one of 2025 · 2027
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_cod...
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...one of none · compact · full
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, ea...
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).
adr_exemption_calculatorCalculate 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 entr...11 params

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

Parameters* required
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...one of net · gross
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...one of 2025 · 2027
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...
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 sin...
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.one of I · II · III
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 c...
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...
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 t...one of L · kg
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.
airline_lookupSearch 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...9 params

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

Parameters* required
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)
airport_lookupLook 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 que...5 params

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

Parameters* required
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 typeone of large_airport · medium_airport · small_airport · heliport · closed · seaplane_base
nearest_airportFind 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_resu...6 params

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

Parameters* required
include_allboolean
Default false: only airports with scheduled airline service and an IATA code (no heliports). true: every airport type except closed fields.
latitude*number
Latitude in decimal degrees (-90 to 90)
longitude*number
Longitude 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 typeone of large_airport · medium_airport · small_airport · heliport · closed · seaplane_base
resolve_referenceResolve 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 en...1 params

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

Parameters* required
q*string
One freight identifier — e.g. "176", "UN1845", "NLRTM", "FOB", "LHR", "22G1", "MSKU1100810", "090111", "AKE12345AB", "D/E" — or an fu: identifier from any answer's fu_id / fu_version_id (e.g. "fu:a...
container_lookupGet 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 containe...9 params

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

Parameters* required
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.
hs_code_lookupSearch 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...4 params

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

Parameters* required
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)
incoterms_lookupLook 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). Pro...5 params

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

Parameters* required
categorystring
Filter by modeone of any_mode · sea_only
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.
pallet_fitting_calculatorCalculate 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 r...10 params

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

Parameters* required
allow_rotationboolean
Allow 90-degree rotation (default: true)
box_height_cm*number
Box height in cm
box_length_cm*number
Box length in cm
box_weight_kgnumber
Box weight in kg
box_width_cm*number
Box width in cm
max_payload_kgnumber
Max pallet payload in kg
pallet_deck_height_cmnumber
Pallet deck height (default: 15cm)
pallet_length_cm*number
Pallet length in cm
pallet_max_height_cm*number
Max stack height in cm
pallet_width_cm*number
Pallet width in cm
unit_converterConvert 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 IAT...3 params

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

Parameters* required
from*string
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)one of kg · lbs · oz · tonnes · short_tons · long_tons
to*string
Target unit — any source unit, plus the freight targets chargeable_kg and freight_tonnes (only valid from cbm)one of kg · lbs · oz · tonnes · short_tons · long_tons
value*number
Value to convert
consignment_calculatorCalculate 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, d...7 params

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, d...

Parameters* required
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...one of 2025 · 2027
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.one of sea · air · road
optionsobject
Optional: { air_volumetric_divisor, container_number, awb_number }.
unlocode_lookupSearch 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). Prov...6 params

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

Parameters* required
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 functionone of port · airport · rail · road · icd · border
limitinteger
Max results (default 20)
querystring
Search by name or code (e.g. "Rotterdam", "GBLHR", "LHR")
uk_duty_calculatorEstimate 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; VA...7 params

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; VA...

Parameters* required
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 basisone of EXW · FCA · FAS · FOB · CFR · CIF
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...
origin_countrystring
ISO 2-letter country of origin (e.g. "CN", "US"). Required unless lines[] is sent.
shipment_summaryComposite 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_numbe...10 params

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

Parameters* required
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...one of 2025 · 2027
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.one of road · air · sea · multimodal
originobject
Origin location — ISO country code and optional UN/LOCODE
uld_lookupLook 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 weig...6 params

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

Parameters* required
categorystring
Filter by ULD categoryone of container · pallet · special
deckstring
Filter by deck positionone of lower · main
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.
vehicle_lookupLook 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 inte...6 params

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

Parameters* required
categorystring
Filter by categoryone of articulated · rigid · van
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.
regionstring
Filter by regionone of EU · US
slugstring
Vehicle slug (e.g., "standard-curtainsider"). Omit to list all.
get_subscribe_linkReturn 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...1 params

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

Parameters* required
tierstring
Tier to surface (only "pro" supported today)one of pro
adr_lq_eq_checkCheck 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...4 params

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

Parameters* required
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...one of 2025 · 2027
items*array
Items to check (1–20 per call).
mode*string
Check mode: 'lq' (Limited Quantity, ADR 3.4) or 'eq' (Excepted Quantity, ADR 3.5)one of lq · eq
emissions_calculatorEstimate 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...7 params

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

Parameters* required
basisstring
Emissions basis: wtw = well-to-wheel incl. upstream energy (default), ttw = tank-to-wheel / operation onlyone of wtw · ttw
distance_km*number
Transport distance in kilometres — you provide it; the tool does not route or compute distance
mass*number
Shipment mass, expressed in mass_unit. Example: 1000
mass_unitstring
Unit for mass (default: kg)one of kg · tonnes
mode*string
Transport modeone of road · rail · sea · air · inland_waterway
regionstring
Factor source/region: uk = DEFRA, us = EPA, fr = ADEME. Default is per-mode.one of uk · us · fr
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.
validateValidate 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=<arbitrary string> to find and validate every identifier i...4 params

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=<arbitrary string> to find and validate every identifier i...

Parameters* required
consignmentobject
With type "consignment": the consignment object to validate (https://www.freightutils.com/schema/consignment-object.v1.json). The answer says whether it is valid and which checks it carries the inp...
textstring
Arbitrary string to scan for container / AWB / IMO identifiers (parse mode). Provide this OR value+type.
typestring
Identifier type for value: container = ISO 6346, awb = IATA Air Waybill, imo = IMO ship number; or "consignment" with the consignment argument.one of container · awb · imo · consignment
valuestring
A single identifier to validate (typed mode). Requires type.
ics2_checkCheck 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: determ...1 params

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: determ...

Parameters* required
description*string
The goods description to check against the EU ICS2 stop-words list.
adr_consignment_checkOne 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, mixe...7 params

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, mixe...

Parameters* required
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...one of 2025 · 2027
journeyobject
lines*array
The 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).

Sponsors

Readme

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.


View the full README on GitHub

Details

Repository
github.com/soapyred/freightutils-mcp
Website
www.freightutils.com
Package
freightutils-mcp
Transport
STDIO, HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026