on-chain vs issuer

Built on Base · Tokenized stocks · covers Base (Coinbase) and Robinhood Chain (Robinhood)

Is this stock token
the real one?

Paste a token address or type a ticker. We check it against the issuer's own list of its stock tokens, then show how far its on-chain price is from the issuer's price, and how old that price is.

try

proof-of-stock

01

Is it the issuer's token?

Coinbase lists its stock tokens on Base and Robinhood lists its own on Robinhood Chain. Only an exact contract address from those lists counts. Beside each list we read the issuer's own token factory on the chain, so a check of an address has a second source. A token that copies the name or symbol is marked not official, and you get a warning before any link to it opens.

02

What does the issuer say it's worth?

The issuer's price for one token (Coinbase NAV or Robinhood token bid/ask), always with its age. These prices stop moving while the US market is closed. A price from 40 hours ago is normal on a Sunday and odd on a Tuesday afternoon.

03

How far has the chain drifted?

Every 15 minutes we compare the deepest on-chain pool with that price and keep the history, split into market open, extended hours and closed. Under 0.5% stays grey. Green: on-chain above the issuer's price. Red: below it. Bold: more than 2%.

Look-alikes we flagged this week

Loading the case archive.

chaintokencopiesflaggedstatus

A claim with evidence, not a verdict. Not in the registry is a fact about one list. Most of these copy the listed company's name rather than its ticker, so each row shows what the token calls itself and what it matched on; that name is text its own creator wrote. A row opens its passport in the terminal above. The case archive.

Where the gaps open

From Friday close to Monday open the issuer's price stays the same for 65 hours, but the tokens keep trading. Holidays make that longer. This is when the on-chain price can move away from the share.

Each passport shows the last 24 hours, with closed-market hours shaded.

market closed · reference held Fri sessionFri 16:00 ETMon 09:30 ET

Ask it from your agent

The same passport works as a public MCP server. Anyone can connect an agent to it without a key or an account. It has seven read-only tools: find_stock_token, list_stock_tokens, stock_passport, verify_stock_tokens (up to 50 addresses before a buy), recent_impostors, compare_venues and verify_anchor (the day's hash in Bitcoin and on both chains). They return data with its time and source. There is no tool that trades. Tool reference

It can only read: no wallet, no sign-in, no tool that sends a transaction. Is it safe to connect my agent?

Every verdict carries its proof: the issuer list by the hash of its sorted addresses, with a command that computes the same hash from the issuer, and whether the issuer's own factory on the chain created the contract. Ask /verify for receipt=1 and keep the answer: a script rechecks it months later. Keep a receipt

Writing code instead of connecting an agent? npm install @proofofstock/guard gives a bot one call to make before a swap: beforeBuy() refuses a token the issuer did not list, and fails closed when the registry cannot be read. No dependencies, and every version since 0.2.1 is published from a public workflow, so npm itself records which commit it was built from. How to use it

MCP server URL
https://proofofstock.xyz/mcp
Claude Code
claude mcp add --transport http proofofstock https://proofofstock.xyz/mcp
ChatGPT (web)
Plugins → + → Add custom MCP server → https://proofofstock.xyz/mcp → No authentication → Create as a plugin
npm, for your own code
npm install @proofofstock/guard
mcp.json
{
  "mcpServers": {
    "proofofstock": { "type": "http", "url": "https://proofofstock.xyz/mcp" }
  }
}

Questions

If a token is issuer-listed, is it safe to buy?

Listed means only that this exact contract address is on the issuer's published list for that chain, as we last read it. It says nothing about the price: pools can trade several percent away from the issuer's price, mostly while the market is closed, so check the gap and the price's age first. What the token entitles you to, and whether you may hold it, are set by the issuer's terms and your law. It is not investment advice.

A token is not on the list. Is it fake?

Not necessarily. It is not on any issuer list we read for that chain: it may be a token from an issuer we do not cover yet, or an unrelated coin that shares a ticker. We call it an impostor only when it copies a listed token's distinctive symbol or an issuer's naming style. A name or a ticker alone never makes a token listed.

Where does the data come from?

From each issuer's own public list of its tokens and its price, and from public DEX pool data. Every answer names its source and time, so you can check it there. Proof of Stock is independent: no issuer has reviewed or endorsed this site. The methodology lists every source, chain by chain.

How old can an answer be, and what if a source is down?

Issuer lists are reread every 5 minutes and pool prices recorded every 15, so a reading is usually under 20 minutes old; past 30 minutes it is marked stale. The issuer's own price can be hours or days old while the market is closed, and that age is shown too. If an issuer's list cannot be read for more than 15 minutes, the address check answers that it cannot verify, never "not listed".

Is it safe to connect my agent?

It only reads. There is no wallet, no sign-in, and no tool that signs or sends a transaction. The one key this project has sits on our own server and writes our daily anchor hash to the two chains this site covers, from its own address, value zero: nothing a caller can send makes it sign anything. A token's own name is its creator's text: it comes back as a short label and is never put into a sentence the service says. An agent should still refuse any token that is not on the issuer's list.

Is it free, and can I call it from code?

Yes, with no key and no account. Agents use the MCP server, programs use the HTTP API, and each client gets 60 units in any 60 seconds, shared by both; a passport costs 3. The docs give the whole table.

How do we know the answers are right?

Every day a public exam asks the site about every token whose right answer comes from the issuers themselves: every listed token, the week's look-alikes, unrelated tokens and listed tokens asked on the wrong chain. It counts every wrong answer and checks the proofs, and the report is committed to the exam branch of our public repository, with the hash of the question set, so anyone can rerun it. The terminal's exam command shows the latest one.

Can I check an answer myself, months later?

Yes, and without trusting us. Every answer names the issuer list it was decided against by the hash of its sorted addresses, with a command that computes the same hash from the issuer's own API, and that exact list stays served by its hash after the issuer has changed it. Ask a check for receipt=1 and keep what comes back: a small script in our repository rechecks it later. Each address check also says whether the issuer's own token factory on the chain created that contract, read from the chain as a second source. And once a day we timestamp a manifest of that day's data files into Bitcoin, so a recorded reading cannot be changed afterwards.

More in the documentation, or write to [email protected].