saveon-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SAVEON_STORE_ID | No | The Save-On-Foods store id used for prices and stock. Defaults to 6613 (9th & Jasper, Edmonton). Any Save-On-Foods location works; find a store number via the stores API and pass its retailerStoreId. | 6613 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_productsA | Search what the store stocks right now, with live prices. query: free text ("chicken thighs", "tofu"); empty lists the whole category.
category_id: a department id from list_categories; defaults to all of Grocery.
on_sale_only: only items with a current promotion (this week's deals).
Returns the API's total match count plus up to |
| list_categoriesA | List departments under parent_id (default: top-level Grocery departments such as Meat & Seafood, Fruits & Vegetables, Deli & Ready Made Meals). Use the returned ids as category_id in search_products. depth 2 includes sub-departments. |
| product_detailsA | Full detail for one product by sku (from search_products): regular and sale price, ingredients with allergen statement, nutrition facts per serving, country attributes and image URL. Fresh meat and produce usually carry no ingredients or nutrition. |
| price_checkA | Price a shopping list in one call. For each item returns the best match (first
relevance hit, or the first on-sale hit when prefer_sale is set) and the cheapest
available match, plus an estimated total of the best matches. Items with no match
are listed under |
| find_storesB | Save-On-Foods locations in a city with the store id to use as SAVEON_STORE_ID, address, hours, phone and whether pickup or delivery is offered. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| meal_ideas | Suggest meals built around what is on sale this week at the downtown store. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool has a distinct primary purpose: search vs. browse categories vs. batch price a list vs. find stores vs. fetch full product detail. The only mild overlap is search_products and price_check, which both return products with prices, but the descriptions clearly separate single-query search from list-wide pricing.
Four tools follow a verb_noun pattern (search_products, list_categories, price_check, find_stores) while product_details breaks the pattern by being noun-first. The deviation is minor and the intent stays obvious.
Five tools is well within the healthy range and each earns its place, covering the natural shopping workflow of browse, search, price, locate store, and inspect detail. Nothing feels redundant or padded.
The surface covers discovery (search, categories), evaluation (details, price_check) and logistics (find_stores) with no dead ends for a read-only grocery helper. Gaps are minor, such as no per-store stock or cart/order capability, which agents can work around.