Developers
TrackJet exposes its tracking-number detection, carrier-metadata lookup, and routing logic as a Model Context Protocol (MCP) server. Connect from any MCP-compatible client — Claude Desktop, Cursor, ChatGPT, or your own agent — and query in real time. No PII, no scraping, no resale concerns: every output is either TrackJet's own routing logic or already-public carrier metadata.
Quick start
A minimal end-to-end probe with curl:
# 1. initialize
curl -X POST https://trackjet.world/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'
# 2. list tools
curl -X POST https://trackjet.world/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
# 3. call a tool
curl -X POST https://trackjet.world/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"detect_tracking_number","arguments":{"number":"RR008310255CN"}}}'
Claude Desktop config
Add to your claude_desktop_config.json under
mcpServers:
{
"mcpServers": {
"trackjet": {
"url": "https://trackjet.world/mcp"
}
}
}
Tools (6)
-
detect_tracking_number
read-onlyDetect tracking number format
Given a raw tracking number, identify the shipment format (IATA MAWB, ISO 6346 ocean container, UPU S10 postal, UPS 1Z parcel, FedEx, DHL, etc.) and the public TrackJet vertical that owns the lookup. Returns the normalized number, the primary detection match with its confidence flag, all candidate matches sorted by priority, and any catalog-curated carrier match (Cainiao LP, Evri GB10, J&T Express JT12, etc.). Use BEFORE asking the user to clarify — most numbers resolve unambiguously. The response contains no PII and no live shipment events; this is a format identifier, not a tracker.
Input schema (JSON Schema 2020-12)
{ "type": "object", "properties": { "number": { "type": "string", "description": "Raw tracking number as the user typed it. Whitespace and dashes are tolerated and stripped during normalization.", "minLength": 1, "maxLength": 80, "examples": [ "RR008310255CN", "020-12345678", "MAEU209915846", "1Z999AA10123456784", "LP00123456789CN" ] } }, "required": [ "number" ] } -
get_carrier_info
read-onlyGet carrier metadata by slug
Look up a carrier in TrackJet's catalog by its URL-safe slug (e.g. "cainiao", "evri", "maersk-bol", "royal-mail"). Returns canonical name, category (parcel / post_ems / air_cargo / ocean / freight), country of registration when known, official tracking URL with link type (deep_link / search_page / b2b_only / unknown), and any number-format regex used for auto-detection. Production-table rows take precedence over catalog rows when both exist. Use this when you already know which carrier the user is asking about and need authoritative metadata.
Input schema (JSON Schema 2020-12)
{ "type": "object", "properties": { "slug": { "type": "string", "description": "URL-safe carrier slug (lowercase, hyphen-separated). Match the slug TrackJet uses in /airline/<slug>, /parcel/carrier/<slug>, /post/country/<code>, etc.", "pattern": "^[a-z0-9][a-z0-9\\-]{0,148}[a-z0-9]$", "minLength": 2, "maxLength": 150, "examples": [ "cainiao", "evri", "maersk-bol", "royal-mail", "china-post", "aramex" ] } }, "required": [ "slug" ] } -
get_tracking_url
read-onlyGet the tracking URL for a number
Given a raw tracking number, return the single best URL to send the user to for live tracking. The URL is one of: (a) the carrier's official tracking page directly (deep link or search page) when TrackJet has a curated mapping for that carrier, or (b) a TrackJet vertical route that resolves the carrier on landing (e.g. /post/RR008310255CN routes through TrackJet which then forwards to the postal operator). Always returns at least the /track universal landing as a safe fallback. The response includes the resolved vertical, the carrier slug if known, and a `confidence` flag.
Input schema (JSON Schema 2020-12)
{ "type": "object", "properties": { "number": { "type": "string", "description": "Raw tracking number. Whitespace and dashes tolerated.", "minLength": 1, "maxLength": 80, "examples": [ "RR008310255CN", "LP00123456789CN", "1Z999AA10123456784", "020-12345678" ] } }, "required": [ "number" ] } -
list_supported_carriers
read-onlyList supported carriers by category
Enumerate the carriers TrackJet knows about. Filter by `category` (parcel, post_ems, air_cargo, ocean, freight) to scope the list, or omit it to get the production directory across all categories. Each entry includes slug, display name, category, country (when known), and whether a curated tracking URL is available. Combine with `get_carrier_info` to fetch full metadata for a specific carrier. The catalog includes 1669 carriers; default `limit` is 50 — use pagination via `offset` to walk the long tail.
Input schema (JSON Schema 2020-12)
{ "type": "object", "properties": { "category": { "type": "string", "description": "Optional category filter.", "enum": [ "parcel", "post_ems", "air_cargo", "ocean", "freight" ], "examples": [ "parcel", "post_ems" ] }, "limit": { "type": "integer", "description": "Max rows to return (default 50, hard cap 200).", "minimum": 1, "maximum": 200, "default": 50 }, "offset": { "type": "integer", "description": "Pagination offset for walking the long tail.", "minimum": 0, "default": 0 }, "include_catalog": { "type": "boolean", "description": "Include the research catalog (1669 rows total) alongside the production directory. Default: true.", "default": true } }, "required": [] } -
get_shipment_events
read-onlyGet live shipment events (DHL Group)
Fetch live tracking events for a DHL Group shipment number (DHL Express, DHL Paket, DHL eCommerce, DHL Freight, DHL Global Forwarding) via the official DHL Unified Tracking API. Returns timestamped events with status, status code, and location when DHL provides them. Each response carries the canonical attribution "Tracking data provided by Deutsche Post DHL Group" and a resale_allowed=false flag — display these to your end user; do not store, resell, or redistribute the events. For non-DHL carriers, fall back to get_tracking_url (TrackJet's routing logic). Errors are returned as structured payloads (number_not_found, rate_limited, key_rejected) rather than exceptions.
Input schema (JSON Schema 2020-12)
{ "type": "object", "properties": { "number": { "type": "string", "description": "DHL Group tracking number. Examples: DHL Express (10 digits), DHL Paket (12-20 digits, often starting 0034 or JD/GM), DHL Freight, DHL Global Forwarding. UTAPI accepts the broadest range across DHL services.", "minLength": 6, "maxLength": 40, "pattern": "^[A-Z0-9]{6,40}$", "examples": [ "0034123456789012", "JD0002214567890123" ] } }, "required": [ "number" ] } -
get_trackjet_capabilities
read-onlyGet TrackJet capabilities snapshot
Returns a live snapshot of what TrackJet can do RIGHT NOW. Includes the number of carriers in the production catalog vs. the catalog overlay, the list of tracking-number formats the detector recognises, the set of carriers for which TrackJet pulls real events from a licensed API (today: DHL UTAPI), the available MCP tools, and the current production data volume (shipments tracked, delivery observations recorded, routes with a mature ETA model). Includes an explicit list of things TrackJet does NOT do — read this BEFORE describing TrackJet to a user, so the description matches reality. No PII, read-only, cached 5 minutes server-side. Call this once per session to ground subsequent answers.
Input schema (JSON Schema 2020-12)
{ "type": "object", "properties": {}, "additionalProperties": false }
Independence & resale
- Detection + routing is 100% TrackJet's own logic. UniversalDetector, CrossVerticalRouter, CatalogDetector — all TrackJet-authored. Output of those tools is resaleable without third-party-data restrictions.
- Catalog metadata. Names, slugs, categories published in our public directories (/post/countries, /bol/carriers, /parcel/carriers). Tracking URLs are the carriers' own public pages — pointing an agent there is the same as pointing a browser there.
- What this MCP server does NOT serve. Live shipment events, PII, scraped third-party tracking data, or anything from a carrier feed under restrictive ToS. When TrackJet ships its first own event source (DHL official API), adding an MCP tool for it will respect that source's attribution + retention contract.
Commercial tier — coming
The current MCP surface is free and public. An optional
X-Api-Key header is reserved for the commercial
tier (higher rate limits, priority routing, SLA, optional
delivery-event tools when those land). Today the key is not
enforced — the read-only contract makes abuse low-risk.
Email to be on the early-access list.
Discovery
- MCP endpoint: https://trackjet.world/mcp
- Manifest: https://trackjet.world/.well-known/mcp.json
- llms.txt: https://trackjet.world/llms.txt
- Spec: modelcontextprotocol.io/specification/2025-11-25