BitcoinYield

Live crypto yields for Bitcoin, stablecoins, ETH and SOL across DeFi and CeFi, with the best proven rate at each A-D risk grade. Two read-only tools: list_yields (the best yield per asset, by grade) and list_offers (the top offers for one asset, filterable by chain and risk). No API key.

Hosted MCP Server

npx add-mcp 'https://bitcoinyield.co/api/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Live yields for 61 assets on 117 platforms, each with an A-D risk grade, refreshed every 3 hours. No key, no sign-up, CORS open; free with a link back (Terms, section 7).

curl "https://bitcoinyield.co/api/v1/yields?asset=USDC"

AI agents: one line in Claude Code (other clients under MCP setup).

claude mcp add --transport http bitcoinyield https://bitcoinyield.co/api/mcp

What the curl returns right now, cut to the best proven rate at each risk grade (A the lowest risk). Every field and filter is under Endpoints.

{
  "updated_at": "2026-11-10T15:01:35.806Z",
  …
  "yields": [
    {
      "asset": "USDC",
      …
      "by_grade": {
        "A": { "rate": 5.8297, "rate_text": "5.83% APY", "platform": "Aave V3", "chain": "Base", … },
        "B": null,
        "C": { "rate": 7.82, "rate_text": "7.82% APY", "platform": "Morpho", "chain": "Ethereum", … }
      }
    }
  ]
}

A grade is null when nothing proven at it pays materially more than a safer grade, or nothing clears the bar for a pick.

Connect an AI agent (MCP)

No key requiredNo install

A hosted MCP server over Streamable HTTP (protocol 2026-07-28, with the earlier handshake still supported) at https://bitcoinyield.co/api/mcp. Tools: list_yields (list the best yield per asset) and list_offers (list the top live offers for one asset), with the same answers and fields as the REST endpoints below. Called with no filter, list_yields answers the headline assets (BTC, ETH, SOL and the major dollars) to keep an agent's context small; all: true returns every asset.

Claude (web and desktop)

Settings, then Connectors, then Add custom connector: name it BitcoinYield and paste https://bitcoinyield.co/api/mcp.

Cursor and most other clients (mcp.json)

{
  "mcpServers": {
    "bitcoinyield": { "url": "https://bitcoinyield.co/api/mcp" }
  }
}

VS Code (.vscode/mcp.json)

{
  "servers": {
    "bitcoinyield": { "type": "http", "url": "https://bitcoinyield.co/api/mcp" }
  }
}

Then ask it "What is the best yield on USDC right now?" It answers from list_yields, lowest risk first. Right now: 5.83% APY at grade A (Aave V3, Base, 1.04% of it temporary rewards), 7.82% APY at grade C (Morpho RockawayX USDC Yield (V2), Ethereum).

Machine-readable discovery: /openapi.json (OpenAPI 3.1), MCP server card, mcp.json and llms.txt.

Every REST endpoint below is a plain GET. A parameter outside its allowed values returns 400 with an error message.

GET

/api/v1/yields

No key required

One entry per asset: by_grade, the best proven rate at grade A, B and C (the answer each asset page leads with: quote the lowest-risk grade first), and best_apy, the step the risk-weighted ranking puts first, which can be a higher-risk one (null when the asset has no pick yet, with no_pick_reason saying why). Rates are percents (0.17 means 0.17%), each with its rate_text beside it, the figure to quote with its unit, APY or APR.

asset

Filter to one asset by its symbol, e.g. BTC, USDC or USDE. For a token an asset is held as, give the asset: BTC for WBTC, ETH for stETH, DAI for USDS or sUSDS, SOL for jitoSOL (the tokens themselves are also read as their asset). Any tracked symbol; the ones with a live yield right now are the assets counted above.

stablecoin

Set to true to return only stablecoin assets.

max_risk

Only consider offers graded at or below this letter: A (lower risk), B (moderate), C (elevated), D (higher). One of A, B, C, D.

curl https://bitcoinyield.co/api/v1/yields
{
  "updated_at": "2026-11-10T15:01:35.806Z",
  "stale": false,
  "partial": false,
  "degraded_sources": [],
  "count": 61,
  "yields": [
    {
      "asset": "BTC",
      "slug": "btc",
      "best_apy": 0.136,
      "best_rate_text": "0.14% APY",
      "rate_basis": "apy",
      "best_platform": "Venus Core Pool",
      "risk_tier": "C",
      "no_pick_reason": null,
      "stablecoin": false,
      "peg_price": null,
      "platform_count": 25,
      "offer_count": 34,
      "url": "https://bitcoinyield.co/assets/btc",
      "by_grade": {
        "A": {
          "rate": 0.0152,
          "rate_text": "0.02% APY",
          "rate_today": 0.0152,
          "rate_rewards": null,
          "rate_basis": "apy",
          "platform": "Aave V3",
          "market": "WBTC",
          "chain": "Arbitrum",
          "us_available": "yes",
          "url": "https://bitcoinyield.co/assets/btc#grade-a"
        },
        "B": null,
        "C": {
          "rate": 0.136,
          "rate_text": "0.14% APY",
          "rate_today": 0.136,
          "rate_rewards": null,
          "rate_basis": "apy",
          "platform": "Venus Core Pool",
          "market": "BTCB",
          "chain": "BSC",
          "us_available": "yes",
          "url": "https://bitcoinyield.co/assets/btc#grade-c"
        }
      }
    },
    …
  ]
}

GET

/api/v1/offers

No key required

The top live offers for one asset in BitcoinYield's order, rate and risk together (the asset page shows the same offers grouped by grade, A first), to compare options rather than take a single pick. The fields of each offer are listed under Offer fields.

assetrequired

The asset's symbol, e.g. BTC, USDC or USDE. For a token an asset is held as, give the asset: BTC for WBTC, ETH for stETH, DAI for USDS or sUSDS, SOL for jitoSOL (the tokens themselves are also read as their asset). Any tracked symbol; the ones with a live yield right now are the assets counted above.

chain

Only offers on this chain, e.g. Ethereum, Base, Arbitrum or Solana (case-insensitive). Centralized (CeFi) offers have no chain.

max_risk

Only offers graded at or below this letter: A (lower risk), B (moderate), C (elevated), D (higher). One of A, B, C, D.

limit

How many offers to return, 1 to 20 (default 5).

curl "https://bitcoinyield.co/api/v1/offers?asset=USDC&chain=Base&limit=1"
{
  "updated_at": "2026-11-10T15:01:35.806Z",
  "stale": false,
  "partial": false,
  "degraded_sources": [],
  "asset": "USDC",
  "count": 1,
  "url": "https://bitcoinyield.co/assets/usdc",
  "offers": [
    {
      "rank": 1,
      "platform": "Aave V3",
      "chain": "Base",
      "market": "USDC",
      "product_type": "DeFi lending",
      "rate": 5.8297,
      "rate_text": "5.83% APY",
      "rate_today": 5.8297,
      "rate_basis": "apy",
      "rate_base": 4.792,
      "rate_rewards": 1.0377,
      "avg_7d": 6.9993,
      "rewards_program": {
        "paid_in": [
          "USDC"
        ],
        "funded_through": "2026-11-11",
        "since": "2026-11-03",
        "rounds": 1,
        "source": "merkl"
      },
      "avg_30d": 5.0074,
      "durability": "moderate",
      "liquidity_usd": 16566736,
      "exit": null,
      "maturity": null,
      "risk_tier": "A",
      "risk_reasons": "Moderate liquidity (under $25M, $16.6M available of $195M deposited)",
      "us_available": "yes",
      "access": null,
      "earn_url": "https://app.aave.com/reserve-overview/?underlyingAsset=0x833589fcd6edb6e08f4c7c32d4f71b54bda02913&marketName=proto_base_v3",
      "partner": false,
      "rate_source_url": "https://basescan.org/address/0xa238dd80c259a72e81d7e4664a9801593f98d1c5#readContract",
      "fetched_at": "2026-11-10T15:01:35.80634+00:00"
    }
  ]
}

GET

/api/v1/prices

No key required

Every live offer across all assets, for dashboards and agents on the whole feed, in the same order the site ranks them. Each row is an offer exactly as /api/v1/offers returns it, plus its asset. The filters combine freely.

asset

Only this asset, by its symbol, e.g. BTC, USDC or USDE (case-insensitive). For a token an asset is held as, give the asset: BTC for WBTC, ETH for stETH, DAI for USDS or sUSDS, SOL for jitoSOL (the tokens themselves are also read as their asset). Any tracked symbol; the ones with a live yield right now are the assets counted above.

provider

Only this platform: its key as in /platforms/<key> (e.g. aave-v3) or its name as offers show it (e.g. Aave V3), case-insensitive.

type

Only this product type, by its id (how the yield is produced); offers show its name in product_type. One of defi_lending (DeFi lending), savings (Savings rate), defi_lp (Liquidity pool), farm (Incentive farm), defi_vault (Yield vault), liquid_staking (Liquid staking), restaking (Restaking), fixed (Fixed rate), synthetic (Synthetic dollar), backstop (Backstop / insurance), private_credit (Private credit), rwa_fund (Tokenized fund), cefi_earn (CeFi earn), structured_option (Structured).

limit

How many offers to return, 1 to 2000 (default 100).

curl "https://bitcoinyield.co/api/v1/prices?asset=BTC&limit=1"
curl "https://bitcoinyield.co/api/v1/prices?provider=aave-v3&asset=USDC"
curl "https://bitcoinyield.co/api/v1/prices?type=liquid_staking&limit=20"
{
  "updated_at": "2026-11-10T15:01:35.806Z",
  "stale": false,
  "partial": false,
  "degraded_sources": [],
  "count": 1,
  "offers": [
    {
      "asset": "BTC",
      "rank": 1,
      "platform": "Venus Core Pool",
      "chain": "BSC",
      "market": "BTCB",
      "product_type": "DeFi lending",
      "rate": 0.136,
      "rate_text": "0.14% APY",
      "rate_today": 0.136,
      "rate_basis": "apy",
      "rate_base": 0.136,
      "rate_rewards": null,
      "avg_7d": 0.1497,
      "rewards_program": null,
      "avg_30d": 0.1644,
      "durability": "moderate",
      "liquidity_usd": 318432123,
      "exit": null,
      "maturity": null,
      "risk_tier": "C",
      "risk_reasons": "Binance, which holds what backs this, lost about $6.3B from its hot wallets to a key compromise on 2026-10-29; it covered users from its own funds and paused withdrawals until Nov 1 to 3 · The BTC behind BTCB is held by Binance, an exchange (counterparty & custody risk) · Minor past exploit, users made whole",
      "us_available": "yes",
      "access": null,
      "earn_url": "https://app.venus.io/#/pool/0xfD36E2c2a6789Db23113685031d7F16329158384/market/0x882C173bC7Ff3b7786CA16dfeD3DFFfb9Ee7847B?chainId=56",
      "partner": false,
      "rate_source_url": "https://bscscan.com/address/0x882c173bc7ff3b7786ca16dfed3dfffb9ee7847b#readContract",
      "fetched_at": "2026-11-10T15:01:35.80634+00:00"
    }
  ]
}

Offer fields

Each offer from /api/v1/offers and /api/v1/prices. Rates are percents: a DeFi rate is measured from the protocol's own contracts or read from its own API, an exchange's from the exchange's own API, and rate_source_url is where to check it. The methodology explains the sources, the grade and the order.

rank

The offer's place in BitcoinYield's order (rate and risk together), 1 first.

platform

The platform's name, e.g. Aave V3.

chain

The chain the offer is on; null for a centralized (CeFi) offer.

market

The vault, market or token the rate is paid in.

product_type

How the yield is produced, e.g. DeFi lending, Savings rate or Liquid staking.

rate

The annual rate in percent (5.2 means 5.2%) as BitcoinYield shows it and orders on it: the latest reading (rate_today), or its 7-day average when that is lower, so a one-day spike never leads. A DeFi rate is measured from the protocol's own contracts (what the deposit token actually earned) or read from the protocol's own API; an exchange's from its own API. Never a forecast.

rate_text

rate as BitcoinYield prints it, with its unit ("0.17% APY"): the figure to quote.

rate_today

The latest reading: for a lending market its latest day's rate, for a vault, pool or staking token the middle of its 1-day, 7-day and 30-day realized returns. Above rate when that reading is higher than the 7-day average.

rate_basis

Whether the rate is an APY (compounded) or an APR. A rate measured from a protocol's contracts is an APY; a published rate keeps its source's convention; unknown when the source does not say.

rate_base

The organic part of rate (interest, fees, staking); rate_base + rate_rewards = rate.

rate_rewards

The part of rate paid as incentive rewards, which last only as long as someone funds them (beside a rate held at its 7-day average, scaled to that rate). Null when the source states no reward part: a rate measured from a protocol's contracts counts only what the deposit token itself earns, not incentives paid separately.

avg_7d

The rate's 7-day average (rate is the lower of it and rate_today).

rewards_program

Who pays rate_rewards and how far ahead it is funded, when the incentive program is known (Merkl campaigns); null otherwise.

avg_30d

The rate's 30-day average; null under a month of history.

durability

The rate (as shown and ordered) against its 30-day average: durable, moderate, volatile or spiking; posted when it has not moved in 30 days (a rate the platform sets); lumpy when the larger of a realized rate's 7-day and 30-day returns is more than 1.6 times the smaller (income booked in lumps); insufficient under a month of history.

liquidity_usd

The liquidity a depositor can exit into, in US dollars: a lending pool's withdrawable amount, a credit pool's cash, or for a staking token what sells at once within 1% of its market price (the rest of its stake leaves through its issuer's queue, see exit); where that market absorbed every sale measured (up to $25M), or the token is an exchange's, redeemed through the exchange, it is the whole stake, which leaves through the issuer's queue, not at once; or for a fund its issuer redeems what its redemption vault pays at once. Null when the source reports none (custodial desks).

exit

How a holder gets the underlying back at full value, as its issuer states it: a withdrawal queue, a cooldown or a redemption wait, and whether the token can also be sold on a market at the market price. Null when none is on record; a lending market's exit is its liquidity_usd.

maturity

For a fixed rate, the date it ends (YYYY-MM-DD): a Pendle principal token's maturity, when the locked rate stops and the token redeems for its underlying. Null for every other product.

risk_tier

BitcoinYield's A-D risk grade: A lower risk, D higher.

risk_reasons

The main factors behind the grade.

us_available

Whether a US retail user can open it: no when the platform or issuer excludes US persons, or admits only accredited investors or invited addresses (see access).

access

An investor restriction: KYC, Accredited only or Invite only.

earn_url

Where to deposit: the platform's own page.

partner

True when BitcoinYield may earn a commission through earn_url (it never changes the order).

rate_source_url

Where anyone can check the rate: the contract it is read from, on a block explorer, or the exchange's or protocol's own page.

fetched_at

When this rate was read (ISO 8601).

Developers who wire tools like this into AI agents are also the people AI labs pay to build and grade agentic tasks and environments, and AITraining.jobs, built by the same founders as this site, lists open agentic task and RL environment roles with what they pay.