CardZero defines 5 tools with basic schemas and minimal descriptions. All tools have input schemas with typed parameters and descriptions, meeting baseline requirements. However, descriptions are extremely terse (10-30 chars), well below the 50-200 char LLM-optimized range. No output schemas are documented. Critical gaps: no error handling guidance, no idempotency documentation for irreversible operations (make_payment), no parameter constraints (enums, ranges), and no recovery hints. The make_payment tool accepts 5 parameters but lacks validation rules, format constraints, or examples of valid currency codes. Tool composition is reasonable (single responsibility), but descriptions fail to explain WHEN to use each tool or what to expect in responses.
Check wallet balance
Check the status of a payment
Create a new wallet
Make a payment from wallet to recipient address
View payment history for a wallet
Descriptions critically short (10-30 chars). LLMs cannot determine when/why to select tools. Baseline is 50-200 chars for LLM-optimized descriptions.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., wallet ID from create_wallet response).
make_payment is irreversible (WRITE risk) but lacks idempotency documentation, dry-run option, or confirmation step. No guidance on retryability or error recovery.
No parameter constraints (enums, ranges, formats). 'currency' accepts free-form strings; should be enum (USDC, USDT, etc.). 'amount' lacks min/max bounds.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
No error handling guidance. Responses lack recovery hints (e.g., 'wallet not found, try create_wallet first'). LLMs cannot self-correct on failures.