Skip to content

Pinch Grocery Prices (Australia)

by pinch-app.com · remote · no sign-in to list tools · v1.0.0 · published by com.pinch-app

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

Changes · 3

10 tools: 3 change things and 7 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http grocery https://pinch-app.com/api/mcp --header 'Authorization: <your-authorization>'

Findings

Matches of fixed checks, with the text they matched.

1 info
  • The description is 2,716 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...wrong format (e.g., a 250g microwave pouch when the user likely wants a 1kg bag)."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

10 tools

Changes things 3Claude Code: ask
  • build_basketMANDATORY for shopping lists.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    MANDATORY 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.
  • decompose_productADVANCED / single item.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    ADVANCED / 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).
  • save_basketADVANCED / manual commit.No findings

    Why it is in this group

    • The name "save_basket" says "save": a word for a change.
    Description, as the server wrote it
    ADVANCED / 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.
Only reads 7Claude Code: allow
  • compare_pricesCompare prices for the same product across retailers using its barcode.No findings

    Why it is in this group

    • The name "compare_prices" says "compare": a word for reading.
    Description, as the server wrote it
    Compare 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.
  • get_cheapestFind the cheapest option for a product across all Australian grocery retailers.No findings

    Why it is in this group

    • The name "get_cheapest" says "get": a word for reading.
    Description, as the server wrote it
    Find 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.No findings

    Why it is in this group

    • The name "get_price_history" says "get": a word for reading.
    Description, as the server wrote it
    Get 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.No findings

    Why it is in this group

    • The name "get_product" says "get": a word for reading.
    Description, as the server wrote it
    Get detailed information about a specific grocery product by its ID. Product IDs are returned in search results.
  • get_specialsGet current grocery specials and promotions.No findings

    Why it is in this group

    • The name "get_specials" says "get": a word for reading.
    Description, as the server wrote it
    Get 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.
  • search_productsSearch Australian grocery products across Woolworths, Coles, Aldi, and Harris Farm.No findings

    Why it is in this group

    • The name "search_products" says "search": a word for reading.
    Description, as the server wrote it
    Search Australian grocery products across Woolworths, Coles, Aldi, and Harris Farm. Returns product name, price, brand, category, unit price, and whether it's on special.

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http grocery https://pinch-app.com/api/mcp --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__grocery__search_products",
      "mcp__grocery__get_product",
      "mcp__grocery__compare_prices",
      "mcp__grocery__get_price_history",
      "mcp__grocery__get_specials",
      "mcp__grocery__get_cheapest",
      "mcp__grocery__batch_search"
    ],
    "ask": [
      "mcp__grocery__decompose_product",
      "mcp__grocery__save_basket",
      "mcp__grocery__build_basket"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as grocery. Review it before you use it.