READ-ONLY — return a ranked table of supply-side yield opportunities for a given asset across every integrated lending / staking protocol. v1 covers Aave V3 (5 EVM chains), Compound V3 (5 EVM chains, multi-market per chain), and Lido stETH (Ethereum only). Other protocols (Morpho Blue, MarginFi, ...
AI agents call compare_yields to retrieve information from VaultPilot MCP without modifying anything — typically the context-gathering step in research, monitoring, and reporting workflows, before the agent takes action elsewhere.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset | string | Yes | Asset to compare supply yields for. 'stables' is a meta-asset that expands to USDC + USDT (the two stables every adapter knows). 'ETH' resolves to WETH on EVM l |
chains | array | — | Restrict to specific chains. Default: all integrated EVM chains + Solana. BTC / LTC have no integrated lending so they return empty — pass them only if you spec |
minTvlUsd | number | — | Minimum supply-side TVL in USD; rows below the bar are filtered. Rows where TVL is unknown (the upstream didn't expose it) are NOT filtered — surfaced honestly |
riskCeiling | number | — | Minimum protocol risk score (0-100; higher = safer per `get_protocol_risk_score`). Despite the name 'ceiling', the comparison is `score >= ceiling` — only show |
Parameters from the server's own tool schema.
Even though compare_yields only reads data, uncontrolled read access leaks sensitive information and racks up API costs — an agent caught in a retry loop can make thousands of calls a minute without anyone noticing.
Attacks that exploit this kind of access
READ-ONLY — return a ranked table of supply-side yield opportunities for a given asset across every integrated lending / staking protocol. v1 covers Aave V3 (5 EVM chains), Compound V3 (5 EVM chains, multi-market per chain), and Lido stETH (Ethereum only). Other protocols (Morpho Blue, MarginFi, Kamino, Marinade, Jito, EigenLayer, Solana native-stake) appear in the response's unavailable[] list with a coverage-gap reason — they need their wallet-less market readers split out from existing wallet-aware readers; tracked as follow-up work. Output per row: protocol, chain, market (free-form: 'cUSDCv3' for Compound, the asset symbol for Aave, 'stETH' for Lido), supplyApr (current, fractional 0.0481 = 4.81%), supplyApy (continuously-compounded), tvl (USD, may be null when the upstream doesn't expose it cheaply), riskScore (0-100 from get_protocol_risk_score, may be null), notes (pause flags, frozen reserves, etc.). Rows are sorted by supplyApr descending; null APR sinks. Filters: chains (default = all EVM mainnets + Solana); minTvlUsd (rows with tvl: null are NOT filtered — no data ≠ tiny market); riskCeiling (only show protocols at LEAST this safe; rows with riskScore: null are NOT filtered). Empty result returns emptyResultReason explaining whether nothing matched at all vs. everything filtered out. AGENT BEHAVIOR: this tool surfaces data; it does NOT pick. Surface the comparison verbatim. Do NOT pick a 'best' option for the user — they decide. The plan's positioning is explicit: 'Here are current supply rates' is right; 'I recommend depositing in X' is OUT. It is categorised as a Read tool in the VaultPilot MCP MCP Server, which means it retrieves data without modifying state.
compare_yields accepts 4 parameters: asset, chains, minTvlUsd, riskCeiling. Required: asset. The full parameter table on this page comes from the server's own tool schema.
Register the VaultPilot MCP server in PolicyLayer and add a rule for compare_yields: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches VaultPilot MCP. Nothing to install.
compare_yields is a Read tool with low risk. Read-only tools are generally safe to allow by default.
Yes. Add a rate_limit block to the compare_yields rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for compare_yields. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
compare_yields is provided by the VaultPilot MCP server (vaultpilot-mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.