Koskamo

zzd MCP

A read-only MCP server operated by the Swiss web studio zzd, providing tools to query data from their free consumer sites including grocery price comparisons, civil wedding venue listings, cantonal rent references, electric vehicle cost-per-kilometer calculations, and map poster availability.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

zzd MCP logo, by zzdVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by zzd
MCP endpoint (Streamable HTTP)
https://mcp.zzd.ch/mcp
Vendor documentation

What its tools do

7 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

7 of 7 have a description · 7 of 7 declare behavior hints · 7 of 7 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to zzd.ch ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for current grocery prices across Swiss supermarkets
  • Find locations for civil weddings in Switzerland
  • Check typical rent prices by Swiss canton
  • Calculate electric vehicle costs per kilometer

Source and maintenance

Vendor evidenceRegistry 1.0.1

Protocol and capabilities

Server
zzd 1.0.1
MCP protocol negotiated in check
2025-11-25
Tools
7 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Read-only tools from zzd (https://zzd.ch), a small Swiss studio that runs free sites for everyday questions in Switzerland: grocery prices across Migros, Coop, Lidl, Aldi, Denner, Volg and Aligro's promotions (Schnäppchen Jäger), places for a civil wedding (Trauungslokale Schweiz), usual rents by canton from the federal statistics (Mietcheck), what electric cars cost per km (EV cost comparison), and map posters (MappaMuse). Each result names its source and date, links the page on the zzd site and carries its caveats (a price has a date; a published wedding date is not always a free one; rents are cantonal averages; EV offers are a dated snapshot).

Tools

7 advertised

search_grocery_prices — Search Swiss grocery prices (Schnäppchen Jäger)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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; calls through Claude's connectors share 300 a day). Each product links its comparison page.

search_grocery_prices input schema
{
  "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
}
search_grocery_prices annotations
{
  "title": "Search Swiss grocery prices (Schnäppchen Jäger)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_grocery_prices — Is this grocery product cheaper elsewhere? (Schnäppchen Jäger)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

For one product id from a Schnäppchen Jäger search, 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. By zzd (schnaeppchenjaeger.zzd.ch). Not counted against the search allowance.

compare_grocery_prices input schema
{
  "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 product id from a grocery search result.",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
compare_grocery_prices annotations
{
  "title": "Is this grocery product cheaper elsewhere? (Schnäppchen Jäger)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
find_wedding_venues — Find civil wedding venues in Switzerland (Trauungslokale Schweiz)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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. Each venue links its page.

find_wedding_venues input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Last day of a date range for published ceremony dates, YYYY-MM-DD. Use with from."
    },
    "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}$",
      "description": "First day of a date range for published ceremony dates, YYYY-MM-DD. Use with to."
    },
    "lang": {
      "enum": [
        "de",
        "fr",
        "it",
        "en"
      ],
      "type": "string",
      "description": "Language of names and links. Default de."
    },
    "town": {
      "type": "string",
      "maxLength": 60,
      "description": "Town or municipality, e.g. 'Aarau'."
    },
    "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,
      "description": "Only venues that hold at least this many guests."
    }
  },
  "additionalProperties": false
}
find_wedding_venues annotations
{
  "title": "Find civil wedding venues in Switzerland (Trauungslokale Schweiz)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_wedding_venue — One wedding venue with its registry office (Trauungslokale Schweiz)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Details for one venue id from a venue search: 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).

get_wedding_venue input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 160,
      "minLength": 2,
      "description": "The venue id from a venue search result."
    },
    "lang": {
      "enum": [
        "de",
        "fr",
        "it",
        "en"
      ],
      "type": "string",
      "description": "Language of names and links. Default de."
    }
  },
  "additionalProperties": false
}
get_wedding_venue annotations
{
  "title": "One wedding venue with its registry office (Trauungslokale Schweiz)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
rent_reference — Usual rent in a Swiss canton (Mietcheck)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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. The result links the matching Mietcheck page.

rent_reference input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "lang": {
      "enum": [
        "de",
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the answer and links. Default de."
    },
    "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
}
rent_reference annotations
{
  "title": "Usual rent in a Swiss canton (Mietcheck)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
ev_cost_per_km — What electric cars cost per km in Switzerland (EV cost comparison)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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. The result links the comparison page.

ev_cost_per_km input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "make": {
      "type": "string",
      "maxLength": 40,
      "description": "Only this make, e.g. 'Renault'."
    },
    "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",
      "description": "How the car is obtained. Without it, all ways are ranked."
    },
    "homeChargingShare": {
      "type": "number",
      "maximum": 1,
      "minimum": 0,
      "description": "Share charged at home, 0-1."
    },
    "publicChargingChfPerKwh": {
      "type": "number",
      "maximum": 3,
      "minimum": 0,
      "description": "Public charging price in CHF per kWh."
    },
    "homeElectricityChfPerKwh": {
      "type": "number",
      "maximum": 2,
      "minimum": 0,
      "description": "Home electricity price in CHF per kWh."
    }
  },
  "additionalProperties": false
}
ev_cost_per_km annotations
{
  "title": "What electric cars cost per km in Switzerland (EV cost comparison)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
find_map_posters — Map poster of a place (MappaMuse)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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. The result links the page; the page and checkout are binding.

find_map_posters input schema
{
  "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_map_posters annotations
{
  "title": "Map poster of a place (MappaMuse)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1319 ms
95th percentile latency
1319 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1319 ms · metadata changed · 7 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http zzd-mcp https://mcp.zzd.ch/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add zzd-mcp --url https://mcp.zzd.ch/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable zzd-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "zzd-mcp": {
      "url": "https://mcp.zzd.ch/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "zzd-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.zzd.ch/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start zzd-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "zzd-mcp": {
      "type": "http",
      "url": "https://mcp.zzd.ch/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http zzd-mcp https://mcp.zzd.ch/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.zzd.ch/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "zzd-mcp": {
      "serverUrl": "https://mcp.zzd.ch/mcp"
    }
  }
}

Let your agent find its tools

Find servers like zzd MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run zzd MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing