Inventory forecasting and replenishment planning client that calculates sales velocity, projects stockout dates, and generates purchase orders
This server demonstrates foundational structure but falls significantly short of production-grade tool quality. All three tools have descriptions and basic schemas, but parameter descriptions are sparse or missing, output schemas are not formally documented, and error handling is minimal. The naming convention is acceptable (verb-noun), but parameter documentation and schema rigor are below baseline. This is a typical community-grade implementation with significant gaps.
Builds a structured purchase order payload draft for ERP/Supplier integration.
Calculates smoothed average daily sales velocity from history, removing >3x outlier spikes.
Runs a full inventory forecast and replenishment plan for a given SKU.
Output schemas are not documented. All three tools return structured dicts, but the definitions do not formally specify the response structure. LLMs cannot plan downstream tool calls or extract the correct fields without seeing the output schema.
Parameter types lack specificity. 'sales_history' is typed as 'List[Dict[str, Any]]' without formally specifying dict keys ('date', 'units_sold'), their types, or required formats. LLMs cannot validate input before calling.
Numeric parameters lack bounds. 'lead_time_days' and 'safety_stock_days' have no min/max constraints in descriptions or schemas. LLMs could pass absurd values (0, -1, 999999) that the tool may not handle gracefully.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Error handling is minimal. The code raises generic 'ForecastError' exceptions with only one example ('sales_history cannot be empty'). No guidance is provided to LLMs on how to recover from errors (e.g., 'Check that sales_history has at least 3 days of data').
Parameter descriptions are generic or missing detail. 'sales_history' is described as 'List of sales records with date and units_sold', no mention of required date format, expected unit values, or data quality assumptions (e.g., 'units_sold must be >= 0').
No tool composition hints or dependencies documented. The 'forecast' tool suggests calling 'build_purchase_order' next, but no tool description makes this relationship clear or guides the LLM on parameter passing (e.g., 'Pass the returned suggested_order_quantity and reorder_trigger_date to build_purchase_order').