MCP server for orchestrating e-commerce operations including returns, exchanges, landed cost calculations, and inventory recommendations via Swap Commerce API
The server has well-structured input schemas for all three tools with proper type definitions and descriptions. Tool names follow verb_noun conventions (swap_create_return_session, swap_calculate_landed_cost, swap_get_exchange_recommendations). However, critical gaps exist: (1) No output schemas are documented, LLMs cannot predict return structure or plan downstream calls. (2) Tool descriptions lack actionable context about when/why to use each tool or what they return. (3) Parameter descriptions are minimal, many lack constraint details (format, range, valid options). (4) No error handling guidance, executeTool throws generic errors. (5) The 'reason' enum in swap_create_return_session uses SCREAMING_SNAKE_CASE inconsistently with typical camelCase naming patterns. Schemas are present and largely well-formed, but lack the completeness expected of production-grade tools.
Compute precise cross-border duties, taxes, and local VAT/GST for custom clearance (DDP).
Initiate a self-service returns or instant exchange process on Swap-OS.
Offer real-time exchange recommendations and inventory availability based on returned items.
No output schemas documented. Tools return Promise<Object> but callers cannot infer response structure. LLMs cannot plan downstream calls or extract the right fields for chaining.
Parameter descriptions are sparse or missing actionable constraints. 'orderId' and 'customerEmail' are described but lack format/validation hints. 'customerCountry' says 'ISO 2-letter country code' but doesn't note if lowercase is required. 'exchangeSku' doesn't clarify whether it's required when action=EXCHANGE.
Error handling returns generic errors ('Unknown MCP Tool', 'Swap API Error: [status] message'). No guidance for recovery: is this retryable? Should the agent try a different tool? What corrective action should the user take?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Tool descriptions lack context about when/why to use each tool vs the others. Why call swap_get_exchange_recommendations separately vs relying on recommendations returned by swap_create_return_session? The relationship and sequencing are unclear.
Parameter constraints are underspecified. 'quantity' has 'minimum: 1' but no maximum. 'declaredValue' and 'shippingCost' are numbers but lack range constraints (negative values possible? upper bounds?). LLMs may pass invalid values.
No mention of pagination, result limits, or structure for list-like responses. swap_get_exchange_recommendations returns 'recommendations', is this a single object or an array? How many items? Does it support pagination?
Parameter naming inconsistency: tools use camelCase (orderId, customerEmail, customerCountry, exchangeSku) but internal client mapping uses snake_case (order_id, customer_country, exchange_sku). Documentation should clarify this boundary.