{"openapi":"3.1.0","info":{"title":"DAITK - Total Import Cost","version":"0.5.0","description":"Import duty into Canada only, by HS code and country of origin: base tariff, surtax orders, quota safeguards, SIMA anti-dumping, and Chapter 99 relief provisions that might apply. Sales tax (GST/HST/QST/PST) is out of scope and never included. This does not classify goods - you supply the HS code. Research tool only; no warranty; confirm with a licensed customs broker before acting on any figure.","contact":{"name":"Dibblee Industries","url":"https://dibind.com"},"license":{"name":"Free to use, no key required"}},"servers":[{"url":"https://daitk-tic.dibind.com"}],"tags":[{"name":"duty","description":"The main resolver: HS code + origin -> total duty"},{"name":"reference","description":"Raw tariff schedule and trade-measure lookups"},{"name":"status","description":"What this service reads and how current it is"}],"paths":{"/duty":{"get":{"tags":["duty"],"summary":"Resolve total import duty for an HS code and country of origin","description":"The one endpoint that answers a real costing question. Returns the base duty band, plus every conditional (quota) and SIMA anti-dumping layer that might also apply, each carrying total_if_applies so a caller never has to add percentages by hand. worst_case_all_measures is the ceiling if every conditional layer lands at once.","parameters":[{"name":"hs","in":"query","required":true,"schema":{"type":"string"},"description":"The Canadian tariff classification code. 4, 6, 8, or 10 digits, periods optional (e.g. 7217.20.00.73 or 721720). A bare 2-digit chapter is too broad to price and is refused."},{"name":"from","in":"query","required":true,"schema":{"type":"string"},"description":"Country of origin - ISO2 code or name (e.g. CN, China). REQUIRED: origin decides tariff treatment and whether a surtax applies."},{"name":"as_of","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"Date the goods clear customs. Defaults to today."}],"responses":{"200":{"description":"A resolved duty answer, or a refusal shaped like one (rates_disagree, too_broad, special_provision) when a single number would mislead.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DutyAnswer"}}}},"400":{"description":"Missing/invalid input, or a classification/chapter-99 refusal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No tariff line found for this HS code.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tariff/{hs_code}":{"get":{"tags":["reference"],"summary":"Raw base duty table for one full HS classification","description":"Every treatment code on the tariff item - most of which apply to no real shipment, since a single origin only ever resolves to one. Use /duty for a single applicable rate. unlabeled_treatment_codes flags codes this service has not yet named; a null label is a gap in our data, never a signal about what the treatment is.","parameters":[{"name":"hs_code","in":"path","required":true,"schema":{"type":"string"},"description":"Full 10-digit classification, e.g. 0101.21.00.00."},{"name":"as_of","in":"query","required":false,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Classification, full base_duties table, and possibly-relevant trade measures.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TariffRecord"}}}},"404":{"description":"Not a full classification number - use /duty for a partial code.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/measures":{"get":{"tags":["reference"],"summary":"List tracked surtax / remission / SIMA orders","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"instrument_type","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Every tracked trade measure, newest first.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Measure"}}}}}}}},"/measures/{id}":{"get":{"tags":["reference"],"summary":"Full detail on one trade measure, including amendments and HS coverage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"One measure with its amendment history and matched HS codes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Measure"}}}},"404":{"description":"No measure with this id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/changes":{"get":{"tags":["reference"],"summary":"Measures touched, or amendments recorded, since a date","parameters":[{"name":"since","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"Defaults to today."}],"responses":{"200":{"description":"measures_touched and new_amendments since the given date."}}}},"/status":{"get":{"tags":["status"],"summary":"What this service reads, named the way the government names it","description":"Version, row counts, when the mirror was last pushed, and every government source by published name and authority with a link to it, each with a freshness status. No internal job names or stack traces - see edge/src/meta.ts.","responses":{"200":{"description":"Service status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}}}}},"/health/data":{"get":{"tags":["status"],"summary":"One-word answer to \"is there a problem right now\"","responses":{"200":{"description":"{status, problems[], summary, checks}"}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"detail":{"type":"string"},"error":{"type":"string"}}},"DutyRate":{"type":"object","description":"Base duty plus every surtax certain to apply. NOT the landed cost - see conditional_measures and sima_measures.","properties":{"low":{"type":"number"},"mid":{"type":"number"},"high":{"type":"number"}}},"SalesTax":{"type":"object","description":"Always included: false. GST/HST/QST/PST are out of scope and never quoted.","properties":{"included":{"type":"boolean","enum":[false]},"note":{"type":"string"}}},"ConditionalMeasure":{"type":"object","description":"A surtax owed only if a condition is met (e.g. a quota threshold), reported separately because it is not owed on every shipment.","properties":{"source":{"type":"string"},"rate":{"type":"number","nullable":true},"application_condition":{"type":"string","nullable":true},"content_origin_test":{"type":"string","nullable":true},"total_if_applies":{"type":"number","description":"Running cumulative total if this layer applies."},"quota":{"type":"object","nullable":true},"verify":{"type":"string","format":"uri"}}},"SimaMeasure":{"type":"object","description":"Anti-dumping/countervailing duty. Depends on the EXPORTER named on the customs documents, not the manufacturer - never summed into duty_rate.","properties":{"code":{"type":"string"},"measure":{"type":"string"},"all_other_rate_pct":{"type":"number","nullable":true},"total_if_applies":{"type":"number","nullable":true},"cooperative_exporters":{"type":"array","items":{"type":"object"}},"verify":{"type":"string","format":"uri"}}},"DutyAnswer":{"type":"object","properties":{"hs_input":{"type":"string"},"hs_precision":{"type":"string"},"from":{"type":"string"},"as_of":{"type":"string","format":"date"},"ambiguous":{"type":"boolean"},"duty_rate":{"$ref":"#/components/schemas/DutyRate"},"worst_case_all_measures":{"type":"number","nullable":true,"description":"Ceiling if every conditional and SIMA layer lands at once. Absent means duty_rate.high is the whole story."},"cite":{"type":"string","description":"Ready-to-quote attribution, e.g. 'DAITK (daitk-tic.dibind.com), read 2026-09-03'."},"sales_tax":{"$ref":"#/components/schemas/SalesTax"},"measures_in_effect":{"type":"array","items":{"type":"object"}},"conditional_measures":{"type":"array","items":{"$ref":"#/components/schemas/ConditionalMeasure"},"nullable":true},"sima_measures":{"type":"array","items":{"$ref":"#/components/schemas/SimaMeasure"},"nullable":true},"possible_relief":{"type":"object","nullable":true,"description":"Chapter 99 relief provisions whose own text references this code. Candidates, never entitlements."},"special_provision":{"type":"object","nullable":true,"description":"Present only for chapters 98/99: what the provision is and what gates it."},"notes":{"type":"array","items":{"type":"string"},"description":"notes[0] is always the citeSummary sentence - quote it first."}}},"TariffRecord":{"type":"object","properties":{"as_of":{"type":"string"},"classification":{"type":"object"},"base_duties":{"type":"array","items":{"type":"object"}},"unlabeled_treatment_codes":{"type":"object","nullable":true},"possible_trade_measures":{"type":"array","items":{"type":"object"}}}},"Measure":{"type":"object","properties":{"id":{"type":"integer"},"source":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"instrument_type":{"type":"string"},"in_force_date":{"type":"string","nullable":true},"repeal_date":{"type":"string","nullable":true}}},"Status":{"type":"object","properties":{"version":{"type":"string"},"scope":{"type":"string"},"data_pushed_at":{"type":"string","nullable":true},"counts":{"type":"object","nullable":true},"sources":{"type":"array","items":{"type":"object"}}}}}},"x-mcp":{"endpoint":"https://daitk-tic.dibind.com/mcp","transport":"streamable-http","note":"A separate protocol from the REST API above, self-describing via tools/list. Tool names: resolve_duty, lookup_tariff, list_trade_measures, get_measure_detail, recent_changes, service_status."}}