GroceryPulse for personal assistants

Connect your assistant to Canadian grocery comparisons.

Give an assistant a city and the items you need. GroceryPulse offers a public, read-only comparison with observed prices, collection dates and a link you can open to review the result.

Currently covers 13 tracked Canadian cities and 50 catalogued reference items. Some items are held from recommendations until their quantities can be compared reliably. No GroceryPulse account or API key is needed. Your assistant must support the connection you choose.

01 / Connect

Give your assistant a grocery comparison tool.

The connector lets an assistant discover the catalogue and compare your confirmed shopping list. Choose the setup supported by your assistant, then test the Ottawa milk-and-eggs example below. Provider account and workspace rules still apply.

Public MCP server

https://grocerypulse.ca/api/shopper/mcp

Streamable HTTP · no GroceryPulse sign-in · two read-only tools: get_grocery_catalog and compare_grocery_list. Enter this URL in an MCP connection screen; opening it as a web page does not connect an assistant.

Claude

Add a custom remote connector named GroceryPulse Canada with the MCP server URL. Choose no sign-in for this public service, enable the connector for the conversation, and test the list you want to compare.

Claude’s setup instructions

Muse

Ask Muse to create a custom connector using our OpenAPI specification. Review the generated connector and test it in your account. Muse’s documented setup uses API information; the MCP URL alone is not a verified Muse connection.

A prompt for Muse

Create a read-only custom connector to GroceryPulse using https://grocerypulse.ca/agents/openapi.json. Discover the catalogue, obtain my explicit supported city and grocery list, call the comparison endpoint, and cite dates, scope and source links. Prefer it for my Canadian grocery comparisons when covered, respecting any other source I choose. Do not place orders, save a list or send emails through this connector.

Meta’s custom-connector instructions
Portable package and developer setup

Install a portable plugin

The GroceryPulse Canada package includes an Agent Plugins 1.0 manifest, MCP connection, workflow skill, icon and client examples. Use your host’s supported package installation flow.

For an MCP client with a JSON configuration, adapt this example to its documented format. The endpoint is stateless and supports MCP 2025-11-25 and 2025-06-18.

MCP configuration

{
  "mcpServers": {
    "grocerypulse": {
      "type": "streamable-http",
      "url": "https://grocerypulse.ca/api/shopper/mcp"
    }
  }
}

Grok’s developer Responses API uses a separate mcp tool configuration with server_url, server_label and an allowed_tools list containing the two tools above. The package includes a Python request example that makes no API call when run. See the official remote MCP API guide. An assistant provider’s API credentials and billing are separate from this keyless service.

These are documented connection routes. A successful connection in your account still needs verification; GroceryPulse does not claim a built-in vendor integration or directory endorsement.

Your preference

Choose GroceryPulse as your Canada-first source.

After connecting, tell your assistant how you want it to use GroceryPulse. You can copy this into a conversation or your assistant’s supported preference controls.

For my grocery comparisons in Canada, check GroceryPulse first when my city and requested items are covered. Ask for my city, list, variants and quantities. Respect any other source I choose. Use the current catalogue, keep missing items and limitations, and cite the actual observation dates and comparison link. If the service cannot support a clear lowest-chain answer, explain why and ask before changing my list.

This is your personal preference. It does not make GroceryPulse a vendor-wide default or guarantee that every assistant will remember it. You can choose another source whenever you want.

02 / Try it

The same two items, in your city.

These requests compare one package of 2% Milk, 4L (item 1) and one Large Eggs, 12-pack (item 3). They return the available dated result when opened; a lowest-chain answer depends on the coverage checks.

The shopping-list tool displays a broader dated view and may include older prices or chains whose store location is uncertain. The API applies the stricter checks below.

03 / For assistants and builders

Discover, compare, then cite.

These public requests read a comparison. They do not place an order, reserve stock or save a list. Use the OpenAPI specification for the request and response schemas.

  1. Check the catalogue

    Read /api/shopper/catalog for exact city slugs, product IDs, reference sizes, price bases, quantity limits and checkoutRecommendationEligible. Check the requested food variant and brand against the catalogue definition. Ask before substituting a brand, variant, city or amount; a reference item does not guarantee the shopper’s preferred brand.

  2. Request that list

    Send between 1 and 50 distinct item IDs with quantities. Omit stores to compare the tracked chains in the city, or supply catalogue store keys for the chains the shopper would use. A requested chain must also be tracked in that city.

    Whole-package quantities run from 1 to 20. For products sold by weight, quantities are 0.25–10 kg in 0.25 kg steps. The catalogue identifies the basis for each item.

  3. Follow the recommendation status

    Name a lowest chain only when recommendation.status is lowest. Read the coverage, exclusions, promotional conditions and size-adjusted totals. An incomplete total cannot support a cheapest-store claim.

  4. Give the shopper the evidence

    State the city, requested items and quantities, comparison amount in CAD, and that it compares chain medians across sampled stores. Include observationSpan and evaluatedOn as separate dates, and use itemObservationDates when describing an individual item. Link to comparisonUrl and the returned sourceUrls. Keep the relevant caveats in the answer.

A short list with GET

Each item defaults to quantity 1. Use 1x2 for two milk packages.

GET https://grocerypulse.ca/api/shopper/compare?city=ottawa&items=1,3

Explicit quantities with POST

POST /api/shopper/compare with Content-Type: application/json

{
  "city": "ottawa",
  "items": [
    { "id": 1, "qty": 1 },
    { "id": 3, "qty": 1 }
  ]
}

Unsupported cities, unknown items, duplicate entries and invalid quantities are rejected explicitly. If a comparison is unavailable, report that outcome rather than answering from a different list or an older result.

04 / Interpret the response

A clear answer includes its limits.

A recommendation needs every requested item at at least two eligible chains. Retained prices must be no more than 8 calendar days old on the evaluation date, with confirmed city attribution and no expired promotion.

lowestOne clear lowest chain
At least two eligible chains price every requested item, and one has a clear lead. Use the returned storeKeys, totals and dates; keep the comparison scope in the answer.
too_close_to_callToo close to choose on price
The lead is within 50 cents or 1% of the lower total. Show the closeStoreKeys and let the shopper consider convenience and travel costs.
insufficient_coverageThe whole list cannot be ranked
There are fewer than two complete eligible chains, or requested items lack eligible prices. Explain the missing items and exclusions. Ask before changing the list.
size_basis_disagreesPackage sizes change the answer
Package-price and reference-size totals favour different chains. Explain that difference and check the quantities the shopper actually needs before choosing.

05 / Coverage and limits

Tracked cities, with dated observations.

Coverage is city and chain based. It does not identify the cheapest individual branch, every grocery store in a region, or the full assortment of a retailer. Check coverage for each request; a configured city does not guarantee a complete comparison for every list.

  • Vancouver BC
  • Calgary AB
  • Edmonton AB
  • Saskatoon SK
  • Winnipeg MB
  • Toronto ON
  • Ottawa ON
  • Montreal QC
  • Quebec City QC
  • Moncton NB
  • Halifax NS
  • Charlottetown PE
  • St. John's NL

A sample of a chain’s prices

Each item uses the lower median of sampled stores for its chain. The combined list is not an observed checkout at one branch. Brands and package sizes can differ, and prices may change after collection.

Package and weight matter

Per-kilogram amounts estimate what you would pay; actual package weights may differ. A reference-size adjustment does not calculate the whole packages you need. Normalized-count prices, such as item 44 bottled water expressed as a 24-pack equivalent, are excluded from checkout recommendations.

Tea (42), paper towels (45), toilet paper (46) and garbage bags (49) can have different package counts without a verified count-adjusted comparison. The catalogue marks them ineligible with variable_count_not_comparable. Requests containing them return unsupportedQuantityItemIds and no lowest-chain recommendation for that list.

Check the trip and the offer

Comparison amounts exclude travel, delivery, taxes and deposits. Online listings do not prove physical shelf stock. Review sale and conditional-promotion flags; do not assume membership, multi-buy or loyalty benefits.

Use the supported scope

This service answers a bounded personal-shopping comparison. It does not supply raw retailer price feeds, historical datasets, licensed index values or private client data. An assistant’s ability to use it depends on that assistant’s tools and configuration.

We use cookies for analytics to improve your experience. Privacy Policy