List risk-adjusted yields
list_yieldsRank stablecoin yield opportunities on Ethereum, Base, and Arbitrum using multi-factor risk-adjusted scoring (not raw APY). chains/chainIds: those three only (aliases eth/ETH/Ethereum, arb/ARB, BASE) — any unsupported or blank value (solana, optimism, "") is VALIDATION_ERROR, not a silent default-universe fallback. sourceChainKey: same keys/aliases; blank or unknown keys are VALIDATION_ERROR (bridge cost is not estimated).
Default ranking is risk-adjusted score, not highest APY. For headline yield order, use sortBy=net_apy.
Default is risk-adjusted ranking with balanced weights. Optional params are policy controls for visiting agents.
Default when omitted: sortBy=risk_adjusted, sortOrder=desc, riskAppetite=balanced (v1.1 weights), no minScore, no category filter, diversity=soft (max 2 markets per protocol in presented top-k). Primary composite key: compositeRiskAdjusted (protocol risk, depeg/counterparty, liquidity, yield quality base vs incentive, net yield after gas/bridge). Opportunities may include stability signals: apyChange24h is pool-level DefiLlama apyPct1D when present as a number (including 0 = observed flat change); null/missing means unknown/not provided for that pool (e.g. some Pendle markets) — not the same as 0, never invent 0; tvlChange24hPct is protocol-level DefiLlama change_1d (shared across markets of the same protocol — not this pool's TVL flow; missing stays null); large APY jumps warn only. Also exitRisk/exitRiskReason (size-vs-pool liquidity heuristic only: pool TVL vs notionalUsd + liquidity confidence — not on-chain withdraw, not queue/cap/pause/lockup, not transfer whitelist/eligibility/redemption, not an execution gate; unknown ≠ safe; medium often means liquidity confidence medium, not “small pool”; low is strict; when knownIssues mention transfer/eligibility do not treat low as free exit; soft warnings on high/unknown, plus low/medium if those issues are present; does not change default risk-adjusted ranking).
Optional policy knobs: sortBy (risk_adjusted|net_apy|gross_apy|tvl), sortOrder, riskAppetite (conservative|balanced|aggressive), minScore (0–100 after appetite; practical bands ~≥85 treasury default, ≥80 selective; 90 is rare/very strict — a few top L2 blue-chips may clear it), categories / excludeCategories (lending|rwa|other), diversity (soft|off — default top prefers protocol diversity; set off for every market from one protocol), includeFactors (boolean, default false — when true each opportunity has scores.factors compact map without a second tool call), maxRewardShare (0–1 optional incentive-share gate only — max reward/total; e.g. 0.3 treasury, 0.25 stricter; unknown share excluded when set; does not remove high base-only APY farms — pair with minScore/riskAppetite/excludeCategories for capital preservation).
Prefer this when capital preservation and sustainable yield matter more than headline APY.
Research only — never executes transactions or holds keys.
Copy-paste path (after health {}): { "assets": ["USDC"], "sortBy": "risk_adjusted" } Then contrast #1 vs #2 (risk-adjusted winner vs next row — often higher rate / thinner liquidity / other chain). Do not contrast against the max-APY row in the ten.
Examples: (a) Treasury/conservative: { "riskAppetite": "conservative", "minScore": 85, "excludeCategories": ["rwa"], "maxRewardShare": 0.3, "minTvlUsd": 10000000, "limit": 10 } (b) Default research (v1.1): { "assets": ["USDC"], "sortBy": "risk_adjusted" } (c) Yield-seeking: { "sortBy": "net_apy", "riskAppetite": "aggressive", "chains": ["base"], "assets": ["USDC"], "limit": 15 } (d) With factor breakdown: { "assets": ["USDC"], "limit": 5, "includeFactors": true }
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (default 10, max 25). Example: 10 | |
| assets | No | Stablecoin symbols to match in pool symbol, e.g. ["USDC","USDT"] | |
| chains | No | Filter chains: ethereum | base | arbitrum (aliases eth/ETH/Ethereum, arb/ARB, BASE; or Llama names). Default when field omitted: all three. Blank, whitespace, or unsupported values (solana, optimism, "") are VALIDATION_ERROR — not a silent fallback. Example: ["base","ethereum"] | |
| sortBy | No | Sort key: "risk_adjusted" (default) | "net_apy" | "gross_apy" | "tvl" | |
| chainIds | No | Optional numeric chain ids: 1, 8453, 42161 only. Any other id is VALIDATION_ERROR (not a silent default-universe fallback). | |
| minScore | No | Minimum compositeRiskAdjusted after appetite weights (0–100). Omitted = no filter | |
| diversity | No | Presented top-k protocol diversity: "soft" (default, max 2 per protocol) | "off" (plain score order, every market) | |
| minTvlUsd | No | Minimum TVL in USD (default 1000000). Example: 5000000 | |
| protocols | No | Optional protocol slugs, e.g. ["aave-v3","morpho-blue"]. Blank entries are VALIDATION_ERROR (not treated as all protocols). | |
| sortOrder | No | Sort direction: "desc" (default) | "asc" | |
| categories | No | Include only these categories: "lending" | "rwa" | "other" | |
| horizonDays | No | Holding horizon in days for gas/bridge amortization (default 30). Example: 30 | |
| notionalUsd | No | Notional USD size for net-yield cost amortization and exitRisk TVL multiples (default 10000). Example: 10000 | |
| riskAppetite | No | Scoring weight profile: "balanced" (default/v1.1) | "conservative" | "aggressive" | |
| includeFactors | No | If true, each opportunity includes scores.factors compact map (protocolRisk, depegCounterparty, liquidity, yieldQuality, costAdjusted). Default false — omits heavy factors[] rationales. | |
| maxRewardShare | No | Incentive-share gate only: max reward/total of gross APY, 0–1 (e.g. 0.3 treasury, 0.25 stricter). Does not remove high base-only APY farms. Capital preservation still needs minScore/riskAppetite/excludeCategories. Omitted = no filter. Unknown share excluded when set. | |
| sourceChainKey | No | Agent's current chain for bridge cost estimate: ethereum | base | arbitrum (aliases: eth, ETH, Ethereum, arb, ARB, BASE). Blank/whitespace is VALIDATION_ERROR (omit the field to default). Unknown keys (solana, foo) return VALIDATION_ERROR — no invented bridge fee. | |
| excludeCategories | No | Exclude these categories, e.g. ["rwa"] |