CoinMarketCap APIkeyed5 credits2026-09-18

CoinMarketCap flags 791 assets as tokenised. 60% of them have no wrapper with a tracked market.

Six in ten tokenised stocks on CoinMarketCap have no wrapper with a tracked market.

791 tokenised underlyings on CoinMarketCap as boxes on a shelf: 476 grey — no wrapper with a CMC-tracked market — and 315 green with at least one. 791 tokenised underlyings on CoinMarketCap as boxes on a shelf: 476 grey — no wrapper with a CMC-tracked market — and 315 green with at least one.
before the join: every box is an underlying the RWA map flags has_tokens: true — 791 of them, one box each, shelf first476 of 791 underlyings: no wrapper with a CMC-tracked market — listed, no CMC-tracked market315 with at least one wrapper whose map status is activejoin: tokens[] (price: null rows kept) → status on /v1/cryptocurrency/map → count underlyings whose every wrapper is untracked
791 underlyings · 1,435 wrappers · 54 calls · 5 credits · 40.9 s captured 2026-09-18 22:16:17 UTC · reproduce ↓
The product

Type a ticker. Every wrapper, its issuer, its chain, its listing state.

The roster from /v5/real-world-assets/quotes/latesttokens[], the price: null rows kept — joined to each wrapper's status on /public-api/v1/cryptocurrency/map. Then one line: how many of its wrappers have a CMC-tracked market, and whose. The answer below is a committed run; type any ticker to ask live.

Does this ticker have a wrapper that trades, and whose?

Roster via this site's proxy (/api/roster/v5/real-world-assets/quotes/latest, keyed, 1 credit; the committed snapshot if the key is unavailable, labelled). State via /api/status/public-api/v1/cryptocurrency/map and /v2/cryptocurrency/info — keyless, 0 credits. The proxy shares one IP across every visitor, so a 429 is shown as a 429, with the command to run instead.

committed run

MS · Morgan Stanley · stock · rwa_rank 43 · has_tokens: true · asked 2026-09-18 22:43:39 UTC · roster: snapshot 2026-09-18 (the RWA endpoints need a key) · state: live · keyless · 0 credits · chosen by rule: the most prominent tokenised underlying on CoinMarketCap (lowest rwa_rank) whose every wrapper is untracked

wrapper of MS has a CMC-tracked market.

0 active · 1 untracked · 0 unresolved or inactive — issuer: Backed Assets. The RWA map says has_tokens: true; the cryptocurrency map says untracked for every wrapper — listed, no CMC-tracked market.

wrapper issuer chain token address price listing state state from listed
wMSxWrapped Morgan Stanley Tokenized Stock (xStock)Backed AssetsX Layer0x2874A11805783324C54562eDB1A641C5d1d077a5nulluntracked/v1/cryptocurrency/map · live · keyless2026-08-11
▶ 0 of 1 wrapper with a CMC-tracked market — on the shelf
rule: strict — an underlying counts only when every attached wrapper is untracked · an unresolved id never counts · MS is one of the 476 of 791

wMSx — raw rows (1 wrapper, three sources)

rwa_id 35 · crypto_id 41513 · tokens[] from /v5/real-world-assets/quotes/latest (snapshot 2026-09-18) · state from /public-api/v1/cryptocurrency/map · listing date from /public-api/v2/cryptocurrency/info · docs/proof/ms.json (opens in a new tab)
sourceendpointidsymbolprice / statusissuer / rankplatformdate
tokens[]/v5/real-world-assets/quotes/latest41513wMSxnullBacked AssetsX Layer
map row/public-api/v1/cryptocurrency/map41513wMSxstatus untrackedrank nullX Layer
info row/public-api/v2/cryptocurrency/info41513wMSxstatus inactiveOKB2026-08-11
  • tokens[] on /v5/real-world-assets/quotes/latest → 1 wrapper attached to MS (rwa_id 35)
  • /public-api/v1/cryptocurrency/map → status per crypto_id: 1 untracked · 0 active · 0 unresolved or inactive
  • tracked = wrappers with status == active = 0 · attached = 1
  • 0 of 1 → every wrapper untracked → MS has no wrapper with a CMC-tracked market
raw JSON of these rows, verbatim from the API
{
 "tokens": [
  {
   "crypto_id": 41513,
   "symbol": "wMSx",
   "name": "Wrapped Morgan Stanley Tokenized Stock (xStock)",
   "issuer_id": "6878977dcbbf471de3366e85",
   "issuer_name": "Backed Assets",
   "price": null,
   "market_cap": null,
   "volume_24h": null,
   "status": "untracked",
   "first_historical_data": null,
   "date_added": "2026-08-11T16:24:36.000Z",
   "platform": {
    "name": "X Layer",
    "token_address": "0x2874A11805783324C54562eDB1A641C5d1d077a5"
   }
  }
 ],
 "map_rows": [
  {
   "id": 41513,
   "name": "Wrapped Morgan Stanley Tokenized Stock (xStock)",
   "symbol": "wMSx",
   "slug": "wrapped-morgan-stanley-tokenized-stock-xstock",
   "rank": null,
   "status": "untracked",
   "platform": {
    "id": 216,
    "name": "X Layer",
    "symbol": "OKB",
    "slug": "okb",
    "token_address": "0x2874A11805783324C54562eDB1A641C5d1d077a5"
   }
  }
 ],
 "info_rows": [
  {
   "id": 41513,
   "symbol": "wMSx",
   "platform": {
    "id": "3897",
    "name": "OKB",
    "symbol": "OKB",
    "slug": "okb",
    "token_address": "0x2874A11805783324C54562eDB1A641C5d1d077a5"
   },
   "date_added": "2026-08-11T16:24:36.000Z",
   "status": "inactive"
  }
 ]
}
The scorecard

One row per issuer. Grey is the shelf; green has a market.

The same pair, 772 times in Backed Assets' row. Declared is the registry's num_tokens; attached is what any underlying lists in tokens[]; tracked is status == active on the map; shelf rate is untracked ÷ attached, beside the live market cap of what trades. Open an issuer for its two raw rows.

issuerwrappersshelfdeclaredattachedtrackedlive market cap
Dinari Assets

/v5/real-world-assets/issuers/list row

{
 "name": "Dinari Assets",
 "website": "https://dinari.com/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/5a59aaed_253f_4771_8e52_4ecc50ef127c_medium.jpg",
 "issuer_id": "688c6172abae9b5b9fb30359",
 "num_tokens": 91
}

joined row

{
 "issuer_id": "688c6172abae9b5b9fb30359",
 "issuer_name": "Dinari Assets",
 "declared": 91,
 "attached": 27,
 "tracked": 0,
 "untracked": 27,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 0.0,
 "shelf_rate": 1.0
}
100%91270$0
Backed Assets

/v5/real-world-assets/issuers/list row

{
 "name": "Backed Assets",
 "website": "https://assets.backed.fi/",
 "logo": null,
 "issuer_id": "6878977dcbbf471de3366e85",
 "num_tokens": 1176
}

joined row

{
 "issuer_id": "6878977dcbbf471de3366e85",
 "issuer_name": "Backed Assets",
 "declared": 1176,
 "attached": 772,
 "tracked": 140,
 "untracked": 632,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 669101579.01,
 "shelf_rate": 0.8187
}
82%1,176772140$669M
(no issuer)

/v5/real-world-assets/issuers/list row

null

joined row

{
 "issuer_id": null,
 "issuer_name": "(no issuer)",
 "declared": null,
 "attached": 5,
 "tracked": 3,
 "untracked": 1,
 "inactive": 0,
 "unresolved": 1,
 "live_market_cap_usd": 0.0,
 "shelf_rate": 0.2
}
20%53$0
Robinhood

/v5/real-world-assets/issuers/list row

{
 "name": "Robinhood",
 "website": "https://robinhood.com/us/en/",
 "logo": null,
 "issuer_id": "6a465832fbe3004b1a0ea2dd",
 "num_tokens": 107
}

joined row

{
 "issuer_id": "6a465832fbe3004b1a0ea2dd",
 "issuer_name": "Robinhood",
 "declared": 107,
 "attached": 106,
 "tracked": 98,
 "untracked": 8,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 135432308.21,
 "shelf_rate": 0.0755
}
8%10710698$135M
Ondo Assets

/v5/real-world-assets/issuers/list row

{
 "name": "Ondo Assets",
 "website": "https://ondo.finance/",
 "logo": null,
 "issuer_id": "688ca4ccabae9b5b9fb3167a",
 "num_tokens": 551
}

joined row

{
 "issuer_id": "688ca4ccabae9b5b9fb3167a",
 "issuer_name": "Ondo Assets",
 "declared": 551,
 "attached": 214,
 "tracked": 210,
 "untracked": 4,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 891329105.52,
 "shelf_rate": 0.0187
}
2%551214210$891M
NA (Derivatives)

/v5/real-world-assets/issuers/list row

{
 "name": "NA (Derivatives)",
 "website": null,
 "logo": null,
 "issuer_id": "695e11f774b54210f3b95dc3",
 "num_tokens": 247
}

joined row

{
 "issuer_id": "695e11f774b54210f3b95dc3",
 "issuer_name": "NA (Derivatives)",
 "declared": 247,
 "attached": 131,
 "tracked": 128,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 3,
 "live_market_cap_usd": 0.0,
 "shelf_rate": 0.0
}
0%247131128$0
bStocks

/v5/real-world-assets/issuers/list row

{
 "name": "bStocks",
 "website": null,
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/Untitled_design__2_.png",
 "issuer_id": "6a2aed5097c45356b1a5f710",
 "num_tokens": 77
}

joined row

{
 "issuer_id": "6a2aed5097c45356b1a5f710",
 "issuer_name": "bStocks",
 "declared": 77,
 "attached": 77,
 "tracked": 77,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 797027720.84,
 "shelf_rate": 0.0
}
0%777777$797M
Reality

/v5/real-world-assets/issuers/list row

{
 "name": "Reality",
 "website": null,
 "logo": null,
 "issuer_id": "6a43600c282e7240b76c8bbb",
 "num_tokens": 71
}

joined row

{
 "issuer_id": "6a43600c282e7240b76c8bbb",
 "issuer_name": "Reality",
 "declared": 71,
 "attached": 71,
 "tracked": 71,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 131344865.7,
 "shelf_rate": 0.0
}
0%717171$131M
Hyperliquid Assets

/v5/real-world-assets/issuers/list row

{
 "name": "Hyperliquid Assets",
 "website": "https://app.hyperliquid.xyz/trade",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/hyperliquid.png",
 "issuer_id": "699ed38db54c9320b15928e3",
 "num_tokens": 12
}

joined row

{
 "issuer_id": "699ed38db54c9320b15928e3",
 "issuer_name": "Hyperliquid Assets",
 "declared": 12,
 "attached": 12,
 "tracked": 12,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 1111.44,
 "shelf_rate": 0.0
}
0%121212$1,111
Backpack

/v5/real-world-assets/issuers/list row

{
 "name": "Backpack",
 "website": "https://backpack.exchange",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/M7sS2GzR_400x400.png",
 "issuer_id": "6a2d54b697c45356b1a634f4",
 "num_tokens": 7
}

joined row

{
 "issuer_id": "6a2d54b697c45356b1a634f4",
 "issuer_name": "Backpack",
 "declared": 7,
 "attached": 5,
 "tracked": 5,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 17404738.82,
 "shelf_rate": 0.0
}
0%755$17M
smaller issuers (16) — fewer than 5 attached wrappers
Superstate Assets

/v5/real-world-assets/issuers/list row

{
 "name": "Superstate Assets",
 "website": "https://superstate.com/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/Adobe_Express___file.png",
 "issuer_id": "68b902a8f972b459c80de6a5",
 "num_tokens": 1
}

joined row

{
 "issuer_id": "68b902a8f972b459c80de6a5",
 "issuer_name": "Superstate Assets",
 "declared": 1,
 "attached": 1,
 "tracked": 0,
 "untracked": 1,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 0.0,
 "shelf_rate": 1.0
}
100%110$0
PreStocks Assets

/v5/real-world-assets/issuers/list row

{
 "name": "PreStocks Assets",
 "website": "https://prestocks.com/",
 "logo": null,
 "issuer_id": "689612983f270c6ff4781b96",
 "num_tokens": 22
}

joined row

{
 "issuer_id": "689612983f270c6ff4781b96",
 "issuer_name": "PreStocks Assets",
 "declared": 22,
 "attached": 3,
 "tracked": 3,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 15985975.55,
 "shelf_rate": 0.0
}
0%2233$16M
Tether Holdings

/v5/real-world-assets/issuers/list row

{
 "name": "Tether Holdings",
 "website": "https://tether.to/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/tether.png",
 "issuer_id": "68904e9cabae9b5b9fb358ac",
 "num_tokens": 2
}

joined row

{
 "issuer_id": "68904e9cabae9b5b9fb358ac",
 "issuer_name": "Tether Holdings",
 "declared": 2,
 "attached": 2,
 "tracked": 2,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 2744320735.84,
 "shelf_rate": 0.0
}
0%222$2.74B
Paxos

/v5/real-world-assets/issuers/list row

{
 "name": "Paxos",
 "website": "https://www.paxos.com/",
 "logo": null,
 "issuer_id": "68904c24abae9b5b9fb35815",
 "num_tokens": 1
}

joined row

{
 "issuer_id": "68904c24abae9b5b9fb35815",
 "issuer_name": "Paxos",
 "declared": 1,
 "attached": 1,
 "tracked": 1,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 1899929026.14,
 "shelf_rate": 0.0
}
0%111$1.90B
Comtech Gold

/v5/real-world-assets/issuers/list row

{
 "name": "Comtech Gold",
 "website": "https://www.comtechgold.com/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/comtech.png",
 "issuer_id": "68904cceabae9b5b9fb35839",
 "num_tokens": 1
}

joined row

{
 "issuer_id": "68904cceabae9b5b9fb35839",
 "issuer_name": "Comtech Gold",
 "declared": 1,
 "attached": 1,
 "tracked": 1,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 19662614.69,
 "shelf_rate": 0.0
}
0%111$20M
VNX

/v5/real-world-assets/issuers/list row

{
 "name": "VNX",
 "website": "https://vnx.li/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/vnx.png",
 "issuer_id": "68905b43abae9b5b9fb35a95",
 "num_tokens": 1
}

joined row

{
 "issuer_id": "68905b43abae9b5b9fb35a95",
 "issuer_name": "VNX",
 "declared": 1,
 "attached": 1,
 "tracked": 1,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 5847849.12,
 "shelf_rate": 0.0
}
0%111$6M
Matrixdock

/v5/real-world-assets/issuers/list row

{
 "name": "Matrixdock",
 "website": "https://www.matrixdock.com/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/matrixdock.png",
 "issuer_id": "68905a7babae9b5b9fb35a8d",
 "num_tokens": 1
}

joined row

{
 "issuer_id": "68905a7babae9b5b9fb35a8d",
 "issuer_name": "Matrixdock",
 "declared": 1,
 "attached": 1,
 "tracked": 1,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 47874510.53,
 "shelf_rate": 0.0
}
0%111$48M
Kinesis Assets

/v5/real-world-assets/issuers/list row

{
 "name": "Kinesis Assets",
 "website": "https://kinesis.money/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/3LFB_Kit_400x400.png",
 "issuer_id": "68e25e8dd4cd001228754c7c",
 "num_tokens": 1
}

joined row

{
 "issuer_id": "68e25e8dd4cd001228754c7c",
 "issuer_name": "Kinesis Assets",
 "declared": 1,
 "attached": 1,
 "tracked": 1,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 0.0,
 "shelf_rate": 0.0
}
0%111$0
XAGx

/v5/real-world-assets/issuers/list row

{
 "name": "XAGx",
 "website": "https://xagx.org/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/bwdPlk2V_400x400.png",
 "issuer_id": "68e27862d4cd001228754d31",
 "num_tokens": 1
}

joined row

{
 "issuer_id": "68e27862d4cd001228754d31",
 "issuer_name": "XAGx",
 "declared": 1,
 "attached": 1,
 "tracked": 1,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 0.0,
 "shelf_rate": 0.0
}
0%111$0
Token

/v5/real-world-assets/issuers/list row

{
 "name": "Token",
 "website": "https://www.token.com.tr/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/hoGtBUTO_400x400.png",
 "issuer_id": "68e27c8ad4cd001228754d67",
 "num_tokens": 1
}

joined row

{
 "issuer_id": "68e27c8ad4cd001228754d67",
 "issuer_name": "Token",
 "declared": 1,
 "attached": 1,
 "tracked": 1,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 0.0,
 "shelf_rate": 0.0
}
0%111$0
Tessera Assets

/v5/real-world-assets/issuers/list row

{
 "name": "Tessera Assets",
 "website": "https://www.tessera.pe/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/tessera.png",
 "issuer_id": "6a0be4e680ee5978ec4455ce",
 "num_tokens": 1
}

joined row

{
 "issuer_id": "6a0be4e680ee5978ec4455ce",
 "issuer_name": "Tessera Assets",
 "declared": 1,
 "attached": 1,
 "tracked": 1,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 663072.48,
 "shelf_rate": 0.0
}
0%111$663,072
Republic

/v5/real-world-assets/issuers/list row

{
 "name": "Republic",
 "website": "https://republic.com/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/for2i2.png",
 "issuer_id": "6a436076282e7240b76c8bf9",
 "num_tokens": 2
}

joined row

{
 "issuer_id": "6a436076282e7240b76c8bf9",
 "issuer_name": "Republic",
 "declared": 2,
 "attached": 1,
 "tracked": 1,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 72085197.07,
 "shelf_rate": 0.0
}
0%211$72M
Bitget Assets

/v5/real-world-assets/issuers/list row

{
 "name": "Bitget Assets",
 "website": "https://www.bitget.com/",
 "logo": null,
 "issuer_id": "68a80be20135f56ec3188cdc",
 "num_tokens": 0
}

joined row

{
 "issuer_id": "68a80be20135f56ec3188cdc",
 "issuer_name": "Bitget Assets",
 "declared": 0,
 "attached": 0,
 "tracked": 0,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 0.0,
 "shelf_rate": null
}
000$0
Coinbase

/v5/real-world-assets/issuers/list row

{
 "name": "Coinbase",
 "website": "https://www.coinbase.com/en-sg/tokenize",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/m_UOfXvz_400x400.png",
 "issuer_id": "6a72fe7072996604d45c6733",
 "num_tokens": 0
}

joined row

{
 "issuer_id": "6a72fe7072996604d45c6733",
 "issuer_name": "Coinbase",
 "declared": 0,
 "attached": 0,
 "tracked": 0,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 0.0,
 "shelf_rate": null
}
000$0
Fidelity Investments Assets

/v5/real-world-assets/issuers/list row

{
 "name": "Fidelity Investments Assets",
 "website": "https://www.fidelity.com/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/32.png",
 "issuer_id": "68c117369d7eab1d58ebd51d",
 "num_tokens": 1
}

joined row

{
 "issuer_id": "68c117369d7eab1d58ebd51d",
 "issuer_name": "Fidelity Investments Assets",
 "declared": 1,
 "attached": 0,
 "tracked": 0,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 0.0,
 "shelf_rate": null
}
100$0
Swarm Assets

/v5/real-world-assets/issuers/list row

{
 "name": "Swarm Assets",
 "website": "https://swarm.com/",
 "logo": "https://s2.coinmarketcap.com/static/img/issuer/11821.png",
 "issuer_id": "688ca641abae9b5b9fb31815",
 "num_tokens": 0
}

joined row

{
 "issuer_id": "688ca641abae9b5b9fb31815",
 "issuer_name": "Swarm Assets",
 "declared": 0,
 "attached": 0,
 "tracked": 0,
 "untracked": 0,
 "inactive": 0,
 "unresolved": 0,
 "live_market_cap_usd": 0.0,
 "shelf_rate": null
}
000$0
49%stock — 606 of 1,244 wrappers on the shelf437 of 689 stock underlyings with no tracked wrapper (63%)
38%etf — 67 of 177 wrappers on the shelf39 of 98 etf underlyings with no tracked wrapper (40%)
0%commodity — 0 of 14 wrappers on the shelf0 of 4 commodity underlyings with no tracked wrapper (0%)

Stocks alone: 437 of 689 underlyings (63%) have no wrapper with a CMC-tracked market. 603 of the 673 shelf wrappers sit on X Layer — Arbitrum 27, Solana 18, Ethereum 16, Robinhood Chain 8. A 100 % shelf rate is printed in red because it is the one an allocator most needs to see; it is still a listing state, not a verdict on the issuer.

The census

7,811 underlyings, 1,435 wrappers, one join, 5 credits.

Every underlying in the RWA map, the full wrapper roster of the 791 flagged has_tokens: true — null-price rows included — and each wrapper joined on crypto_id to its row on the cryptocurrency map across active, inactive, untracked. Live 2026-09-18, 54 calls, 40.9 s.

791underlyings flagged has_tokens: true
476of them with no wrapper with a CMC-tracked market
673of 1,435 wrappers on the shelf — 47 %
4ids on no public CMC surface — shown, never counted
0exceptions to price == null ⇔ untracked, 1,431 resolved wrappers

The rule is the conservative one: an underlying counts only when every attached wrapper is untracked; the loose rule ("no active wrapper") gives the same 476 today and is never the rule behind the headline. What trades is young — median 80 d since first_historical_data (p10 24 · p90 380 · n=757) — and the shelf is younger still: median 38 d since date_added (p10 38 · p90 100 · n=673), a listing day, not a market day.

The receipt

Every number on this page came from a call you can replay.

The census's 54 calls — URL, HTTP status, credit_count, bytes, sha256, UTC — are in live_run.json (opens in a new tab); the ticker answer's are in ms.json (opens in a new tab). The grid below follows the answer: type a ticker and it updates.

endpoint
/public-api/v1/cryptocurrency/map · /public-api/v2/cryptocurrency/info
calls
2 · HTTP 200 · 2 keyless
credits used
0 — none — the state leg is CoinMarketCap's keyless /public-api surface; the roster from the committed snapshot of 2026-09-18
captured
2026-09-18T22:43:39Z · 1.25 s across the calls
first call sha256
d7e1ecdef293e6c8
first request
re-derive
every call behind this answer · 2 · call · http · key · credits · ms · sha256 · utc
callhttpkeycreditsmssha256utc
cmc/map symbol=wMSx200keyless0 to any key491d7e1ecdef293e6c82026-09-18T22:43:39Z
cmc/info batch 1 (1 ids)200keyless0 to any key7621559b2c185ccabe82026-09-18T22:43:39Z
every call of the census · 54 · call · http · key · credit_count · bytes · sha256 · utc
#callhttpkeycredit_countbytessha256utc
1key/info200keyed0494ff8e91d04a06e7c22026-09-18T22:15:36Z
2rwa/map start=1200keyed058,873ea6b30df3278bd8b2026-09-18T22:15:37Z
3rwa/map start=251200keyed061,602e2ac73580932293c2026-09-18T22:15:37Z
4rwa/map start=501200keyed061,084242d2df8a8e18b502026-09-18T22:15:37Z
5rwa/map start=751200keyed060,2321d329f32aa9319832026-09-18T22:15:38Z
6rwa/map start=1001200keyed058,2761370ac72c88890dd2026-09-18T22:15:38Z
7rwa/map start=1251200keyed058,2899a22cb87fbf907782026-09-18T22:15:38Z
8rwa/map start=1501200keyed057,770bffb4b938bf830832026-09-18T22:15:39Z
9rwa/map start=1751200keyed058,1678c1390e65e7eecac2026-09-18T22:15:40Z
10rwa/map start=2001200keyed062,204298db3230caf93db2026-09-18T22:15:40Z
11rwa/map start=2251200keyed063,653eff09bf3747091812026-09-18T22:15:40Z
12rwa/map start=2501200keyed063,718d3704bde2e0b40ac2026-09-18T22:15:40Z
13rwa/map start=2751200keyed063,73324a35966b02460d92026-09-18T22:15:41Z
14rwa/map start=3001200keyed063,235ea63c464f641b4ca2026-09-18T22:15:41Z
15rwa/map start=3251200keyed063,65386861d76fdf0666c2026-09-18T22:15:41Z
16rwa/map start=3501200keyed063,557a95f02567a42c3222026-09-18T22:15:42Z
17rwa/map start=3751200keyed063,519773cd0747a9f061c2026-09-18T22:15:42Z
18rwa/map start=4001200keyed063,4318c03da9abed0dbb92026-09-18T22:15:42Z
19rwa/map start=4251200keyed067,7309e4bf4f0452bd75e2026-09-18T22:15:42Z
20rwa/map start=4501200keyed068,039fb299071ad38cef42026-09-18T22:15:43Z
21rwa/map start=4751200keyed067,215cbdf6867e28f4def2026-09-18T22:15:43Z
22rwa/map start=5001200keyed069,907a184aad800f87a2e2026-09-18T22:15:43Z
23rwa/map start=5251200keyed073,318c7ba35d0dff10f672026-09-18T22:15:44Z
24rwa/map start=5501200keyed072,28084d6c5993e9c80ee2026-09-18T22:15:44Z
25rwa/map start=5751200keyed069,339705f96d425cacfb42026-09-18T22:15:44Z
26rwa/map start=6001200keyed063,308d45f956d1cd6f49e2026-09-18T22:15:44Z
27rwa/map start=6251200keyed069,7049089eeb89ba4b3542026-09-18T22:15:45Z
28rwa/map start=6501200keyed066,082abcef8575f91a4eb2026-09-18T22:15:45Z
29rwa/map start=6751200keyed067,4069278c208953cc36d2026-09-18T22:15:45Z
30rwa/map start=7001200keyed072,2073ba530e9fe787e152026-09-18T22:15:45Z
31rwa/map start=7251200keyed073,054d1d6b3f6c00dd4442026-09-18T22:15:46Z
32rwa/map start=7501200keyed072,611673c55e6de73cae22026-09-18T22:15:46Z
33rwa/map start=7751200keyed018,150355ab2435b3d4e6c2026-09-18T22:15:47Z
34rwa/quotes batch 1 (200 ids)200keyed1287,907400d85ed20bf2d202026-09-18T22:15:47Z
35rwa/quotes batch 2 (200 ids)200keyed1185,927dd7861e6c00965b52026-09-18T22:15:48Z
36rwa/quotes batch 3 (200 ids)200keyed1170,73521d53742a721d1562026-09-18T22:15:48Z
37rwa/quotes batch 4 (191 ids)200keyed1178,865f0729c077531d12f2026-09-18T22:15:48Z
38rwa/issuers/list200keyed14,321a39a35f4301375f52026-09-18T22:15:49Z
39cmc/map start=1200keyless0 to any key882,61588aa8cae657494902026-09-18T22:15:49Z
40cmc/map start=5001200keyless0 to any key1,144,8475c4d0d28ef3eff3c2026-09-18T22:16:06Z
41cmc/map start=10001200keyless0 to any key1,235,492d63e2f26f5a014192026-09-18T22:16:08Z
42cmc/map start=15001200keyless0 to any key1,205,945263ecf818f31a6a72026-09-18T22:16:10Z
43cmc/map start=20001200keyless0 to any key1,214,2438d4875d6aabcbeec2026-09-18T22:16:12Z
44cmc/map start=25001200keyless0 to any key1,292,2315cc675d253d7e1f72026-09-18T22:16:13Z
45cmc/map start=30001200keyless0 to any key1,369,3663ad7704121b014ca2026-09-18T22:16:14Z
46cmc/map start=35001200keyless0 to any key1,151,2881d07ff0fc0d6e00f2026-09-18T22:16:14Z
47cmc/map symbol=VVV200keyless0 to any key996bca7d761d3025adb2026-09-18T22:16:15Z
48cmc/info batch 1 (200 ids)400keyless0 to any key174e541f37029dbf1032026-09-18T22:16:15Z
49cmc/info batch 1 (197 ids)200keyless0 to any key169,8029b328e074316828d2026-09-18T22:16:16Z
50cmc/info batch 2 (200 ids)200keyless0 to any key157,395be2b46ff6606a4bd2026-09-18T22:16:16Z
51cmc/info batch 3 (200 ids)400keyless0 to any key1627dd8467eb3688a952026-09-18T22:16:16Z
52cmc/info batch 3 (199 ids)200keyless0 to any key156,46737f18d28ba2263ac2026-09-18T22:16:16Z
53cmc/info batch 4 (77 ids)200keyless0 to any key95,40495031f98a23bb6712026-09-18T22:16:17Z
54key/info200keyed0494e693f1d0c7dd72bf2026-09-18T22:16:17Z

39 keyed calls = 5 credits, read off /v1/key/info before and after: 12020 → 12025 credits used this month. 15 keyless calls, charged to no key. Re-derive both headline numbers by hand:

jq '[.wrappers[] | select(.status=="untracked")] | length' data/census.json   # wrappers on the shelf -> untracked
jq '.wrappers | group_by(.rwa_id) | map(select(all(.[]; .status=="untracked"))) | length' data/census.json   # underlyings with zero tracked wrapper -> underlyings_zero_tracked
The API

6 endpoints. Two of them are the whole join.

The wrapper roster with its null-price rows exists in one place: tokens[] on /v5/real-world-assets/quotes/latest. The listing state that explains the nulls exists in one place: status on /v1/cryptocurrency/map. Delete CoinMarketCap and both ledgers vanish — no single endpoint says a wrapper has no market; only the join does.

endpointused forkeycalls behind this page
/v5/real-world-assets/mapthe universe — every underlying, has_tokens, rwa_rank, asset_typekeyed · 0 credits32
/v5/real-world-assets/quotes/latesttokens[] — the wrapper roster including the price: null rows the RWA pages hide; issuer_id and crypto_id per wrapperkeyed · 1 credit / 250 assets4
/v5/real-world-assets/issuers/listthe issuer registry with its declared num_tokenskeyed · 1 credit1
/public-api/v1/cryptocurrency/maplisting state per wrapper across active, inactive, untracked; platform and address — the join's other halfnone10
/public-api/v2/cryptocurrency/infodate_added — the day a shelf wrapper was listed; state for the dotted symbols the map filter rejectsnone7
/v1/key/infothe credit ledger before and after a census, so the receipt's credit count is CoinMarketCap's, not ourskeyed · 0 credits2
/v5/real-world-assets/market-pairs/listnot used — documented as Basic, answered 403 error 1006 on the Startup plan; tried, recorded in FEEDBACK.md §3, not built onplan-gated0 — refused
finding 1 · the symbol filter
38 wrappers

The map's symbol= filter rejects symbols CoinMarketCap itself assigns — NVDA.D, AI.FRx — with HTTP 400 for the whole call, and the map has no id= filter to fall back to. Those rows take their live state from /v2/cryptocurrency/info?id=, whose vocabulary is coarser; each row names both sources.

finding 2 · the anonymous tier
p50 552 ms · 1 of 10

10 tickers keyless in a tight loop: 9 answered in about half a second, the other got 429 error 1011 after ~20 calls in 15 s, no Retry-After. A shared egress IP is refused outright (error 1022). The proxy repeats a refused call keyed and labels the row; the CLI backs off and exits 75.

finding 3 · ids on no surface
4 of 1,435

tokens[] carries ids the map and the info endpoint both deny exist (39318 SILVER, 39002 HOOD, 39839 QQQ, 42326 APLD — null symbols). Counting them as shelf would inflate the headline; they sit in their own bucket and are counted nowhere, and the property test holds that rule over 500 generated ledgers.

12 dated, evidenced findings for the CoinMarketCap team — and what is worth protecting — in FEEDBACK.md (opens in a new tab). Every endpoint the client calls is named above; tests/test_render_site.py holds this page to every one of them, and the one that was tried and refused is listed rather than hidden.

Run it before you score it

No key. No install. About half a second.

The judged capability is a stdlib-only module against the keyless surface: python3 -m shelfware MS prints every wrapper, its issuer, chain and listing state, then the receipt line. The transcript is the command's own output, rendered from the receipt that run wrote — docs/proof/ms.json, 2026-09-18 22:43:39 UTC. Your timings will differ.

shelfware — keyless
$ git clone https://github.com/edycutjong/shelfware.git && cd shelfware
$ python3 -m shelfware MS
shelfware MS — does it have a wrapper that trades, and whose?

  MS  Morgan Stanley · stock · rwa_rank 43 · has_tokens: true
      roster: snapshot 2026-09-18T22:16:17Z (the RWA endpoints need a key; export CMC_API_KEY to go live)
      ▒ wMSx  Wrapped Morgan Stanley Tokenized Stock (xStock)
          issuer   Backed Assets  6878977dcbbf471de3366e85
          chain    X Layer  0x2874A11805783324C54562eDB1A641C5d1d077a5
          price    null · market_cap null · volume_24h null
          status   UNTRACKED      ← /public-api/v1/cryptocurrency/map, live, keyless, 0 credits
                   "listed, no CMC-tracked market" — CMC: registered cryptocurrency projects that are listed but do not yet meet methodology requirements to have tracked markets
                   listed 2026-08-11 (date_added) · 38 days on the shelf

  0 of 1 wrapper(s) with a CMC-tracked market

receipt: cmc/map symbol=wMSx → HTTP 200 · keyless · 0 credits to any key · 491 ms · sha256 d7e1ecdef293e6c8  |  cmc/info batch 1 (1 ids) → HTTP 200 · keyless · 0 credits to any key · 762 ms · sha256 1559b2c185ccabe8
2026-09-18 22:16 UTC
476
of 791 underlyings with no tracked wrapper · 673 of 1,435 wrappers on the shelf · 5 credits · 40.9 s · 2026-09-18.json (opens in a new tab)
2026-09-19 01:15 UTC
476
of 791 underlyings with no tracked wrapper · 673 of 1,435 wrappers on the shelf · 5 credits · 22.6 s · since the day before: +0 tracked · +0 shelved · +0 new · 0 gone · 2026-09-19.json (opens in a new tab)

2 daily snapshots so far, taken by scripts/snapshot.py; the delta between the two latest days is a real zero, printed as one. Also in the repository: 121 tests (104 offline, 11 for the proxy functions, 6 live), a property test over 500 generated ledgers with 0 violations of the counting rules, and a join that recounts the 1,435 committed wrappers in 1.94 ms (p95 2.22 ms, n=200). The whole keyless question, MS to receipt: p50 552 ms, p95 603 ms (n=9, bench.json (opens in a new tab)).

Questions a judge will ask

Honest limits.

Is this page live?

The census and the MS answer are committed runs — 2026-09-18 22:16:17 UTC and 2026-09-18 22:43:39 UTC — and say so on every number. The ticker box is live through two proxy functions: the roster leg keyed on the site's key (or the committed snapshot, labelled), the state leg keyless. The proxy shares one IP against a per-IP anonymous limit, so a 429 is shown as a 429 with the command to run instead; the CLI is the primary live path, and every reader has their own quota there.

What does "untracked" mean?

It is CoinMarketCap's listing state, quoted from its map documentation: "registered cryptocurrency projects that are listed but do not yet meet methodology requirements to have tracked markets". On this page it reads listed, no CMC-tracked market. It does not mean never traded: Dinari dShares trade on Dinari's own venue, and some wrappers may sit in pools CMC does not index. The number is about CoinMarketCap's coverage of what CoinMarketCap calls tokenised — which is why it can be re-derived. The spike that settled the wording: spike.json (opens in a new tab).

Why MS?

A rule, not a pick: the most prominent tokenised underlying on CoinMarketCap (lowest rwa_rank) whose every wrapper is untracked — MS, rank 43, the only all-shelf underlying inside CMC's top 50. Next in line: APH (80), GILD (83), WELL (94), UNP (95). If tomorrow's census promotes its wrapper to active, the rule moves on and the delta panel shows the flip — a shelf wrapper coming alive is the strongest proof the census is live.

Which rows are not counted?

4 wrapper ids resolve on no public CMC surface (39318 SILVER, 39002 HOOD, 39839 QQQ, 42326 APLD); they are shown in their own bucket and excluded from every count. 38 wrappers carry a dotted symbol the map filter rejects; their live state comes from /v2/cryptocurrency/info and the map's finer word from the committed snapshot, and each row says which. num_tokens on the issuer registry is undocumented, so it is shown as "declared" and never substituted for attached (Backed declares 1176, 772 are attached).

How old is the series?

A daily series, not a history: 2026-09-18, 2026-09-19. Untracked map rows carry no dates of their own, so the only time axis is the snapshot series this repository records; date_added from the info endpoint is a listing day, not a market day. The roster leg needs a key (the RWA family answers keyless calls with 403 error 1005); without one it is a dated snapshot, labelled on the row, and the state leg is live regardless.

What is not built?

No price charts, no wrapper-versus-underlying spread, no portfolio, no alerts, no watchlists, no model, no chain, no wallet, no LLM. The product counts the shelf and answers a ticker beside its raw rows; that verb is the whole scope, and the rule that produces the number is printed, never widened.