{"openapi":"3.1.0","info":{"title":"EU Low-Value Parcel Duty API","version":"0.1.0","description":"EU Low-Value Parcel Duty applies the Commission's published rule for goods worth up to EUR 150 imported from outside the EU: a temporary flat customs duty of EUR 3 per distinct tariff classification (not per item), from 1 July 2026 until 1 July 2028, declared and paid by the seller or importer. It counts distinct classifications in a parcel, groups shopping-cart lines by the classification key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://eu-lowvalue-duty.connectorbay.com/mcp.\n\nDisclaimer: General information only, not legal, tax, accounting or payment advice. EU Low-Value Parcel Duty is an independent tool: it is not affiliated with, endorsed by or operated by any government body, central bank, standards body or scheme operator. Rates, thresholds and rules change; check the cited official source and confirm with a qualified professional before you rely on a result.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/eu-lowvalue-duty/docs"},"termsOfService":"https://connectorbay.com/eu-lowvalue-duty/terms"},"servers":[{"url":"https://eu-lowvalue-duty.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/eu-lowvalue-duty/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/parcel_duty":{"post":{"operationId":"parcel_duty","summary":"EUR 3 times the number of distinct tariff classifications in a parcel worth up to EUR 150. Use for \"A parcel holds 3 T-s","description":"EUR 3 times the number of distinct tariff classifications in a parcel worth up to EUR 150. Use for \"A parcel holds 3 T-shirts and a watch worth EUR 90 in total: what flat duty applies?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"classification_keys":{"description":"Tariff classification keys, one per line item, as used in the customs declaration (for example 6-digit HS codes). Identical keys count once; numeric codes are compared after removing spaces, dots and hyphens","items":{"type":"string"},"title":"Classification Keys","type":"array"},"consignment_value_eur":{"description":"Value of the goods in the consignment in EUR, plain decimal string with a dot","title":"Consignment Value Eur","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date the answer is for, YYYY-MM-DD. Defaults to today","title":"On Date"}},"required":["classification_keys","consignment_value_eur"],"title":"parcel_dutyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/group_lines":{"post":{"operationId":"group_lines","summary":"Group cart lines by the tariff classification key supplied and show quantity, value and flat duty per group. Use for \"My","description":"Group cart lines by the tariff classification key supplied and show quantity, value and flat duty per group. Use for \"My cart has 5 T-shirts (610910), 1 watch (910211) and 2 mugs (691200): what is the duty per group?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lines":{"description":"Cart lines as objects with classification_key (text), quantity (integer, at least 1) and value_eur (line total, decimal string)","items":{"additionalProperties":true,"type":"object"},"title":"Lines","type":"array"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date the answer is for, YYYY-MM-DD. Defaults to today","title":"On Date"}},"required":["lines"],"title":"group_linesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/landed_cost":{"post":{"operationId":"landed_cost","summary":"Goods, shipping, flat duty and destination standard VAT added up for a low-value parcel, with the VAT base chosen explic","description":"Goods, shipping, flat duty and destination standard VAT added up for a low-value parcel, with the VAT base chosen explicitly. Use for \"What is the landed cost in Germany of a EUR 100 parcel with EUR 10 shipping and two tariff classifications?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"goods_value_eur":{"description":"Value of the goods in EUR, excluding VAT, plain decimal string","title":"Goods Value Eur","type":"string"},"shipping_eur":{"description":"Shipping and insurance charged in EUR, excluding VAT","title":"Shipping Eur","type":"string"},"classification_keys":{"description":"Tariff classification keys, one per line item, as used in the customs declaration (for example 6-digit HS codes). Identical keys count once; numeric codes are compared after removing spaces, dots and hyphens","items":{"type":"string"},"title":"Classification Keys","type":"array"},"destination_country":{"description":"Destination Member State VAT prefix or ISO code (EL or GR for Greece)","title":"Destination Country","type":"string"},"vat_base":{"description":"goods_and_shipping or goods_shipping_and_duty: which amount the destination VAT is charged on. Required: it depends on the VAT scheme and is not guessed","title":"Vat Base","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date the answer is for, YYYY-MM-DD. Defaults to today","title":"On Date"}},"required":["goods_value_eur","shipping_eur","classification_keys","destination_country","vat_base"],"title":"landed_costArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/rule_status":{"post":{"operationId":"rule_status","summary":"Status of the flat duty on a date: start, planned end, who declares and pays, and the proposed handling fee. Use for \"Is","description":"Status of the flat duty on a date: start, planned end, who declares and pays, and the proposed handling fee. Use for \"Is the EUR 3 duty on low-value parcels in force today and until when?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date the answer is for, YYYY-MM-DD. Defaults to today","title":"On Date"}},"title":"rule_statusArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/eligibility_check":{"post":{"operationId":"eligibility_check","summary":"Check the up-to-EUR 150 and outside-the-EU conditions and flag cases the rule may not cover. Use for \"Does the EUR 3 dut","description":"Check the up-to-EUR 150 and outside-the-EU conditions and flag cases the rule may not cover. Use for \"Does the EUR 3 duty apply to a EUR 149.90 order shipped to Belgium from Shenzhen under IOSS?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"consignment_value_eur":{"description":"Value of the goods in the consignment in EUR, plain decimal string with a dot","title":"Consignment Value Eur","type":"string"},"shipped_from_outside_eu":{"description":"True when the goods are imported from outside the EU","title":"Shipped From Outside Eu","type":"boolean"},"vat_scheme":{"default":"unknown","description":"ioss, special_arrangements, standard or unknown","title":"Vat Scheme","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date the answer is for, YYYY-MM-DD. Defaults to today","title":"On Date"}},"required":["consignment_value_eur","shipped_from_outside_eu"],"title":"eligibility_checkArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}