MCP server for burger ordering and e-commerce operations with OAuth2 CIBA authentication integration for Mistral Le Chat
This server has critical gaps in naming consistency, parameter descriptions, and output schema documentation. Tool definitions are incomplete, with missing schemas for 4 of 6 tools, and parameters lack clear type and constraint documentation. The codebase shows tool definitions in mcp-auth/tools.py are stub functions without implementation details visible, and handlers.py only explicitly defines 1 tool (search-burgers) with full schema. Naming is inconsistent (search_products vs search-burgers uses different delimiter conventions). Error handling is generic and does not guide recovery. While the server compiles and registers tools, the definitions lack the precision required for reliable LLM tool selection and composition.
Charge the customer's registered payment method once CIBA auth is confirmed. Returns confirmation_code and receipt_url.
Create a pending order in the system. Returns order_id and total amount.
Trigger a CIBA backchannel authentication request for a given order. Sends OTP via SMS. Returns auth_request_id.
Search and filter burgers by ingredients, price, and calories
Search product catalog by natural language query and price ceiling. Returns JSON list of matching products with id, name, price, image_url.
Verify the OTP submitted by the user against the pending CIBA auth request. Returns verified: true/false.
Inconsistent tool naming convention: 'search_products', 'create_order' use underscores, but 'search-burgers' uses hyphens. LLMs may struggle to parse or conflate similarly-named tools.
Missing or incomplete parameter descriptions for authentication and payment tools. 'phone_number' lacks format guidance (international format? E.164?). 'otp' does not specify length or character set. 'delivery_mode' has no enum or valid value documentation.
No output schema documentation for any tool. The code shows tools return 'str' but does not document the JSON structure, field names, or required fields that downstream tools expect. Agents cannot reliably extract IDs for chaining.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 70 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 48 | 2024-11-05+ | v1 |
Irreversible tools (confirm_payment, initiate_ciba_auth) lack confirmation/dry-run steps or clear warnings in descriptions. No guidance for LLMs on whether the operation is retryable or has side effects.
Tool descriptions are too generic and do not explain WHEN to use each tool or any prerequisites. E.g., 'Trigger a CIBA backchannel authentication request' does not explain that an order must exist first, or what happens if the order_id is invalid.
No error handling or recovery guidance visible in tool definitions. Generic error messages (e.g., 'invalid input') do not tell the LLM what to try next or which tool to call if a lookup fails.
Tool implementation files (mcp-auth/tools.py) show only stub function signatures with docstrings. No runtime behavior, validation, or error handling is visible. Per HARD SCORING RULES, if tool definitions are inferred rather than explicitly visible, cap per-tool score at 50.
No pagination support visible for search_products and search-burgers. If either returns many results, they should accept limit/offset and return a total count. Current definitions lack these parameters.
Parameter naming is inconsistent with the rubric's guidance on human-friendly identifiers. 'product_id', 'order_id' are system IDs. No indication that a natural name (product name, order reference) is accepted as an alternative, forcing lookup calls.