MCP server for exit-intent session analysis and conversational cart recovery with dynamic discount bidding. Analyzes abandoned shopping carts and conducts multi-turn negotiations to recover sales through conversational AI.
This server implements two tools for cart recovery negotiation with basic but incomplete definitions. Both tools have clear verb-noun naming and descriptions present, but parameter documentation is sparse and output schemas are not formally documented. The schema definitions in the input parameters are present and mostly typed, but lack meaningful constraints (enums, ranges, format specs). Error handling is minimal, there is a CartRecoveryError exception class but no structured error recovery guidance in tool descriptions. The mock mode provides a functional fallback, but the definitions do not guide LLMs on error outcomes or recovery paths. Parameter descriptions are present but terse; they lack actionable format/constraint details (e.g., what constitutes a valid 'abandon_reason' string, or what status values are allowed in the negotiation state). Output fields are partially documented via example_usage.py but not formally in the tool definitions themselves.
Calculate total value and determine target retention limits.
Evaluate customer dialog and decide on the next response and discount state.
Output schemas not formally documented. Neither tool includes a documented return schema (e.g., what fields the response object contains, their types, and ranges). Clients and LLMs must infer structure from example_usage.py.
Parameter descriptions lack actionable constraints. 'abandon_reason' is a free-form string with no guidance on valid values, format, or length. 'dialog_history' items lack constraints on 'sender' enum (only 'customer' or 'bot' are mentioned in code, not documented).
Error handling does not guide recovery. CartRecoveryError is raised on API failures (e.g., 'API Negotiation step failed'), but tool descriptions do not document what errors can occur, which are retryable, or what the LLM should do next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Parameter 'current_state' in get_negotiation_step contains a nested 'status' field with undocumented enum values. Code shows 'negotiating', 'accepted', 'rejected' but this is not explicitly stated in the schema description.
analyze_cart description does not clarify WHEN to call it relative to get_negotiation_step or what prerequisites exist. Tool descriptions lack ordering or dependency hints.
No mention of tool state or side effects. The tools are read-only (marked in Risk field), but this is not documented in the tool descriptions themselves. Agents reading descriptions cannot determine idempotency or retry safety.