Skip to main content
Glama
Swissgroceries MCP

Swissgroceries MCP

by nicktcode

search_products

Search Swiss grocery products across retailer chains by keyword, then filter by price, size, or tags to compare items and promotions.

Instructions

Search for products across configured Swiss grocery chains (Migros, Coop, Aldi, Denner, Lidl, Volgshop, Otto's, Coop City) by keyword. The coop chain covers the coop.ch supermarket assortment (groceries, household, drugstore) only. The Coop City department-store range (coop-city.ch: cosmetics, fashion, household, electronics) is the separate coopcity chain, which is opt-in: include it in chains to search it (it is skipped when chains is omitted). Supports optional filters for price, size range, and product tags (organic, vegan, budget, etc.). Returns results grouped by chain with normalised price, unit price, size, and promotion info. A sources map reports each chain's data freshness (fetchedAt timestamp + fromCache flag) so you can tell the user how current the prices are. Every queried chain has a key in byChain; when a chain fails (e.g. bot protection or an outage) its array is empty and errors lists the chain with a code and reason, so check errors before telling the user a chain has no results. Use for "find organic milk under 2 CHF", "compare pasta prices", or "search for gluten-free bread".

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "query": "<query>"
    },
    "name": "search_products"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of results per chain (1–50). Defaults to chain-specific limit.
queryYesSearch term in any language, e.g. "Milch", "pâtes", "Bier". At least 1 character.
chainsNoRestrict search to specific chains. Omit to search all configured chains in parallel. Coop City (coopcity) is opt-in and only included when listed here.
offsetNoSkip the first N results per chain. Use with `limit` to paginate. Default 0.
filtersNoOptional product filters applied after search.
storeIdsNoFilter results to products available in these store IDs (chain-specific internal IDs).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.12.0
    • changedInput schema / properties / chains / items / enum
      Previous value: -[
      -  "migros",
      -  "coop",
      -  "aldi",
      -  "denner",
      -  "lidl",
      -  "farmy",
      -  "volgshop",
      -  "ottos",
      -  "coopcity"
      -]New value: +[
      +  "migros",
      +  "coop",
      +  "aldi",
      +  "denner",
      +  "lidl",
      +  "volgshop",
      +  "ottos",
      +  "coopcity"
      +]
  2. Changed2 schema fields changedv0.11.0
    • changedInput schema / properties / chains / description
      Previous value: -"Restrict search to specific chains. Omit to search all configured chains in parallel."New value: +"Restrict search to specific chains. Omit to search all configured chains in parallel. Coop City (coopcity) is opt-in and only included when listed here."
    • changedInput schema / properties / chains / items / enum
      Previous value: -[
      -  "migros",
      -  "coop",
      -  "aldi",
      -  "denner",
      -  "lidl",
      -  "farmy",
      -  "volgshop",
      -  "ottos"
      -]New value: +[
      +  "migros",
      +  "coop",
      +  "aldi",
      +  "denner",
      +  "lidl",
      +  "farmy",
      +  "volgshop",
      +  "ottos",
      +  "coopcity"
      +]
  3. First observedv0.7.10

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so: it discloses parallel fan-out across chains, opt-in membership for one chain, grouped-by-chain return shape, per-chain freshness metadata via `sources`, and failure semantics (empty array + `errors` with code/reason on bot protection or outage). That is far beyond what a bare 'search' label would convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Core scope and the coop/coopcity distinction are front-loaded, and the examples land at the end as intended. It runs long with several sentences, and the coopcity opt-in rule is stated twice (once outright, once parenthetically), which is mild redundancy rather than waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by characterizing the return shape (`byChain`, normalised price/unit price/size/promotion, `sources` freshness, `errors`). For a 6-parameter nested-filter search tool, nothing an agent needs to call it or interpret results is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description adds real meaning on top by explaining that omitting `chains` searches everything except coopcity, and by characterizing the filter axes (price, size range, tags) that the schema enumerates. It does not add syntax or interaction notes for `limit`/`offset` pagination beyond what the schema documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('search for products') plus the exact scope (eight named Swiss grocery chains), and explicitly disambiguates the `coop` vs `coopcity` assortments. An agent can distinguish this from get_product or find_stock without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete invocation triggers ('find organic milk under 2 CHF', 'compare pasta prices', 'gluten-free bread') and a conditional rule for the opt-in `coopcity` chain. It also instructs the agent to check `errors` before reporting an empty chain, which is a genuine when-to-use-this-and-how caveat.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.