Skip to content
TrackJet
MCP server · read-only · public

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

    Detect 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-only

    Get 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-only

    Get 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-only

    List 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-only

    Get 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-only

    Get 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