Distributed MCP architecture for e-commerce product data diagnostics. 11 MCP services with episodic memory, L2 Detective sub-agent, and health dashboard. Diagnoses and self-heals product data issues across inventory, pricing, PIM, and web systems.
Server has 12 tools with explicit Zod schemas and descriptions in src/mcp-tools.ts. Naming follows verb_noun convention (checkWebDatabase, triggerAutoSync, etc.). Descriptions are present (avg ~120 chars) and explain WHEN to call tools. However, several critical gaps: (1) checkInventory and triggerAutoSync have optional-only required params, creating ambiguity; (2) no output schemas documented, LLMs cannot plan downstream calls; (3) error handling guidance absent, tools return success/failure but no recovery hints; (4) deleteMemory and delegateToL2Detective are destructive/high-risk but lack confirmation patterns; (5) parameter descriptions lack format/constraint details (e.g., what format is productId? what are valid syncTypes beyond enum?). Tool composition is reasonable (single responsibility), but missing idempotency guarantees and chaining metadata.
Internal health check probe
Checks if a previous sync job failed and left a message in the DLQ.
Checks global SKU inventory across all fulfillment centers. Accepts either a skuId or productId — pass whichever you have.
Checks PIM for upstream source-of-truth metadata (name, publish flags, images).
Checks the upstream pricing service for the authoritative product price.
Checks the live web system for product sellability status. Always call this FIRST.
No output schemas documented. LLMs cannot infer what fields are returned, breaking tool chaining and forcing discovery calls.
checkInventory and triggerAutoSync have only optional parameters (skuId|productId, productId|skuId|syncType). No required param means LLM must guess which to pass. Ambiguous parameter relationships undocumented.
Destructive tools (deleteMemory, delegateToL2Detective) lack confirmation or dry-run patterns. No guidance on recovery if agent makes a mistake.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
Delegates a systemic infrastructure failure to the L2 Detective agent for root cause analysis. Call this when triggerAutoSync fails three times and the issue is beyond normal triage.
Deletes a specific episodic memory entry by its ID. Use only when a memory is stale or incorrect.
Retrieves all episodic memory entries for a product. Use to review past investigation history.
Queries the RAG troubleshooting guide for a known resolution to an error code. Call this before retrying a failed sync.
Initiates an autonomous synchronization event for a specific system. Returns a syncId you can reference in logs.
Re-checks live web database AFTER a sync to confirm the product status is now SELLABLE.
Error handling guidance absent. Tools return success/failure but no actionable recovery hints (e.g., 'If sync fails, call queryGuide with the error code').
Parameter descriptions lack format/constraint details. E.g., productId format unknown, syncType enum values stated but no guidance on when to use each.