Skip to main content
Glama

capabilities

Detect the carrier from a tracking number

parcel_detect_carrier
Read-onlyIdempotent

Identify which carrier issued a tracking number using a deterministic, versioned signature set - prefixes, lengths, carrier check digits and UPU S10 structure - returning the carrier, how distinctive the match is, every ranked candidate with typed evidence, and the parsed S10 details. No upstream call and no carrier account required. Use when: Which carrier is this tracking number from? Not for: You need tracking events, status or delivery estimates - not yet available. Price: USD 0.001/call (x402), 0.001 (account key).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
origin_countryNoOptional ISO 3166-1 alpha-2 origin country hint. Used only as a small tie-breaker; it never invents a candidate.
tracking_numberYesTracking or consignment number. Spaces and hyphens are removed and letters upper-cased before matching (4-40 letters and digits after normalisation). Digits and letters are never altered.
destination_countryNoOptional ISO 3166-1 alpha-2 destination country hint. Used only as a small tie-breaker; it never invents a candidate.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesCapability output; full JSON Schema at https://api.eckari.com/v1/capabilities/parcel.detect_carrier
metaYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • removedOutput schema / properties / data / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / data / description
      Added value: +"Capability output; full JSON Schema at https://api.eckari.com/v1/capabilities/parcel.detect_carrier"
    • removedOutput schema / properties / data / properties
      Removed value: -{
      -  "candidates": {
      -    "description": "Candidate carriers, highest confidence first, ties broken by carrier_id ascending. Confidence comes from a fixed score table - carrier-unique prefix plus length plus valid check digit 0.98, prefix plus length 0.85, UPU S10 with a valid check digit 0.90, length plus valid check digit 0.80, S10 structure with an invalid check digit 0.45, plus 0.02 when a country hint matches. It is a rule-based heuristic, NOT a calibrated probability. Read 0.80 (length plus check digit, no distinguishing prefix) with care - such a format has no carrier-unique marker, and any number of the right length passes a single decimal check digit about 1 time in 10 by chance (about 1 in 36 for the alphanumeric mod 37,36 check), so a wrong carrier can score 0.80. A carrier-unique prefix is what makes 0.85 and 0.98 distinctive.",
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "carrier_id": {
      -          "description": "Stable Eckari carrier identifier such as ups or usps.",
      -          "type": "string"
      -        },
      -        "carrier_name": {
      -          "description": "Human-readable carrier name.",
      -          "type": "string"
      -        },
      -        "confidence": {
      -          "description": "Deterministic signature MATCH SCORE from the fixed table (0-1, two decimals). It is not a probability and must not be read as one; identical to match_score and kept under this name for compatibility. Use match_strength to know whether the match is distinctive.",
      -          "maximum": 1,
      -          "minimum": 0,
      -          "type": "number"
      -        },
      -        "confidence_basis": {
      -          "description": "Always rule_based_uncalibrated - the score expresses how distinctive the matched format is, not an empirical probability.",
      -          "type": "string"
      -        },
      -        "format_id": {
      -          "description": "Identifier of the matched format within the signature set.",
      -          "type": "string"
      -        },
      -        "match_score": {
      -          "description": "Same value as confidence under its truthful name - a fixed-table match score.",
      -          "maximum": 1,
      -          "minimum": 0,
      -          "type": "number"
      -        },
      -        "match_strength": {
      -          "description": "distinctive = carrier-unique marker (prefix or UPU S10 operator) plus length plus a valid check digit; strong = carrier-unique marker plus length, check digit not verifiable; weak = length plus check digit only with no carrier-unique marker (a number of the right length passes a single decimal check digit about 1 in 10 by chance), or S10 structure with an invalid check digit. Treat weak matches as hints.",
      -          "enum": [
      -            "distinctive",
      -            "strong",
      -            "weak"
      -          ],
      -          "type": "string"
      -        },
      -        "reasons": {
      -          "description": "Why this candidate matched, for example prefix:1Z / length:18 / check_digit:ups_mod10 / upu_s10:GB / country_hint:CA.",
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": "array"
      -        }
      -      },
      -      "required": [
      -        "carrier_id",
      -        "carrier_name",
      -        "confidence",
      -        "confidence_basis",
      -        "match_score",
      -        "match_strength",
      -        "reasons",
      -        "format_id"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "formats_evaluated": {
      -    "description": "Number of distinct formats in the signature set whose pattern matched the normalised number, counted before check digits were applied. Zero with no candidates means no covered format matches this shape at all; a value above zero with no candidates means a covered format matched but its check digit did not validate - a typo or a partial capture rather than an unknown carrier.",
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  "input": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "normalised": {
      -        "description": "Upper-cased value with spaces and hyphens removed - the string the rules were evaluated against.",
      -        "type": "string"
      -      },
      -      "original": {
      -        "description": "Input as supplied, trimmed. Never altered otherwise.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "original",
      -      "normalised"
      -    ],
      -    "type": "object"
      -  },
      -  "is_upu_s10": {
      -    "description": "True when the number matches the UPU S10 postal item structure.",
      -    "type": "boolean"
      -  },
      -  "signature_version": {
      -    "description": "Version of the signature set that produced this result; results are reproducible for a given version.",
      -    "type": "string"
      -  },
      -  "top_candidate": {
      -    "description": "carrier_id of the best candidate, or null when the best score is below 0.5. Check top_candidate_distinctive before acting on it - a weak (length plus check digit) match can name a carrier by chance.",
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "top_candidate_distinctive": {
      -    "description": "True only when top_candidate matched a carrier-unique marker (match_strength distinctive or strong). False when there is no top candidate or it is a weak length-plus-check match.",
      -    "type": "boolean"
      -  },
      -  "upu_s10": {
      -    "additionalProperties": false,
      -    "description": "Parsed UPU S10 components; null when the number is not S10.",
      -    "properties": {
      -      "check_digit_valid": {
      -        "description": "True when the S10 check digit validates against the serial.",
      -        "type": "boolean"
      -      },
      -      "origin_country": {
      -        "description": "ISO 3166-1 alpha-2 country code of the origin designated operator.",
      -        "type": "string"
      -      },
      -      "serial": {
      -        "description": "Eight-digit S10 serial number.",
      -        "type": "string"
      -      },
      -      "service_indicator": {
      -        "description": "Two-letter S10 service indicator such as RB.",
      -        "type": "string"
      -      },
      -      "service_type": {
      -        "description": "Service class implied by the first indicator letter, for example letter_post_registered; null when unrecognised.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "service_indicator",
      -      "service_type",
      -      "serial",
      -      "check_digit_valid",
      -      "origin_country"
      -    ],
      -    "type": [
      -      "object",
      -      "null"
      -    ]
      -  }
      -}
    • removedOutput schema / properties / data / required
      Removed value: -[
      -  "input",
      -  "candidates",
      -  "top_candidate",
      -  "top_candidate_distinctive",
      -  "formats_evaluated",
      -  "is_upu_s10",
      -  "upu_s10",
      -  "signature_version"
      -]
    • addedOutput schema / properties / meta / properties / attribution_url
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / meta / properties / retrieved_at / format
      Added value: +"date-time"
    • addedOutput schema / properties / meta / required
      Added value: +[
      +  "capability",
      +  "version",
      +  "retrieved_at",
      +  "source",
      +  "freshness",
      +  "request_id"
      +]
  2. First observed

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description thoroughly discloses behavioral traits beyond annotations: it is deterministic, uses a versioned signature set, explains how country hints are used only as tie-breakers without inventing candidates, and mentions pricing. The description aligns with annotations (readOnlyHint, idempotentHint, etc.) and adds rich operational detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, with clear sentences covering purpose, method, output, usage guidelines, and pricing. Every sentence adds necessary information and there is no fluff. Structure front-loads the action, then method, then guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (carrier detection, ranking, S10 parsing, pricing) and that an output schema exists, the description is impressively complete. It covers what the tool does, how it works, when/not to use it, costs, and parameter semantics. No gaps are evident for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value by explaining how 'origin_country' and 'destination_country' are purely tie-breakers and never invent candidates, and how 'tracking_number' is normalized (spaces/hyphens removed, letters upper-cased). This is helpful context beyond the schema's regex and length constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: identify which carrier issued a tracking number. It uses specific verbs like 'detect' and 'identify', describes the deterministic method (prefixes, lengths, check digits, UPU S10), and lists what the tool returns. It is well-distinguished from siblings which are in different domains (company, domain, fx, location, weather).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides a use case ('Which carrier is this tracking number from?') and a clear 'not for' case (tracking events, status, delivery estimates). It also mentions no upstream call or carrier account required, which sets expectations for when not to look elsewhere.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources