Production-grade product bundling and Average Order Value (AOV) maximizer that calculates attachment affinity scores and generates revenue-optimized bundle discount tiers.
Single tool with critical definition gaps. Tool name 'maximize_bundle_pricing' lacks action verb prefix (should be 'calculate_' or 'optimize_'). Description is adequate (89 chars, within 10-1024 range) but lacks WHEN/WHY guidance. Input schema present but incomplete: candidate_attachments array items lack individual property descriptions; anchor_product and anchor_price descriptions are minimal (11-27 chars). No output schema documented, LLM cannot predict response structure. Tool implementation in mcp_server.py ignores all input parameters (line: `res = client.maximize_bundle_pricing()` passes no args), making the declared schema non-functional. No error handling, validation, or recovery guidance.
Calculates revenue-maximizing multi-product bundle pricing and AOV lift.
Tool name lacks action verb. 'maximize_bundle_pricing' should start with 'calculate_', 'optimize_', or 'compute_' to signal intent to LLM.
Input schema present but non-functional: mcp_server.py line 'res = client.maximize_bundle_pricing()' ignores all declared parameters (anchor_product, anchor_price, candidate_attachments). LLM will pass parameters that are silently discarded.
Output schema not documented. Response structure (bundle_id, anchor_product, bundled_items_count, etc.) is hardcoded in client.py but not declared in tools/list response. LLM cannot plan downstream operations or extract fields reliably.
Parameter descriptions too brief and lack constraints. 'anchor_product' (11 chars), 'anchor_price' (27 chars), and candidate_attachments array items have no per-property descriptions. LLM cannot infer valid formats or ranges.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
No error handling or validation. Tool accepts any input but silently ignores parameters. No guidance on invalid affinity_score ranges (should be 0-1), missing required fields, or malformed candidate_attachments.