Model Context Protocol server for DoorDash delivery management API integration
Server has 6 tools with basic descriptions and parameter schemas, but significant gaps limit production readiness. All tools have descriptions (10-50 chars, below the 50-200 char baseline for LLM optimization), and input schemas are present but minimal. Parameters lack detailed constraints, enums, and format guidance. No output schemas documented. Error handling is generic (ValueError wrapping). Tool names follow verb_noun convention (good), but descriptions are too terse to guide LLM selection. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE). Missing dependency hints and recovery guidance.
Accept a delivery quote from DoorDash.
Cancel a delivery in DoorDash.
Create a delivery with DoorDash.
Create a delivery quote from DoorDash.
Get delivery details from DoorDash.
Update delivery details in DoorDash.
Descriptions are too short (10-50 chars vs. 50-200 char baseline). LLMs cannot distinguish when to use create_quote vs. accept_quote vs. create_delivery without richer context. E.g., 'Create a delivery quote from DoorDash' does not explain prerequisites, when to call it, or what it returns.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., quote_id, delivery_id, tracking_url). Responses are opaque.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. cancel_delivery is DESTRUCTIVE but has no annotation. LLMs cannot infer retry safety or confirmation requirements.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Parameter descriptions are missing or generic. 'external_delivery_id' has no format guidance (is it a UUID? alphanumeric? max length?). 'dropoff_address' lacks validation rules. LLMs will pass invalid values.
Error handling is generic (ValueError wrapping with traceback). No recovery guidance. If create_quote fails due to invalid address, the LLM has no hint to validate or retry with a corrected address.