MCP App Store
by KeenEthics

Overview

Ask Safeway to reorder your weekly groceries, build a grocery cart from a shopping list, find recipe ingredients, and discover product swaps, all without leaving the chat. Try prompts like: 1. Reorder my weekly groceries 2. Build a cart from a photo of my shopping list 3. Find ingredients for this recipe 4. Find gluten-free alternatives Build, update, and review your grocery order in the chat. At checkout, eligible coupons, offers, and deals are automatically applied to help you save.

Tools

add_to_cart

ChatGPT
Add ONE OR MORE grocery products to the user's cart in a single call. When the user asks to add or buy items, pass their product phrases in queries (e.g. ['milk'] or ['Signature SELECT Pickle Chips Hamburger Dill 16 oz', 'eggs']) — do NOT call this tool multiple times in the same turn; batch all distinct items into one queries array. When the user names a SPECIFIC product (brand + variety + size), pass that full phrase verbatim as the query — the server uses it to find and auto-add the exact item. Do NOT shorten it to a generic term. For items the server cannot confidently match, the results are shown in an interactive widget where the USER picks what to add. If a matched product is ALREADY in the cart, it is NOT added again — the tool response will say so; relay that to the user and, if they want more of it, use update_cart_item to change the quantity instead of calling this tool again. The items/client_token parameters are reserved for the product widget's “+ Add” button — never set them yourself; always use queries.

buy_it_again

ChatGPT
Rebuilds the user's regular cart by fetching personalized reorder suggestions from their purchase history and adding all of them to the Safeway cart. Use when the user asks to reorder their usuals, buy it again, or rebuild their regular cart.

check_delivery_availability

ChatGPT
Check if delivery is available for a given zip code and get nearby store information. If available, updates user preferences to this zip code. Returns available stores and their delivery details.

get_cart

ChatGPT
Retrieve the current cart contents for the linked customer. IMPORTANT: the results are rendered in an embedded cart widget. After calling this tool you MUST NOT output any cart items, prices, quantities, totals, fees, savings, or delivery slot details in text — the widget already shows all of this information. Always inform the customer that applicable coupons are auto-applied.

get_substitution

ChatGPT
INTERNAL WIDGET TOOL — do NOT call this directly. This tool is called automatically by the cart widget when the customer taps the Swap button on a cart item. For any conversational swap request ('replace X with Y', 'substitute X', 'swap X for Y', 'find an alternative for X'), use swap_cart_item instead — it handles the full flow including substitution lookup, search, and cart update. Calling this tool directly from chat will corrupt the widget state and leave the cart in an inconsistent state.

remove_from_cart

ChatGPT
Remove one or more items from the Safeway cart by itemId. Important: The updated cart is rendered in an embedded widget. After calling this tool, do not list or summarize cart items, prices, quantities, totals, fees, or delivery slot details in text. CRITICAL: Do NOT call this tool when the user wants to replace, swap, substitute, or find an alternative for an item — use swap_cart_item instead. Removing the original item before the replacement is confirmed leaves the cart in a broken state with neither product. clear_cart must ONLY be set to true when the user explicitly asks to clear or empty their entire cart (e.g. 'empty my cart', 'clear everything'). Do NOT set clear_cart=true for replacements, swaps, or single-item removals.

search_products

ChatGPT
Search for ONE OR MORE grocery products at the user's preferred store in a single call. This tool ONLY searches — it never adds anything to the cart. When the user asks to ADD or BUY items (e.g. 'add milk to my cart'), call add_to_cart with the product phrases in its queries parameter instead of this tool. The store is automatically derived from the linked customer's delivery preferences. Pass one keyword in queries for a single item (e.g. ['milk']) or several for multiple items (e.g. ['milk', 'eggs', 'bananas']) — do NOT call this tool multiple times in the same turn; batch all distinct items into one queries array instead. When the user asks about deals, sales, discounts, or promotions on a SPECIFIC product (e.g. 'show me deals on apples', 'what's on sale for chicken'), set deals_only to true to restrict results to items with an active offer. Do NOT set deals_only for a plain search with no deal language. Do NOT call this tool at all for a generic deals request that names no product (e.g. 'what deals do you have', 'show me today's specials') — ask the user which product they want deals on first; there is no way to browse all deals without one.

swap_cart_item

ChatGPT
Replace an existing cart item with a different product. Use this tool whenever the user asks to replace, swap, substitute, exchange, or find an alternative for a product already in their cart (e.g. 'Replace the milk with Fairlife', 'Swap my eggs for organic ones', 'Substitute the bread with something else', 'Find me an alternative for the keto bread'). REQUIRED: item_to_remove.item_id must identify a product currently in the cart — if you cannot determine which cart item the user means, call get_cart first and ask for clarification. Behaviour depends on what the user provides: • replacement_query given, single high-confidence match (≥90%): swap happens automatically — updated cart shown, no carousel. • replacement_query given, multiple candidates: a swap carousel is shown with search results — the original item stays in the cart until the user confirms. Wait for the user to choose. • No replacement_query (user wants alternatives without specifying one): curated substitutes from Safeway are shown in the swap carousel — the original item stays in the cart until the user confirms. • replacement_product_id given: direct swap — use when the user picks conversationally from a displayed carousel (e.g. 'the second one'). Call this tool again with the chosen product's ID. CRITICAL: Do NOT decompose a swap request into remove_from_cart + search_products or get_substitution. This tool handles the full swap atomically and keeps the original item in the cart until the user confirms. Calling remove_from_cart first leaves the cart in a broken state with neither item. Do NOT call this tool for qty changes — use update_cart_item. IMPORTANT: the result is rendered in the cart widget; do not list or summarise cart contents in text.

update_cart_item

ChatGPT
Update an item already in the cart. For regular items pass qty. For weight-based items (displayType === '3') pass selected_weight and entry_id. IMPORTANT: the updated cart is rendered in an embedded widget. After calling this tool you MUST NOT list or summarize cart items, prices, quantities, totals, fees, or delivery slot details in text. Always inform the customer that applicable coupons are auto-applied.

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

Similar Apps