YieldSignal
by Stakemate369 · remote · no sign-in to list tools · v1.2.0 · published by GitHub user Stakemate369
Yield & risk for agents: signal, decision, durability, capacity, sensitivity, exposure, persistence
7 tools: 7 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads7Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http yieldsignal https://yieldsignal.vercel.app/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
7 tools
Only reads 7Claude Code: allow
get_exit_capacityExit capacity for a Base lending market: per-protocol utilization and withdrawable liquidity read from the protocol's own books (Aave, Compound), plus — if you pass amountUsd — whe…No findings
Why it is in this group
- The name "get_exit_capacity" says "get": a word for reading.
Description, as the server wrote it Exit capacity for a Base lending market: per-protocol utilization and withdrawable liquidity read from the protocol's own books (Aave, Compound), plus — if you pass amountUsd — whether that size can be withdrawn right now and what share of the market it would be. High APY at high utilization means the market pays well and will not let you out; this tool separates the two. Protocols that do not expose borrowed-vs-supplied are marked unmeasured and are never recommended as executable. USDC only for USD figures; WETH returns utilization without USD (no price oracle in the paid path).
get_leadership_persistenceHow long this service's own leadership calls actually hold, measured from its hourly on-chain attestations (EAS on Base).No findings
Why it is in this group
- The name "get_leadership_persistence" says "get": a word for reading.
Description, as the server wrote it How long this service's own leadership calls actually hold, measured from its hourly on-chain attestations (EAS on Base). Returns the median duration a protocol stayed the best pick, survival rates at 6/24/72h, how much of the rotation is the same two protocols trading places, and what chasing the leader is worth per $10k before gas. Measured over 24 days: the WETH leader never changed once, the ETH staking leader changed every ~26h, the USDC leader every ~2h with half the switches being a round trip between the same pair — three assets sold at one price with wildly different reliability. Also answers, empirically, whether a wider lead lasts longer: it does not (Spearman -0.04 over 177 completed spells), so gap size is not a usable proxy for confidence. Every input is a public attestation UID: recompute it yourself from base.easscan.org and get the same number. Observed history with sample sizes attached, never a forecast — assets whose lead has not changed in the window are reported as a floor with a censoring flag, never as a median.
get_rate_sensitivityHow close a Base lending market is to the kink where borrow rates explode.No findings
Why it is in this group
- The name "get_rate_sensitivity" says "get": a word for reading.
Description, as the server wrote it How close a Base lending market is to the kink where borrow rates explode. Returns, per protocol, the current utilization, the kink read from the protocol's own interest rate curve, the headroom in bps, and the borrow APY at points around the kink — plus how many times the borrow cost multiplies just past it. Measured on a live reading: Compound USDC sat 0.17 points below its kink, where borrow cost goes from ~4% to ~16%. Aave and Compound only: Morpho's adaptive IRM has no static curve to read and DefiLlama-sourced protocols expose none, so they are marked unmeasured and never assumed stable. Describes the current state of the curve, not a prediction that utilization will move.
get_yield_decisionBuyer-side MOVE/HOLD decision (Layer 1 premium — sells the decision, not the raw datapoint).No findings
Why it is in this group
- The name "get_yield_decision" says "get": a word for reading.
Description, as the server wrote it Buyer-side MOVE/HOLD decision (Layer 1 premium — sells the decision, not the raw datapoint). Given your current position, size, move cost and horizon, returns whether moving your capital to the best risk-adjusted protocol pays for itself now — with expected net gain, break-even days and a confidence tier. Deterministic from the underlying signal, which is EIP-712 signed and returned in a sibling content block (re-run the decision locally to reproduce it). Priced above the plain signal tool.
get_yield_durabilityHow much of the current APY survives if incentives stop.No findings
Why it is in this group
- The name "get_yield_durability" says "get": a word for reading.
Description, as the server wrote it How much of the current APY survives if incentives stop. Splits each protocol's yield into base interest vs reward/incentive, reports the post-incentive floor, and says whether the leader changes without incentives. Only protocols whose source itemizes the reward component are decomposed — the rest are listed as undecomposable and NEVER assumed incentive-free, and no ranking claim is made when the current leader is one of them. Also returns bestVerifiableFloor: the highest yield provably independent of incentives. A stress test of readings taken now, not a forecast of when a campaign ends.
get_yield_signalReal-time risk-weighted yield signal.No findings
Why it is in this group
- The name "get_yield_signal" says "get": a word for reading.
Description, as the server wrote it Real-time risk-weighted yield signal. USDC/WETH: lending APY on Base (Aave/Compound/Morpho read onchain, Moonwell/Euler/Fluid via DefiLlama). ETH_STAKING: liquid staking APY on Ethereum mainnet (Lido/Rocket Pool/Coinbase Wrapped Staked ETH/Frax Ether/Binance Staked ETH, all via DefiLlama) — a different chain and category from the lending signals, not a Base lending market. Source tagged per reading (never estimated). Result is signed (EIP-712 typed data) by the payment-receiving address, returned as a sibling content block for offline verification. That same address is registered on-chain as an ERC-8004 agent identity (agent-card.json) and periodically publishes EAS attestations of past readings (Base mainnet) — a public track record independent of this server's uptime.
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.2.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http yieldsignal https://yieldsignal.vercel.app/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__yieldsignal__get_yield_signal",
"mcp__yieldsignal__get_yield_decision",
"mcp__yieldsignal__get_yield_durability",
"mcp__yieldsignal__get_exit_capacity",
"mcp__yieldsignal__get_rate_sensitivity",
"mcp__yieldsignal__get_shared_exposure",
"mcp__yieldsignal__get_leadership_persistence"
],
"ask": [],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as yieldsignal. Review it before you use it.
