@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:

statusmeaning
in_placelatest action was an order, continuation, or amendment
in_place_revoked_in_partCommerce revoked the order for named companies or a carved-out subset — still in force for everyone else
revokedorder 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.html with a 200 for any unknown path. cross_ruling therefore 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_ruling merges 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.
  • 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,

Regenerated from source · build August 29, 2026