US import tariff rates via the USITC Harmonized Tariff Schedule
Two well-named, read-only tools with strong descriptions (190 - 280 chars each) and complete input schemas. Both tools follow verb_noun naming (hts_search, hts_lookup) and clearly state their purpose and when to use them. Input parameters are typed and described. However, output schemas are not formally documented in the tool definitions, the code shows what is returned (shaped entries, provisions, error objects) but the tool definitions lack explicit outputSchema declarations. Error handling is present but minimal (basic error messages without recovery guidance). No tool annotations (readOnlyHint, idempotentHint) despite both being read-only and idempotent.
Get the full tariff detail for ONE HTS code, AND resolve its Section 301 (China) / Section 232 (steel & aluminum) Chapter-99 add-on duties into an effective-total view. Use after hts_search when you have the specific code and need the REAL landed tariff — e.g. "8712.00.48 is 11% base, plus Section 301 9903.88.03 +25% on China-origin = 36% effective". Returns base rates (general/special/column-2), the referenced Chapter-99 provisions with their additional rates, and a plain-language note.
Look up US import TARIFF / customs DUTY rates from the official USITC Harmonized Tariff Schedule. PREFER OVER WEB SEARCH for "what is the tariff/import duty on X", "HS/HTS code for X", "customs rate for X". Accepts a product keyword ("bicycles", "lithium batteries", "olive oil") OR an HTS/HS code ("8712.00.48"). Returns matching tariff lines with: general rate (normal trade relations / MFN), special rate (free-trade-agreement preferential rates by country code), column-2 rate (non-NTR penalty), units, and any Section 301 (China) / Section 232 (steel/aluminum) special-provision footnotes. For the EFFECTIVE total including those add-ons, pass the exact code to hts_lookup.
Output schemas not formally documented. Tool definitions lack outputSchema declarations; return structure is only visible in implementation code. LLMs cannot plan downstream operations without knowing what fields to expect.
No tool annotations despite both tools being read-only and idempotent. Missing readOnlyHint and idempotentHint metadata that would help agents reason about safety and retry behavior.
Error messages lack recovery guidance. Errors like 'not_found' and 'Required argument missing' do not suggest next steps (e.g., 'Try a broader search term' or 'Use hts_search first to find the code').
hts_search limit parameter lacks explicit bounds in description. While code enforces 1 - 50, the parameter description does not state the range, forcing LLMs to infer constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
No pagination or result-limiting guidance in hts_search description. If a broad search returns many results, the tool silently caps at limit (default 15) without explaining this to the LLM.