Yield-only agent treasury on Base — policy-gated spending, ERC-8004 identity, Lido staking, Uniswap trading, x402 micropayments
29 tools with significant definition gaps. Most tools have descriptions (good), but parameter schemas are incomplete or missing type information. Many parameters lack descriptions entirely. No output schemas documented. Error handling is absent, tools do not guide recovery or categorize failures. Tool names follow verb_noun convention (positive), but composition issues exist: multiple tools operate on similar resources without clear distinction (e.g., get_moonpay_config, get_moonpay_status, get_moonpay_balance all query MoonPay state). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Security concerns: tools like evaluate_plan and respond_to_approval perform WRITE operations but lack confirmation/dry-run patterns. Baseline: 549 production tools average 194 chars for descriptions and 72 chars for params; this server's descriptions are adequate but params are under-documented.
Compute yield distribution plan based on strategy and available yield
Evaluate an action plan against the treasury policy, with optional ERC-8004 identity verification and auto-execution if approved
Execute a cross-chain bridge transaction via MoonPay
Execute a dollar-cost averaging (DCA) plan via MoonPay
Execute a fiat-to-crypto swap via MoonPay
Execute a swap transaction on Uniswap
Freeze an agent to prevent it from spending yield
Retrieve active Lido governance proposals from Snapshot
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. Affects all 29 tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Retrieve a specific approval request by ID
Retrieve audit events with optional filtering by type
Get an indicative (non-binding) swap quote from Uniswap
Get MoonPay account balance
Get MoonPay configuration and available currencies
Get MoonPay portfolio holdings
Get a MoonPay quote for fiat-to-crypto conversion
Get MoonPay account status and limits
Get current Lido staking APY
Get a firm swap quote from Uniswap for trading between tokens
Retrieve current treasury state including available yield, principal, total spent, and per-transaction cap
List all registered agents in the multi-agent registry
List pending, approved, or denied approval requests
Load yield distribution strategy from configuration
Resolve ENS name to Ethereum address
Approve or deny a pending approval request, with optional on-chain execution if approved
Reverse resolve Ethereum address to ENS name
Stake wstETH in Lido to earn yield
Unfreeze a previously frozen agent
Unstake wstETH from Lido
Verify counterparty identity using ERC-8004 trust-gated identity protocol
Many parameters lack descriptions or type information. E.g., get_staking_apy, get_active_governance_proposals, load_yield_strategy, get_moonpay_config, get_moonpay_status, get_moonpay_balance, get_moonpay_portfolio, list_agents have no visible input schemas.
No error handling or recovery guidance. Tools do not categorize errors as retryable, user-fixable, or fatal. No actionable error messages. Affects all WRITE tools (evaluate_plan, respond_to_approval, stake_wsteth, unstake_wsteth, execute_swap, execute_moonpay_swap, execute_moonpay_dca, execute_moonpay_bridge, freeze_agent, unfreeze_agent).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. WRITE tools like evaluate_plan, respond_to_approval, execute_swap lack destructiveHint. No confirmation/dry-run pattern for irreversible operations.
Composition issue: 6 MoonPay query tools (get_moonpay_config, get_moonpay_status, get_moonpay_balance, get_moonpay_portfolio, get_moonpay_quote) perform similar state lookups without clear distinction. LLMs will struggle to choose between them. Consider consolidating into get_moonpay_account_info.