Find where to buy a product: the shops that sell it in your country, from European shopping sites.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
The largest real price drops right now in the locale's market across the sites: a shop's price against its own lowest price of the 30 days before (never a shop's own "was" price), with the site, product page and shop link.
Most results.
Only these sites (keys from list_sites, e.g. ["lofvi", "toolrango"]); default: every site.
Language and market (nl-NL = Dutch for the Netherlands, fr-BE = French for Belgium, de-DE = German for Germany, en-NL = English for the Netherlands; FR, DK and SE too). Shops, prices, currency and stock are per market; only sites that serve the locale answer. Default nl-NL.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http shopping https://wherbi.com/mcp
The largest real price drops right now in the locale's market across the sites: a shop's price against its own lowest price of the 30 days before (never a shop's own "was" price), with the site, product page and shop link.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Most results. |
| sites | array | Only these sites (keys from list_sites, e.g. ["lofvi", "toolrango"]); default: every site. |
| locale | string | Language and market (nl-NL = Dutch for the Netherlands, fr-BE = French for Belgium, de-DE = German for Germany, en-NL = English for the Netherlands; FR, DK and SE too). Shops, prices, currency and stock are per market; only sites that serve the locale answer. Default nl-NL. |
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "Most results."
},
"sites": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only these sites (keys from list_sites, e.g. [\"lofvi\", \"toolrango\"]); default: every site."
},
"locale": {
"enum": [
"nl-NL",
"en-NL",
"nl-BE",
"fr-BE",
"en-BE",
"de-DE",
"en-DE",
"fr-FR",
"en-FR",
"da-DK",
"en-DK",
"sv-SE",
"en-SE",
"de-AT",
"en-AT",
"de-CH",
"fr-CH",
"en-CH",
"es-ES",
"en-ES",
"it-IT",
"en-IT",
"en-GB"
],
"type": "string",
"description": "Language and market (nl-NL = Dutch for the Netherlands, fr-BE = French for Belgium, de-DE = German for Germany, en-NL = English for the Netherlands; FR, DK and SE too). Shops, prices, currency and stock are per market; only sites that serve the locale answer. Default nl-NL."
}
},
"additionalProperties": false
}Shop prices of one product version side by side in the locale's market on the site that lists it (cheapest total first, out of stock last; price, shipping, stock, when checked and the shop link), plus the same version's best price in that site's other markets.
| Argument | Type | Description |
|---|---|---|
| site | string | The site key from search_products or list_sites; not needed with a page URL. |
| locale | string | Language and market (nl-NL = Dutch for the Netherlands, fr-BE = French for Belgium, de-DE = German for Germany, en-NL = English for the Netherlands; FR, DK and SE too). Shops, prices, currency and stock are per market; only sites that serve the locale answer. Default nl-NL. |
| product* | string | The product's page URL (any site, any language), or its id from search_products together with `site`. |
| version | string | A version id (colour, size, …); default: the version with the cheapest offer. |
{
"type": "object",
"required": [
"product"
],
"properties": {
"site": {
"type": "string",
"description": "The site key from search_products or list_sites; not needed with a page URL."
},
"locale": {
"enum": [
"nl-NL",
"en-NL",
"nl-BE",
"fr-BE",
"en-BE",
"de-DE",
"en-DE",
"fr-FR",
"en-FR",
"da-DK",
"en-DK",
"sv-SE",
"en-SE",
"de-AT",
"en-AT",
"de-CH",
"fr-CH",
"en-CH",
"es-ES",
"en-ES",
"it-IT",
"en-IT",
"en-GB"
],
"type": "string",
"description": "Language and market (nl-NL = Dutch for the Netherlands, fr-BE = French for Belgium, de-DE = German for Germany, en-NL = English for the Netherlands; FR, DK and SE too). Shops, prices, currency and stock are per market; only sites that serve the locale answer. Default nl-NL."
},
"product": {
"type": "string",
"description": "The product's page URL (any site, any language), or its id from search_products together with `site`."
},
"version": {
"type": "string",
"description": "A version id (colour, size, …); default: the version with the cheapest offer."
}
},
"additionalProperties": false
}Exact identity lookup on every site: a GTIN/EAN barcode, a manufacturer item number or a LEGO set number. Returns each site's matching product with its current shop offers in the locale's market (cheapest total first, each with its link) and the best price overall. Never a guess: no match means no site lists that exact product.
| Argument | Type | Description |
|---|---|---|
| code* | string | GTIN/EAN (8–14 digits), manufacturer item number or LEGO set number. |
| sites | array | Only these sites (keys from list_sites, e.g. ["lofvi", "toolrango"]); default: every site. |
| locale | string | Language and market (nl-NL = Dutch for the Netherlands, fr-BE = French for Belgium, de-DE = German for Germany, en-NL = English for the Netherlands; FR, DK and SE too). Shops, prices, currency and stock are per market; only sites that serve the locale answer. Default nl-NL. |
{
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"description": "GTIN/EAN (8–14 digits), manufacturer item number or LEGO set number."
},
"sites": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only these sites (keys from list_sites, e.g. [\"lofvi\", \"toolrango\"]); default: every site."
},
"locale": {
"enum": [
"nl-NL",
"en-NL",
"nl-BE",
"fr-BE",
"en-BE",
"de-DE",
"en-DE",
"fr-FR",
"en-FR",
"da-DK",
"en-DK",
"sv-SE",
"en-SE",
"de-AT",
"en-AT",
"de-CH",
"fr-CH",
"en-CH",
"es-ES",
"en-ES",
"it-IT",
"en-IT",
"en-GB"
],
"type": "string",
"description": "Language and market (nl-NL = Dutch for the Netherlands, fr-BE = French for Belgium, de-DE = German for Germany, en-NL = English for the Netherlands; FR, DK and SE too). Shops, prices, currency and stock are per market; only sites that serve the locale answer. Default nl-NL."
}
},
"additionalProperties": false
}The independent price-comparison sites this server searches (furniture and lighting, tools, toys, LEGO, board games, games, baby, pets, perfume, books, smart home and more): key, name, what each covers, its markets and languages, its home page and its own MCP server for deeper questions (categories, brands, guides, toplists).
| Argument | Type | Description |
|---|---|---|
| locale | string | Language and market (nl-NL = Dutch for the Netherlands, fr-BE = French for Belgium, de-DE = German for Germany, en-NL = English for the Netherlands; FR, DK and SE too). Shops, prices, currency and stock are per market; only sites that serve the locale answer. Default nl-NL. |
{
"type": "object",
"required": [],
"properties": {
"locale": {
"enum": [
"nl-NL",
"en-NL",
"nl-BE",
"fr-BE",
"en-BE",
"de-DE",
"en-DE",
"fr-FR",
"en-FR",
"da-DK",
"en-DK",
"sv-SE",
"en-SE",
"de-AT",
"en-AT",
"de-CH",
"fr-CH",
"en-CH",
"es-ES",
"en-ES",
"it-IT",
"en-IT",
"en-GB"
],
"type": "string",
"description": "Language and market (nl-NL = Dutch for the Netherlands, fr-BE = French for Belgium, de-DE = German for Germany, en-NL = English for the Netherlands; FR, DK and SE too). Shops, prices, currency and stock are per market; only sites that serve the locale answer. Default nl-NL."
}
},
"additionalProperties": false
}Search every site's catalogue at once for a product, brand or kind of product (typos are corrected per site). Returns products with their site, page URL, manufacturer list price and a summary of current shop offers in the locale's market (shops, buyable, lowest total incl. known shipping). Use compare_prices for the shops and their links.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Most results. |
| query* | string | What to look for: product name, brand, model or kind of product. |
| sites | array | Only these sites (keys from list_sites, e.g. ["lofvi", "toolrango"]); default: every site. |
| locale | string | Language and market (nl-NL = Dutch for the Netherlands, fr-BE = French for Belgium, de-DE = German for Germany, en-NL = English for the Netherlands; FR, DK and SE too). Shops, prices, currency and stock are per market; only sites that serve the locale answer. Default nl-NL. |
| max_price | number | Highest price in the market's currency incl. VAT (lowest shop offer incl. known shipping). |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "Most results."
},
"query": {
"type": "string",
"description": "What to look for: product name, brand, model or kind of product."
},
"sites": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only these sites (keys from list_sites, e.g. [\"lofvi\", \"toolrango\"]); default: every site."
},
"locale": {
"enum": [
"nl-NL",
"en-NL",
"nl-BE",
"fr-BE",
"en-BE",
"de-DE",
"en-DE",
"fr-FR",
"en-FR",
"da-DK",
"en-DK",
"sv-SE",
"en-SE",
"de-AT",
"en-AT",
"de-CH",
"fr-CH",
"en-CH",
"es-ES",
"en-ES",
"it-IT",
"en-IT",
"en-GB"
],
"type": "string",
"description": "Language and market (nl-NL = Dutch for the Netherlands, fr-BE = French for Belgium, de-DE = German for Germany, en-NL = English for the Netherlands; FR, DK and SE too). Shops, prices, currency and stock are per market; only sites that serve the locale answer. Default nl-NL."
},
"max_price": {
"type": "number",
"minimum": 0,
"description": "Highest price in the market's currency incl. VAT (lowest shop offer incl. known shipping)."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 3, 2026.