Full crypto wallet holdings across chains -- ETH, ERC-20 tokens, USD values. Portfolio tracking for agents.
Two tools with clear verb-noun naming (wallet_get_*) and comprehensive descriptions (250-350 chars each). Both have proper JSON Schema with typed parameters and enums. Descriptions include usage guidance, examples, and explicit non-use cases. However, output schemas are documented only in description text, not as formal JSON Schema definitions. No tool annotations (readOnlyHint) despite both being read-only operations. Error handling guidance is minimal, no recovery paths or actionable error messages defined.
Use this when you need a quick check of a wallet's ETH and USDC balance only. Returns a lightweight JSON response -- cheaper than full portfolio. 1. ethBalance: native ETH balance with USD value 2. usdcBalance: USDC balance with USD value 3. chain: which network was queried Example output: {"ethBalance":{"balance":"2.5","valueUsd":7750.00},"usdcBalance":{"balance":"1000.00","valueUsd":1000.00},"chain":"base"} Use this FOR quick pre-trade balance verification when you only care about ETH and USDC. Faster and cheaper than wallet_get_portfolio. Do NOT use for full portfolio with all tokens -- use wallet_get_portfolio instead. Do NOT use for gas prices -- use gas_get_current_price instead.
Use this when you need to check a crypto wallet's holdings across chains. Returns a full portfolio breakdown in JSON. 1. nativeBalance: ETH balance with USD value 2. tokens: array of ERC-20 tokens with symbol, balance, USD value, contract address 3. totalValueUsd: aggregate portfolio value in USD 4. chain: which network was queried Example output: {"nativeBalance":{"symbol":"ETH","balance":"1.234","valueUsd":3827.50},"tokens":[{"symbol":"USDC","balance":"500.00","valueUsd":500.00}],"totalValueUsd":4327.50,"chain":"base"} Use this BEFORE executing a swap to verify the wallet has sufficient balance. Essential for portfolio tracking, balance checks, and agent self-reporting. Do NOT use for gas prices -- use gas_get_current_price instead. Do NOT use for swap quotes -- use dex_get_swap_quote instead. Do NOT use for yield opportunities -- use defi_find_best_yields instead.
Output schemas documented only in description text, not as formal JSON Schema. LLMs cannot parse example JSON in descriptions, they need structured schema definitions to plan downstream tool calls.
No tool annotations (readOnlyHint, idempotentHint) despite both tools being read-only, safe-to-retry operations. Agents cannot distinguish safe reads from destructive writes without explicit hints.
No error handling guidance. Descriptions lack recovery paths (e.g., 'If wallet not found, try searching by ENS name'). Agents have no actionable next steps on failure.
Chain parameter defaults to 'base' but this is not documented in the schema. Agents may not realize the default behavior and could misinterpret results from unintended chains.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2025-06-18+ | v2 |