Serverless MCP Server for Protein Bar Ordering System
Server has 5 tools with complete schemas and descriptions, but quality is inconsistent. Naming follows verb_noun convention (list-, create-, get-, update-). Descriptions are present but generic (avg ~50 chars, below 194-char baseline). Parameters have types and descriptions, but lack enums for constrained values (e.g., status field accepts free-form strings). Output schemas are not documented. Error handling returns generic messages without recovery guidance. No tool annotations (readOnlyHint, destructiveHint). create-order and update-order-status are write operations but lack confirmation/dry-run patterns.
Submit a new protein bar order
Admin function to view details of a specific order
Admin function to list protein bar orders
Get a list of available protein bars
Admin function to update the status of an order
No output schemas documented. LLMs cannot predict response structure or plan downstream tool calls. create-order returns order_id/status/message but this is not formally declared.
status parameter in list-orders and update-order-status accepts free-form strings. Should be enum: ['pending_confirmation', 'delivered', 'cancelled', ...]. Prevents LLM hallucination of invalid statuses.
Destructive operations (create-order, update-order-status) lack confirmation/dry-run pattern. Agents can accidentally submit orders or change statuses without verification. No idempotency guarantees stated.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
Error responses are generic ('Failed to create order', 'Error fetching products'). Do not guide LLM on recovery. Should include: what went wrong, why, and what to try next (e.g., 'Invalid product_id: PZ999. Available: PZ001, PZ002').
Tool descriptions are 45 - 60 characters (below 194-char baseline). Lack context on WHEN to use each tool, prerequisites, or dependencies. E.g., create-order should note: 'Call list-products first to see available items and IDs.'