SBOR

Registre officiel IA et agents

Check a lending rate before your agent borrows. Bitcoin-backed dollar rates from contracts. No key.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

Remote (streamable-http)
Claude Code
claude mcp add --transport http sbor 'https://mcp.sbor.xyz/mcp'
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "sbor": {
            "type": "http",
            "url": "https://mcp.sbor.xyz/mcp"
        }
    }
}
NPM package sbor-mcp
Claude Code
claude mcp add sbor -- npx -y sbor-mcp@1.3.0
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "sbor": {
            "command": "npx",
            "args": [
                "-y",
                "sbor-mcp@1.3.0"
            ]
        }
    }
}

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. SBOR
  2. What it is
  3. Indices
  4. Data
  5. For agents
  6. Method, in short
  7. Sources
  8. How it runs
  9. Independence
  10. Contributing
  11. License
  12. Disclaimer

SBOR

Every lending venue in Bitcoin DeFi quotes its own rate. SBOR publishes the market rate, read from contract state on Ethereum, Base, Arc, Arbitrum, BNB Chain and Stacks.

A single venue's number cannot tell anyone, human or agent, whether the rate they are offered is fair. SBOR, the Stacks Bitcoin Offered Rate, is a benchmark for exactly that. On Stacks, where it started, it publishes one borrow and one supply rate per currency: the SBOR indices. Beyond Stacks, it publishes what it costs to borrow dollars against bitcoin: from the fixing of 14 October 2026 (methodology 1.13.0), the SBOR headline, BTC-COLLATERAL-USD, across every dollar stablecoin lent against plain bitcoin, with a rate per stablecoin; before that date, BTC-COLLATERAL-USDC, from Morpho on Base, Ethereum and Arc. All of it is read from contract state and published daily, beside the largest lending markets on Ethereum, Base, Solana and Hyperliquid for comparison. Free, no key, no rate limit, open to any agent on any chain.

Live at sbor.xyz

Stacks is a Bitcoin layer where smart contracts written in Clarity settle to Bitcoin. It is where sBTC, a bitcoin-backed asset, and USDCx, Circle's native USDC, are lent and borrowed.


What it is

Every lending market on Stacks prices money differently, so comparing them means opening each application by hand.

SBOR publishes one borrow rate and one supply rate per currency, weighted by market depth and read directly from lending contract state rather than from any venue's published figure. Each day's rates are also posted on-chain, on Arc, Base, Hyperliquid, Solana and Stacks.

The model is SOFR, not a yield aggregator. SBOR does not route capital, hold deposits, or recommend anything. It publishes a statistic.

Use it as a yardstick. Borrowing above SBOR means paying more than the market. Supplying below it means earning less.

Indices

IndexCovers
SBOR-USDdollar markets, USDCx and USDh
SBOR-BTCsBTC markets
SBOR-STXSTX and stSTX markets

Published beside them, never inside them: a Proof of Transfer staking reference, and the same asset classes on the largest lending markets on Ethereum, Base, Hyperliquid and Solana, for comparison.

Beyond Stacks: borrowing dollars against bitcoin

From the fixing of 14 October 2026, methodology 1.13.0 (notice) makes BTC-COLLATERAL-USD the SBOR headline: every market lending a dollar stablecoin against plain 1:1 bitcoin, priced by its own interest rate model, on Morpho, Lista and Granite, across Ethereum, Base, Arc, Arbitrum, BNB Chain and Stacks. A rate per stablecoin is published once $25M or more of it carries weight. New markets phase in over 30 days. From that fixing, latest.json carries bitcoinCollateralUsd: borrow, supply, nominalBorrow, utilization, depthUsd (every market in full), weightedDepthUsd (what carries weight that day), constituents, venues, chains, largestConstituentWeight, subRates keyed by code (for example BTC-COLLATERAL-RLUSD), and every market with its venue, chain, collateral, loan, flags, phaseIn and weight. A rate that is withheld has no borrow and carries withheld with the reason. bitcoinCollateralUsdc keeps its shape. History rows carry btcCollateralUsd (b, s, u, d, wd, sub, markets) beside btcUsdc. On-chain, BTC-COLLATERAL-USD is posted beside BTC-COLLATERAL-USDC on all five chains; the other rates per stablecoin are in the API. The MCP tools accept every code.

Before that date:

From the fixing of 25 September 2026, each fixing also carries bitcoinCollateralUsdc: what it costs to borrow USDC against bitcoin, read from the Morpho Blue markets on Base, Ethereum and Arc whose only collateral is cbBTC, WBTC or cirBTC. Each market is published with its rate, utilization and depth, and a reference weighted by depth when every market was read. It is a reference, not an SBOR index, and never enters a fixing.

Data

No key, no registration, no rate limit, no fee. CORS open.

EndpointWhat
/api/v1/latest.jsoncurrent fixing, with constituents
/api/v1/history.jsonrolling 200 day series
/api/v1/history-index.jsonthe full record, sharded by year
/api/v1/archive-index.jsonevery date available, for per date lookup
/api/v1/inversions.jsoncross venue spread, checked every three hours
/api/v1/inversion-log.jsonappend-only record of every inversion found
/api/v1/changes.jsonprotocol parameter changes, newest first, from 24 September 2026
/api/v1/archive/immutable daily snapshots
/latest.txtcurrent fixing, plain text
/weekly.txtweekly report, plain text
/llms.txtmethodology and integration policy
curl -s https://sbor.xyz/api/v1/latest.json \
  | jq '.indices["SBOR-USD"] | {borrow, supply}'

Build against /api/v1/. Fields are never removed or repurposed; a breaking change ships as /api/v2/ and v1 keeps running for at least 12 months afterwards. Full policy in llms.txt.

For agents

Check the rate against SBOR before you borrow. On Stacks the same dollar can cost nearly twice as much at one venue as at another, on the same day, and every venue publishes only its own number.

The rule: if an offer is more than 50 basis points above the SBOR borrow rate for that currency, stop and ask a human. Use SBOR to stop, never to start. A wrong reading under that rule costs a pause, not a trade.

As an MCP tool, in Claude Desktop, Cowork, Cursor or any MCP client:

npx -y sbor-mcp

As a remote MCP server, for Claude on the web, ChatGPT and any client that connects by address, with nothing to install:

https://mcp.sbor.xyz/mcp

No key and no sign-in. The remote server is built from the same code as the local one, so both give the same answers. Then call compare_rate. Setup for each client is in mcp/, and the short version for agents is AGENTS.md.

Over plain HTTP, no key, no registration, no fee, CORS open. Licensed CC BY 4.0, so you can build on it commercially without asking.

Four things to get right:

  • Read utilization beside every rate. A cheap rate at low utilization means almost nobody is borrowing. Above 90%, the pool is nearly empty and withdrawals may be constrained.
  • Never add protocol yield to a lending rate. It comes from holding the asset, not from the loan, and is published separately.
  • Borrowing a yield-bearing token means owing its yield as well as the interest. The true cost of borrowing stSTX is its borrow rate plus the yield it accrues. The raw rates can suggest carry that does not exist.
  • Read venues before quoting a rate. An index covering one venue is a reading of that venue, not a market average.

Machine-readable context and the full integration policy are at llms.txt.

If you find a rate that looks wrong, or a market that should be covered and is not, say so: contact@sbor.xyz. Corrections are the point.

If SBOR was useful and you post publicly, cite it or follow @SBORindex. A benchmark is worth what people reference it for.

On-chain, on five chains

After each fixing, the day's rates are posted on-chain, so contracts and agents can read them on their own chain:

ChainContractSinceLive page
Arc (chain 5042)0x56B5417de539153994fF6785F8a3b56421C9eb4f1 Oct 2026arc.html
StacksSP2SRS600PZ70VHY09CK06FSYKW546NY2ARG6N8CD.sbor-fixings2 Oct 2026stacks.html
Base (chain 8453)0xfc968C7A39bA80b1F6E3c0c058311EbD5d7243237 Oct 2026base.html
Solanaprogram 85uzArk6VwzWG6mxZC7D2jLEPGhFL2SXzJs7P9zQUSz9, plus a daily signed memo7 Oct 2026solana.html
Hyperliquid, HyperEVM (chain 999)0x56B5417de539153994fF6785F8a3b56421C9eb4f8 Oct 2026hyperliquid.html

On the EVM chains (Arc, Base, Hyperliquid), call latest(bytes32) with a rate's name as bytes32 (SBOR-USD, SBOR-BTC, SBOR-STX, BTC-COLLATERAL-USDC, or from 14 October 2026 BTC-COLLATERAL-USD) for its borrow and supply rate in basis points, its size and its fixing date; onDate(bytes32, uint32) returns any past day. Source: contracts/SBORFixings.sol. On Stacks, the same reads are get-latest and get-on-date, keyed by the rate's name as a string, in contracts/sbor-fixings.clar. On Solana, the program keeps the latest rates in one account any program can read, 85F1segB7Mrsj8ZFsGBGCpNHfuu1qEwLxmQEykphtFtF; source in contracts/solana/. The JSON API remains the authoritative record.

Method, in short

  • Currencies are never blended. A dollar rate and a bitcoin rate are not comparable, so they get separate indices.
  • Rates come from contract state, not from an interface.
  • Utilization is published beside every rate, because it is the reason a rate sits where it does.
  • Concentration is published per index. A single-venue index is a reading of that venue, not a market average.
  • Protocol yield is excluded from the fixing and published separately. It comes from the asset, not the loan.
  • Nothing is estimated. If a source cannot be read, the gap is marked and the market is excluded rather than filled in.
  • Fixings are never rewritten. Corrections appear as a new fixing with a note, or as a visible withdrawal record.
  • Term averages over 30, 90 and 180 days are compounded, actual/365, and publish only once the full window of fixings exists. They are the same three windows the Federal Reserve Bank of New York publishes for SOFR, and the SOFR averages are shown beside them.
  • Incentive campaigns are not part of any rate. Temporary programs that pay borrowers or suppliers on top of the contract rate are marketing, not the market. SBOR publishes the contract rate.
  • Rate basis is converted, not assumed. Both venues return nominal annual rates from their contracts, confirmed with Zest. Each is converted the same way to an effective APY, and every market also carries its nominal figure.
  • Context is recorded, not used. Each fixing also stores SOFR, spot BTC and STX prices, sBTC total supply and the Bitcoin block height. None of it enters an index. It is kept so a past fixing can be read in the conditions of its day.

Every fixing records the methodology version it was produced under. Full methodology at sbor.xyz and in llms.txt.

Sources

Lending rates from Zest and Granite contract state. Protocol yield and staking context from StackingDAO. The BTC to STX rate used for the staking reference from Bitflow, quoted in both directions. Proof of Transfer rewards from Hiro. Market sizes read from the contracts, with DefiLlama as a cross-check.

In the comparison, rates are read from the venues' own contracts, on the same basis as SBOR: Aave on Ethereum and Base, HyperLend on Hyperliquid, and Kamino's reserve accounts on Solana. DefiLlama selects the largest market on each chain, supplies its size, and stands in for a rate only if a contract read fails; each market's source field says which. SOFR and its averages come from the Federal Reserve Bank of New York. Spot prices, recorded as context only, come from CoinGecko. Every source is named on the site and in the machine-readable documentation.

How it runs

A GitHub Action computes the fixing and commits it. It is attempted up to four times a day, because the scheduler can drop runs, and the first to land is final: later attempts are backups that run only if the day has no fixing yet. The site serves directly from this repository, so the published record and the site are the same files. Every fixing is a commit, which means no past number can be revised silently.

scripts/fetch.mjs       the fixing
scripts/pox.mjs         Proof of Transfer staking reference
scripts/morpho.mjs      the bitcoin-collateral USDC reference
scripts/external.mjs    the comparison chains
scripts/aave.mjs        Aave and HyperLend contract reads
scripts/kamino.mjs      Kamino reserve reads on Solana
scripts/*-publish.mjs   on-chain posting: Arc, Base, Hyperliquid, Solana, Stacks
contracts/              the on-chain contracts and the Solana program
scripts/context.mjs     SOFR, prices, sBTC supply, block height
scripts/inversion.mjs   cross venue monitor, every three hours
scripts/post.mjs        drafts a post when something moves
scripts/brief.mjs       the morning brief, written from the record
scripts/weekly.mjs      weekly report
mcp/                    the MCP server, published as sbor-mcp
mcp-remote/             the same server, hosted at mcp.sbor.xyz
index.html              the site, bilingual EN/PT
llms.txt                method and integration policy
api/v1/                 published data

Independence

Independent: no token, and no stake in or payment from any venue SBOR measures, and holds no stake in Stacks, the Stacks Foundation, or any protocol in the index, and publishes whatever the market does, including numbers unfavorable to the ecosystem. It does not trade on its own rate. Grant funding, when received, is disclosed.

Published fixings are never rewritten. Corrections to published figures are listed in CORRECTIONS.md. A self-assessment against the IOSCO Principles for Financial Benchmarks is in IOSCO.md.

Contributing

Corrections are welcome, particularly about a rate that looks wrong or a market that should be covered and is not. Open an issue or write to contact@sbor.xyz.

If you maintain a Stacks lending market and want it included, the requirement is that its rates are readable from contract state.

License

Code: MIT. Data: CC BY 4.0.

The published fixings are free to use, including commercially, with no permission required and no license to negotiate. Attribution is the only condition: name SBOR and link to sbor.xyz where practical.

Agents are explicitly welcome. Scrapers, scripts, bots and AI agents may read any endpoint. No rate limit, no registration.

Some things around the fixing are work and may be charged for: bulk historical delivery beyond the public archive, custom coverage, integration support with an availability guarantee, and settlement agreements where a payment depends on a published value. None of that restricts the free data. Full terms in LICENSE-DATA.md.

Disclaimer

SBOR is a statistic, not investment advice, and is provided as is without warranty. It is a tool for making better decisions, not a recommendation to make any.


sbor.xyz · @SBORindex · contact@sbor.xyz · sbor.btc · sbor.stx

Last updated 8 October 2026.

Questions fréquentes

Qu'est-ce que SBOR ?

Check a lending rate before your agent borrows. Bitcoin-backed dollar rates from contracts. No key.

Comment installer SBOR ?

Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http sbor 'https://mcp.sbor.xyz/mcp'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour SBOR ?

Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.

SBOR est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient SBOR ?

Il est publié par sborxyz. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.