AI-powered chatbot for retail inventory management with MCP tools for querying inventory, calculating reorder points, and creating purchase orders
This server has 3 tools with basic schemas and descriptions, but significant quality gaps limit its usability. Tool names follow verb_noun convention (query_, calculate_, create_), which is good. However, descriptions are terse (32-117 chars), lack actionable context for LLM selection, and parameter descriptions are minimal or absent. Input schemas are present but incomplete: several parameters lack descriptions, there are no enums for categorical values (e.g., 'category'), and critical output schema documentation is missing entirely. The query_inventory and calculate_reorder_point tools lack error handling guidance. No tool annotations (readOnlyHint, destructiveHint) are visible. The create_purchase_order tool modifies state but the description does not explicitly state this or warn about irreversibility. Parameter types are declared but lack constraints (ranges, enums, formats). The code shows partial implementation (inventory_tools.py snippet ends abruptly), making it impossible to verify full schema coverage and error paths.
Calculate optimal reorder point for a product based on historical sales data and lead time.
Create a purchase order for restocking inventory.
Query current inventory levels for products. Can filter by SKU, category, or low stock status.
Tool descriptions lack actionable context for LLM selection. Descriptions are 32 - 117 characters but do not explain WHEN to use each tool instead of similar tools, what the LLM should expect in return, or any prerequisites. Example: 'Query current inventory levels for products' does not clarify whether this is for discovery, monitoring, or decision support.
State-modifying tool (create_purchase_order) does not document that it creates a purchase order with irreversible consequences. Description must explicitly state 'Creates a persistent purchase order' and explain retry/confirmation implications.
Output schemas are not documented in tool definitions or code samples. The code snippet ends abruptly; full return structure, field types, pagination limits, and chaining IDs are not visible. LLMs cannot plan downstream calls without knowing what fields are returned.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Parameters lack type constraints and enums. 'category' accepts free-form strings with no enum of valid categories. 'expected_delivery_date' is a string but no format constraint (ISO 8601) is enforced in the schema. Unbounded 'threshold' integer could accept negative or absurdly large values.
Parameter descriptions are minimal or absent. 'low_stock' has a 1-sentence description; 'threshold' has 1 sentence; 'lead_time_days' has no guidance on realistic ranges; 'safety_stock_multiplier' lacks explanation of what a 1.5 value means in business terms. LLMs cannot reason about valid parameter choices without explicit context.
No error handling guidance. No visible error recovery patterns, no indication of which errors are retryable vs. fatal, no actionable error messages guiding the LLM on what to do next (e.g., 'If SKU not found, call list_products() to discover valid SKUs').
No tool annotations visible. Tool definitions lack readOnlyHint, destructiveHint, or idempotentHint. The protocol supports these since spec 2026-07-28; their absence means client UIs cannot distinguish safe vs. risky operations.
Result limits not documented. query_inventory code limits results to 20 but the tool description does not state this. Agents expect to know upfront how many results to anticipate and whether pagination exists.
No confirmation or dry-run pattern for destructive operation. create_purchase_order modifies inventory state with no mention of preview, confirmation, or rollback options. Agents should be able to validate before committing.