MCP server that gives AI agents the ability to search restaurants, browse menus, add items to cart, place orders, and track deliveries on Grubhub.
Server has 12 tools with complete input schemas and descriptions. Naming follows verb_noun convention (grubhub_*). Descriptions are present and actionable (avg ~120 chars), meeting the 10-1024 char baseline. However, several critical gaps: (1) No output schemas documented, LLMs cannot predict response structure for downstream chaining. (2) Parameters lack type constraints (enums, ranges, patterns), e.g., 'confirm' boolean in checkout lacks guidance on preview vs. irreversible behavior. (3) No error handling guidance, tools return JSON but lack recovery hints. (4) Sensitive operations (login, checkout) lack confirmation/dry-run patterns. (5) Response field naming not verified, cannot confirm if search_restaurants returns 'restaurantId' matching get_restaurant's parameter. Strengths: clear action verbs, good parameter descriptions, proper required field declarations.
Add a menu item to the cart.
Proceed to checkout. Set confirm=false to preview order details before placing; set confirm=true to actually place the order.
Remove all items from the current cart.
Get Grubhub order history — past and active orders.
Get full details for a restaurant: menu categories, items with prices, hours, and address.
Log in to Grubhub with email and password via browser automation. Session is saved for future use.
No output schemas documented. LLMs cannot predict response structure (fields, types, nesting) for downstream tool chaining. E.g., search_restaurants returns a list but structure unknown, cannot confirm if restaurantId field exists to pass to get_restaurant.
Irreversible operations (grubhub_checkout, grubhub_login) lack confirmation/dry-run pattern. Agents can accidentally place orders or log in without preview. No guidance on how to safely test before committing.
No error handling guidance. Tools return JSON but lack recovery hints. E.g., if login fails, should agent retry? Call grubhub_status? No actionable error messages documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Clear the stored Grubhub session. The user will need to log in again.
Search for restaurants on Grubhub by name, food type, or cuisine. Returns a list of restaurants with ratings, delivery times, and fees.
Set the delivery address for Grubhub orders. Must be set before searching for restaurants.
Check if the user is logged in to Grubhub. Returns auth status and instructions if not authenticated. Call this before any other Grubhub operations.
Track the status of an active Grubhub order — delivery progress, estimated time, and driver info.
View current cart contents, including items, quantities, and totals.
Parameters lack type constraints. 'quantity' in grubhub_add_to_cart is a number but no min/max specified. 'confirm' in grubhub_checkout lacks enum or clear true/false semantics. Unbounded numbers invite invalid LLM inputs.
Credentials (email, password) exposed as tool parameters in grubhub_login. Agent traces log all parameters, secrets leak into logs and prompt history. Should use server-side secret injection.