Dutyfinch
Server Details
US tariff lookup: HTS duty rates, Section 301 China lists, US–China tariff-cut flag.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
The four tools mostly target distinct needs: searching codes, looking up one code, browsing Section 301 lists, and checking the 2026 reduction-list status. However, china_deal_status and lookup_hts_code both report whether a specific HTS code is on the 2026 reduction list, so an agent could reasonably choose either for that narrow question.
All names use snake_case, which is consistent. But the semantic pattern is mixed: lookup_hts_code and search_hts are verb_noun, while china_deal_status and section301_lists are noun phrases. This is readable but not a predictable verb_noun convention.
Four tools is well within the typical 3–15 range and each covers a distinct part of the tariff-reference workflow. No tool feels redundant enough to remove.
The surface covers the core jobs: search HTS codes, inspect a single code, browse Section 301 lists, and check the 2026 reduction-list status. Minor gaps remain, such as no way to retrieve the full 2026 reduction list or batch-lookup multiple codes, but agents can work around these for most queries.
Available Tools
4 toolschina_deal_status2026 US–China reduction listARead-onlyIdempotentInspect
Status of the 2026 US–China tariff reduction list (pending / notice_published / published) and, with code, whether that HTS code is on it.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavior by enumerating the possible status values (pending / notice_published / published) and the conditional per-code check, but says nothing about what happens for a code not on the list, coverage scope, or data freshness.
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?
A single front-loaded sentence that states the primary output first and the conditional extension second, with no filler. Nothing could be removed without losing information.
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 one-parameter status tool with no output schema, the definition covers the return values and the conditional behavior adequately. Minor gaps remain around the negative case (code not on the list) and the effective date of the list, but nothing an agent needs in order to call it correctly is missing.
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 0%, so the description carries the burden for the single optional 'code' parameter, and it does so: it explains the parameter is an HTS code and that supplying it also returns whether that code is on the list. That is meaningful added semantics, though it doesn't specify format/validation.
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?
Names a specific resource ('2026 US–China tariff reduction list') and states exactly what the tool returns: the list status and, conditionally, whether a given HTS code appears on it. It is clearly distinct from siblings like section301_lists and lookup_hts_code, though it never explicitly contrasts itself with them, which keeps it just short of a 5.
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 implied rather than stated: call with no code to get the list's status, and with a code to also get a membership check. There is no explicit when-to-use/when-not guidance or pointer to the sibling tools that handle pure HTS lookups.
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 an HTS codeARead-onlyIdempotentInspect
US tariff lookup for one HTS code (4, 6, 8 or 10 digits): description, general/special/column 2 duty rates, Section 301 China list status with the additional rate, exclusions, and the 2026 US–China reduction flag.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | HTS code, e.g. 8516.60.40 or 9503000013 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds real behavioral value by disclosing the returned subject matter, notably Section 301 China list status, exclusions, and the 2026 US–China reduction flag, which the agent could not otherwise anticipate.
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?
A single sentence with the resource and accepted input formats front-loaded, followed by the returned fields. Every clause (digit lengths, each rate column, Section 301, exclusions, 2026 flag) carries distinct information; nothing is padded.
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?
With no output schema, the description usefully enumerates the returned fields, so an agent knows what to expect. It does not cover failure modes, such as what happens for an invalid or non-existent code, which is the one remaining gap for a lookup tool.
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 schema gives example values, so the baseline is 3. The description goes beyond that by specifying the accepted digit lengths (4, 6, 8 or 10 digits), a validation constraint the schema does not state, which helps the agent avoid malformed invocations.
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 (lookup) and resource (one HTS code) and enumerates exactly what comes back: description, general/special/column 2 rates, Section 301 status, exclusions, and the 2026 reduction flag. The 'one HTS code' scoping plus 'search_hts' as a sibling makes the boundary between exact lookup and search immediately clear.
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?
The phrase 'for one HTS code (4, 6, 8 or 10 digits)' implies this is the single-code path versus the sibling search_hts, but the description never explicitly says when to use this instead of search_hts, section301_lists, or china_deal_status. Usage must be inferred from the name and scope rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_htsSearch the HTS by productARead-onlyIdempotentInspect
Find US HTS codes from product words (e.g. "air fryer", "wooden toys") or a code prefix. Returns codes with description, general rate and Section 301 China summary.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds real value by disclosing the return payload: code, description, general rate, and a Section 301 China summary. It omits pagination/limit behavior and result-count handling.
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?
Two tight sentences, front-loaded with what the tool does and the accepted input forms, then the return contents. No filler and every clause earns its place.
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?
With no output schema, the description usefully enumerates the return fields, covering the main completeness need. It stops short of documenting the limit parameter and pagination/capping behavior, which an agent may need for larger keyword searches.
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 0%, so the description must carry the load. It explains what 'q' accepts (product words or code prefix), which meaningfully compensates for the undocumented schema property. The 'limit' parameter (1-25, default 10) is never explained, leaving a gap in an otherwise helpful clarification.
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+resource ('Find US HTS codes') and clarifies the two accepted input modes: product words or a code prefix. Concrete examples ('air fryer', 'wooden toys') make the intent unambiguous. It does not, however, distinguish itself from the sibling lookup_hts_code, which also deals with codes.
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 implied by the input modes described (keyword search vs. code prefix), but there is no explicit when-to-use guidance or routing away from lookup_hts_code, which is the obvious alternative for exact code lookups. The agent must infer the split.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
section301_listsSection 301 China listsARead-onlyIdempotentInspect
All Section 301 China tariff headings (lists 1, 2, 3, 4A, 4B, 2024 increases, exclusions) with rates, dates and code counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is fully covered. The description adds content-level context by stating that output includes rates, dates, and code counts, which is useful, but it says nothing about result size, pagination, or freshness beyond annotation coverage.
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?
A single front-loaded sentence with no filler. The scope enumeration and payload description (rates, dates, code counts) are packed efficiently, and every clause carries information.
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 parameterless, read-only listing tool with no output schema, the description adequately covers what the call returns (rates, dates, code counts) and the full list scope. The only minor gap is that expansion behavior into the exclusion sub-lists is not spelled out, but nothing essential for invoking it is missing.
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?
The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly adds no parameter prose, since there is nothing to configure - it is a static enumeration of the Section 301 lists.
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 names a specific resource (Section 301 China tariff headings) and enumerates exactly what it covers: lists 1, 2, 3, 4A, 4B, the 2024 increases, and exclusions. That scope makes it clearly distinguishable from siblings like search_hts, lookup_hts_code, and china_deal_status, though the retrieval verb itself is only implied by 'All ... headings'.
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?
There is no explicit when-to-use statement and no mention of alternatives. The agent must infer from the enumerated list scope that this is the tool for a complete Section 301 inventory rather than a targeted HTS lookup via lookup_hts_code. No exclusions or routing guidance are provided.
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.
4 tool updates
- First observed
china_deal_status - First observed
lookup_hts_code - First observed
search_hts - First observed
section301_lists
Related MCP Connectors
US import tariff lookup against the official USITC Harmonized Tariff Schedule
HTS MCP — US import tariff rates via the USITC Harmonized Tariff Schedule.
U.S. import tariffs (HTS), U.S. export statistics, restricted-party screening and U.S. exporters.
US import duty from the live HTS: Section 301/232 stacking, MPF, HMF. Refuses what it cannot price.
1
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides access to US import tariff rates via the USITC Harmonized Tariff Schedule, enabling natural language queries for tariff data.7 npmMIT
- AlicenseAqualityBmaintenanceLive US import tariff calculator covering 19,856 HTS codes, allowing AI to look up stacked tariff rates and project the November 10, 2026 cliff impact on any product.2426 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables 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.71 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.587 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.