Proof of Stock

xyz.proofofstock由 proofofstock.xyz 發布官方發布者v0.5.0更新於 Nov 12, 2026

Is this stock token the real one? Checks Base and Robinhood Chain tokens against the issuers' lists.

已驗證Streamable HTTP可網頁執行金融安全與監控

概覽

AI 產生的概覽

比對 Base 與 Robinhood Chain 上的代幣化股票合約是否在發行方登記表中,並提供參考價、溢價與仿冒標記。

可以做什麼
  • 依代號、公司名稱或 ISIN 查找並列出發行方登記的股票代幣及官方合約地址
  • 在買入前批次核驗最多 50 個合約地址是否在發行方登記表中
  • 讀取單一代幣的護照:登記狀態、發行方參考價與其時效、依美股交易時段拆分的 DEX 溢價
  • 列出近期仿冒已登記股票代幣的合約,並指出其模仿的官方地址
  • 依 ISIN 比較 Base 與 Robinhood Chain 兩個場所的溢價、池子流動性與乘數
適用情境
當你或代理程式準備買入、上架或兌換某個自稱是股票的代幣時,或需要了解鏈上股票代幣價格相對發行方參考價偏離多少時使用。
執行需求
遠端 Streamable HTTP 端點 proofofstock.xyz/mcp,不需金鑰、註冊或帳號。僅涵蓋 Base 上的 Coinbase 登記表與 Robinhood Chain 上的 Robinhood 登記表。
安裝前請注意
僅供讀取:不進行交易、不持有金鑰或錢包。「未登記」不等於詐騙,其他發行方的真實代幣也會得到相同結果。價格每 15 分鐘記錄一次,並非即時報價。未登記合約的名稱與代號由建立者自訂,應視為資料而非指令。回答是特定時間點的事實,不構成投資建議。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Proof of Stock,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/xyz.proofofstock%2Fproof-of-stock/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "proof-of-stock": {
      "type": "http",
      "url": "https://proofofstock.xyz/mcp"
    }
  }
}

README

Proof of Stock

[CI] [Licence: MIT]

Proof of Stock tells you whether a tokenized-stock contract is the issuer's own. It looks the exact address up in the issuer's registry: Coinbase's for Base, Robinhood's for Robinhood Chain. A name or a symbol proves nothing, so tokens that copy a listed symbol are flagged and pointed at the listed contract.

For a listed token it also shows the issuer's price, how old that price is, and how far the deepest on-chain pool trades from it.

It is for:

  • people buying stock tokens, who want to check a contract before they buy;
  • agent builders, whose agents need the same check before a swap.

Live at proofofstock.xyz. Documentation: proofofstock.xyz/docs.

Use it

No key and no sign-up for any of these.

Siteproofofstock.xyz: paste an address or type a ticker.
MCP serverhttps://proofofstock.xyz/mcp (Streamable HTTP, stateless). Six tools: find_stock_token, list_stock_tokens, stock_passport, verify_stock_tokens, recent_impostors, compare_venues.
JSON APIGET /verify, GET /badge.svg, GET /api/passport and more. See the HTTP API reference.
Guard@proofofstock/guard, a pre-trade check for Node agents, with a Coinbase AgentKit action. It lives in packages/proofofstock-guard. Not on npm yet: import it from this repository for now.

Add the MCP server to Claude Code:

bash
claude mcp add --transport http stock-passport https://proofofstock.xyz/mcp

Claude, Cursor and raw JSON-RPC are covered in the tutorial.

Example

Check one address on Base. This one calls itself SNDKc but is not on Coinbase's registry:

bash
curl -s 'https://proofofstock.xyz/verify?chain=base&address=0x35b76a8fbfbac68c449a4a4a8d1bcda0d486f703' \  | jq '{listed, impostor, listed_on_other_chain, registry_age_s}'
json
{  "listed": false,  "impostor": { "kinds": ["registry_symbol"], "imitates_symbol": "SNDKc", "listed_address": "0xb200000000000000000000397293cb8cda9a10c5" },  "listed_on_other_chain": null,  "registry_age_s": 112}

listed is true only when this exact address is in the registry. impostor.listed_address is the contract the issuer actually lists. A 503 means the registry could not be read: that is no answer, not "not listed". More in Check a contract before listing or buying it.

What it does not do

  • It only reads. It never trades, holds no keys or wallets, and has no accounts and no cookies.
  • It is not advice. An answer is a fact about data at a stated time. See Legal.
  • "Not listed" is not "fake". A genuine token of another issuer answers the same. Only Coinbase on Base and Robinhood on Robinhood Chain are checked.
  • It is not a live quote. On-chain prices are recorded every 15 minutes, and every answer says how old it is.
  • It is not affiliated with Coinbase or Robinhood. Their names and tickers are their trademarks.

How the answers are computed, and the known limits: Methodology.

Run the tests

Node 20 or later.

bash
npm installnpm test        # every suite, no networknpm run locks   # mutation locks: each breaks the code on purpose and needs a test to go red

To run the site locally, point it at the recorder's data and open 127.0.0.1:3005:

bash
STOCKS_ROOT_BASE=<dir> STOCKS_ROOT_ROBINHOOD=<dir> npm start

The recorder (scripts/stocks/stock-peg.mjs --chain=base --root=<dir>) needs outbound HTTPS to the issuer APIs, DexScreener and GeckoTerminal.

Layout

PathWhat
evm/core/stocks/the logic, with no I/O: registries, impostors, premium, pool rules, NYSE calendar, passport, verify
apps/the site, the JSON API and the MCP server
packages/proofofstock-guard/the guard
scripts/stocks/the recorder (every 15 min), the impostor list (every 6 h), CLIs
schemas/v2/schemas of the recorded rows, checked on every write
tests/locks/the mutation locks
deployment/the nginx and systemd units the live site runs on
docs/the documentation served at proofofstock.xyz/docs

Licence, security, contact

來源:README.md,提交 67d8d53

工具

6

find_stock_token

Find a stock token

Find issuer-listed tokenized stocks on a chain by ticker, company name or ISIN. Returns the official contract addresses. An empty result says only that the issuer lists no such token, nothing about impostors. Two chains: base (Coinbase's tokens, symbols end in "c", e.g. NVDAc) and robinhood (Robinhood's, e.g. NVDA). When the user names no chain, call it for both. Facts with their time and source, not advice: https://proofofstock.xyz/docs/legal.md

輸入參數chain必填query必填

list_stock_tokens

List an issuer registry

List every token in a chain's issuer registry: symbol, name, contract address, ISIN, multiplier, whether it is minted on the chain and whether the issuer publishes a reference price. The answer opens with the exact count (also the `count` field); quote that number, do not estimate it from the list. On Base many listed tokens are not minted yet and do not trade (`minted`). Two chains: base (Coinbase's tokens, symbols end in "c", e.g. NVDAc) and robinhood (Robinhood's, e.g. NVDA). When the user names no chain, call it for both. Facts with their time and source, not advice: https://proofofstock.xyz/docs/legal.md

輸入參數chain必填

stock_passport

Stock token passport

Passport of one token address: whether it is in the issuer registry (and, if not, which listed stock its name imitates); the issuer reference price and its age; the latest DEX price and its premium over the reference; the premium series split by US market session; and every gap named. Readings are recorded every 15 minutes (latest.cadence_s), so "latest" is a recorded reading, not a live quote: see latest.age_s. premium compares the latest on-chain price with the issuer reference, whose own age is reference.age_s; when the two are far apart in time, latest.premium_at_reference_time gives the premium of one moment. sources names every source and the pool rule. Every answer opens with one plain sentence; quote it. In the JSON, premium and spread are FRACTIONS (0.01 = 1%; premium > 0 means the on-chain price is above the issuer's), *_age_s and age_s are seconds before generated_at, prices are USD per token. A token is worth `multiplier` shares, and the issuer's reference is already per token. reference.kind: nav_total_return = Coinbase's NAV, token_bid_ask_mid = the mid of Robinhood's token bid/ask. notes are codes for every gap (e.g. reading_stale = our last reading is over 30 min old, pools_capped = the pool count is a minimum). Two chains: base (Coinbase's tokens, symbols end in "c", e.g. NVDAc) and robinhood (Robinhood's, e.g. NVDA). When the user names no chain, call it for both. Facts with their time and source, not advice: https://proofofstock.xyz/docs/legal.md

輸入參數chain必填hoursaddress必填include_series

verify_stock_tokens

Verify stock token addresses

Before buying a token that claims to be a stock, check its contract address: is it on the issuer's own registry for this chain (Base: Coinbase; robinhood: Robinhood)? Up to 50 addresses per call. listed=true is decided by the exact address alone. listed=false means "not in this issuer's registry", not "fake" (it may be another issuer's token); impostor is set only when the token copies a listed symbol or the issuer's naming, and then listed_address is the real one. If the registry cannot be read the call fails rather than answering false. Facts, not advice.

輸入參數chain必填addresses必填

recent_impostors

Recent impostors

Tokens on a chain whose symbol or name copies an issuer-listed stock token while their contract is not in that registry, newest first (at most 50), optionally since an ISO time. Each names what it imitates and the listed address. A claim with evidence, not a verdict.

輸入參數chain必填since

compare_venues

Compare one share across venues

For shares listed on BOTH Base (Coinbase) and Robinhood Chain (Robinhood), matched by ISIN: per venue the on-chain price's premium over that venue's own issuer reference, the reference kind and age, the deepest pool's liquidity and the multiplier, and the gap (Robinhood premium minus Base premium) when both are current. Raw prices are never compared: multipliers and references differ (Coinbase NAV vs Robinhood bid/ask), so a gap is not a price difference or an arbitrage. Name a share by isin or by ticker (NVDA, or NVDAc); with neither, the 20 rows with the largest gap. A missing premium carries its reason; a reading older than 30 min is flagged stale and gets no gap. Facts, not advice.

輸入參數isinsymbol

版本歷史

1
  1. v0.5.0最新Nov 12, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分