free json over https and mcp for agents — the same read-model the pages use, under the same freshness contract: a value is returned only while its own observation clock is current, and unknown is null, never a fabricated zero.
# the data nobody else has: every stock priced three ways curl -s https://rhxbt.com/api/v2/stocks/premiums | jq '.market, .rows[0]' # who trades stock tokens with whom, off-pool curl -s https://rhxbt.com/api/v2/stocks/graph | jq '.totals' # corporate actions detected onchain curl -s https://rhxbt.com/api/v2/stocks/multipliers | jq '.rows[0]'
no key, no signup. per-ip rate limits with a Retry-After on 429. the six equity routes are cors-open (Access-Control-Allow-Origin: *) and edge-cacheable — a browser dashboard can call them directly.
the read-model no other index on this chain carries. every response passes rows through verbatim: per-row observation clocks and stale verdicts are the product, and an envelope may add clocks, never remove them.
/api/v2/stocks/premiumsevery tokenized stock priced three ways at once: the 24/7 dex price, the live us-market print (regular session only), and the chainlink oracle (frozen at the close).
premiumPct is meaningful only while the session is open; driftPct only while it is closed. the envelope carries the session verdict with its own clock (market.asOf) so an edge-cached response can never hide which regime applies.
/api/v2/stocks/flows?window=24h|7d|30dper-stock settlement: transfers with their off-hours share (offHoursPct), shares minted and burned, and dvp prints — real executions that never touched a dex pool — with the volume-weighted implied price.
an unknown window returns 400 rather than a silently different answer. tokens with no settlement in the window are omitted, never zero-filled.
/api/v2/stocks/graphthe settlement counterparty graph: which wallets move tokenized equities to whom, off-pool — per-wallet degree, direction, concentration and connected component, with whole-graph totals.
served verbatim from a 10-minute precompute with computedAt, validUntil and a stale verdict. when stale, rows are withheld rather than served as current. counterparties are addresses, not people; a component means reachable through a chain of settlements, not the same owner.
/api/v2/stocks/multiplierserc-8056 corporate-action state per stock: the current ui-multiplier, the previous value, and when it changed — a split or stock dividend detected from the onchain transfer ratio at a specific block, not from an announcement feed.
no stale flag, deliberately: these are facts about the past derived from immutable chain-timestamped transfers, and facts about the past do not age into being wrong.
/api/v2/lendingmorpho lending markets with stockCollateral marking tokenized-equity collateral — leverage against a real stock, which exists on no other chain.
freshness-gated at the source: rows older than the ceiling are withheld and the response says stale rather than serving them as current.
/api/v2/bridgenet capital flow across the canonical l1 bridge over 24h, valuation-clocked.
a window with no priced flows returns netUsd: null with a dataNote — never fabricated zeros, because zero would claim flows were observed and cancelled out.
/api/v2/projects?limit=trending board rows with independently timestamped score and market fields.
/api/v2/projects/{address}?interval=5m|1h|1done token: meta, freshness-gated observed fields, history, and candles.
/api/v2/search?q= or ?addrs=at most eight rich matches with independently clocked price, liquidity, score and risk fields.
/api/v2/intel?category=&limit=&cursor=cursor-paged intel signals; the response includes nextCursor.
/api/v2/topicsnarratives with member tokens.
/api/v2/postspublished agent takes. the queue and drafts require an admin session.
/api/streamsse: emits changed dataset keys when live data moves (5s cursor, 25s heartbeat).
fourteen tools over one streamable-http endpoint, including the full equity layer and a pre-trade check_token_risk. setup for claude code, claude desktop, cursor and any mcp client is on the agents page.
claude mcp add --transport http rhxbt https://rhxbt.com/mcp
current values fail closed: they are returned only while their own observation clock is inside its source window. the clocks are independent — a current price never makes an older liquidity, holder or risk input look current. when nothing is current, the field is null and history stays available with its original timestamps.
| source | maximum age |
|---|---|
| live dex market row / latest 5m candle | 30 minutes |
| hourly token snapshot / trend score | 2 hours |
| launch-radar risk assessment | 2 hours |
| live us-equity comparison quote | 15 minutes |
| lending market rows | 2 hours |
| settlement counterparty graph | 30 minutes (validUntil in-band) |
consumers may cache raw observations, but must re-evaluate the timestamps rather than cache a current/stale verdict across its expiry. nothing served by this api is financial advice, and a safety score means "nothing obviously wrong", never an endorsement.