Multi-service e-commerce platform with AI agent support for customer service, B2B procurement, and order management
This server has 9 tools split across two domains (B2C commerce + B2B procurement). Naming is clear and verb-driven (search, add, view, get, track, initiate, manage). Descriptions are present and contextual, ranging 60-240 chars. However, critical gaps emerge: (1) Parameter schemas lack proper JSON Schema type declarations, input objects show field names and descriptions but NO explicit 'type' fields (e.g., searchProducts.query is listed as type:string, but maxPrice/minPrice have type:number without min/max bounds). (2) Output schemas are NOT documented anywhere, we see no structured response definitions for any tool. (3) Error handling is absent, no guidance on retryability, recovery, or actionable error messages. (4) Tool descriptions mention expected behavior (e.g., 'Returns up to 6 products') but lack formal output documentation. (5) Composition issues: searchProducts and search_catalog are near-duplicates (both semantic product/catalog search); manage_purchase_request is a 'god tool' with 7 optional parameters and 4 distinct actions, violating single-responsibility. (6) Schema defects: manage_purchase_request lacks parameter constraints (action enum not enforced, no validation on pr_id/catalog_item_id format). Per-tool average is 52; protocol score 45 (HTTP transport but missing MCP meta/capabilities structure) yields overall 52.
Add a product to the customer's cart. Use after customer confirms they want a specific product. Always confirm product name + price before calling. Returns updated cart summary.
Get the customer's order history. Use for "my orders", "recent orders", "where is my order", "order status" queries. Returns orders with status, tracking, date, items.
Get the employee's department budget status: monthly limit, spent so far, and remaining balance.
Start a product return. Use when customer wants to return an order. Always get orderId and reason before calling. Returns 3 options: refund, exchange, store credit. Store credit option includes ₹500 bonus. Only eligible within 7 days of delivery.
Manage purchase requests. action='create' → start a new PR (needs justification), action='add_item' → add catalog item to draft PR, action='view' → get current draft PR with line items, action='remove_item' → remove a line item from draft PR
NO OUTPUT SCHEMAS DOCUMENTED, None of the 9 tools declare their response structure. Without knowing field names, types, and required outputs, LLMs cannot reliably parse results or chain tools. E.g., searchProducts description says 'Returns up to 6 products with price, stock, rating' but no JSON structure is provided.
INPUT SCHEMA INCOMPLETENESS, Numeric parameters (maxPrice, minPrice, quantity, max_unit_price, limit) lack min/max bounds. No constraints prevent LLMs from passing absurd values (e.g., maxPrice=-1000, quantity=999999). Enums (status in getOrders, action in manage_purchase_request) are listed in description text but NOT encoded in schema as type:enum.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Semantic product search — understands natural language and use cases. "headphones for gym" finds sports earbuds. "gift for gamer under ₹5000" finds gaming accessories. ALWAYS use this for product discovery. Returns up to 6 products with price, stock, rating.
Search the approved vendor catalog by natural language. Returns catalog items with vendor, pricing, lead time. category options: HARDWARE, SOFTWARE, SERVICES, OFFICE_SUPPLIES, INFRASTRUCTURE, OTHER
Track a specific order's delivery status. Use when customer asks about a specific order. Returns tracking number, carrier, estimated delivery.
Show the customer's current cart. Use when customer asks "what's in my cart", "show my cart", or "view cart". Returns all items, quantities, prices, and total.
GOD TOOL VIOLATION, manage_purchase_request conflates 4 distinct operations (create, add_item, view, remove_item) into one tool with 7 optional parameters and conditional logic. Should be split: create_purchase_request, add_line_item, view_draft_pr, remove_line_item. This violates single-responsibility and forces the LLM to reason about which parameters to pass for each action.
DUPLICATE/OVERLAPPING TOOLS, searchProducts and search_catalog are nearly identical (both semantic search, both return vendor/pricing/lead time info). LLMs cannot reliably distinguish when to use which. Recommend consolidating into a single search_items tool with a 'domain' parameter (products vs catalog) or separate clear namespacing.
NO ERROR HANDLING GUIDANCE, No tool description explains error conditions, retryability, or recovery paths. E.g., initiateReturn says 'Only eligible within 7 days of delivery' but no error response structure is documented. What does the tool return if the order is outside the window? How should the LLM respond?
MISSING PARAMETER DESCRIPTIONS, viewCart and get_budget_status have empty input schemas but lack explicit 'no parameters' documentation. It's unclear whether these truly accept no input or if the schema is incomplete.
NAMING INCONSISTENCY, Tool names mix camelCase (searchProducts, viewCart, addToCart) with snake_case (search_catalog, get_budget_status, manage_purchase_request). LLMs may struggle with inconsistent conventions. Recommend standardizing to snake_case across the entire server.
NO NATURAL-LANGUAGE IDENTIFIER SUPPORT, Tools require orderId, productId, pr_id (opaque strings/numbers) but don't mention accepting display names, URLs, or alternative identifiers. Users might say 'find my recent order' or 'return the Samsung headphones', but tools can't resolve natural references. Recommend documenting lookup helpers or accepting both IDs and names.