Aave V3 MCP Server for Base network - provides tools for interacting with Aave lending protocol, token swaps via Uniswap V3 and 1inch, and advanced DeFi operations
The server defines 21 tools with basic schemas and descriptions. However, significant quality issues prevent a higher score: (1) Many tool descriptions are extremely short (10-30 chars) and lack guidance on when/why to use them, violating the 50-200 char baseline for LLM-optimized descriptions. (2) Parameter descriptions exist but are often minimal, e.g., 'Token symbol to supply' without format guidance. (3) No output schemas are documented, LLMs cannot reason about what fields to expect from responses. (4) No error handling guidance; tools return no recovery suggestions. (5) Security critical: write tools (aave_stake, swap_execute, wrap_eth, etc.) lack confirmation patterns or dry-run support, risking irreversible blockchain transactions. (6) Tool composition issues: smart_stake and smart_deposit_auto combine multiple concerns (lookup, swap, deposit) in single tools, reducing composability. (7) Lack of pagination for list-like tools (aave_get_reserves, aave_get_strategies) that could return many results. Code inspection of src/mcp/mcp.service.ts confirms tool registration but output schemas are not visible in the provided source; responses appear to be raw API returns without structure documented for LLMs.
Borrow tokens from Aave V3 using collateral
Get all available reserves on Aave V3 with current APY rates
Get best yield strategies on Aave V3
Get user account summary including health factor
Get user positions on Aave V3
Repay borrowed tokens to Aave V3
Stake (supply) tokens to Aave V3 protocol on Base network
Tool descriptions critically short and non-LLM-optimized. Examples: 'Stake (supply) tokens to Aave V3 protocol on Base network' (11 words), 'Get all available reserves on Aave V3 with current APY rates' (12 words). Baseline for LLM-optimized descriptions is 50-200 chars with guidance on WHEN and WHY to use the tool, not just WHAT it does. None include recovery hints, prerequisites, or dependency chains.
No documented output schemas. LLMs cannot reason about what fields a tool returns, forcing them to guess or make unwarranted assumptions. For example, aave_get_user_positions likely returns an array of position objects with fields like asset, collateral_amount, borrowed_amount, APY, none of which are documented. This breaks downstream tool composition and forces exploratory calls.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 37 | 2024-11-05+ | v1 |
Withdraw staked tokens from Aave V3
Estimate gas cost for a transaction
Get user token balances for all configured tokens
Get current gas price on Base network
Get balance of a specific token for a user
Get swap quote from 1inch aggregator
Execute token swap via 1inch aggregator
Prepare transaction for Aave deposit (supply)
Automatic deposit from any token or ETH. Will find the best swap route and deposit to Aave
Smart stake with automatic token swap if needed. Will swap tokens first if user does not have the target asset
Execute token swap on Uniswap V3
Get swap quote from Uniswap V3 on Base network
Unwrap WETH token to native ETH
Wrap native ETH to WETH token
Write tools (aave_stake, aave_borrow, swap_execute, wrap_eth, etc.) lack dry-run, confirmation, or rollback patterns. Blockchain transactions are irreversible, an agent mistake results in permanent loss of funds. No tool offers confirmation_before_execute or preview capabilities.
Parameter descriptions lack format guidance and constraints. For example, 'amount' parameters lack min/max bounds, format (decimal places for blockchain), or examples. 'userAddress' has no validation hint (must be checksummed Ethereum address, length 42, starts with 0x). LLMs will guess at formatting and frequently produce invalid input.
Tools combining multiple responsibilities reduce composability. smart_stake checks balance, swaps if needed, then deposits, three concerns in one tool. Similarly, smart_deposit_auto finds best swap route and deposits. Agents cannot easily compose just the swap part or just the deposit. Recommend splitting into atomic tools: check_balance, swap_tokens, stake_tokens as separate, chainable calls.
No pagination for potentially large result sets. aave_get_reserves and aave_get_strategies could return dozens of items; aave_get_user_positions could return many positions. No limit, offset, or cursor parameters documented. If results exceed context window, LLM reasoning degrades and agents may miss relevant options.
No error recovery guidance. Tools likely fail with HTTP errors (e.g., invalid token address, insufficient balance, network timeout) but return no actionable recovery hints. Example: if swap_execute fails due to slippage, the error should suggest 'Try increasing slippage tolerance via the slippage parameter' or 'Check current gas price with get_gas_price before retrying.' Blank errors force agents to retry blindly.
Missing field consistency for tool chaining. prepare_aave_supply is documented as READ_ONLY but appears to return transaction data for aave_stake to use. If prepare_aave_supply returns tx_data, aave_stake must accept tx_data as input, unclear if this relationship exists or how fields map. Undocumented chaining forces LLM guessing.