Data for agents

The human answer is free. So is most of the data. A machine that wants everything in one call can pay a few cents for it, with its own wallet, in a header. No reader is ever charged.

If you want to point your own assistant at this data rather than build against it, /agents has the settings for Claude, ChatGPT, VS Code, Cursor and Gemini CLI.

Free, keyless

Start here. No key, no rate limit, CORS open. A link back is welcome, not required.

curl https://stocksonchain.io/api/tokens.json
curl https://stocksonchain.io/api/tokens/nvda.json
curl https://stocksonchain.io/api/events.json
curl https://stocksonchain.io/api/tradfi.json
curl https://stocksonchain.io/api/history/totals.json
curl https://stocksonchain.io/api/history/nvda.json

MCP server (Model Context Protocol)

This site runs a Model Context Protocol server. An agent calls the data as tools instead of fetching JSON and parsing it. There is no API key, no account, no OAuth and no sign-up. The server is read-only. It keeps no session and stores nothing about the caller.

Endpointhttps://stocksonchain.io/mcp
MethodPOST only. A GET returns 405, because there is no session and no SSE stream.
TransportStreamable HTTP
Protocol versions2025-11-25 2025-06-18 2025-03-26
AuthenticationNone. There is no account here to authenticate against.
Server namestocks-on-chain version 1.0.0
Server card/.well-known/mcp.json
LicenceCC BY 4.0

Listed in the official MCP Registry as io.stocksonchain/stocks-on-chain.

Ask it what it can do:

curl -X POST https://stocksonchain.io/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

The tools

search_stocksFind tokenized stocks by ticker or company name. Returns every match with its issuers and chains. If a ticker is a real stock but has not been tokenized, this reports that too, which is a correct answer rather than an empty result.
get_stockEverything known about one stock: every instrument (one per issuer, with the mechanics union describing how it handles corporate actions), every listing under it (chain, contract address, supply, price), and the events recorded against it. Report instruments as the options; listings are addresses. Read mechanics.kind before reaching for any field inside mechanics.
list_issuersEvery issuer whose tokens are tracked, with the legal wrapper it uses, the chains it issues on, and a link to where that issuer publishes its own rule on who may buy. The rule itself is deliberately not included: it can change without this site noticing, so answer eligibility questions by sending the caller to eligibility.sourceUrl rather than by stating a rule.
list_chainsEvery chain carrying tokenized stocks, with its explorer, and the matrix of which issuer has listed what where. Registry order, which is not a ranking.
list_eventsThe corporate-action tape: splits, distributions and multiplier changes read from chain state, each with a transaction hash. Newest first by the time the event took effect, which is chronology and not a ranking.
get_contractWhat this site holds about one address: the name and category our registry records and who told us, plus what the code at that address actually is - its runtime bytecode hash, the implementation behind it if it is a proxy, and how many other addresses we track run byte-identical code. The code half is reproducible: fetch eth_getCode and take its keccak256 and you get the same hash. This never says an address is safe, genuine or correct, and there is no field that could: check it against the issuer before you act on it.
get_manifestWhat this service offers a machine reader: the free keyless endpoints, the bulk dataset and its price if the paid tier is live, and the licence. No human reader is ever charged or asked to connect a wallet.

Every result carries the time the data was read, the sort key that ordered it, and the same notice the JSON API carries. No tool ranks, rates or scores anything, and no tool takes a sort or an order parameter. An agent cannot ask this server for a leaderboard, because the parameter to ask with does not exist.

The bulk feeds

Two requests that each replace many. They are listed cheapest first - a price order, not a recommendation between them.

FeedWhat it holdsFree equivalent
/api/agent/dataset.jsonThe current state of everything this site reads for itself, in one request: supply, proven holder counts, corporate-action mechanics, the chains matrix, annualised multiplier growth, the corporate-action tape and the daily aggregate series. Every holder and transfer figure is a proven read; the payload's holderScope block names the chains covered and the method, and an absent field means not proven, never zero. No price, no volume, no market value.Four free requests: /api/tokens.json, /api/events.json, /api/history/totals.json and /api/registry.json. Those carry the same figures AND the price, volume and market value this feed leaves out.
/api/agent/history.jsonEvery tracked stock daily series in one request: one row per UTC day per stock, with the share-equivalent supply, the multiplier and the holder count where recorded. Levels read that day, never deltas; the payload's holderScope block states the holder-count provenance and its date boundary. No price, no volume, no market value.One free request per stock at /api/history/{slug}.json - 194 of them on 14 Aug 2026, and one more for every stock the registry gains. Those carry the same rows AND the price, volume and market value this feed leaves out.
curl https://stocksonchain.io/api/agent/dataset.json
curl https://stocksonchain.io/api/agent/history.json

Nothing here is sold by withholding it. Every figure in both feeds is also served free, keyless, from the path named beside it. What a payment buys is the request count and the joining, never access to a number you could not otherwise read. Assembling the daily history by hand is one request per stock; there are 1006 stocks as of 12 Sept 2026, and one more with every stock added.

Neither feed carries a price, a 24h volume or a market value. Those come from third-party market data providers rather than from our own chain reads, so we publish them free with their source rather than sell them. Every holder and transfer figure in the feeds is a proven read: reconstructed from chain state, or checked against the token's own totalSupply(). Each payload's holderScope block names the chains covered and the method, and a figure that cannot be proven is absent rather than estimated. Price, volume and market value stay on every page and in every free endpoint, and each stock in the dataset carries a link to the free endpoint that has them.

Paying with x402

Both feeds are free right now while metered access is being switched on. When it goes live they will be priced as in the table below, settled in USDC on base over x402, with the agent wallet, never a reader wallet.

  1. Request one of the paths above.
  2. Get back HTTP 402 with an accepts array: the price, asset and address.
  3. Pay with your wallet and retry the request with the X-PAYMENT header.
  4. The facilitator verifies and settles; the feed returns with an X-PAYMENT-RESPONSE header.
Protocolx402
Networkbase
AssetUSDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
Price, /api/agent/dataset.json$0.01 per request
Price, /api/agent/history.json$0.05 per request
Facilitatorhttps://x402.org/facilitator

On 4 August 2026 Cloudflare announced Cloudflare Wallets : stablecoin wallets that agents pay from, with spending caps set by the account holder. Cloudflare states these wallets will pay x402-compatible endpoints. This endpoint uses the standard x402 protocol, so an agent with such a wallet can pay it when the metered tier is live.

Machine-readable terms: /api/agent/manifest.json.

What you accept by paying

Sending a payment accepts the agent tier terms for that request. Reading this site, calling a free endpoint, or using the MCP server accepts nothing. The 402 response carries the terms URL and the version, so a caller reads them before it decides to pay.

The data licence does not change when you pay. Everything stays CC BY 4.0, including the metered feeds. We do not own the figures in them: they are facts read from public blockchains, and we make no claim over them. The terms cover conduct by a caller who agreed to them, and nothing else.

x402 charges the agent, in an HTTP header, with the agent own wallet. No human reader is ever asked to sign in or connect a wallet, and that promise is unchanged. The bulk feeds carry the same CC BY 4.0 licence as the free API.