Developer docs

Tariff Code Compliance MCP Server

Hosted MCP access to the Tariff Code Compliance knowledge graph for tariff-system discovery, code traversal, normalized entity lookup, and graph edge inspection.

Endpoint

The MCP server is an Auth0 OAuth-protected remote Streamable HTTP endpoint. It does not expose public preview or truncated responses.

https://api.prod.tariffcodecompliance.com/tariff-code-compliance/v1/mcp

The exact endpoint URL is also the OAuth resource and token audience. Access requires scope tcc.knowledge_graph.read plus the current Explorer product entitlement explorer.mcp.read.

Protected-resource metadata:

https://api.prod.tariffcodecompliance.com/.well-known/oauth-protected-resource

Agent quick start

Claude

Add the endpoint as a private custom connector. Claude discovers Auth0 from the protected-resource metadata, registers the connector client, and opens the Auth0 sign-in and consent flow. After consent, call list_tariff_systems before selecting an explicit system and version for deeper tools.

ChatGPT

In developer mode, create an app for the endpoint above. ChatGPT discovers the OAuth configuration, registers the connector client, and opens the Auth0 sign-in and consent flow. After consent, call list_tariff_systems and then one of the version-scoped read tools.

Both clients use Auth0 Dynamic Client Registration, authorization code with PKCE, and renewable credentials. A new Auth0 identity receives its Explorer identity and initial MCP entitlement automatically; an existing identity keeps its current grant state.

For protocol troubleshooting after completing OAuth, an Auth0-issued MCP access token can be sent as a standard Bearer token:

export AUTH0_MCP_ACCESS_TOKEN="<Auth0-issued MCP access token>"

curl -sS https://api.prod.tariffcodecompliance.com/tariff-code-compliance/v1/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer ${AUTH0_MCP_ACCESS_TOKEN}" \
  --data '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "list_tariff_systems",
      "arguments": {}
    }
  }'

The raw HTTP response is an MCP JSON-RPC response. Tool payloads are returned inside the MCP result object; the examples below show the parsed JSON payload for the called tool.

Tools

  • list_tariff_systems
  • describe_schema
  • search_entities
  • get_code
  • get_code_children
  • get_entity
  • list_entity_edges

Discovery tools identify available systems and versions. Traversal tools require explicit system and version arguments and return normalized JSON contracts instead of raw database rows or stored knowledge graph JSON. Paged tools always return up to 25 items; clients cannot request heavier page sizes.

Example traversal

All calls are JSON-RPC requests sent to the MCP endpoint. The examples below use the sandbox knowledge graph output shape with US_HTS version 2026-rev-4; production clients should first call list_tariff_systems and use the returned version.

List tariff systems

Input:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_tariff_systems",
    "arguments": {}
  }
}

Output:

{
  "systems": [
    {
      "system": "US_HTS",
      "display_name": "U.S. Harmonized Tariff Schedule",
      "enabled": true,
      "default_version": "2026-rev-4",
      "default_system_version_id": "sysv:US_HTS:US:2026-rev-4",
      "versions": [
        {
          "version": "2026-rev-4",
          "system_version_id": "sysv:US_HTS:US:2026-rev-4",
          "is_default": true
        }
      ]
    }
  ]
}

Describe schema

Input:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "describe_schema",
    "arguments": {
      "system": "US_HTS",
      "version": "2026-rev-4"
    }
  }
}

Output:

{
  "schema_id": "knowledge_graph.v2.normalized.mcp.v1",
  "auth": "Every MCP request requires an Auth0 OAuth access token with scope tcc.knowledge_graph.read and a current explorer.mcp.read entitlement. The MCP endpoint does not return public preview data.",
  "entity_types": [
    { "entity_type": "code", "fields": ["entity_id", "code", "display_code", "level", "description", "uom", "tariff_rates.rate_lines[].program_symbols[]", "tariff_rates.rate_lines[].program_symbol_details[{symbol,program?}]"] },
    { "entity_type": "note", "fields": ["entity_id", "title", "text", "scope_code_digits", "ordinal_path", "ordinal_display", "kind"] },
    { "entity_type": "term", "fields": ["entity_id", "scope", "term", "normalized", "match_variants", "definition_relation"] },
    { "entity_type": "annotation", "fields": ["entity_id", "source_type", "title", "summary", "text"] }
  ],
  "edge_relations": [
    { "value": "parent_of", "description": "Hierarchy edge from parent entity to child entity." },
    { "value": "applies_to", "description": "Entity applies to another entity." },
    { "value": "references", "description": "Entity references another entity." },
    { "value": "defines", "description": "Entity defines another entity or term." },
    { "value": "excludes", "description": "Entity excludes another entity." }
  ],
  "edge_filters": ["direction", "relation", "entity_type"],
  "tool_limits": {
    "page_size": 25
  }
}

For code entities, tariff_rates.rate_lines[].program_symbols is an array of raw special-program symbol strings. tariff_rates.rate_lines[].program_symbol_details is an array of { "symbol": string, "program"?: object } values. program is present when Tariff Code Compliance has cataloged details for that special-program symbol.

Search entities

Input:

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "search_entities",
    "arguments": {
      "system": "US_HTS",
      "version": "2026-rev-4",
      "query": "sports equipment"
    }
  }
}

Output:

{
  "results": [
    {
      "entity_id": "ent:code:US_HTS:US:2026-rev-4:CHAPTER:95",
      "code": "95",
      "display_code": "95",
      "level": "CHAPTER",
      "description": "Chapter 95: Toys, Games And Sports Equipment; Parts And Accessories Thereof"
    }
  ],
  "page": {
    "has_more": false,
    "total_count": 1
  }
}

Get one code

Input:

{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "get_code",
    "arguments": {
      "system": "US_HTS",
      "version": "2026-rev-4",
      "code": "9506"
    }
  }
}

Output:

{
  "code": {
    "entity_id": "ent:code:US_HTS:US:2026-rev-4:HEADING:9506",
    "code": "9506",
    "display_code": "9506",
    "level": "HEADING",
    "description": "Articles and equipment for general physical exercise, gymnastics, athletics, other sports (including table-tennis) or outdoor games..."
  }
}

Get code children

Input:

{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "get_code_children",
    "arguments": {
      "system": "US_HTS",
      "version": "2026-rev-4",
      "code": "95"
    }
  }
}

Output:

{
  "parent": {
    "entity_id": "ent:code:US_HTS:US:2026-rev-4:CHAPTER:95",
    "code": "95",
    "display_code": "95",
    "level": "CHAPTER",
    "description": "Chapter 95: Toys, Games And Sports Equipment; Parts And Accessories Thereof"
  },
  "children": [
    { "code": "9503", "display_code": "95.03", "level": "HEADING", "description": "Tricycles, scooters, pedal cars and similar wheeled toys..." },
    { "code": "9504", "display_code": "9504", "level": "HEADING", "description": "Video game consoles and machines, table or parlor games..." },
    { "code": "9505", "display_code": "9505", "level": "HEADING", "description": "Festive, carnival or other entertainment articles..." },
    { "code": "9506", "display_code": "9506", "level": "HEADING", "description": "Articles and equipment for general physical exercise, gymnastics, athletics, other sports..." },
    { "code": "9507", "display_code": "9507", "level": "HEADING", "description": "Fishing rods, fish hooks and other line fishing tackle..." },
    { "code": "9508", "display_code": "9508", "level": "HEADING", "description": "Traveling circuses, traveling menageries and traveling theaters..." }
  ],
  "page": {
    "has_more": false,
    "total_count": 6
  }
}

List entity edges

Input:

{
  "jsonrpc": "2.0",
  "id": 6,
  "method": "tools/call",
  "params": {
    "name": "list_entity_edges",
    "arguments": {
      "system": "US_HTS",
      "version": "2026-rev-4",
      "entity_id": "ent:code:US_HTS:US:2026-rev-4:NATIONAL_8:84805000",
      "direction": "outgoing",
      "relation": "parent_of",
      "entity_type": "code"
    }
  }
}

Output:

{
  "edges": [
    {
      "edge_id": "edge:parent_of:from:ent:code:US_HTS:US:2026-rev-4:NATIONAL_8:84805000:to:ent:code:US_HTS:US:2026-rev-4:NATIONAL_10:8480500010",
      "relation": "parent_of",
      "direction": "outgoing",
      "from_entity_id": "ent:code:US_HTS:US:2026-rev-4:NATIONAL_8:84805000",
      "from_entity_type": "code",
      "to_entity_id": "ent:code:US_HTS:US:2026-rev-4:NATIONAL_10:8480500010",
      "to_entity_type": "code",
      "source_id": "src:us_hts:2026-rev-4:csv"
    },
    {
      "edge_id": "edge:parent_of:from:ent:code:US_HTS:US:2026-rev-4:NATIONAL_8:84805000:to:ent:code:US_HTS:US:2026-rev-4:NATIONAL_10:8480500090",
      "relation": "parent_of",
      "direction": "outgoing",
      "from_entity_id": "ent:code:US_HTS:US:2026-rev-4:NATIONAL_8:84805000",
      "from_entity_type": "code",
      "to_entity_id": "ent:code:US_HTS:US:2026-rev-4:NATIONAL_10:8480500090",
      "to_entity_type": "code",
      "source_id": "src:us_hts:2026-rev-4:csv"
    }
  ],
  "page": {
    "has_more": false,
    "total_count": 2
  }
}

Markdown

The canonical source for this page is available as Markdown at /docs/mcp.md.