protogrid

Search / com.pinch-app/grocery

Pinch Grocery Prices (Australia)

R1· needs a key

Live Australian grocery prices from Woolworths, Coles, Aldi and Harris Farm.

v1.0.0 · active · website · descriptor JSON · versions

An agent can connect on its own if it already holds GROCERY_TOKEN.Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.
Quality76good
Trust79of 100
Uptime, 30 days98%
Latency p501743 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "grocery": {
      "type": "http",
      "url": "https://pinch-app.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${GROCERY_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http grocery https://pinch-app.com/api/mcp --header "Authorization: Bearer ${GROCERY_TOKEN}"
[mcp_servers.grocery]
url = "https://pinch-app.com/api/mcp"
bearer_token_env_var = "GROCERY_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "grocery": {
      "type": "remote",
      "url": "https://pinch-app.com/api/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:GROCERY_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "grocery": {
      "type": "http",
      "url": "https://pinch-app.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${GROCERY_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=grocery&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vcGluY2gtYXBwLmNvbS9hcGkvbWNwIiwiaGVhZGVycyI6eyJBdXRob3JpemF0aW9uIjoiQmVhcmVyICR7R1JPQ0VSWV9UT0tFTn0ifX0%3D"
}
{
  "servers": {
    "grocery": {
      "type": "http",
      "url": "https://pinch-app.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${GROCERY_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "grocery": {
      "httpUrl": "https://pinch-app.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${GROCERY_TOKEN}"
      }
    }
  }
}
extensions:
  "grocery":
    enabled: true
    name: "grocery"
    type: streamable_http
    uri: "https://pinch-app.com/api/mcp"
    headers:
      "Authorization": "Bearer ${GROCERY_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${GROCERY_TOKEN}. The registry never accepts secret values.

Quality 76 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene64 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length2 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • fail
    tools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_cheapest (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); decompose_product (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); compare_prices (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 3,488 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

10 tools, about 3,488 tokens to load them all · tool set 3f41206f306f · checked 2026-10-19 10:52 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 79 / 100

no-repository
provenance55
liveness99
freshness85
hygiene80

+dns-namespace +website +reachable +uptime-98% ~updated-65d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://pinch-app.com/api/mcp streamable-httpapi_key ${GROCERY_TOKEN}yes98%1743 ms2025-06-182026-10-19

Tools (10)

batch_searchADVANCED / manual selection. Do NOT use this to build a shopping list: for any list of 2 or more items, call build_basket (one call, server-side, cheapest pick per item). Use batch_search only when you need the RAW candidate products for items you intend to select MANUALLY (for example, to override build_basket's pick on one item). It searches multiple items in parallel and returns raw candidate products per query (up to candidates_per_retailer per retailer) with NO filtering or scoring applied. WORKFLOW: 1. Call batch_search with your shopping list items 2. Review the candidates for each item. For each query, pick the single best product_id per retailer that actually matches what the user wants (correct product type, reasonable size, not a different product). If none of the candidates are a good match for a query, call batch_search again with a refined query (e.g., more specific terms, different wording) 3. Once you have confirmed product_id selections for all items, call save_basket with your picks TIPS: - Set product_type to help narrow results to the right category (e.g., fresh_produce for herbs and vegetables) - Each candidate includes a product_categories field (JSON array of retailer category labels like 'Yoghurt', 'Herbs & Spices', 'Sausages'). Use this to distinguish the actual product type when names are ambiguous (e.g., 'oregano' the herb vs 'oregano sausages') - Prefer products where the name clearly matches the query intent - For staples (milk, eggs, bread), the cheapest option is usually the store brand - If results look wrong (e.g., searching 'rosemary' returns snacks instead of herbs), retry with a more specific query like 'fresh rosemary' - Each item includes a 'cheapest' hint with one entry per retailer. This is the cheapest candidate whose product_categories match the inferred subcategory for the query, NOT necessarily the lowest unit_price overall: a clearly off-category cheaper item (e.g., a snack bar under 'peanut butter') is deliberately excluded. When no category signal is available it falls back to the raw lowest unit_price. Treat the hint as advisory and confirm against the full candidate list and the user's intended format. AMBIGUITY: When candidates for a query span clearly different product formats (e.g., microwave rice pouches vs dry rice bags, single-serve vs family/bulk sizes, flavoured vs plain variants, fresh vs frozen), ASK the user which format they prefer before selecting a product. Compare the size field across candidates to detect this: a spread from 125g to 5kg signals format ambiguity. Do not silently pick the cheapest option when it may be the wrong format (e.g., a 250g microwave pouch when the user likely wants a 1kg bag).
build_basketMANDATORY for shopping lists. When the user gives you 2 or more grocery items, call this tool ONCE with the full list. Do NOT call decompose_product, search_products, or batch_search per item: this tool searches every item in parallel with built-in query analysis (category routing, brand aliases, subcategory boost) and returns a basket with per-item cheapest pick, per-retailer options, basket total, retailer totals, and a shareable share_url. If the user named the stores they shop at, pass them in 'retailers'; otherwise omit it to search all four. VALIDATION (mandatory before rendering): The search engine uses keyword matching, so wrong products leak through. Items flagged with a 'review' field on their cheapest pick are LIKELY WRONG and need your attention first. Then scan ALL picks (flagged or not) and check: (1) Is the product actually what was asked for? (e.g. 'frozen chips' is NOT 'frozen blueberries', 'sweet potato' is NOT 'potato', 'chicken fingers crumbed' is NOT 'chicken breast') (2) Is the size/form correct? (e.g. 400g pack is not a valid match for '2kg') (3) Is the selected option the cheapest CORRECT product, not just the cheapest product? If a pick is wrong: pick the correct product from by_retailer options for that item, or mark as '(check in store)'. Recalculate basket_total from your corrected picks. OUTPUT FORMAT: Line 1: '**Cheapest basket: $X.XX**' (use corrected basket_total). Then ONE markdown table with columns: Item | Product | Store | Price | Size. Then one line: 'View and share this basket: <share_url>'. Use '(check in store)' in the Product cell for items in items_missing or where no correct product exists. No preamble, no per-item narration, no follow-up offers.
compare_pricesCompare prices for the same product across retailers using its barcode. Returns all retailers stocking the product, sorted cheapest first. About 7,800 products have barcode matches.
decompose_productADVANCED / single item. Do NOT use this to build a shopping list: for any list of 2 or more items, call build_basket (one call, server-side). Use decompose_product only to break ONE item into structured search attributes when you intend to override build_basket's pick for that single item. This does not call any API; it is a structured reasoning step. OUTPUT: canonical_query, disqualifiers, and suggested_category for that single item. Fill in every field based on what a typical Australian family would mean by this item. CORE RULE: Unless the user literally specifies a brand, brand_preference MUST be null and the strategy is cheapest-first (unit_price_asc, no retailer filter).
get_cheapestFind the cheapest option for a product across all Australian grocery retailers. Searches by name and returns results sorted by price ascending.
get_price_historyGet historical price data for a product. Shows price changes over time with stats (lowest, highest, average). History depth depends on your tier (30-365 days).
get_productGet detailed information about a specific grocery product by its ID. Product IDs are returned in search results.
get_specialsGet current grocery specials and promotions. Filter by retailer or category. Results include savings amounts. Updated weekly. Specials captured before the most recent Wednesday catalogue changeover (Coles/Woolworths) are excluded as unconfirmed; after a changeover the list can be near-empty until the next collection. Individual products still expose such prices via get_product with special_may_have_ended: true.
save_basketADVANCED / manual commit. Do NOT use this to build a basket from a shopping list: for any list of 2 or more items, call build_basket (it searches, picks the cheapest, totals, and returns a share_url in one call). Use save_basket only to commit a basket from product_ids you have ALREADY chosen yourself (for example, after overriding build_basket's pick on an item). It computes totals and returns a shareable basket URL. For each item, provide the query string and one product_id per retailer (the best match you found in batch_search results). You do NOT need a pick for every retailer; omit a retailer if no good match was found. IMPORTANT: Only call this after you have reviewed batch_search results and confirmed your picks. Do not pass product_ids blindly from search results.
search_productsSearch Australian grocery products across Woolworths, Coles, Aldi, and Harris Farm. Returns product name, price, brand, category, unit price, and whether it's on special.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.pinch-app/grocery",
  "title": "Pinch Grocery Prices (Australia)",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://pinch-app.com/api/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "format": "string",
          "isSecret": true,
          "isRequired": true,
          "description": "Bearer token. Get a free API key: POST https://pinch-app.com/api/register with {\"name\",\"email\"}. Free tier is 30 requests/min, 1000/day.",
          "placeholder": "Bearer pk_live_..."
        }
      ]
    }
  ],
  "version": "1.0.0",
  "websiteUrl": "https://pinch-app.com",
  "description": "Live Australian grocery prices from Woolworths, Coles, Aldi and Harris Farm."
}