Yappman Data Supermarket Price Snapshots
Server Details
Read-only supermarket price snapshots (UK basket, AU index). Compilation CC BY 4.0. Not live.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 4 tools
The two data tools (get_shelf_price_index, lookup_basket_prices) and two supporting tools (about_the_data, list_index_vintages) have clearly distinct purposes, and descriptions explicitly say what each is not for. The only mild overlap is between about_the_data and list_index_vintages, since both mention published index weeks, but the descriptions steer the agent correctly.
Three tools follow a consistent verb_noun pattern (get_shelf_price_index, list_index_vintages, lookup_basket_prices). about_the_data breaks the pattern, though as a documentation tool the deviation is minor and readable.
Four tools is small but well-matched to a narrow dataset-snapshot server: docs, vintage listing, index retrieval and barcode price lookup. Nothing is redundant, though the surface is on the lean side.
Index access has a proper lifecycle (about -> list vintages -> get week), but the basket side is a dead end: lookup_basket_prices requires barcodes or retailer IDs and there is no tool to list the 212 basket items or search by product name, so agents cannot discover valid inputs. Basket history is also only a single-day snapshot with no listing of available days.
Available Tools
4 toolsabout_the_dataLicence, coverage and limits of the dataARead-onlyIdempotentInspect
Returns the licence (CC BY 4.0) and credit form, what is not served, the store setting, the published index weeks and the basket date range with its short and missing days. Use it before citing or relying on the other tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuinely useful behavioral context beyond that: it discloses coverage limits ('what is not served'), missing/short days in the date range, and the licence/credit obligations an agent must surface when citing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the returned contents, followed by a short imperative for when to call it — no wasted sentences. The middle clause is dense and slightly jargon-heavy ('the store setting'), but every listed item corresponds to real returned content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return formatting needn't be described, and the description still enumerates the substantive contents. With zero parameters and full annotation coverage, an agent has everything needed to decide to call it and to interpret what comes back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The description correctly implies a parameterless, single-call metadata fetch.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a concrete resource (dataset metadata) and enumerates exactly what it returns: licence/credit, what is not served, store setting, published index weeks, and basket date range with short/missing days. This clearly separates it from the sibling tools, which all retrieve price data rather than dataset-level provenance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence gives explicit timing guidance: 'Use it before citing or relying on the other tools.' That is a clear usage condition tied to the siblings, though it offers no exclusion or scenario in which calling it is unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shelf_price_indexShelf-price index for one weekARead-onlyIdempotentInspect
Returns one published week of the free UK or Australian online shelf-price index (CC BY 4.0): index levels, week-on-week change and matched-product counts by retailer and product class. Use it for "how did posted grocery shelf prices move this week". Not a CPI, not prices paid, no product names. Omit vintage for the latest week; call list_index_vintages for the others.
| Name | Required | Description | Default |
|---|---|---|---|
| class | No | Only rows for this product class id, e.g. "dairy-eggs". | |
| market | Yes | uk or au. Example: "uk". | |
| vintage | No | ISO week, e.g. "2026-W42". Omit for the latest published week. | |
| retailer | No | Only rows for this retailer id, e.g. "tesco" (UK) or "aldi_au" (AU). | |
| recordType | No | Only rows of this kind, e.g. "headline". Omit for all rows. |
Output Schema
| Name | Required | Description |
|---|---|---|
| base | No | |
| rows | Yes | |
| title | No | |
| credit | Yes | |
| market | Yes | |
| notCpi | No | |
| vintage | Yes | |
| revision | No | |
| publishedAt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/closed-world profile, and the description adds meaningful context on top: the data is free, CC BY 4.0 licensed, published weekly, excludes product names, and defaults to the latest week when vintage is omitted. It leaves out anything about row volume or pagination, but the presence of an output schema lowers that burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what is returned before the negative boundaries and the fallback routing. No filler; each clause either scopes the data or steers the next call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema available and 100% parameter coverage, the description only needs to carry purpose, boundaries, and routing — all present. Licensing and the explicit not-CPI caveat preempt the most likely misuse of shelf-price data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a 3 is the baseline, but the description adds semantics the schema lacks: the default-to-latest behavior of vintage is paired with an explicit discovery path (list_index_vintages) for older weeks, and the output dimensions (retailer, product class) map to the optional filters. The remaining filters (recordType, class) are still left to the schema only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (returns) plus the exact resource and scope: one published week of the free UK/AU online shelf-price index, with the payload enumerated (index levels, week-on-week change, matched-product counts by retailer and product class). An agent can distinguish it from list_index_vintages and lookup_basket_prices from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case in the user's own words ("how did posted grocery shelf prices move this week"), explicit exclusions (not a CPI, not prices paid, no product names), and an explicit routing rule: omit vintage for the latest week, call list_index_vintages for others. Sibling selection is fully resolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_index_vintagesPublished weeks of the shelf-price indexARead-onlyIdempotentInspect
Returns the published weeks (vintages) of the free UK or Australian online shelf-price index, newest first, with publication time, revision and base week. Use it before get_shelf_price_index to pick a week. Not for prices.
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes | uk or au. Example: "au". |
Output Schema
| Name | Required | Description |
|---|---|---|
| market | Yes | |
| vintages | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the description needn't restate safety. It does add genuine context beyond them: result ordering (newest first) and the metadata carried per vintage (publication time, revision, base week). It stops short of noting coverage limits or whether revisions can be retrospective, which would push it to a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: what it returns, the sequencing instruction, and the exclusion. The most useful fact — the ordering and fields returned — is front-loaded, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A one-parameter read tool with full annotations and an output schema needs little more. The description covers scope, ordering, sibling relationship and exclusion, leaving return-value detail to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage and an enum, so the schema fully documents `market`. The description only restates that the index is UK or Australian; it adds no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — returning the published weeks (vintages) of the UK/AU shelf-price index — plus the ordering and the fields bundled with each vintage. It is clearly distinguishable from get_shelf_price_index and lookup_basket_prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use it before get_shelf_price_index to pick a week" gives the sequencing, and "Not for prices" supplies an explicit exclusion pointing at the sibling that does return prices. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_basket_pricesDaily basket prices by barcode or product idARead-onlyIdempotentInspect
Returns posted shelf prices from the free UK daily 212-item basket (CC BY 4.0) for up to 20 barcodes (EAN) or retailer product ids, up to one row per retailer for one day: price, was-price, loyalty price, unit price, pack size and stock. Use it for "what did this barcode cost at Tesco, Sainsbury's, Asda or Aldi on a day". Static snapshot days, not live. Not for searching by product name, and only the 212 basket products are covered.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Day, e.g. "2026-10-08". Omit for the latest day loaded. | |
| eans | No | Barcodes, 8, 12, 13 or 14 digits, e.g. ["5000157024671"]. Give eans, products or both. | |
| products | No | Retailer product ids, e.g. [{"retailer": "tesco", "retailerProductId": "254656543"}]. | |
| retailers | No | Only these retailers, e.g. ["tesco", "asda"]. Omit for all four. The basket holds no barcodes for Aldi: use products for Aldi. |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | Yes | |
| rows | Yes | |
| credit | Yes | |
| notFound | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the extra value here is the snapshot semantics ('static snapshot days, not live'), the coverage ceiling (only 212 products), and the one-row-per-retailer-per-day granularity — all genuinely useful and not present in structured fields. Auth, rate limits, and error behavior are not disclosed, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then use case, then exclusions in short declarative sentences. The opening sentence is dense with clauses (licence, limits, row shape, field list) but no sentence is redundant, so it stays close to optimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% parameter coverage, the description only needs to supply scope and caveats — and it does: static vintages, 212-product limit, one row per retailer per day, and the Aldi nuance. Nothing an agent needs to invoke or interpret results is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents date, eans, products and retailers including the Aldi-has-no-barcode caveat. The description adds the cap of 20 barcodes and the either/or semantics of eans vs products, which mostly restates the schema; baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (returns posted shelf prices) with the exact resource (UK daily 212-item basket), the input forms (barcodes/EAN or retailer product ids), the shape of the result (up to one row per retailer for one day) and the returned fields. An agent can distinguish it from a name-search or index tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case in the user's own words ('what did this barcode cost at Tesco, Sainsbury's, Asda or Aldi on a day') and explicit exclusions: not for searching by product name, not live data, only the 212 basket products covered. The boundary conditions that most often cause misselection are all stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
about_the_data - First observed
get_shelf_price_index - First observed
list_index_vintages - First observed
lookup_basket_prices
Related MCP Connectors
Read-only grocery-list comparisons for supported Canadian cities, with dated prices and coverage.
Live Australian grocery prices from Woolworths, Coles, Aldi and Harris Farm.
Prices people actually paid, from official open data: homes, rents, fuel, energy, food, medicines.
Cached US grocery prices, age disclosed on every row - search, compare across banners, coverage.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceReal prices people actually paid (homes, rents, fuel, energy, groceries, medicines) from official open data, with source, period, sample size and licence on every answer. Read-only, no API key.MIT
- AlicenseAqualityBmaintenanceRead-only MCP server for Greek supermarket product and price data from PosoKanei. Enables product search, barcode lookup, price comparison across retailers, and basket evaluation.21025 npm6MIT
- AlicenseAqualityBmaintenanceEnables querying live offers and prices from 10 Dutch supermarket chains through a single normalised JSON API. Exposes 26 curated tools, including product search and category lookups, over stdio or authenticated Streamable HTTP.201MIT
- FlicenseNot gradedqualityBmaintenanceEnables users to compare and get recommendations across multiple supermarket products, combining curated specifications with realtime price and review lookups.-
Glama MCP Gateway
Add one secure layer between your agents and this server.