MCP server for minting zero-friction checkout vouchers with delegated passkey verification and merchant settlement handoff
Single tool with critical definition gaps. Tool name 'execute_skill_action' is generic and does not follow verb_noun pattern (should be 'mint_checkout_voucher' or similar). Description is present but minimal (58 chars, below 10-char baseline for meaningful context). Input schema exists with three parameters, all with types and descriptions, but lacks output schema documentation entirely. No error handling guidance, no parameter constraints (enums, ranges), and no indication of side effects despite WRITE risk classification. The tool definition is visible in code but lacks production-grade rigor.
Execute a skill action for zero-friction checkout voucher minting
Tool name 'execute_skill_action' is generic and does not convey the specific action (voucher minting). LLMs cannot infer intent from the name alone. Should be 'mint_checkout_voucher' or 'create_checkout_voucher'.
No output schema documented. The tool returns a complex object with checkout_voucher_id, delegated_passkey_verified, voucher_expiration_iso, zero_click_checkout_authorized, and merchant_settlement_handoff_payload_url, but this structure is not declared in the tool definition. LLMs cannot plan downstream operations without knowing return fields.
Tool description (58 chars) lacks context for LLM selection. Does not explain WHEN to use it, what prerequisites exist (e.g., buyer must be verified), or what the side effects are. Should be 100-200 chars with clear intent guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | 2026-07-28+ | v2 |
No error handling guidance. Tool is marked WRITE risk but provides no recovery hints. What happens if buyer_verified_identity is invalid? If order_total_usd is negative? If shipping_address_hash is malformed? LLM has no guidance on retryability or user-fixable errors.
Parameter 'buyer_verified_identity' includes example value 'did:key:z6Mku...9182' in description. LLMs tend to reuse example values literally in real calls, causing failures. Remove example; use format constraint instead.