Autonomous food ordering via DoorDash. Let your AI agent search restaurants, build orders, and complete checkout. Supports persistent session management, real-time tracking, and full order lifecycle automation. Production-ready MCP server for personal agents.
Server has 9 tools with clearly visible schema definitions and descriptions in src/index.ts. All tools have basic descriptions (10-150 chars, below the baseline avg of 194 chars, which is acceptable), and all have input schemas defined. However, several critical gaps prevent a higher score: (1) Output schemas are completely undocumented, no schema is provided for what each tool returns, forcing LLMs to infer structure from responses. (2) Many parameter descriptions are sparse or missing guidance on valid values, formats, and constraints. (3) Error handling descriptions are absent, tools don't document what errors are possible or how to recover. (4) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications. (5) Some parameter naming inconsistencies (e.g., 'arguments' vs explicit params). The tool names follow verb_noun convention well (search_*, get_*, add_*, check_*, etc.), which is a strength. Descriptions are action-oriented but lack depth on when to call each tool and what prerequisites exist.
Add a menu item to the cart. Must be on a restaurant page first (use doordash_menu).
Check if user is logged in to DoorDash. Returns login status and instructions if not authenticated. Call this before any other DoorDash operations.
Clear stored DoorDash session cookies. Use this to log out or reset authentication state.
View current cart contents, including items, quantities, and totals.
Proceed to checkout and optionally place the order. Set confirm=false to preview order details, confirm=true to actually place the order.
Get the full menu for a specific restaurant. Returns categories and items with prices.
Output schemas completely undocumented. No tool definition includes what the tool returns, requiring LLMs to infer response structure. This violates pattern:tool and mxe:include-chaining-ids, downstream tools need channel IDs, order IDs, etc. from prior calls, but LLMs cannot know what fields to extract without documented schemas.
No error handling guidance. Tool definitions do not describe what errors are possible, whether they are retryable, or what the LLM should do next. For example, doordash_checkout with confirm=true (irreversible operation) has no recovery guidance if payment fails. Violates pattern:recovery-guide and pattern:error-classification.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Search for restaurants on DoorDash. Can search by restaurant name, food type, or cuisine.
Set the delivery address for DoorDash orders. Must be set before searching for restaurants.
Track the status of an order. Shows delivery progress, estimated time, and dasher info if available.
Missing tool annotations despite clear risk classifications. Tools are labeled with risk levels (READ_ONLY, WRITE, IRREVERSIBLE) in the metadata, but these are not exposed as tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot see the risk classification in the tool definition, leading to unsafe composition. doordash_checkout (IRREVERSIBLE) is a critical candidate for destructiveHint annotation.
Parameter descriptions lack format and constraint guidance. 'address' parameter (doordash_set_address) provides an example but no validation rules. 'query' parameter (doordash_search) is vague about what constitutes a valid search. 'specialInstructions' (doordash_add_to_cart) has no max length or format guidance. Violates pattern:constrained-input and review:param-validation-rules.
Dependencies between tools are undocumented. doordash_add_to_cart requires first calling doordash_search and doordash_menu to get restaurantId, but the description does not explicitly state this prerequisite. doordash_checkout and doordash_track_order assume a cart/order exists, with no guidance on how to establish it. Violates pattern:tool-description and mxe:chat-data-model.
Pagination and result limits not documented. doordash_search and doordash_menu return restaurant/menu lists but do not describe how many results are returned, whether there is pagination, or how to request the next page. Without pagination limits and cursors, large results can blow the context window (violates mxe:enforce-result-limits).
Confirmation/dry-run pattern missing for irreversible operations. doordash_checkout accepts confirm=true/false, but the description does not explain what preview mode (confirm=false) returns or whether it is safe to call multiple times. No guidance on how to safely test an order before committing. Violates pattern:confirmation-request.