FreightUtils MCP Server
About
11 freight logistics tools for AI agents — ADR dangerous goods lookup (2,939 UN entries, UNECE ADR 2025), HS code search (6,940 codes, WCO HS 2022), airline codes (6,352 with AWB prefixes), LDM/CBM/chargeable weight calculators, pallet fitting, container capacity, INCOTERMS 2020, unit converter, and ADR 1.1.3.6…
Details
- Transport
- SSE
Explore
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
FreightUtils MCP ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
cbm_calculator
Calculate cubic metres (CBM) for a shipment from per-piece dimensions. CBM is the standard volume unit in international shipping: 1 CBM = 1m x 1m x 1m = 1,000 litres, and ocean freight prices per "freight tonne" (1 CBM or 1,000 kg, whichever is greater). Behavior: deterministic — identical inputs always return identical figures; total volume = pieces x per-piece CBM, with conversions to cubic feet, cubic inches and litres included. Missing or non-positive dimensions error with a validation m…
chargeable_weight_calculator
Calculate air freight chargeable weight — the greater of actual gross weight and volumetric weight, which is what airlines bill. Volumetric weight (kg) = (L x W x H in cm) / divisor; the IATA-standard divisor is 6,000 (1 CBM = 166.67 kg), while express integrators (DHL, FedEx, UPS) typically use 5,000. Behavior: deterministic; per-piece volumetric weight is rounded to 2 decimal places before totalling; basis reports which weight governs ("volumetric" = cargo is light for its size, "actual" =…
ldm_calculator
Calculate loading metres (LDM) for European road freight — how much trailer length a pallet load occupies. 1 LDM = 1 linear metre of a 2.4m-wide trailer; a standard artic is 13.6 LDM. Provide a pallet preset OR custom length_mm + width_mm — omitting both errors with a usage hint. Behavior: deterministic; stackable=true with stack_height 2 or 3 divides the floor footprint accordingly; fits reports whether the load fits the chosen vehicle's LENGTH (give weight_kg to also see total_weight_kg ag…
adr_lookup
Look up European road dangerous-goods (ADR 2025) reference data for a substance: hazard class, classification code, packing group, labels, special provisions, limited/excepted quantities, transport category, tunnel restriction code and Kemler (hazard identification) number. Covers 2,939 entries across all 9 hazard classes, from UNECE ADR 2025 (ECE/TRANS/352). Provide exactly ONE of: un_number (exact lookup — returns every packing-group variant of that UN number), search (case-insensitive par…
adr_exemption_calculator
Calculate ADR 1.1.3.6 "small load" exemption points for a dangerous-goods load. Each substance's transport category (0-4) sets a points multiplier (category 1 x50, 2 x3, 3 x1, 4 x0; the nine ADR 1.1.3.6.3 note-a entries UN 0081/0082/0084/0241/0331/0332/0482/1005/1017 are x20 with a 50 kg per-transport-unit cap); points = quantity x multiplier, and a load totalling 1,000 points or less qualifies for reduced ADR requirements. Transport category 0 substances can NEVER use this exemption — has_ca…
airline_lookup
Search 6,357 airlines by name, IATA code, ICAO code, AWB prefix, or country. AWB prefixes are the first 3 digits of an air waybill number and identify the issuing carrier (e.g. 176 = Emirates). Provide ONE parameter: query is a ranked fuzzy search across names and codes; iata / icao / prefix / country are exact filters. Behavior: read-only; fuzzy query hits report their match quality through the envelope's confidence (basis match_quality, score 0-1) with a FUZZY_BEST_MATCH advisory naming t…
airport_lookup
Look up an airport by IATA code (3 letters, e.g. "LHR"), ICAO code (4 chars, e.g. "EGLL"), or free-text name/city search (e.g. "heathrow"). Covers 85,555 airports worldwide (OurAirports, public domain, cross-checked vs OpenFlights + Wikidata). Provide ONE of iata, icao, or query; the optional type filter narrows results. Behavior: read-only; exact code hits return one record; ambiguous name searches return ranked candidates (exact codes first, then larger airports) with match quality reporte…
nearest_airport
Find the airports nearest to a caller-provided latitude/longitude, sorted by great-circle (haversine) distance with distance_km on each result. Searches 85,555 airports (OurAirports, public domain). Provide latitude and longitude (decimal degrees); optional radius_km, max_results (1-50, default 10) and type filter (e.g. large_airport only). Coordinates are INPUT only — nothing is stored or logged. Behavior: deterministic distance sort; confidence reflects proximity and airport size (a large…
resolve_reference
Resolve an arbitrary freight identifier — one opaque string in, typed and cited candidates out. The agent front door: when you hold an identifier-ish token ("176", "UN1845", "NLRTM", "FOB", "22G1", "MSKU1100810", "D/E") and do not know which lookup tool fits, call this FIRST and follow the candidate's api_url / canonical_url (or the matching sibling tool) for depth. Provide q: ONE identifier (single token, max 32 chars). Thirteen grammars all run — UN numbers, AWB prefixes, airline IATA/ICAO…
container_lookup
Get ISO shipping-container specifications, with optional load-fit maths. Covers 10 types: 20ft/40ft standard, 40ft and 45ft high-cube, 20ft/40ft reefer, 20ft/40ft open-top and 20ft/40ft flat-rack. Provide type as a slug (e.g. "20ft-standard", "40ft-high-cube") for one container's record; omit it to list all 10. Add item dimensions (item_length_cm/width_cm/height_cm, optional item_weight_kg and item_quantity) to also compute how many such items fit. Behavior: read-only reference data with pe…
hs_code_lookup
Search 6,940 WCO Harmonized System (HS 2022) commodity codes — the 6-digit international customs classification layer. The first 2 digits are the chapter, 4 the heading, 6 the subheading. Provide ONE of: query (free-text description search, min 2 chars), code (2-6 digit lookup, returns the code plus its hierarchy), or section (Roman numeral I-XXI to browse a section). Behavior: read-only; description search is keyword-based against official HS descriptions, so everyday product words can ret…
incoterms_lookup
Look up the 11 Incoterms 2020 trade rules — who pays for transport, insurance and customs clearance, and where risk transfers from seller to buyer. 7 rules work for any transport mode (EXW, FCA, CPT, CIP, DAP, DPU, DDP); 4 are sea/inland-waterway only (FAS, FOB, CFR, CIF). Provide code for one rule, category (any_mode | sea_only) for a filtered list, or neither to list all 11. Behavior: read-only reference; an unknown code errors with the valid code list. Rate-limited (anonymous use: 25 requ…
pallet_fitting_calculator
Calculate how many identical boxes fit on a pallet: boxes per layer (trying 90-degree rotation when allowed), layer count within the max height, totals, volume utilisation and weight capping. Behavior: deterministic geometric packing of one box size in aligned rows and columns — it does not model interlocked or mixed-orientation patterns; weight_limited reports when max_payload_kg caps the count below the geometric fit; pallet_deck_height_cm defaults to 15. Missing or non-positive dimensions…
unit_converter
Convert freight and logistics units: weight (kg, lbs, oz, tonnes, short_tons, long_tons), volume (cbm, cuft, cuin, litres, gal_us, gal_uk), length (cm, inches, m, feet, mm), plus two freight-specific targets valid only FROM cbm — chargeable_kg (air volumetric weight at the IATA 6,000 divisor, 1 CBM = 166.67 kg) and freight_tonnes (sea W/M, 1 CBM = 1 freight tonne). Behavior: deterministic; the response names both units and states the formula used. Cross-dimension conversions (e.g. kg to litr…
consignment_calculator
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…
unlocode_lookup
Search 116,232 UN/LOCODE transport locations worldwide — ports, airports, rail and road terminals, inland container depots and border crossings. Codes are 5 characters: a 2-letter ISO country code + a 3-character location code (GBLHR = London Heathrow, NLRTM = Rotterdam). Provide code for an exact record, or query (name search, min 2 chars) optionally narrowed by country and function_type; limit caps results (default 20, max 100). Behavior: read-only; exact code hits are provenance-based wh…
uk_duty_calculator
Estimate UK import duty and VAT for a commodity code using the LIVE GOV.UK Trade Tariff — rates are fetched per request, not from a static table. The CIF value is composed from customs_value + freight_cost + insurance_cost; duty = CIF x the duty rate for the origin country; VAT (typically 20%) applies on the duty-inclusive value. Provide commodity_code (6-10 digits), origin_country (ISO-2) and customs_value in GBP; freight_cost, insurance_cost and incoterm are optional refinements. Behavior…
shipment_summary
Composite shipment analysis in one call: volume (CBM), gross and chargeable weight, road LDM with pallet spaces and a vehicle suggestion (road mode), volumetric weight (air), revenue tonnes with a container suggestion (sea), dangerous-goods presence for items carrying un_number, and UK duty estimates for items carrying hs_code + customs_value. Provide mode (road | air | sea | multimodal) and items[] (dims in cm, weight in kg, quantity; optional stackable, pallet_type, hs_code, un_number, cus…
uld_lookup
Look up air-cargo ULD (Unit Load Device) specifications — 16 types spanning lower-deck containers (AKE/LD3 and family), main-deck pallets (PMC, PAG and family) and temperature-controlled units. Each record carries external/internal/door dimensions (cm), tare and max gross weight (kg), usable volume (m³), deck position and compatible aircraft. Provide type as an IATA code ("AKE", "PMC") or slug ("ake-ld3"); omit it to list all 16; category (container | pallet | special) and deck (lower | main…
vehicle_lookup
Look up road-freight vehicle and trailer specifications — 17 types: EU articulated trailers (standard/mega curtainsider, box, reefer, double-deck, flatbed, low-loader), US 53ft/48ft dry vans, rigid trucks (7.5-26 t) and vans (Luton, Transit, Sprinter). Each record carries internal dimensions, payload and gross weights, euro/UK pallet capacity, axle configuration and features. Provide slug (e.g. "standard-curtainsider") for one record; omit it to list all 17; category (articulated | rigid | v…
get_subscribe_link
Get the URL where the user can subscribe to FreightUtils Pro for higher API limits (50,000 requests/month). Use when the user asks how to upgrade or about pricing, or after any other tool errors with a 429 rate_limited body. Behavior: static local response — no API call, never rate-limited. Returns: url, tier, monthly_limit, monthly_price, currency and note under result. Hand the URL to the USER to open in a browser — agents must NOT attempt to complete the subscription themselves.
adr_lq_eq_check
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 pac…
emissions_calculator
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 mist…
validate
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 in it (e.g. a booking-email line), OR pass value=<identifier> + type=<container|awb|imo> to validate one. Behavior: deterministic check-digit arithmetic; per identifier found it reports type, the normalised form, valid …
ics2_check
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 list…
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"freightutils mcp server": {
"server": {
"command": "npx",
"args": [
"-y",
"freightutils-mcp"
]
}
}
}
}
McpServers
{
"server": {
"command": "npx",
"args": [
"-y",
"freightutils-mcp"
]
}
}
Transport
"stdio"
Package
"freightutils-mcp"
Registry
"npm"
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.
Every response cites its source — a_sourceblock with the authority, edition, licence where held, and a verification status an agent can read — and the tools are deterministic, not generated answers. Reference only: never filing, booking, or legal advice, and results state when human review is required (validateis structural check-digit validation only; a cleanics2_checkis not ENS acceptance; emissions figures are estimates, not audited reports).
Since2.11.0, every tool also declares a typedoutputSchemaand returnsstructuredContent— the FreightUtils v1 response envelope: the answer underresult, plusconfidence,normalized_input,warnings,_sourceand a ready-to-usecitation. The legacy flat JSON text channel is unchanged (byte-identical), so existing text-parsing consumers are unaffected.
Website:https://www.freightutils.comAPI Docs:https://www.freightutils.com/api-docs
Add to your MCP config (claude_desktop_config.jsonor.claude/settings.json):
{ "mcpServers": { "freightutils": { "command": "npx", "args": ["freightutils-mcp"] } } }
If your MCP client supports remote servers, use the canonical URL:
The older URLhttps://www.freightutils.com/api/mcp/mcpstill works for backwards compatibility with existing clients.
No API key required to get started — anonymous calls work out of the box (see Rate Limits below).
Anonymous usage caps at 25 requests/day per IP. If you have a free or Pro API key, setFREIGHTUTILS_API_KEYin the environment that runs the MCP server. The package reads it fromprocess.envand attachesAuthorization: Bearer <key>to every outbound/api/*call — same key the remotehttps://www.freightutils.com/api/mcptransport already honors.
stdio config example with the env var wired through:
{ "mcpServers": { "freightutils": { "command": "npx", "args": ["freightutils-mcp"], "env": { "FREIGHTUTILS_API_KEY": "fu_pk_xxx" } } } }
Get a key atfreightutils.com/api-docs(free, 100/day) orfreightutils.com/pricing(Pro, 50,000/month). Backwards compatible — unset env var preserves the existing anonymous behaviour.
After adding FreightUtils to your MCP client config,fully quit and relaunch the client(Claude Desktop, Cursor, Cline). MCP servers are only loaded at client startup; editing the config in a running session does nothing until restart.
Then run the install diagnostic from a terminal:
You should see three ticks andAll checks passed:
FreightUtils MCP Diagnostic ─────────────────────────── package: [email protected] health: https://www.freightutils.com/api/mcp/health [1/3] Backend health (https://www.freightutils.com/api/mcp/health) ✓ status=ok mcp_version=2.10.0 tools_registered=24 (143ms) [2/3] MCP handshake (in-process via InMemoryTransport) ✓ server [email protected] initialized; tools/list returned 24 tools [3/3] End-to-end tool call (cbm_calculator l=120 w=80 h=100) ✓ cbm_calculator → total=0.96 m³ (expected 0.96) (218ms) All checks passed. Your FreightUtils MCP install is working.
If any check shows ✗, seeTroubleshootingbelow. Exit code is 0 on all-pass and 1 on any failure, so the command works in CI / health-check scripts too.
The full diagnostic flow lives at the/api-docs#mcp-setupsection on the website. The live backend status is callable from inside any MCP client atGET /api/mcp/health— useful when you don't have shell access during a conversation.
All tools call the free FreightUtils API:
- Anonymous:25 requests/day per IP
- Free API key:100 requests/day (register athttps://www.freightutils.com)
- Pro:50,000 requests/month at £19/month
- "Calculate CBM for a box 120cm × 80cm × 100cm, 24 pieces"
- "Look up UN 1203 in the ADR database"
- "Check if 200L of petrol qualifies for ADR 1.1.3.6 exemption"
- "Find the HS code for lithium batteries"
- "What does FOB mean in shipping?"
- "How many boxes of 40×30×25cm fit on a euro pallet?"
- "Calculate loading metres for 26 euro pallets on an artic trailer"
- "What's the UK import duty on laptops from China?"
- ADR 2025— UNECE (licensed from Labeline.com)
- HS 2022— UN Comtrade (PDDL)
- Airlines— public IATA/ICAO data, cross-referenced
- UN/LOCODE— UNECE
- UK Duty— live GOV.UK Trade Tariff API
- Containers/ULD/Vehicles— ISO, IATA, and industry-standard specifications
Full release notes also onGitHub Releases.
- consignment_calculator→ canonical consignment v1.New transportmode(sea | air | road) and a canonicallines[]shape (each line:quantity,dims {l,w,h,unit}mm/cm/m/in,weight {value,unit}kg/g/t/lb, optionaldescription/hs_code/un_number/stackable), plus anoptionsobject (air_volumetric_divisordefault 6000,container_number,awb_number). The legacy flatitems[]array (cm/kg) still works unchanged. Output gains per-line + grand totals, aschema_version, and advisory-only flags (implausible density, mode/option mismatch, dangerous-goods presence by UN number vs the ADR 2025 reference, ISO 6346 / IATA AWB check-digit) plus a best-effort disclaimer. Canonical schema:https://www.freightutils.com/schema/consignment.v1.json.No tool-count change (19).
2.0.0 — 2026-04-25 (BREAKING — input-side casing)
- Tool input schemas migratedcamelCase→snake_caseto match the response convention shipped in 1.1.0. 13 input keys renamed acrossuk_duty_calculator,consignment_calculator, andshipment_summary(e.g.commodityCode→commodity_code,originCountry→origin_country,items[].grossWeight→items[].gross_weight). Agents calling these tools with prior camelCase keys now get a Zod validation error instead of a 200.Re-prompt or update tool-call code.
- All other tools (cbm_calculator,chargeable_weight_calculator,ldm_calculator,pallet_fitting_calculator,unit_converter, ADR family,airline_lookup,container_lookup,hs_code_lookup,incoterms_lookup,unlocode_lookup,uld_lookup,vehicle_lookup) already used snake_case (or single-word) input keys and are unchanged.
1.1.0 — 2026-04-25 (BREAKING — response-side casing)
- API responses migratedcamelCase→snake_casesite-wideacross/api/unlocode,/api/uld,/api/containers,/api/vehicles,/api/consignment,/api/duty. All MCP tools in this package are passthroughs, so AI agents see snake_case keys (e.g.commodity_code,location_code,internal_length_cm) instead of the prior camelCase forms.Re-prompt or update parsing logic.
- No code changes to MCP tool implementations — every tool was already a passthrough wrapper aroundapiGet/apiPost. Input schemas continue to declare camelCase here; 2.0.0 deliberately closes that asymmetry.
- README badges: added monthly + total npm downloads alongside the existing version + license + Glama score badges.
- Critical fix:revertlist_prompts/list_resourcesstub handlers introduced in 1.0.7. The raw SDK asserts the corresponding capability must be declared beforesetRequestHandleris called — 1.0.7 threwServer does not support promptsat startup, crashing the MCP server on every run. 1.0.8 removes the stubs and restores boot.
- Server identity bumped:version: '1.0.7'→'1.0.8'.
- No other changes. 18 tools, annotations,shipment_summarydescriptions, andsmithery.yamlfrom 1.0.7 are preserved.
- Addsmithery.yamlwith empty configSchema (Smithery Quality Score: config UX +25).
- Add read-onlyannotationsto all 18 tools (readOnlyHint: true,destructiveHint: false,idempotentHint: true,openWorldHint: false) with human-readabletitle(+7).
- Add missing parameter.describe(...)text toshipment_summary(+1).
- Add stublist_prompts/list_resourceshandlers so probes return{ prompts: [] }/{ resources: [] }instead of-32601 Method not found(+5).
- Fix server identity:name: 'FreightUtils'→'freightutils-mcp',version: '1.0.0'→'1.0.7'.
- No breaking changes. Same 18 tools, same names, same behaviour.
- Security: bump@modelcontextprotocol/sdkto1.26.0to patchCVE-2026-25536(cross-client data leak via shared transport/server instance reuse). SeeGHSA-345p-7cg4-v4c7.
- No user-facing API changes. Same 18 tools.
FreightUtils ships across multiple distribution surfaces. Pick the one that fits how you work:
- Website— interactive tools atfreightutils.com
- REST API— 23 endpoints, free tier (100/day) and Pro tier (50K/month, £19/mo).API docs
- MCP server— for LLM agents and AI tooling.npm: freightutils-mcp·MCP Registry
- n8n custom node— for workflow automation.npm: n8n-nodes-freightutils
- Custom GPT— theFreightUtils GPTon the OpenAI GPT Store, backed by the same OpenAPI spec.
Same data, same compliance reference set (ADR 2025, HS 2022, IATA-regulated airline prefixes), every surface kept in sync.
Built byMarius Cristoiu, ADR-certified freight transport planner.
Global postal code lookups, validation, and city search for 70+ countries. Sub-10ms responses.
Connect to any financial, utility, billing accounts; retrieve balance, transactions, payment and identity data instantly.
A healthcare MCP server for EMRs like Cerner and Epic, providing tools to interact with FHIR data and medical resources.
65+ AI tools as an MCP server. Research, write, code, scrape, translate, analyze, agent memory, workflows. Pay per call from $0.006.
Real-time flight tracking, airport schedules, delays, and reference data for airlines, airports, aircraft, and routes via the AirLabs API.
MCP server that connects to the Airplanes.live API to provide real-time flight and aircraft data for analysis or visualization.
A Model Context Protocol (MCP) server that provides comprehensive access to the ALMA (Atacama Large Millimeter/submillimeter Array) archive through a clean, extensible architecture.
Remote MCP server giving AI agents instant access to comprehensive vehicle data: VIN decoding, license-plate lookup, stolen-vehicle checks, mileage history, inspection records, photos, and market valuations across 24 markets. Connect with a single Authorization: Bearer API key from any MCP client (Claude Desktop, Claude Code, Cursor, ChatGPT, Cline, Zed). Stateless and hosted at https://mcp.carapi.dev/mcp — no setup, no session management, just plug in your key and start querying. Includes a free carapi_docs tool for searching CarAPI documentation without authentication.
Verify US/Canada freight carriers and brokers: live FMCSA data, trust scores, registry search, and partner watchlist monitoring for AI agents.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



