tariffmonitor-mcp
Server Details
US import tariffs: HTS lookup, stacked rate (MFN+301+232 by line+forced-labor), compare origins.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- daleweaver1981/tariffmonitor-mcp
- GitHub Stars
- 0
- Server Listing
- tariffmonitor-mcp
TDQS
Scored across 3 tools
The three tools have distinct roles: lookup_hts_code resolves a product name to a code, calculate_tariff computes one code+origin rate, and compare_origins explicitly frames a multi-origin side-by-side comparison. The only potential confusion is between calculate_tariff and compare_origins since both compute tariffs, but the 'several origin countries' framing in compare_origins makes the boundary clear enough.
All three names follow a clean verb_noun snake_case pattern (calculate_tariff, compare_origins, lookup_hts_code). No mixed conventions or vague verbs.
Three tools cover the core journey (name -> code -> rate -> comparison), and each is substantive rather than trivial. However, the surface feels thin for a domain as layered as tariff calculation, and it sits at the low end of the typical 3-15 range.
The set covers the main workflow: resolving product names to HTS codes, calculating a single stacked rate, and comparing origins for sourcing decisions. Minor gaps exist — there is no way to enumerate supported origins/programs or inspect a single tariff layer in isolation — but agents can work around these via the existing tools.
Available Tools
3 toolscalculate_tariffCalculate US import tariffARead-onlyIdempotentInspect
Calculate the full stacked US import tariff rate for an HTS code from a specific origin country. Returns: base rate, each additional layer (China Section 301 matched by HTS line to Lists 1, 2, 3, 4A and the 2024 four-year-review increases; Section 232 steel, aluminum and copper matched by HTS line to the U.S. note 16 lists, headings 9903.82.02-.26: 50% on listed metal articles, 25% on listed derivatives, UK and 15%-floor rates, with the metal-content conditions stated; other Section 232 programs (vehicles and parts, wood products, trucks, semiconductors, drones) flagged as needs review when the line is named, not computed; Section 301 Brazil, 25% since 22 Jul 2026, heading 9903.05.01, with its exemption lists; and the 2026 Section 301 forced-labor tariff on 60 economies: 10% or 12.5% by origin, or a 10%/12.5% cap net of MFN for the EU, Taiwan, Japan, South Korea and Switzerland, in effect since 24 Jul 2026, FR Doc. 2026-15181, HTS 9903.05.20-9903.05.84), the total current rate, the date the data was checked, and notes naming each exemption or assumption (Section 232 goods, USMCA- or CAFTA-DR-qualifying entries, listed products). For products of Canada it notes that Section 338 duties may apply; their product lists are published only as images, so they are not computed. Also states when the Section 301 China product exclusions end, in both official wordings: through 11:59 p.m. EDT on November 9, 2026 (Federal Register, FR Doc. 2025-21671), which USTR's 26 Nov 2025 press release gives as "until November 10, 2026". Figures are estimates; IEEPA tariffs ended 20 Feb 2026 and are not included. Optionally computes dollar impact from annual import volume.
| Name | Required | Description | Default |
|---|---|---|---|
| hts_code | Yes | HTS code — at least 6 digits, up to 10 (e.g. "6404.11" or "6404112030"). Dots and spaces are ignored. Zero-padded headings such as "6404110000" are not real schedule codes; if the exact code is not found, the 8- then 6-digit heading is tried and the answer states which code the rate is for. | |
| origin_country | No | ISO-2 origin country code (e.g. "CN" for China, "VN" for Vietnam, "MX" for Mexico). Default: CN. | CN |
| annual_import_value_usd | No | Optional. Your annual import value in USD. If provided, the response includes the dollar cost of current duties and any additional cost once the Section 301 China exclusions end (after 11:59 p.m. EDT on November 9, 2026 per the Federal Register; USTR's press release says November 10, 2026). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the annotations: it enumerates exactly what is returned (base rate, each stacked layer, total, data-checked date, notes), which programs are computed versus merely flagged as 'needs review' (vehicles, wood, trucks, semiconductors, drones), and which are explicitly not computed (Section 338 Canada lists published only as images, IEEPA tariffs ended 20 Feb 2026). It also discloses accuracy caveats ('Figures are estimates') and that 8- then 6-digit fallback may occur, so the agent knows the answer may be for a different code than requested.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One enormous run-on sentence carries hundreds of words of legal citation detail — FR Doc numbers, the exclusion end date stated twice in 'both official wordings', heading ranges, exact percentages per program. Much of this is reference minutiae that does not help an agent decide to call the tool, and it buries the useful parts (returns, notes, estimates) mid-paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only calculation tool with 100% schema coverage and no output schema, the description is more than complete: it explains return values, caveats, and known non-computed cases. The only shortfall is structural — the completeness is achieved through density rather than organization, and sibling routing is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the schema, including the CN default and the annual-value option. The description only restates that dollar impact is optionally computed, adding no format or interpretation detail beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a precise verb and resource: calculate a stacked US import tariff rate for an HTS code from an origin country. That is unmistakably different from lookup_hts_code, but the description never names the siblings or explicitly contrasts itself with compare_origins, so the differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers it should call this when it has an HTS code and origin and wants a total rate. There is no explicit 'use this instead of compare_origins when...' routing, no statement of prerequisites, and no guidance on when a rate lookup is inappropriate (e.g. a code that must be resolved first with lookup_hts_code).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_originsCompare tariffs by origin countryARead-onlyIdempotentInspect
Compare the estimated US import tariff for ONE HTS code across several origin countries side by side (e.g. China vs Vietnam vs Mexico vs India), for sourcing and "China plus one" decisions. For each origin returns the total current rate, the layers that make it up (MFN base, Section 301 China, Section 232 by HTS line, Section 301 Brazil, 2026 Section 301 forced-labor tariff) and the rate after the Section 301 China exclusions end (through 11:59 p.m. EDT on 9 Nov 2026 per the Federal Register, FR Doc. 2025-21671; USTR's press release says until 10 Nov 2026), sorted lowest first, with the dollar duty when an annual import value is given. Estimates only; preferential rates (USMCA, FTAs) depend on rules of origin and are not assumed.
| Name | Required | Description | Default |
|---|---|---|---|
| hts_code | Yes | HTS code, 6 to 10 digits (e.g. "8471.30" or "6404112030"). Use lookup_hts_code first if you only have a product name. | |
| origin_countries | No | ISO-2 origin country codes to compare, 2 to 8 of them (e.g. ["CN","VN","MX","IN"]). Default: CN, VN, MX, IN, TH. | |
| annual_import_value_usd | No | Optional. Annual import value in USD; adds the estimated annual duty for each origin. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive safety, so the bar is lower; the description adds real value with the return structure (total rate plus per-layer breakdown: MFN, Section 301 China, Section 232, Section 301 Brazil, forced-labor tariff), the post-exclusion rate, sort order, and a concrete expiry date with a cited source and noted discrepancy. It also discloses the important limitation that estimates exclude preferential/FTA rates because rules of origin are not assumed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it does and the scope constraint, then moves to return shape and caveats; nearly every clause carries information. It is dense to the point of being a single long paragraph, and the parenthetical about the Federal Register vs USTR date discrepancy is more detail than an agent needs to select or invoke the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must explain the return value — and it does, enumerating the rate layers, the post-exclusion rate, sorting, and optional dollar duty. Combined with the estimate-only disclaimer and the code-lookup pointer, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already states the 6–10 digit HTS format, the 2–8 country limit with default set, and that annual_import_value_usd adds a duty figure. The description merely echoes these ('with the dollar duty when an annual import value is given'), adding no syntax or unit detail beyond structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare) + resource (estimated US import tariff) + explicit scope constraint (ONE HTS code across several origin countries), with concrete examples (China vs Vietnam vs Mexico vs India). It is clearly distinguishable from calculate_tariff (single-origin computation) and lookup_hts_code (code resolution).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the decision context (sourcing / 'China plus one') and the scope rule (one HTS code, multiple origins, sorted lowest first), and the schema points to lookup_hts_code when only a product name is known. It does not explicitly say when to use calculate_tariff instead, so siblings are separated by implication rather than statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_hts_codeLook up HTS codeARead-onlyIdempotentInspect
Find the US HTS (Harmonized Tariff Schedule) code for a product, by plain-language product name or numeric prefix, from the official USITC schedule (19,856 10-digit codes). Use this first whenever you have a product name rather than a code (e.g. "laptop", "t-shirt", "water bottle", "wireless earbuds", "toys", "e-bike", "running shoes"), then pass a code to calculate_tariff or compare_origins. Everyday shopping words that a plain search of the schedule misses are mapped to the official heading that covers them (e.g. laptop -> 8471.30 "Portable automatic data processing machines"), and the answer names that heading; when a word commonly falls under more than one heading (water bottle: 7323.93 stainless, 9617.00 vacuum flasks, 3924.10 plastic) each is listed, with the 10-digit lines ranked by match to the query. Otherwise descriptions are matched as one phrase; if a phrase matches nothing the tool retries single words and says which word it used. Returns up to 12 codes.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Product keyword (e.g. "footwear") or HTS code prefix (e.g. "6404"). Minimum 2 characters. Single keywords match best. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, but the description adds substantive behavior beyond them: a 19,856-code dataset, a cap of 12 returned codes, ambiguity handling (multiple headings listed with 10-digit lines ranked by match), and a documented fallback where a failed phrase match retries single words and reports which word was used. Those are exactly the runtime traits an agent can't infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the sentence order follows the actual call flow. The parenthetical list of seven example products plus the illustrative heading mapping is more example volume than strictly needed, but nothing is genuinely off-topic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description covers the return shape (up to 12 codes, named heading, ranked 10-digit lines) and the ambiguous-query and no-match paths. For a one-parameter lookup tool, an agent has everything needed to call it and interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents keyword vs. code prefix and the 2-character minimum. The description still adds matching semantics the schema lacks — everyday shopping words are mapped to official headings, phrases are matched whole then word-by-word, and 'single keywords match best' — which tells the agent how to phrase the query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Find the US HTS code for a product') and immediately scopes the input as a plain-language name or numeric prefix from the official USITC schedule. It also names the sibling tools that consume its output, so the agent can place it in the workflow without reading further.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: 'Use this first whenever you have a product name rather than a code ... then pass a code to calculate_tariff or compare_origins.' That gives both the trigger condition and the downstream handoff to both siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
calculate_tariff - First observed
compare_origins - First observed
lookup_hts_code
Related MCP Connectors
US HTS search, origin-specific duty breakdowns, tariff sources and missing-fact guidance.
US import tariff lookup against the official USITC Harmonized Tariff Schedule
US import duty from the live HTS: Section 301/232 stacking, MPF, HMF. Refuses what it cannot price.
US import duty and HTS codes from the official USITC schedule, plus Section 301 China status. Free.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides access to US import tariff rates via the USITC Harmonized Tariff Schedule, enabling natural language queries for tariff data.362 npmMIT
- AlicenseBqualityAmaintenanceTurns your AI assistant into a US import duty research tool, enabling HTS code lookup, landed-cost calculation, and tariff change tracking using official USITC data.549 npm3MIT
- AlicenseNot gradedqualityBmaintenanceEnables US import compliance by providing CBP customs ruling letter searches and antidumping/countervailing duty order lookups, answering how Customs has classified products and whether trade-remedy duties apply.193 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables searching U.S. Harmonized Tariff Schedule commodity descriptions and code prefixes, inspecting classification headings and ancestry, browsing chapters, and retrieving published duty-rate columns and partial Chapter 99 evidence via MCP.454 npm1Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.