A Spring Boot adapter that exposes a merchant's product catalogue through multiple agent commerce protocols (MCP, ACP, UCP). Implements Model Context Protocol (MCP) as a JSON-RPC 2.0 server over HTTP, alongside Agentic Commerce Protocol (ACP) and Universal Commerce Protocol (UCP) REST endpoints.
AgentReady defines 3 tools with clear action verbs (search_, get_, list_) and reasonable descriptions (60-120 chars). All tools have input schemas with required fields and type definitions. However, parameter descriptions are minimal or missing context about constraints, formats, and dependencies. Output schemas are not documented, LLMs cannot predict response structure for downstream chaining. No error handling guidance, no pagination support for search_products despite potentially large result sets, and no tool annotations (readOnlyHint, idempotentHint). The server demonstrates basic competence but lacks production-grade polish.
Fetch the full details of one product by SKU.
Delivery options for a destination country. In Estonia this includes parcel machines, which the generic commerce protocols do not model separately.
Search the merchant catalogue by free text. Returns name, SKU, gross price and availability.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nested objects) for search_products, get_product, or list_delivery_options. This breaks tool chaining, agents cannot extract SKU from search results to pass to get_product without guessing field names.
search_products lacks pagination. No limit parameter default stated, no total_count or next_cursor in response schema. If a search returns 100+ products, context window exhaustion and token waste are likely. Baseline: paginated tools should accept limit (1 - 100, default 20) and return total_count.
Parameter descriptions lack constraint details. 'query' in search_products has no length limit, character restrictions, or examples. 'country' in list_delivery_options says 'ISO-3166 country code, e.g. EE', the example 'EE' may cause LLMs to reuse it literally. Replace with enum or pattern constraint.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
No error handling guidance. Tools do not document what happens on invalid input (e.g. invalid country code, product not found). LLMs receive raw errors with no recovery path. Baseline: errors should state 'Try X instead' or categorize as retryable/user-fixable.
No tool annotations. Tools lack readOnlyHint, idempotentHint, or destructiveHint. All three are read-only and idempotent, but LLMs cannot infer this without explicit annotations. Baseline: current spec (2026-07-28) expects tool annotations in capabilities.