clover-mcp has 5 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-50 chars, mostly short) and input schemas with type definitions. However, parameter descriptions are sparse or missing context. list_inventory and list_orders lack 'required' field declarations. get_merchant_info and get_oauth_status have empty schemas with no parameters documented. Error handling is minimal, no recovery guidance or actionable error messages. No output schemas documented. Tool names follow verb_noun convention (good), but descriptions lack WHEN/WHY context. OAuth flow tool exposes port as a parameter (should be server-side config). No tool annotations (readOnlyHint, destructiveHint). Composition is reasonable, tools are single-purpose, but missing chaining IDs in responses (inferred from code structure, not visible in schema).
Get information about the merchant
Check if OAuth credentials are available
Initiate the OAuth flow to get tokens
List inventory items with optional filters
List orders with optional filters
Empty input schemas for get_merchant_info and get_oauth_status. Both declare 'properties: {}' with no parameter documentation. LLMs cannot infer what these tools do or when to call them without parameter context.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., item IDs from list_inventory to pass to resource URIs). Responses are opaque.
Parameter descriptions are minimal or missing context. 'query' in list_inventory lacks format/example. 'start' and 'end' in list_orders say 'ISO format' but no validation or error guidance if malformed. No 'required' field declared on any schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
OAuth port parameter exposed as tool input. Should be server-side configuration (environment variable or config file). Agents should not manage infrastructure ports, this violates secret-injection and configuration-as-code patterns.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe read-only tools from write operations. initiate_oauth_flow is marked WRITE in metadata but not in tool definition.