TL;DR
- One MCP endpoint:
POST https://mcp.tandom.ai/mcp. JSON-RPC 2.0, MCP protocol version 2024-11-05, auth viaAuthorization: Bearer tk_live_...for direct clients, or a supported OAuth connection flow in hosted clients. The public tool catalog is free to use with fair-use safeguards; it is not an anonymous endpoint. - The AD/CVD tool:
tandom_adcvd_checkrequiresproductDescriptionandcountryOfOrigin; HTS code, entry date, manufacturer, and exporter are optional supporting facts. It returns an array of matched orders with case numbers, types (AD or CVD), product descriptions, parsed rates, and full scope text. The same structured response that powers the Tandom AD/CVD catalog atcompliance.tandom.ai/adcvd-catalog. - Claude Desktop wiring: add a custom remote connector pointing at
mcp.tandom.ai/mcpthrough Claude's current connector settings. Plan eligibility, workspace approval, and authentication are controlled by the client; inspect the discovered tools before approving a call. - Worked example below: ask Claude whether steel studs threaded along their length, HTS 7318.15.50.90, from China may be subject to AD/CVD and inspect the tool-use trace. The dated response shape below shows four candidate matches and how a client can organize them for human scope and rate review; re-run the request for current data.
What is Model Context Protocol
Model Context Protocol (MCP) is the open JSON-RPC spec, published by Anthropic at modelcontextprotocol.io, that defines how an AI agent discovers and invokes external tools. It standardizes three things: how an agent asks a server what tools exist (tools/list), how it calls one (tools/call), and how the server replies. Everything else is regular JSON-RPC 2.0 over HTTP.
For import decisions, the practical impact is that a compatible MCP client can call Tandom's reviewed HTS, duty, AD/CVD, PGA, Chapter 99, and regulatory-status tools without a custom REST wrapper. An importer, sourcing team, or broker can discover the same read-only catalog from the same endpoint.
The wire protocol is plain HTTP plus JSON. There is nothing model-specific about the server. Any MCP client can call it, including agents you build yourself in Python, TypeScript, or anything that can POST JSON.
Tandom MCP endpoints
Use the canonical remote endpoint below. Public refers to the reviewed tool catalog, not anonymous access.
Canonical remote endpoint
POST https://mcp.tandom.ai/mcp Authorization: Bearer tk_live_... Content-Type: application/json
Direct programmatic access uses a Tandom Bearer API key. A hosted client may instead use a supported OAuth flow. The available catalog contains 13 read-only tools; it does not expose classification, document extraction, form generation, monitoring, report generation, or other write-capable operations.
Discover the tool list
After authentication, call tools/list to discover the machine-readable names, descriptions, input schemas, and read-only annotations. Treat that response as the runtime source of truth.
curl -sS -X POST https://mcp.tandom.ai/mcp -H "Authorization: Bearer tk_live_..." -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'Tool surface
The MCP server adapts Tandom's current public REST and tariff catalog lookups into reviewed read-only tools. It is a JSON-RPC adapter over existing data and calculations, not a separate engine or a mirror of every REST endpoint.
HTS catalog
lookup_hts_code: full tariff profile for a US HTS code. Returns rates, Section 232 / 301 flags, AD/CVD presence, trade programs, PGA flags, related codes.search_hts_codes: keyword or prefix search across the schedule, with chapter filter and limit.list_chapters: all 22 sections plus chapter ranges.get_chapter_codes: hierarchical dump of one chapter.
Duty and trade-action
tandom_duty_calculate: full landed-duty stack for an HTS line. WrapsGET /v1/duty/calculate.tandom_pga_check: Partner Government Agency flags and required documents.tandom_chapter99_applicable: applicable Chapter 99 additional duties and exclusions for HTS plus origin plus date.tandom_hts_search,tandom_hts_notes,tandom_hts_hierarchy: REST-API parity for HTS lookups, notes, and hierarchy traversal.
AD/CVD intelligence
tandom_adcvd_check: returns matches against the active AD/CVD order list for a product description and country of origin, with optional HTS, manufacturer, exporter, and entry-date context. WrapsGET /v1/adcvd/check.tandom_adcvd_orders_search: keyword or case-number search across the order list.
Regulatory data
tandom_regulatory_status: freshness and version information for Tandom's regulatory data sources.
The complete public allowlist contains exactly 13 tools: lookup_hts_code, search_hts_codes, list_chapters, get_chapter_codes, tandom_duty_calculate, tandom_pga_check, tandom_chapter99_applicable, tandom_hts_search, tandom_hts_notes, tandom_hts_hierarchy, tandom_adcvd_check, tandom_adcvd_orders_search, tandom_regulatory_status. If a name is not returned by tools/list, do not call it.
Connect Tandom to Claude
Claude's remote-connector flow, availability, and workspace controls can change. Start with Anthropic's current guide at support.claude.com and confirm that your plan and workspace permit custom connectors.
1. Open Claude's connector settings
Use the custom-connector control available to your Claude account. Team and Enterprise workspaces may require an owner or administrator to add and enable the connection.
2. Register the remote endpoint
Name: Tandom Remote MCP URL: https://mcp.tandom.ai/mcp
Complete the authentication flow supported by Claude and your workspace. Do not paste an API key into a chat message.
3. Inspect the discovered tools
The connection should expose 13 reviewed, read-only tools. Keep Claude's normal approval controls enabled, inspect the arguments before each call, and treat returned import data as decision support that still requires qualified review.
Claude Code wiring (optional)
Follow Claude Code's current remote-MCP documentation rather than copying the Desktop instructions. Register the same endpoint, use the supported authentication mechanism, and avoid committing API keys to a project file.
Custom MCP clients
If you build your own AI agent in Python, TypeScript, or any stack that can POST JSON, the wire protocol is the same. Send a tools/list JSON-RPC call to discover tools, send tools/call with a tool name and arguments to invoke one. Reference clients in modelcontextprotocol on GitHub show the pattern.
Worked example
This request shape uses HTS 7318.15.50.90 (Studs of iron or steel, Other), country of origin China, entry date April 15, 2026, and a plain-English product description. Re-run the call for current data before relying on the result.
1. Discover the tool list
curl -sS -X POST https://mcp.tandom.ai/mcp \
-H "Authorization: Bearer tk_live_..." \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}'The response carries every available tool with its input schema. The tandom_adcvd_check entry looks like this (trimmed):
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
...,
{
"name": "tandom_adcvd_check",
"title": "Check AD/CVD Exposure",
"description": "Check whether a product, HTS code, country, manufacturer, or exporter may be subject to antidumping or countervailing duty orders.",
"inputSchema": {
"type": "object",
"properties": {
"htsCode": { "type": "string" },
"productDescription": { "type": "string" },
"countryOfOrigin": { "type": "string" },
"entryDate": { "type": "string" },
"manufacturer": { "type": "string" },
"exporter": { "type": "string" }
},
"required": ["productDescription", "countryOfOrigin"]
},
"annotations": {
"readOnlyHint": true,
"destructiveHint": false,
"openWorldHint": false
}
},
...
]
}
}2. Call the AD/CVD lookup
curl -sS -X POST https://mcp.tandom.ai/mcp \
-H "Authorization: Bearer tk_live_..." \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "tandom_adcvd_check",
"arguments": {
"htsCode": "7318.15.50.90",
"productDescription": "steel studs threaded along their length",
"countryOfOrigin": "CN",
"entryDate": "2026-04-15"
}
}
}'3. The response
The MCP envelope wraps a content array; the inner text payload is the same structured JSON that GET /v1/adcvd/check returns over REST. The dated values below illustrate the response shape; re-run the request and verify scope and rate before using it for a current entry.
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": "{
\"htsCode\": \"7318.15.50.90\",
\"countryCode\": \"CN\",
\"heading\": \"7318\",
\"matches\": [
{
\"caseNumber\": \"A-570-932\",
\"orderType\": \"AD\",
\"product\": \"Steel Threaded Rod\",
\"country\": \"China\",
\"rate\": \"206.00%\",
\"matchType\": \"heading\",
\"headingMatched\": \"7318\",
\"scopeText\": \"... steel threaded rod ... non-headed and threaded along greater than 25 percent of their total length ...\"
},
{
\"caseNumber\": \"A-570-104\",
\"orderType\": \"AD\",
\"product\": \"Alloy and Certain Carbon Steel Threaded Rod\",
\"rate\": \"48.91%\",
\"matchType\": \"heading\"
},
{
\"caseNumber\": \"C-570-105\",
\"orderType\": \"CVD\",
\"product\": \"Alloy and Certain Carbon Steel Threaded Rod\",
\"rate\": \"0.00%\",
\"matchType\": \"heading\"
},
{
\"caseNumber\": \"A-570-909\",
\"orderType\": \"AD\",
\"product\": \"Certain Steel Nails from China\",
\"rate\": \"118.04%\",
\"matchType\": \"heading\"
}
]
}"
}
]
}
}The four matches are heading-level (4-digit 7318) advisory flags, not confirmed assessments. The scope text on each determines whether the order actually reaches the studs.
4. The same response in the catalog visual
The catalog at compliance.tandom.ai/adcvd-catalog renders the same structured response in the Tandom AD/CVD lookup card visual.
| Case | Type | Product | Match | Rate |
|---|---|---|---|---|
| A-570-932 | AD | Steel Threaded Rod | heading (4-digit) | 206% |
| A-570-104 | AD | Alloy and Certain Carbon Steel Threaded Rod | heading (4-digit) | 48.91% |
| C-570-105 | CVD | Alloy and Certain Carbon Steel Threaded Rod | heading (4-digit) | 0% |
| A-570-909 | AD | Certain Steel Nails from China | heading (4-digit) | 118.04% |
Claude tool-use trace
What it can look like when an importer, sourcing team, or broker asks the question in Claude with the Tandom connector wired in.
The user prompt
Are steel studs threaded along their length, HTS 7318.15.50.90, from China subject to AD/CVD? Entry would be mid-April 2026.
Claude picks the tool
Claude reads the tool list returned by tools/list, sees tandom_adcvd_check's description, and emits a tool-use block.
{
"type": "tool_use",
"id": "toolu_01ABcD...",
"name": "tandom_adcvd_check",
"input": {
"htsCode": "7318.15.50.90",
"productDescription": "steel studs threaded along their length",
"countryOfOrigin": "CN",
"entryDate": "2026-04-15"
}
}The MCP server runs and returns
The same structured payload from the previous section, wrapped in the MCP content envelope, comes back as the tool_result block.
{
"type": "tool_result",
"tool_use_id": "toolu_01ABcD...",
"content": [
{ "type": "text", "text": "{ \"matches\": [ ... 4 entries ... ] }" }
]
}Claude organizes the result for review
Yes, possibly. HTS 7318.15.50.90 (Studs, of iron or steel, Other) from China hits four AD/CVD orders at the 4-digit heading 7318. All four are heading-level advisory matches; you read each scope to decide which apply. A-570-932 Steel Threaded Rod (AD, 206%): scope explicitly names "studs." Plain carbon-quality steel studs are in scope. This is the controlling order for most carbon-steel cases. A-570-104 Alloy and Certain Carbon Steel Threaded Rod (AD, 48.91%) plus C-570-105 (CVD, 0%): covers alloy steel and certain carbon-steel threaded rod. If your studs are alloy steel, this order may apply additionally; if plain carbon steel, A-570-932 controls and these are out of scope. A-570-909 Certain Steel Nails: nails-only scope. Studs are not nails. Discard this advisory. Next steps: 1. Confirm the alloy composition. Plain carbon steel: A-570-932 only. Alloy steel: A-570-932 plus A-570-104 / C-570-105. 2. Identify the manufacturer and exporter on the entry. The 206% figure is the China-wide rate; company-specific rates from administrative reviews may apply. 3. Verify the deposit rate against the latest CSMS message for A-570-932 before filing. Source: Tandom AD/CVD lookup, entry date 2026-04-15. Full FR scope text available at compliance.tandom.ai/adcvd-catalog/orders/A-570-932.
That synthesis is a review aid, not a scope ruling or filing instruction. The structured matches and scope text help the user identify which product, manufacturer, exporter, and rate questions still need qualified human review.
Common pitfalls
The mistakes that bite first-time MCP integrations.
Assuming public means anonymous
Tandom's public MCP catalog is the reviewed customer-visible tool set; it is not an anonymous endpoint. Use a Bearer API key for a direct programmatic client or the OAuth flow supported by a hosted client.
Forgetting the Authorization header
Without Authorization: Bearer tk_live_..., mcp.tandom.ai/mcp returns a 401 with a tandom://errors/auth/missing-credentials problem document. Most clients surface that as an opaque error. Confirm the header is set in your client config.
Treating heading-level AD/CVD matches as confirmed
Same lesson as the calculator. When matchType is heading, the Tandom engine is flagging a candidate at the 4-digit level because that is how the order cites its HTSUS list in our DB. The dispositive answer is in the FR scope text. Have your AI agent read each scopeText field, not just the rate.
Skipping the entryDate
AD/CVD rates update through administrative reviews. Without anentryDate, the endpoint uses its current-date default, which may not match the entry's actual filing date. Always pass entryDate in ISO format (YYYY-MM-DD).
Hard-coding the tool list in the client
MCP clients should call tools/list on connect rather than hard-coding the surface. The public catalog is a reviewed, deny-by-default allowlist and can change independently of the larger REST surface. A client that reads the manifest at runtime sees only the tools currently approved for public MCP use.
Calling a tool that is not in tools/list
The public surface is deny-by-default and exposes only the 13 read-only tools returned by tools/list. Do not infer a tool name from an internal endpoint, an old guide, or a product idea. If discovery does not return the name, the client should not attempt the call.
Posting JSON-RPC ids as strings vs numbers
The spec accepts either, and Tandom echoes the id you sent. But some MCP clients break if you mix string ids and numeric ids in the same conversation. Pick one and stick with it.
Logging the API key in conversation transcripts
The Authorization header lives in the connector config, not in the conversation. Do not let your agent log or surface the header in tool-use traces; rotate the key if it leaks.
Treating the response payload as final advice
The MCP server returns the structured Tandom data verbatim. The synthesis Claude (or another LLM) writes on top of that data is a draft, not a filing. The importer of record retains its legal obligation, and qualified reviewers still need to verify the result. Use the AI output to accelerate review, not to replace it.
Glossary
- MCP (Model Context Protocol)
- The open JSON-RPC spec at modelcontextprotocol.io that lets AI agents discover and invoke external tools. Tandom exposes an MCP server so any MCP-spec client can call our HTS, duty, and AD/CVD surface.
- MCP server
- An HTTP server that speaks JSON-RPC 2.0 with the MCP method set (initialize, tools/list, tools/call). Tandom's MCP server is at mcp.tandom.ai/mcp.
- JSON-RPC 2.0
- The underlying RPC protocol MCP uses on the wire. Every MCP request has jsonrpc, id, method, and params; every response has jsonrpc, id, and either result or error.
- tools/list
- The MCP method that returns the server's tool manifest. Each tool has name, title, description, inputSchema, and annotations (readOnly, destructive, openWorld hints).
- tools/call
- The MCP method that invokes a specific tool. Params carry the tool name and arguments object; the result wraps the tool's output in a content array.
- Remote HTTP connection
- A client connection to a remote MCP endpoint over HTTPS. Tandom accepts authenticated JSON-RPC requests at mcp.tandom.ai/mcp; follow the client's current remote-MCP transport and authentication instructions.
- custom connector
- The client-managed connection to a remote MCP server. In Claude, use the current custom-connector flow documented by Anthropic; eligibility and approval can depend on the plan and workspace.
- tandom_adcvd_check
- The MCP tool that wraps GET /v1/adcvd/check. Requires productDescription and countryOfOrigin; HTS code, entry date, manufacturer, and exporter are optional supporting facts. Returns matched order and scope-review signals.
- matchType
- Field describing the granularity of an AD/CVD match, not a legal confidence score. Heading and advisory matches are candidates for scope review, not assessments.
- Authorization: Bearer tk_live_...
- The auth header for the authenticated MCP endpoint. The same tk_live_ key that authenticates the Tandom REST API also authenticates direct MCP requests. Create or manage keys at tandom.ai/account/api-keys.
- protocolVersion
- The MCP spec version the server speaks. Tandom currently announces 2024-11-05. Clients negotiate this on initialize.
- connector surface
- The 13 reviewed, read-only tools the public Tandom MCP server returns through tools/list. It is a smaller surface than the full REST API by design.
FAQ
High-intent questions developers and import teams connecting Tandom to AI workflows ask most often.