Skip to main content
Glama

Everyday shelf prices

shelf_prices
Read-onlyIdempotent

Regular (non-flyer) prices for staples, for items not on sale this week. Store shelf prices are No Frills only for now. One row per product; proxy: true means the price was read at another branch of the banner. Each row carries baseline, the Statistics Canada Ontario average for that kind of item when there is one, and vsOntarioAveragePct. When no store price exists (e.g. Food Basics, FreshCo), hits is empty and fallback holds only the StatCan averages: say they are provincial averages, not what a store charges.

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": "shelf_prices"
  }
}

Input Schema

NameRequiredDescriptionDefault
nearNoWhere the shopper is: a Canadian postal code ("M6H 2B6"), an FSA ("M6H"), or "lat,lng".
limitNoDefault 10, at most 50.
queryYes
fieldsNoReturn only these fields per row (offerId and priceKind are always kept), to save tokens.
radiusKmNoSearch radius in km around `near` (default 5).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare a safe, idempotent, read-only, closed-world read. The description goes well beyond that: it discloses geographic coverage limits (No Frills only for now), the meaning of `proxy: true` (price read at another branch of the banner), the presence of `baseline`/`vsOntarioAveragePct`, and the empty-`hits`-with-`fallback` shape. However, it never states result ordering, whether prices are current as of a date, or what happens with the required `query` field's matching behavior.

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?

Three tight sentences, front-loaded with what the data is and its coverage limitation, then the row shape and the fallback caveat. The `proxy`/`baseline` sentence is dense but every clause conveys distinct field semantics.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden well: one row per product, the `proxy`, `baseline`, and `vsOntarioAveragePct` fields, and the `hits`-empty/`fallback` case are all explained. Remaining gaps — pagination behavior, price recency, and query matching — are moderate for a search-style price lookup.

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

Parameters3/5

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

Schema coverage is 80%, so `near`, `radiusKm`, `limit`, and `fields` are already documented and the baseline is 3. The description adds no additional meaning about `query` matching, how `near` interacts with `radiusKm`, or how `fields` trimming affects the always-kept `offerId`/`priceKind`, so it does not exceed the schema's contribution.

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

Purpose4/5

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

The description names a specific resource — regular, non-flyer shelf prices for staples — and explicitly carves out the sale/flyer case, which separates it from deal-oriented siblings like search_offers and price_history. It never names an alternative tool directly, so the differentiation is by scope rather than by sibling reference.

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

Usage Guidelines4/5

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

It gives a clear usage condition (items not on sale this week) and a handling instruction for the degenerate case: when `hits` is empty, present the `fallback` StatCan figures as provincial averages rather than store prices. What's missing is an explicit pointer to a sibling for sale prices or for multi-store comparison.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources