Skip to main content
Glama

DAITK (Dibblee AI Tool Kit) - Total Import Cost

resolve_duty

Estimate the total Canadian import duty for an HS code and country of origin, for costing. Returns a single rate, or a low/mid/high RANGE when surtax orders may or may not stack — pick low/mid/high as your risk profile. Covers base duty + any surtax layers. Sales tax is NOT included and must never be implied: GST, HST, QST and PST are outside this service's scope because the rate depends on the province of entry and recovery depends on the importer's own registration, neither of which is derivable from an HS code and an origin. Every response carries sales_tax.included: false - tell the user sales tax is on top and not quoted here. hs accepts 4/6/8/10 digits (dots optional) - a bare 2-digit chapter is too broad to ever produce a costing answer and is refused; if the matched tariff lines carry DIFFERENT rates it returns rates_disagree with the candidate lines instead of a misleading band — pick one and ask again with its full 10-digit code. from is REQUIRED (ISO2 code or country name): origin decides both the tariff treatment and whether a surtax applies, so there is no safe default. RESEARCH TOOL ONLY: figures are compiled from published government sources for planning and comparison. Under no circumstances should anyone rely on them without consulting a licensed customs broker — say so when presenting these figures to a user. Does NOT classify products — you supply the HS code. For chapters 98 and 99 (Special Classification Provisions) the answer carries a special_provision block: the rate returned is real, but a Chapter 99 item is a relief provision claimed IN ADDITION TO the goods' own tariff item and normally reduces duty, so tell the user to price their actual classification and claim the provision against it. Chapter 98 governs admissibility — a prohibition there means not without authorisation rather than nobody, and the exception is usually written into the provision's own text, so report the rate and flag the permit question rather than telling anyone they cannot import. No surtax is overlaid on these chapters. Conversely, an ordinary code may come back with possible_relief: Chapter 99 provisions whose own text references that chapter or heading. Those reduce duty and are claimed in addition to the tariff item, so surface them to the user as worth asking a broker about — but they are candidates carrying end-use conditions, never entitlements, and they are deliberately not reflected in duty_rate. If the code has no Canadian tariff line the answer falls back to the 6-digit international subheading and returns hs_fallback saying so: only the first 6 digits of an HS code are international, so a code from a foreign supplier (a US HTS number, an EU CN code) will not resolve — ask the supplier for the 6-digit HS instead. IMPORTANT for costing: duty_rate covers base duty plus surtaxes only. Two other charges are returned SEPARATELY and are deliberately NOT in it, because neither can be resolved from the HS code and origin alone: conditional_measures (quota safeguards, owed only above a quarterly volume threshold — a live utilisation reading is attached) and sima_measures (anti-dumping / countervailing duty, which depends on the EXPORTER named on the customs documents, not the manufacturer; an exporter on CBSA's co-operative list pricing at or above its normal value pays none, anyone else pays the all-other rate, which reaches, on some measures, far more than every surtax combined - the exact number is only in the response you just got back, never assume one from a prior answer). Always read all three before quoting a landed cost. NEVER state a conditional or SIMA rate as a bare delta ("+50%", "adds 158.9%") without also stating the resulting TOTAL — a reader cannot reliably add percentages themselves, and "158.9%" reported next to a 25% base has been misread as "add 158.9 to your budget" instead of "your total just became 233.9%". Each conditional_measures and sima_measures entry carries total_if_applies precomputed for exactly this reason — quote it, don't recompute it. worst_case_all_measures is the single ceiling figure if every conditional and SIMA layer lands at once; state it up front whenever any conditional or SIMA measure is present, then walk through which conditions would have to be true to reach it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
hsYes
fromYes
as_ofNo

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and meets it: it discloses refusal behavior (2-digit, foreign codes), the rates_disagree guardrail against misleading bands, hs_fallback behavior, Chapter 98/99 special handling, possible_relief semantics, and the deliberate separation of conditional_measures and sima_measures from duty_rate. It even explains why total_if_applies and worst_case_all_measures are precomputed, preventing arithmetic misreading. No annotation contradiction exists because none were supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the description is very long with many multi-clause run-on sentences that are hard to scan (the SIMA sentence alone buries several distinct rules and conditions). Each topic block is purposeful and mostly non-redundant, but the density crosses from thorough into over-specified, and an agent may lose key facts in the flood.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with no output schema and no annotations, this is nearly complete: it names the return variants (rate/range, rates_disagree, special_provision, possible_relief, hs_fallback, conditional_measures, sima_measures, worst_case_all_measures) and dictates how to present each one to a user. The only material gap is the undocumented as_of parameter; otherwise an agent has everything needed to call the tool correctly and interpret its results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It exhaustively documents hs (4/6/8/10 digits, dots optional, 2-digit rejected, fallback and disagreement behaviors) and identifies from as the country of origin. However, the optional as_of parameter is never mentioned anywhere, leaving its meaning to be guessed — a real gap given the schema itself provides no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb-resource-input triad: 'Estimate the total Canadian import duty for an HS code and country of origin, for costing.' The scope ('Covers base duty + any surtax layers') and the explicit sales-tax exclusion position it as the comprehensive duty-estimation tool, distinct from a generic tariff lookup. No ambiguity about what the tool produces or for whom.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('for costing') and unusually rich when-not-to-use guidance: sales tax 'must never be implied', bare 2-digit codes 'are refused', foreign supplier codes 'will not resolve — ask the supplier for the 6-digit HS instead', and it 'Does NOT classify products — you supply the HS code'. It goes further with presentation rules ('quote it, don't recompute it', 'state it up front' for worst_case_all_measures), though it never names sibling tools as alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct operation: enumerating measures, inspecting one measure, looking up raw tariff treatments, computing a landed-duty estimate, listing changes, and reporting service status. Potential overlap between lookup_tariff and resolve_duty is explicitly resolved in the descriptions, with lookup_tariff directing callers to resolve_duty for applicable treatment.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern (get_measure_detail, list_trade_measures, lookup_tariff, resolve_duty). recent_changes and service_status deviate into adjective_noun / noun_noun forms, but all names are snake_case, short, and readable.

Tool Count5/5

Six tools is a well-scoped size for a read-only Canadian tariff and trade-measure research service. Each tool covers a distinct part of the workflow without redundancy or unnecessary surface area.

Completeness5/5

The surface covers the full read-only lifecycle: listing and detailing trade measures, looking up tariff rates, resolving final duty estimates with safeguards and SIMA handling, monitoring recent changes, and checking data freshness. No obvious operation is missing for the stated purpose.

Resources