Swiss grocery prices, wedding venues, rents by canton, EV cost per km and map posters, by zzd.
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.
For one Schnäppchen Jäger product id (from search_grocery_prices), returns its price, the identical article in the other Swiss shops (matched by barcode) and the cheapest similar product per shop for the same amount, each with the date it was read and a link. Similar products are not the same article; say so. By zzd (schnaeppchenjaeger.zzd.ch). Not counted against the search allowance.
The id from search_grocery_prices.
Language of names and links. Default de.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http mcp https://mcp.zzd.ch/mcp
For one Schnäppchen Jäger product id (from search_grocery_prices), returns its price, the identical article in the other Swiss shops (matched by barcode) and the cheapest similar product per shop for the same amount, each with the date it was read and a link. Similar products are not the same article; say so. By zzd (schnaeppchenjaeger.zzd.ch). Not counted against the search allowance.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of names and links. Default de. |
| productId* | integer | The id from search_grocery_prices. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"productId"
],
"properties": {
"lang": {
"enum": [
"de",
"fr",
"it",
"en"
],
"type": "string",
"description": "Language of names and links. Default de."
},
"productId": {
"type": "integer",
"description": "The id from search_grocery_prices.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Electric cars offered in Switzerland ranked by total cost in CHF per km (depreciation, capital, tax, insurance, tyres and service, energy, wallbox, import fees, monthly fees), across buying new or used, importing from Germany, leasing and subscriptions, from the EV cost comparison (ev.zzd.ch, free, by zzd). Optional driving profile. The offers are a dated, hand-collected snapshot, not live prices; the model is calibrated for canton Aargau. Give the user the link.
| Argument | Type | Description |
|---|---|---|
| make | string | |
| limit | integer | Default 5. |
| annualKm | integer | Default 15000. |
| holdingYears | integer | Default 5. |
| acquisitionType | string | |
| homeChargingShare | number | Share charged at home, 0-1. |
| publicChargingChfPerKwh | number | |
| homeElectricityChfPerKwh | number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"make": {
"type": "string",
"maxLength": 40
},
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Default 5."
},
"annualKm": {
"type": "integer",
"maximum": 100000,
"minimum": 1000,
"description": "Default 15000."
},
"holdingYears": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Default 5."
},
"acquisitionType": {
"enum": [
"purchase_new",
"purchase_used",
"import_de",
"lease",
"subscription"
],
"type": "string"
},
"homeChargingShare": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Share charged at home, 0-1."
},
"publicChargingChfPerKwh": {
"type": "number",
"maximum": 3,
"minimum": 0
},
"homeElectricityChfPerKwh": {
"type": "number",
"maximum": 2,
"minimum": 0
}
},
"additionalProperties": false
}Find the ready poster page for a town or place on MappaMuse (mappamuse.zzd.ch, personalised map posters printed to order, by zzd), with the sizes and prices that page lists, in CHF. Any other place can be designed on the custom-poster page. Give the user the link; the page and checkout are binding.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of names and links. Default de. |
| place* | string | A town or place, e.g. 'Aarau', 'Lugano'. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"place"
],
"properties": {
"lang": {
"enum": [
"de",
"fr",
"it",
"en"
],
"type": "string",
"description": "Language of names and links. Default de."
},
"place": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "A town or place, e.g. 'Aarau', 'Lugano'."
}
},
"additionalProperties": false
}Find places for a civil wedding in Switzerland as cantons and municipalities publish them (registry offices and outside venues such as castles), from Trauungslokale Schweiz (traulokale.zzd.ch, a free finder by zzd). Filter by canton (code, slug or name), town, text, guests, or a published ceremony date or date range. Important: most offices publish no dates; and where datesShowAvailability is false a published date is NOT known to be free. The date is always booked with the registry office. Give the user each venue's link.
| Argument | Type | Description |
|---|---|---|
| to | string | |
| date | string | Only venues with a published ceremony date on this day. |
| from | string | |
| lang | string | Language of names and links. Default de. |
| town | string | |
| type | string | office = registry office, external = outside venue. |
| limit | integer | Default 10. |
| query | string | Text in the venue name, town or address, e.g. 'Schloss'. |
Details for one venue id from find_wedding_venues: address, guests, costs as published, all published dates, the responsible registry office with phone, e-mail and official page, and the source the data was read from. By zzd (traulokale.zzd.ch).
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| lang | string | Language of names and links. Default de. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 160,
"minLength": 2
},
"lang": {
"enum": [
"de",
"fr",
"it",
"en"
],
"type": "string",
"description": "Language of names and links. Default de."
}
},
"additionalProperties": false
}The usual net monthly rent by flat size in a Swiss canton, from the Federal Statistical Office (BFS), via Mietcheck (mietcheck.zzd.ch, free, by zzd). Give a canton or a place (postal code or municipality); with rooms and the net rent it also says whether that rent is below, within or above the usual range. A place in several cantons returns the candidates to choose from. Cantonal averages only: not street level, not legal advice. Give the user the page link.
| Argument | Type | Description |
|---|---|---|
| lang | string | |
| place | string | Postal code or municipality, e.g. '8001' or 'Winterthur'. |
| rooms | integer | Number of rooms; 6 means 6 or more. |
| canton | string | Canton code (ZH), slug or name. Use this or place. |
| netRent | number | Monthly NET rent in CHF (without service charges and heating). Needs rooms. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lang": {
"enum": [
"de",
"fr",
"en"
],
"type": "string"
},
"place": {
"type": "string",
"maxLength": 100,
"description": "Postal code or municipality, e.g. '8001' or 'Winterthur'."
},
"rooms": {
"type": "integer",
"maximum": 6,
"minimum": 1,
"description": "Number of rooms; 6 means 6 or more."
},
"canton": {
"type": "string",
"maxLength": 40,
"description": "Canton code (ZH), slug or name. Use this or place."
},
"netRent": {
"type": "number",
"maximum": 30000,
"minimum": 100,
"description": "Monthly NET rent in CHF (without service charges and heating). Needs rooms."
}
},
"additionalProperties": false
}Search the grocery catalogue of Schnäppchen Jäger (schnaeppchenjaeger.zzd.ch, a free Swiss price comparison by zzd) across Migros, Coop, Lidl, Aldi, Denner and Volg, plus Aligro's weekly promotions. Returns products with pack price, price per unit, offer flag, the date each price was read, and a link to each product's comparison page. Prices are the shops' online prices, not branch shelf prices. Counts as one search of the site's free daily allowance (5 a day per connection without an account). Give the user the product links.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of names and links. Default de. |
| sort | string | Default relevance; unit-price puts the cheapest per kg/litre first. |
| limit | integer | How many products, 1-10. Default 8. |
| query* | string | What to look for, e.g. 'Vollmilch', 'Butter 250g'. German product names match best. |
| store | string | Only this shop. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"lang": {
"enum": [
"de",
"fr",
"it",
"en"
],
"type": "string",
"description": "Language of names and links. Default de."
},
"sort": {
"enum": [
"relevance",
"unit-price",
"price"
],
"type": "string",
"description": "Default relevance; unit-price puts the cheapest per kg/litre first."
},
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "How many products, 1-10. Default 8."
},
"query": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "What to look for, e.g. 'Vollmilch', 'Butter 250g'. German product names match best."
},
"store": {
"enum": [
"Migros",
"Coop",
"Lidl",
"Aldi",
"Denner",
"Volg",
"Aligro"
],
"type": "string",
"description": "Only this shop."
}
},
"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 6, 2026.
| canton |
| string |
| Canton code (AG), slug (aargau) or name (Argovie). |
| minGuests | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Only venues with a published ceremony date on this day."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"lang": {
"enum": [
"de",
"fr",
"it",
"en"
],
"type": "string",
"description": "Language of names and links. Default de."
},
"town": {
"type": "string",
"maxLength": 60
},
"type": {
"enum": [
"office",
"external"
],
"type": "string",
"description": "office = registry office, external = outside venue."
},
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Default 10."
},
"query": {
"type": "string",
"maxLength": 80,
"description": "Text in the venue name, town or address, e.g. 'Schloss'."
},
"canton": {
"type": "string",
"maxLength": 40,
"description": "Canton code (AG), slug (aargau) or name (Argovie)."
},
"minGuests": {
"type": "integer",
"maximum": 2000,
"minimum": 1
}
},
"additionalProperties": false
}