TL;DR
- Trade compliance APIs sit upstream of ABI filing. They classify, calculate, and validate entry data; the broker's CATAIR-certified ABI software still files the entry summary in ACE.
- Four integration points cover most of the workflow: HTS classification, duty calculation, AD/CVD scope match, and post-summary correction drafting. A 50-broker firm filing 800 entries a day touches all four.
- Tandom exposes the calculator engine over HTTP at api.tandom.ai/v1 and over Model Context Protocol at mcp.tandom.ai/mcp. Same data, two transports. The MCP version lets Claude or Cursor run a duty calculation inline during a broker chat.
- Reasonable care under 19 USC 1484(a) does not transfer to the API vendor. The licensed broker still owns classification sign-off, and the entry summary plus a persisted calculation snapshot is the system of record, not the live API.
- Browse the full API surface (every endpoint, every free-tier limit, every closed-beta gate) at tandom.ai/api.
The four integration points
A US entry summary in 2026 stacks more layers than the system the broker bought in 2018 was designed for. Section 232 metals at 50%, Section 301 China at 7.5% to 25% across four lists, the Section 122 surcharge that replaced IEEPA on February 24, 2026, ~736 active AD/CVD cases, and the FY26 MPF cap all collide on a single line. Hand-keying that math invites errors. APIs move it to a deterministic, versioned engine.
For a 50-broker mid-market firm filing 800 entries a day in ACE, there are four natural integration points:
- Pre-entry HTS classification. The product description goes in, candidate 10-digit HTS codes with confidence scores come back. Used at the start of entry prep, before the broker confirms a code.
- Pre-entry duty calculation. The confirmed HTS code, country, value, and entry date go in. The full landed-duty stack comes back with every Section 232/301/122 layer, MPF, HMF, and any Chapter 99 sources cited.
- Pre-entry AD/CVD scope match. The HTS code, country, manufacturer, and entry date go in. Any AD or CVD orders whose scope reaches the shipment come back, with the rate, the FR citation, and a match-type pill (exact / heading / advisory).
- Post-summary correction draft. When CBP issues a CSMS that supersedes a Chapter 99 rate mid-quarter, the system flags impacted prior entries and drafts Post Summary Corrections (PSC) under 19 CFR 174 against the new rate.
The first three sit in front of the entry summary going to ACE. The fourth sits behind it, watching for retroactive changes. Each is an HTTP call with a JSON response. None of them replace the ABI filing software; they reduce the math the broker has to keep in their head.
Pre-entry: HTS classification API
The HTS classification API turns a product description into a ranked list of candidate 10-digit HTSUS codes. The Tandom endpoint for the lookup variant is GET /v1/hts/search; for full-text search across descriptions it returns up to 50 results with the full hierarchy (chapter, heading, subheading, tariff item) and the rates already attached.
A typical request looks like this:
curl -sS \ "https://api.tandom.ai/v1/hts/search?q=cap+screws+steel&limit=5" \ -H "Authorization: Bearer $TANDOM_API_KEY"
The response carries a results[] array. Each entry has the htsno, a description, the parsed general rate, the special SPI list, the column2 rate, and the unit of measure. For deeper classification work, /v1/hts/notes returns the section, chapter, and subheading notes that govern interpretive rules; /v1/hts/hierarchy walks parents and siblings of one code; /v1/hts/expand-s301 and /v1/hts/expand-ch99-scope enumerate which codes a Chapter 99 provision sweeps in.
A few patterns work well at integration time. Cache hot results in your local database with a short TTL (24 hours is fine for descriptions; rates can shift mid-day, so re-fetch the rate at duty-calc time). Surface the top three candidates to the broker with confidence and source attribution. Never auto-classify without a human in the loop on a high-value line; reasonable care under 19 USC 1484(a) requires the licensed broker to verify the code against the merchandise.
Pre-entry: duty calculation API
The duty calculation API takes one HTS line plus its inputs and returns the full landed-duty stack with every layer cited. The Tandom endpoint is GET /v1/duty/calculate. A real call for a Cap-screws line shipping from China at $50,000 declared value, May 2026 entry date, 100% steel content, Chinese melt-and-pour, looks like this:
curl -sS \ "https://api.tandom.ai/v1/duty/calculate?\ hts=7318.15.80.66&origin=CN&value=50000&date=2026-05-01&\ steel=100&meltpour=CN" \ -H "Authorization: Bearer $TANDOM_API_KEY"
The response carries a dutyInfo object with the parsed numbers a broker actually files against:
{
"dutyInfo": {
"htsCode": "7318.15.80.66",
"description": "Cap screws",
"declaredValue": 50000,
"generalRate": "8.5%",
"section232": "50%",
"section232ScopeMatch": { "steel": true, "aluminum": false },
"section301": "25%",
"estimatedTotalDuty": "83.5% ($41,750.00)",
"totalDutyAmount": 41750,
"mfnAmount": 4250,
"chapter99Sources": [
{ "code": "9903.03.01", "authority": "Section 122 Surcharge",
"rate": 0, "amount": 0, "aceReportingOrder": 1 },
{ "code": "9903.88.03", "authority": "Section 301 List 3",
"rate": 25, "amount": 12500, "aceReportingOrder": 2 },
{ "code": "9903.82.02", "authority": "section_232",
"rate": 50, "amount": 25000, "material": "steel",
"aceReportingOrder": 3 }
],
"adcvdCases": [
{ "caseNumber": "A-570-932", "orderType": "AD",
"matchType": "heading", "advisory": true,
"headingMatched": "7318" }
],
"mpf": { "rate": 0.003464, "amount": 173.20 },
"hmf": { "rate": 0.00125, "amount": 62.50, "applicable": true },
"totalLandedDuty": 41985.70,
"effectiveRate": 83.5
}
}The fields a broker cares about: chapter99Sources enumerates every Chapter 99 code in ACE reporting order so the line can be filed top to bottom; adcvdCases surfaces any AD or CVD order that touches the line by heading; matchedExclusions (omitted above for brevity) flags Chapter 99 exclusions the shipment may qualify for; warnings calls out missing inputs (a steel line with no melt-and-pour country, an aluminum line where smelt-and-cast is unknown so the 200% rate applies by default).
Persist the entire response with the entry record. If CBP audits later, you can reproduce exactly what the broker filed against, including the data version of the underlying rate tables.
Pre-entry: AD/CVD scope match API
AD/CVD is the layer that turns an 8.5% duty into 83.5% with a country-wide rate, or worse, a punitive country-wide rate that applies because the manufacturer is not on the order's exempt list. A scope match API surfaces those orders before the entry summary goes to ACE.
The Tandom endpoint is GET /v1/adcvd/check:
curl -sS \ "https://api.tandom.ai/v1/adcvd/check?\ htsCode=7318.15.80.66&country=CN&entryDate=2026-05-01&\ manufacturer=Acme%20Steel%20Co&exporter=Acme%20Trading" \ -H "Authorization: Bearer $TANDOM_API_KEY"
The response carries a matches[] array. Each match includes the case number (A-XXX-XXX or C-XXX-XXX), the order type (AD or CVD), the rate, the manufacturer-specific rate if one applies under 19 CFR 351.107, a scopeAnalysis field (Anthropic Haiku reads the FR scope text and returns in_scope, likely_out, or ambiguous with reasoning), the FR citation, and a matchType pill (exact, subheading, heading, or advisory).
The advisory flag is load-bearing. AD/CVD orders list HTS codes in the FR notice for indexing convenience, but scope is always described in product terms. A product can fall inside scope even if its HTS code is not listed, and outside scope even if it is. The broker still has to read the FR notice. The API gives them the case numbers and the AI scope analysis to triage which ones to read first.
For full case-by-case analysis (rate history, lifecycle, companion-case rates, all FR document chains), call POST /v1/adcvd/report. That one fans out further (lifecycle, scope, rate history per case) and counts as one report against the free-tier limit.
Post-summary: corrections workflow
Most broker workflow APIs talk about the path into ACE. The path out of ACE matters too. CBP issues CSMS messages frequently that retroactively change Chapter 99 rates, suspend liquidation, or issue refund instructions. A Post Summary Correction (PSC) under 19 CFR 174 within 300 days of entry is how the importer recovers duties (or pays the difference) without filing a protest.
A correction-drafting workflow integrates two API calls:
- Watch CSMS feed. Subscribe to CBP's CSMS bulletin RSS or poll an aggregator. When a CSMS issues a rate change tied to a Chapter 99 code, scan your last 300 days of entries for any line that filed against that code.
- Re-run the calculator with the same HTS, country, value, and entry date inputs against the new rate. The original snapshot you persisted at entry-prep time (see § Pre-entry: duty calculation API above) is the input template.
The delta becomes the PSC line. Tandom does not yet expose a dedicated PSC drafting endpoint; the building blocks are /v1/duty/calculate (re-run with a new entry date or a new exclusion claim) plus your ABI vendor's PSC import format. The closed-beta POST /v1/duty/calculate/batch endpoint accepts a webhook URL and returns results for hundreds of lines at once, which is the integration shape you want for the quarterly CSMS sweep.
Worked example
The 50-broker mid-market firm files 800 entries a day. One of them is a $50,000 line of Cap screws (HTS 7318.15.80.66) shipping from China, May 1, 2026 entry date, 100% steel content, melt-and-pour in China. The integration runs four API calls.
1. Classify the product
The broker's entry-prep system pulls the description cap screws, hex socket, alloy steel from the commercial invoice. It calls /v1/hts/search?q=cap+screws+steel&limit=5. The top result is 7318.15.80.66 with description "Cap screws" and general rate 8.5%. The broker confirms the code matches the merchandise and presses continue.
2. Calculate the duty
The system calls /v1/duty/calculate with the confirmed code, declared value $50,000, origin CN, entry date 2026-05-01, steel 100, meltpour CN. The response is rendered in the same visual format as the live calculator, so the broker recognizes it from the Tandom Duty Calculator at tariffs.tandom.ai/calculator:
| 7318.15.80.66MFN base, Cap screws (Column 1 General) | MFN | 8.5% | $4,250.00 |
| 9903.88.03Section 301 List 3 (USTR Sept 2024 four-year review) | S301 | 25% | $12,500.00 |
| 9903.82.02Section 232 steel (Proclamation 10908) | S232 | 50% | $25,000.00 |
| 9903.03.01Section 122 Surcharge (does not stack on S232) | S122 | 0% | $0.00 |
| n/aMPF (19 CFR 24.23, within FY26 cap) | MPF | 0.3464% | $173.20 |
| n/aHMF (19 USC 4461, ocean only) | HMF | 0.125% | $62.50 |
| Total duty + fees (before AD/CVD scope check) | $41,985.70 | ||
That is the persisted snapshot. The broker files the line in ACE with 9903.88.03 (Section 301 List 3, $12,500), 9903.82.02 (Section 232 steel, $25,000), MFN 8.5% on the base ($4,250), MPF $173.20, and HMF $62.50. Total duties + fees: $41,985.70.
3. Check AD/CVD scope
The calculator response already flagged A-570-932 (Steel Threaded Rod from China) as a heading-level advisory match. The broker calls /v1/adcvd/check?htsCode=7318.15.80.66&country=CN&entryDate=2026-05-01 for the full scope analysis. The AI scope read returns likely_out with reasoning that the order's product scope is threaded rod and cap screws have a different commercial identity. The broker documents the analysis in the entry record and proceeds without an AD/CVD claim. If the analysis had returned in_scope or ambiguous, escalation to a licensed broker for an FR scope read is required.
4. Watch for post-summary changes
On August 4, 2026, CBP issues a CSMS message revising the Section 122 surcharge under Proclamation 11012 (the post-IEEPA replacement). The broker's CSMS watcher pulls all entries from the last 300 days that filed against the affected Chapter 99 code, re-runs /v1/duty/calculate with the new rate, and drafts a PSC for any line where the delta exceeds the firm's threshold (usually $50 or 0.1%). The Cap-screws line above is unaffected (S122 was already 0% on that line) but others in the cohort are.
MCP for AI broker copilots
Model Context Protocol is an open standard from Anthropic that lets an AI assistant call external tools through a typed schema. The full specification lives at modelcontextprotocol.io/specification. Tandom exposes its compliance APIs over MCP at mcp.tandom.ai/mcp (also at api.tandom.ai/v1/mcp for the unified namespace).
What that means for a broker: when you connect Claude, Cursor, or any MCP-aware AI assistant to mcp.tandom.ai/mcp, the assistant gets typed access to every Tandom endpoint without you writing code. Ask Claude "what is the duty stack on a 50-pallet steel cap-screw shipment from China entering May 1, 2026 at $50K?" and the assistant will call /v1/duty/calculate inline and return the same answer the API call above produced, rendered as plain English with citations.
MCP does not replace your ABI software. It does replace the stop-and-task switch where the broker leaves the work surface, opens a calculator, types in inputs by hand, and types the result back into the entry. That switch costs a minute per line. At 800 lines a day, that is about 13 hours a day across the team. MCP collapses it.
Common pitfalls
Treating the API as the system of record
APIs return point-in-time data. Section 232 rates doubled in June 2025; Section 122 replaced IEEPA on February 24, 2026; CSMS messages routinely revise Chapter 99 details mid-quarter. The system of record is the entry summary plus the full calculation snapshot you persisted at filing time. If you only persist the inputs and re-fetch the rate at audit time, the rate may have changed. Persist the response.
Skipping the AD/CVD scope read on advisory matches
A heading-level advisory match means the AD/CVD order names the 4-digit heading but has not been confirmed for the specific 10-digit code. The broker still has to read the FR scope text. The API gives you the case number and an AI summary; it does not absolve reasonable care.
Auto-classifying high-value lines without review
Reasonable care under 19 USC 1484(a) requires the importer of record to verify the classification. AI classifiers are great first-pass tools and the confidence scores are useful triage. A line over the firm's review threshold (commonly $10K, sometimes lower) should always have a licensed broker sign off. Log the AI recommendation and the broker's decision; that is the audit trail.
Forgetting Section 232 derivative scope
A non-metal product can still be a Section 232 derivative if it contains steel, aluminum, or copper. The Tandom calculator handles this via the steel/aluminum/copper percentage and melt-and-pour or smelt-and-cast country inputs. Skipping these inputs on a derivative line means the response will not include Section 232 amounts. Your integration must surface those inputs when conditionalFields.has232 is true in the response.
Defaulting smelt-and-cast aluminum to "US"
Aluminum derivatives entered with smelt-and-cast unknown pay 200% by default per Proclamation 10522, codified at 9903.85.67/.68, since June 28, 2025. Defaulting to a country (especially "US") without proof is an enforcement risk. Pass the country only when the mill certificate confirms it; pass "unknown" otherwise.
Building a CSMS watcher that polls daily
CBP issues CSMS bulletins multiple times per day during active tariff windows (the spring 2025 IEEPA period saw 30+ in a single week). Daily polling lags reality. Subscribe to the RSS feed or poll on a 30-minute interval. Filter for messages that reference Chapter 99 codes in your last-300-day entry cohort.
Treating MPF and HMF as duties
MPF and HMF are user fees, not duties. They never qualify for Section 232/301/122 exclusions. USMCA originating goods waive MPF; nothing waives HMF. Your calculation should keep them in a separate fees column on the entry summary, not stacked into the duty total.
Not capturing the API response version
The Tandom calculator response includes a provenance block citing the data version (HTS revision, AD/CVD order snapshot, Chapter 99 source set). Persist it. When CBP audits two years later, the question "what data was the broker filing against?" gets answered by that block.
Hard-coding free-tier limits
The free tier on /v1/duty/calculate is 1,000 calls per month. A 50-broker firm filing 800 entries a day with two API calls per line will exhaust that in the first half-day. Build for the paid tier from day one or your integration will surprise-fail in production.
Skipping the entry-date input
The rate of duty under 19 CFR 141.69 is locked at the time of entry. A shipment exported under a 25% rate but entered after the rate moved to 50% pays 50%. If your integration omits date and defaults to today, every retroactive calculation is wrong.
Glossary
- ABI
- Automated Broker Interface. The set of CBP-managed message formats used to file entries electronically into ACE. Filing requires a CATAIR-certified vendor and a CBP Filer Code.
- ACE
- Automated Commercial Environment. CBP's primary system for processing entries, manifests, and admissibility checks. Every US import filing today goes through ACE.
- API key
- A bearer token passed in the Authorization header that authenticates a request to the Tandom API. Free-tier keys are rate-limited per endpoint; paid-tier keys carry higher limits and access to closed-beta endpoints.
- CATAIR
- Customs and Trade Automated Interface Requirements. The CBP specification that governs ABI filing message formats. ABI software vendors must certify against CATAIR to file entries.
- CSMS
- Cargo Systems Messaging Service. CBP's bulletin system for issuing operational guidance, rate changes, and policy updates to the trade community. Subscribed via govdelivery.com.
- MCP
- Model Context Protocol. An open standard from Anthropic that lets AI assistants call external APIs through a typed schema. Tandom exposes its compliance API over MCP at
mcp.tandom.ai/mcp. - PSC
- Post Summary Correction. The 19 CFR 174 mechanism for correcting an entry summary within 300 days of entry, before liquidation. Used to recover duties when CBP issues a retroactive rate change or claim a missed exclusion.
- Reasonable care
- The 19 USC 1484(a) standard that requires the importer of record to use reasonable care in providing accurate entry data. Using an AI tool does not transfer the obligation; the licensed broker still has to verify.
- Webhook
- A URL the API calls when a long-running job completes. Used by
/v1/duty/calculate/batch(closed beta) so your system does not have to poll. - Free-tier limit
- The monthly quota on each Tandom endpoint for an unauthenticated or trial key. Production integrations should plan for the paid tier from day one. The full table lives at tandom.ai/api.
- ACE reporting order
- The required sequence in which Chapter 99 codes appear on an entry summary line. The duty calculator returns
aceReportingOrderon each chapter99Sources entry; file in that order. - Match type
- The granularity at which an AD/CVD order's HTS list matched the shipment.
exact(10-digit),subheading(6-digit),heading(4-digit), oradvisory(heading-level, requires FR scope read).