@pipeworx/trade-compliance
Connect: https://gateway.pipeworx.io/trade-compliance/mcp · Install: one-click buttons
Tools: 4
US import compliance — CBP customs ruling letters (CROSS) and antidumping / countervailing duty (AD/CVD) orders. Keyless, no auth.
Answers the two questions the tariff schedule alone cannot: how has Customs classified this product before and is there a trade-remedy duty on it from this country.
Tools
cross_search(query, hts?, since?, limit?)— search CBP CROSS ruling letters for tariff classification precedent. Returns ruling number, date, subject, assigned HTS numbers, and whether the ruling was later modified or revoked.cross_ruling(ruling_number, max_chars?)— one ruling letter in full: the facts, CBP’s analysis, and the holding.adcvd_orders(product?, country?, hts?, limit?)— AD/CVD orders by product and/or country, grouped per product-country pair with current status and case numbers.adcvd_case(case_number | document_number)— every Federal Register notice on file for one AD/CVD case.
Auth
None. Both upstreams are public US government endpoints with no key and no registration.
Two things that will bite you
AD/CVD scope is set by scope language, not by HTS code. The HTS numbers in an AD/CVD notice are advisory cross-references. Merchandise can be in scope under an HTS code that looks unrelated, or out of scope under one that looks like a match. Never conclude “not covered” because an HTS code is absent — read the scope language in the linked notice. Every adcvd_orders response carries this as scope_note.
adcvd_orders reports recent order activity, not a census. It searches the 100 most recent matching Federal Register notices, newest first. China has hundreds of AD/CVD orders in place; a country-only query returns the handful with recent order, continuation, or revocation notices. Treat an absence as “no recent notice found”, not “no order exists”. Every response carries this as coverage_note.
Status values
adcvd_orders resolves a status per product-country pair:
| status | meaning |
|---|---|
in_place | latest action was an order, continuation, or amendment |
in_place_revoked_in_part | Commerce revoked the order for named companies or a carved-out subset — still in force for everyone else |
revoked | order revoked in full |
The partial case is the common one and the dangerous one to flatten: reporting it as revoked would tell an importer a duty is gone when it still applies to them.
Notes on the upstreams
- CROSS returns HTTP 500 for a ruling number that does not exist, not a 404, and serves its SPA’s
index.htmlwith a 200 for any unknown path.cross_rulingtherefore probes with a second search call to tell “no such ruling” (reason: ruling_not_found) from a genuine outage (reason: upstream_error), and every response is JSON-parsed rather than trusted by status. - CROSS search rows carry
tariffs/categories; the detail endpoint returns them null.cross_rulingmerges the search row so tariff numbers are present either way. - AD/CVD case numbers come from the Federal Register list endpoint’s
docket_ids— no per-document fetch needed. Elements are sometimes one code and sometimes several comma-joined in a single string, so codes are regexed out of the joined array rather than trusted per element. - Federal Register full-text search is noisy: a query mentioning China returns notices about Japan. Product and country are parsed out of the notice title and filtered on the parsed values, never on the query terms.
- Order type comes from case-number prefixes (
A-antidumping,C-countervailing), not title text — titles share “Duty” across a conjunction (“Antidumping and Countervailing Duty Orders”), which defeats naive phrase matching.
Related packs
hts— the duty rates themselves (MFN, FTA preferential, Section 301/232 add-ons).sanctions-screening— restricted-party and forced-labor screening, including the DHS UFLPA Entity List.census-trade,comtrade— trade flows.
Data sources
- CBP CROSS:
https://rulings.cbp.gov/api/search,https://rulings.cbp.gov/api/ruling/<number> - Federal Register (International Trade Administration notices):
https://www.federalregister.gov/api/v1/documents.json
Tools
- cross_search — Search CBP CROSS — the US Customs and Border Protection ruling letters database — for how Customs has classified a product before. Returns binding and informational ruling letters with ruling number,
- cross_ruling — Get one CBP CROSS customs ruling letter in full by its ruling number (e.g. “N305619” or “H301481”, from cross_search). Returns the complete ruling text — the facts presented, CBP’s classification anal
- adcvd_orders — US antidumping duty (AD) and countervailing duty (CVD) trade-remedy orders — is there an import duty order in place on a product from a country. Searches Federal Register / International Trade Adminis
- adcvd_case — Look up a specific US antidumping/countervailing duty case by its case number (A-570-979 style: letter A=antidumping or C=countervailing, 3-digit country code, 3-digit case code) or by a Federal Regis
Tools
-
adcvd_case— Look up a specific US antidumping/countervailing duty case by its case number (A-570-979 style: letter A=antidumping or C=countervailing, 3-digit country code, 3-digit case code) or by a Federal Regis -
adcvd_orders— US antidumping duty (AD) and countervailing duty (CVD) trade-remedy orders — is there an import duty order in place on a product from a country. Searches Federal Register / International Trade Adminis -
cross_ruling— Get one CBP CROSS customs ruling letter in full by its ruling number (e.g. N305619 or H301481 , from cross_search). Returns the complete ruling text — the facts presented, CBP's classification analysi -
cross_search— Search CBP CROSS — the US Customs and Border Protection ruling letters database — for how Customs has classified a product before. Returns binding and informational ruling letters with ruling number,