Real-time risk-weighted USDC lending APY across 6 protocols on Base, paid via x402
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Risk-weighted yield signals for autonomous agents, paid per call via the x402 protocol β no API key, no signup. Every product route is paid: $0.10 signal, $0.25 analytics (durability/capacity/sensitivity/exposure), $0.50 decision, $1.00 persistence. There is no free tier and no bypass parameter.
Seven products: the raw signal (what pays best right now), the decision (given where your money already sits, is moving it worth the cost β MOVE/HOLD with expected net gain and break-even in days), the durability report (how much of that APY survives if incentives stop), the capacity report (can you actually withdraw your size from that market), the sensitivity report (how close the market is to the kink where borrow rates explode), the exposure report (how much of your portfolio sits behind the same risk, no matter how many venues it is spread across), and the persistence report (how long a call here actually holds before the leader flips β measured from this service's own on-chain attestations, which is why no competing feed can produce it).
Live: https://yieldsignal.vercel.app
Bare /signal and /decision (no asset) redirect to the ETH staking route β the asset with the strongest verified track record. Short forms like /signal/usdc redirect to the canonical path.
Don't take our word for it: GET /accuracy.json is free and returns the per-asset within-tolerance hit-rate and average regret in bps, computed 1:1 from the public on-chain EAS track record. As of writing, the staking signal holds up far better than the USDC lending one (Base USDC churns too fast for a call to stay true) β which is exactly why the flagship is staking. The numbers are recomputed from chain data, not asserted here, so check them yourself before paying.
Call it without payment first and you'll get a 402 Payment Required with the exact price/asset/network to pay. Any x402-compatible client can complete the payment automatically β for example with @x402/fetch:
Also available as paid MCP tools at https://yieldsignal.vercel.app/mcp β get_yield_signal and get_yield_decision, both with an optional asset ("ETH_STAKING", "USDC" or "WETH"; defaults to "USDC" for backwards compatibility with already-published integrations). Most autonomous-agent frameworks discover/call tools via MCP rather than hand-rolled x402 HTTP clients. Uses the official @x402/mcp package; payment is gated per tool call (tools/list/initialize stay free, only the tool call requires payment). There's also an elizaOS plugin in the official registry.
Every rate is tagged with where it came from β onchain/api (Aave, Compound, Morpho β read directly from the protocol) or defillama (Moonwell, Euler, Fluid β via the DefiLlama yields API). No estimated or fabricated numbers: a source that fails or returns invalid data is omitted from the response, never guessed at.
Every rate is also compared on one explicit basis (apyBasis: "supply-apy-total-incl-rewards"): base interest plus incentives. This matters because the raw sources disagree on what "APY" means β an on-chain liquidityRate/getSupplyRate is base-only, while DefiLlama's aggregate and Morpho's netApy already include reward tokens. Ranking them side by side without reconciling that compares different things. Each rate itemizes apyBaseBps/apyRewardBps where the source separates them, and rewardBasis says how the incentive component was obtained (reported, inferred, included-not-itemized, unavailable). Any protocol whose incentive could not be established at all is listed in incompleteRewardData β its APY is a floor, not a verdict.
Each rate also carries tvlUsd with a tvlBasis saying what that number measures β total-supplied when it comes from the protocol's own books (Aave totalAToken, Comet totalSupply, Morpho totalAssetsUsd), aggregator-reported when it comes from DefiLlama, which reports available liquidity for lending markets. They are not the same quantity and the field says which one you got. Depth matters because the top of a thin market is not an executable rate for size: at the time of writing, the WETH signal leads with a $716k market whose yield is 59% incentive campaign.
The decision routes act on both: /decision/* returns gainDependsOnIncentives and positionShareOfDestinationPct, states them in the human-readable reason, and lowers confidence when your position would be a large share of the destination. A real response:
MOVE, confidencemediumβ "Moving aave β euler yields +106bps risk-adjusted β¦ Note: the entire gain rests on euler's incentive campaign (172bps of its 291bps) β it disappears if the campaign ends. Note: your $200,000 would be 27.9% of euler's $716,897 market β large enough that entering dilutes the rate you are moving for."
/durability/*Splits every protocol's APY into base interest vs incentive and reports the post-incentive floor: what you keep if the reward campaign stops. On a live reading (2026-08-05), WETH on Base led with euler at 299bps β 57.9% of it incentive, floor 126bps β while aave's 153bps was entirely base. Without incentives the ranking flips. The signal endpoint alone would have pointed you at euler.
Two rules keep this from becoming a false-alarm generator:
rewardBasis: "included-not-itemized" or "unavailable" means the floor is unknown, and the protocol is listed in undecomposable β never treated as incentive-free. Absence of a reported incentive is not evidence of absence.rankingChangesWithoutIncentives is null, not false. You still get bestVerifiableFloor β the highest yield provably independent of incentives β which is a fully measured statement either way.Base lending only (USDC/WETH). Checked live on 2026-08-05, all five liquid-staking sources report apyReward: null on DefiLlama β 0 of 5 decomposable on every call β so an ETH staking durability route would charge for "cannot establish". Staking yield being incentive-free is plausible, but a missing apyReward doesn't prove it, and that's the same inference this service refuses to make for fluid/morpho on the lending side.
Deliberately not a date forecast. The obvious source for "when does this campaign end" is Merkl's API (earliestCampaignEnd). Checked live on 2026-08-05 against api.merkl.xyz/v4/opportunities?chainId=8453&status=LIVE: Aave, Compound, Euler and Fluid have zero LEND campaigns there, and Morpho/Moonwell appear only as curated MetaMorpho vaults that aren't the markets this service reads. status=PAST returns null timestamps, so renewal history isn't measurable either. Covering 2 of 6 protocols by guessing at vault matches β with most campaigns being weekly and auto-renewing β would produce a confident-looking number that is wrong, which is the opposite of what this service sells.
/capacity/*Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/yieldsignal)<a href="https://allmcps.com/mcp/yieldsignal"><img src="https://allmcps.com/api/badge/yieldsignal?style=directory" alt="YieldSignal on AllMCPs" /></a>