Kroger grocery assistant with stores, pantry, equipment, orders, and lists. Supports shopping, product search, inventory management, weekly deals, and cart operations.
AI Shopping MCP demonstrates solid foundational structure with 20 well-distributed tools covering e-commerce workflows (shopping lists, inventory, products, recipes, orders). All tools have descriptions and input schemas are present and typed. However, significant gaps exist: output schemas are not documented anywhere in the provided source, many parameter descriptions are generic or lack actionable constraints, and tool compositions could be tighter. The server uses proper verb_noun naming (add_, create_, get_, search_, remove_) but several parameter descriptions lack specificity around formats, ranges, and dependencies. Error handling and recovery guidance are not visible in the tool definitions provided.
Add items to an existing shopping list
Add a shopping list to the user's Kroger cart with the specified modality (PICKUP or DELIVERY)
Add items to the user's pantry or kitchen equipment inventory
Create a new shopping list with the specified items
Update a specific item in a shopping list (quantity, checked status, etc.)
Retrieve the user's order history
Get detailed information about a specific product by UPC
Output schemas not documented. Users cannot see what fields tools return, forcing LLMs to guess downstream field names and types. This breaks tool chaining and wastes tokens on discovery calls.
Parameter descriptions lack actionable constraints. For example, 'items' arrays in create_shopping_list and add_shopping_list_items are described only as 'Array of items with productName, quantity, and upc', no data types, ranges, or format specifications visible. LLMs cannot validate input before calling.
shop_for_items combines three responsibilities: search, create list, and add to cart in one tool. Breaks single-responsibility principle. Should be split into discrete tools so agents can compose workflows flexibly.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Get a recipe with ingredients and cooking instructions
Retrieve a shopping list by ID with all its items
Get the user's shopping profile including preferred store and recent orders
Get detailed information about a specific Kroger store
Get current weekly deals and promotions for a Kroger store
Record a grocery order with items and total cost for history tracking
Remove items from the user's pantry or kitchen equipment inventory
Remove an item from a shopping list
Search for products by name, category, or keywords across Kroger catalog
Search for recipes by ingredients, cuisine, or dietary preferences
Search for Kroger stores by location or zip code
Set the user's preferred Kroger store for shopping
One-shot shopping: search for products, create a list, and add to cart in a single operation
No error recovery guidance visible in tool definitions. Tools do not indicate what to do on failure (retry, ask user, escalate), how to recover from common errors (list not found, product out of stock), or validation constraints that might cause failures.
Generic parameter descriptions. 'The ID of...' repeated across 15+ tools with no context on ID format, where to find it, or how it relates to other IDs. Descriptions should guide LLM selection between similar tools.
Destructive operations (remove_shopping_list_item, remove_from_inventory) lack confirmation or dry-run support. Agents may irreversibly delete user data without reversibility or audit trail.
No pagination parameters documented for list-returning tools. get_shopping_profile, get_order_history (has limit but no offset/cursor), and others do not indicate how to handle large result sets or cursor position for iteration.
Parameter type mismatches and missing specifications. 'storeId' is a string, 'quantity' is a number, 'checked' is a boolean, but no constraints (min/max for quantity, format for storeId, regex for upc). Enables LLM hallucination of invalid values.