docs.
tokenized equities on robinhood chain trade around the clock, but their underlying stocks only price during nyse and nasdaq hours. morrow publishes a fair value estimate per tracked stock token while the underlying market is closed, with a confidence band, and commits a merkle root of every observation on robinhood chain so each published price is later verifiable. a morrower makes arrows.
the evidence
morrow's claim is that its off-hours number predicts the next open better than the obvious baseline: the stock opens where it closed. that baseline is exactly what morrow outputs when drift is zero, so beating it is the whole job. here is the backtest, scored over historical sessions and stated plainly whichever way it falls.
methodology, short version
anchors
the anchor is the last official close per token; the next-open print feeds the accuracy stats. the indexer can maintain both automatically: a configurable delay after the 16:00 et close (13:00 on half days) it inserts the close, and a delay after the 09:30 et open it inserts the open print, skipping weekends and holidays. an automated price that jumps more than the deviation threshold from the previous anchor is rejected unless a corporate action explains it, and a missing anchor past its deadline pages the operator. when an expected close is missed, the engine keeps publishing but caps confidence and widens the band (a stale-anchor cycle), rather than going dark. the admin endpoints remain the manual override for both close and open:
POST /v1/admin/anchors (bearer ADMIN_TOKEN)
{ "symbol": "tsla", "kind": "close", "price": 250.10,
"marketTs": "2026-07-10T20:00:00Z" }verification
each cycle, every observation becomes a canonical leaf: tokenId|cycleId|fairValue|confidence|timestamp, hashed with keccak256. leaves build a sorted-pair merkle tree; the root is committed to the MorrowCommits contract. fetch a proof from /v1/proof, recompute the root yourself, and compare against getCommit(cycleId) on-chain. the explorer runs this check in your browser against the contract over rpc; the mcp tool verify_observation does the same.
spreads and alerts
the spreads board ranks tokens by the absolute spread between the onchain pool price (multiplier-adjusted and dollarized) and morrow fair value, refreshed live. a public telegram channel posts when a token's absolute spread crosses a threshold, with hysteresis and a per-token cooldown so it does not spam on oscillation. messages are data statements only, with an informational-feed, not trading advice footer. the alert bot is generation-gated by a dry-run flag until the operator wires the channel.
chainlink, and what morrow is not
chainlink is robinhood chain's official oracle and feeds stock token prices. morrow does not compete with that feed. morrow's product is the off-hours fair value blend and the verifiable commit trail, a different object. do not frame morrow as a chainlink replacement.
accuracy receipts
each week morrow scores its pre-open fair value against the actual next-open print, per token, and publishes a card with the mean absolute error, the best call, and the cycles committed on-chain. the receipts page lists them, newest first; the api serves the markdown and a rendered png. receipts are generated only, never auto-posted.
api reference
| endpoint | returns |
|---|---|
| GET /v1/tokens | tracked tokens with ids and pools |
| GET /v1/prices | latest fair value for all tokens |
| GET /v1/prices/:symbol | latest plus 24h history |
| GET /v1/prices/:symbol/history?from&to&limit&offset | paginated history |
| GET /v1/commits, /v1/commits/:cycleId | commit records with roots and tx hashes |
| GET /v1/proof/:symbol/:cycleId | merkle proof payload for independent verification |
| GET /v1/accuracy/:symbol | realized error vs actual next-open prints |
| GET /v1/spreads | onchain vs fair spread per token, sorted by divergence |
| GET /v1/receipts, /v1/receipts/:week | weekly accuracy cards; card.png for the rendered image |
| GET /health | per-subsystem status, cycle age, per-source staleness |
anonymous calls are rate limited. send an api key in x-api-key for higher limits. when x402 is enabled, price endpoints answer 402 with payment requirements for agent pay-per-query.
mcp install
the @morrow/mcp-server package gives agents read access plus independent verification. claude desktop config:
{
"mcpServers": {
"morrow": {
"command": "npx",
"args": ["-y", "@morrow/mcp-server"],
"env": {
"MORROW_API_URL": "https://your-morrow-api.example",
"MORROW_RPC_URL": "https://your-robinhood-chain-rpc.example"
}
}
}
}the fine print
informational feed. not for use in liquidations, settlement, or as sole pricing source. no warranty.