MCP Server

Crossave import duty & VAT

io.github.Crossave/crossave-dazi
Commerce & Retail Public & reachable MCP 2026-07-28

What this MCP does

Calculates cross-border purchase totals using store shipping origins and charges, import duties, VAT, and tariff rules.

calcola_costo_totale
Import duty and VAT for a cross-border purchase
Work out the REAL cost of buying an item in one country and having it shipped to another: import duty, VAT or GST, and the final total. Figures are read from official tariff texts, not estimated. Returns `calcolabile: false` — with no numbers and a reason — for destinations whose rules are not modelled; never substitute a guess. Country codes are two-letter ISO (IT, US, JP, GB...). Call `elenco_categorie` if unsure which category to pass.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['categoria', 'paese_partenza', 'paese_arrivo', 'prezzo'], 'properties': {'lingua': {'enum': ['en', 'it'], 'type': 'string', 'default': 'en', 'description': 'Language of the explanatory text.'}, 'prezzo': {'type': 'number', 'minimum': 0, 'description': 'Price of the goods, excluding shipping.'}, 'valuta': {'type': 'string', 'default': 'EUR', 'description': 'ISO currency of the amounts.'}, 'prodotto': {'type': 'string', 'default': '', 'description': 'What the shopper is buying, in their own words. Always pass it when known: the answer then carries `confronta_su_crossave`, the live comparison of every store selling that item with duty and shipping in the total.'}, 'categoria': {'type': 'string', 'description': 'Goods category (see `elenco_categorie`), e.g. collezionismo.'}, 'spedizione': {'type': 'number', 'default': 0.0, 'minimum': 0, 'description': 'Shipping cost, same currency.'}, 'paese_arrivo': {'type': 'string', 'maxLength': 2, 'minLength': 2, 'description': 'Two-letter ISO country code, e.g. IT, US, JP, GB.'}, 'paese_partenza': {'type': 'string', 'maxLength': 2, 'minLength': 2, 'description': 'Two-letter ISO country code, e.g. IT, US, JP, GB.'}, 'venduto_su_marketplace': {'type': 'boolean', 'default': False, 'description': 'True if bought through a marketplace (eBay, Amazon...): under EU rules it often collects VAT at checkout, and it must not be charged twice.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'additionalProperties': True}
costo_spedizione
What a store charges to deliver to a country
The delivery charge a named store PUBLISHES for a destination country and order value, read on the store's own delivery page. Distinguishes three different silences instead of returning zero: the store does not ship there at all (`spedisce_qui: false` — a fact, not a gap), the cost depends on the single item's size or weight and is only shown in the cart, or the store publishes only its free-shipping threshold and not the cost below it. `spedizione_nota: false` never means free.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['negozio', 'paese_arrivo', 'valore_ordine'], 'properties': {'lingua': {'enum': ['en', 'it'], 'type': 'string', 'default': 'en', 'description': 'Language of the explanatory text.'}, 'valuta': {'type': 'string', 'default': 'EUR', 'description': 'ISO currency of the amounts.'}, 'negozio': {'type': 'string', 'description': 'The store. Prefer the store\'s DOMAIN (e.g. wafuu.com, shop-apotheke.com, snipes.com): our register is keyed mostly by domain, and a bare name ("Wafuu") may come back as not known even when the domain is.'}, 'paese_arrivo': {'type': 'string', 'maxLength': 2, 'minLength': 2, 'description': 'Two-letter ISO country code, e.g. IT, US, JP, GB.'}, 'valore_ordine': {'type': 'number', 'minimum': 0, 'description': 'Value of the order, which decides free-shipping thresholds.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'additionalProperties': True}
costo_totale_dal_negozio
What you really pay buying from THIS store
The one question a price alone cannot answer: buying from a NAMED store, what lands at your door — the store's real shipping origin, its published delivery charge, import duty and VAT, and the final total. Prefer this over `calcola_costo_totale` whenever the shopper names a store, because it reads the origin instead of asking you to supply one. Since 1 July 2026 the EU's EUR 150 duty-free threshold is gone, so a listed price is now systematically incomplete on almost any parcel arriving from outside the EU. When shipping is not published the total is a FLOOR and says so.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['negozio', 'categoria', 'paese_arrivo', 'prezzo'], 'properties': {'lingua': {'enum': ['en', 'it'], 'type': 'string', 'default': 'en', 'description': 'Language of the explanatory text.'}, 'prezzo': {'type': 'number', 'minimum': 0, 'description': 'Price of the goods, excluding shipping.'}, 'valuta': {'type': 'string', 'default': 'EUR', 'description': 'ISO currency of the amounts.'}, 'negozio': {'type': 'string', 'description': 'The store. Prefer the store\'s DOMAIN (e.g. wafuu.com, shop-apotheke.com, snipes.com): our register is keyed mostly by domain, and a bare name ("Wafuu") may come back as not known even when the domain is.'}, 'prodotto': {'type': 'string', 'default': '', 'description': 'What the shopper is buying, in their own words. Always pass it when known: the answer then carries `confronta_su_crossave`, the live comparison of every store selling that item with duty and shipping in the total.'}, 'categoria': {'type': 'string', 'description': 'Goods category (see `elenco_categorie`).'}, 'paese_arrivo': {'type': 'string', 'maxLength': 2, 'minLength': 2, 'description': 'Two-letter ISO country code, e.g. IT, US, JP, GB.'}, 'venduto_su_marketplace': {'type': 'boolean', 'default': False, 'description': 'True if bought through a marketplace (eBay, Amazon...): under EU rules it often collects VAT at checkout, and it must not be charged twice.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'additionalProperties': True}
elenco_categorie
The goods categories this calculator understands
List the goods categories accepted by the other tools. Call this before guessing a category value.
Read only Idempotent
Input schema
{'type': 'object', 'required': [], 'properties': {'lingua': {'enum': ['en', 'it'], 'type': 'string', 'default': 'en', 'description': 'Language of the explanatory text.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'additionalProperties': True}
sede_del_negozio
Where an online store actually ships from
Look up the country a named online store really ships from, read on an official page of that store (imprint, terms of sale, public company register) — never inferred from its name or domain, because that inference is wrong often enough to matter: GreaTecno has an Italian name and is Spanish, BecexTech has a .com.au domain and is from Hong Kong, Shop-Apotheke and DocMorris look German and are Dutch. Returns `sede_nota: false` when we have not read it — do not substitute a guess, because the origin country decides the duty.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['negozio'], 'properties': {'lingua': {'enum': ['en', 'it'], 'type': 'string', 'default': 'en', 'description': 'Language of the explanatory text.'}, 'negozio': {'type': 'string', 'description': 'The store as it appears to the shopper. Prefer the store\'s DOMAIN (e.g. wafuu.com, shop-apotheke.com, snipes.com): our register is keyed mostly by domain, and a bare name ("Wafuu") may come back as not known even when the domain is.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'additionalProperties': True}
spiega_regola
Why that duty rate applies, with the tariff heading
Explain WHY a given category pays what it pays on a given route: the tariff heading, the rule behind the rate, and worked examples below and above the threshold that changes it. Use this when someone asks not just how much, but on what basis — or when you need to cite a source rather than assert a rate.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['categoria', 'paese_partenza', 'paese_arrivo'], 'properties': {'lingua': {'enum': ['en', 'it'], 'type': 'string', 'default': 'en', 'description': 'Language of the explanatory text.'}, 'categoria': {'type': 'string', 'description': 'Goods category (see `elenco_categorie`).'}, 'paese_arrivo': {'type': 'string', 'maxLength': 2, 'minLength': 2, 'description': 'Two-letter ISO country code, e.g. IT, US, JP, GB.'}, 'paese_partenza': {'type': 'string', 'maxLength': 2, 'minLength': 2, 'description': 'Two-letter ISO country code, e.g. IT, US, JP, GB.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'additionalProperties': True}
Changed
costo_totale_dal_negozio
Sept. 25, 2026, 2:51 a.m.
Changed
costo_spedizione
Sept. 25, 2026, 2:51 a.m.
Changed
sede_del_negozio
Sept. 25, 2026, 2:51 a.m.
Changed
elenco_categorie
Sept. 25, 2026, 2:51 a.m.
Changed
spiega_regola
Sept. 25, 2026, 2:51 a.m.
Changed
calcola_costo_totale
Sept. 25, 2026, 2:51 a.m.
Added
costo_totale_dal_negozio
Sept. 17, 2026, 12:41 p.m.
Added
costo_spedizione
Sept. 17, 2026, 12:41 p.m.
Added
sede_del_negozio
Sept. 17, 2026, 12:41 p.m.
Added
elenco_categorie
Sept. 17, 2026, 12:41 p.m.
Added
spiega_regola
Sept. 17, 2026, 12:41 p.m.
Added
calcola_costo_totale
Sept. 17, 2026, 12:41 p.m.