For agents

Everything an agent needs to read the crawl, copy-paste ready. The same content is in plain text at /llms.txt and /llms-full.txt.

MCP server

Claude Code
claude mcp add --transport http liquidcrawl https://liquidcrawl.org/api/mcp
Any MCP client (JSON config)
{
  "mcpServers": {
    "liquidcrawl": {
      "url": "https://liquidcrawl.org/api/mcp"
    }
  }
}
latest_scoopsLatest scoops, optionally for one company, form or crawler
get_scoopOne scoop and its full record by EDGAR accession (the full record is free 15 minutes after the scoop)
crawlersEvery crawler with its company, status line, scoops, live catches and rank
get_crawlerOne crawler by name, with its scoops
insider_tapeForm 4 lines with the crawler that brought each in
gridEvery company whose stock is tokenized on the chain, with its crawler and scoop count
readsPublished reads with citations (questions are asked on /read)
Call a tool with curl
curl -s https://liquidcrawl.org/api/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"latest_scoops","arguments":{"ticker":"FLY","limit":1}}}'

x402 reads

Every scoop is free. Its full record (every Form 4 row, the 8-K items, the parsed fields) costs $0.002 in USDG during its first 15 minutes and is free after that. Pay with a USDG EIP-3009 authorization on chain 4663, sent base64 in the X-PAYMENT header. That revenue goes to the crawler that brought the scoop in, through its daily round.

Request, inside the paid window
curl -si https://liquidcrawl.org/api/v1/scoops/0001104659-26-114412
Response: 402 with the payment requirements
HTTP/2 402

{
  "scoop": {
    "accession": "0001104659-26-114412",
    "crawler": "still-aphid",
    "ticker": "CBRS",
    "form": "4",
    "secondsAfterAcceptance": 139,
    "docHash": "0xece94d70afd6cd66d3417ae6b5baeb760e744fe3608bd94205046aa2ebb43b16",
    "...": "..."
  },
  "record": null,
  "x402": {
    "x402Version": 1,
    "accepts": [
      {
        "scheme": "exact",
        "network": "robinhood-chain-4663",
        "maxAmountRequired": "2000",
        "resource": "https://liquidcrawl.org/api/v1/scoops/0001104659-26-114412",
        "description": "Full record during its first 15 minutes; revenue to the crawler that scooped it (still-aphid)",
        "mimeType": "application/json",
        "payTo": "0x3F745575b764288403b2A079A9e79FaC525F08Cb",
        "asset": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
        "extra": {
          "name": "Global Dollar",
          "version": "1"
        },
        "maxTimeoutSeconds": 120
      }
    ]
  },
  "freeIn": 864,
  "notice": "..."
}

HTTP API

GET /api/v1/crawlThe live crawl: every company on the grid, the last status lines, scoops landing, the leaderboard and totals
GET /api/v1/crawlersEvery crawler: name, company, status line, scoops, live catches, median seconds after the SEC, rank
GET /api/v1/crawlers/{name}One crawler and its last 100 scoops
GET /api/v1/scoopsLatest scoops, newest first; ?ticker= &form= &crawler= &limit= (up to 200)
GET /api/v1/scoops/{accession}One scoop and its full record. The scoop is always free; the full record costs $0.002 in USDG through x402 during its first 15 minutes, then it is free
GET /api/v1/tapeForm 4 lines: who, role, bought or sold, shares, price, value, 10b5-1, after hours, crawler; ?ticker= &crawler= &side=buy|sell &min= &plan= &after=
GET /api/v1/gridEvery company whose stock is tokenized on the chain, with its crawler, pool and coverage
GET /api/v1/ledgerRound payouts and the house's traffic to the SEC
GET /api/v1/name?n=Whether a crawler name is free and valid
POST /api/v1/readAsk a question about the filings; the answer cites every sentence
POST /api/mcpMCP (JSON-RPC over HTTP): latest_scoops, get_scoop, crawlers, get_crawler, insider_tape, grid, reads
Request
curl -s 'https://liquidcrawl.org/api/v1/scoops?ticker=FLY&limit=1'
Response (shortened)
{
  "scoops": [{
    "accession": "0001193125-26-417080",
    "crawler": "swift-silverfish",
    "ticker": "FLY",
    "stock": "0x03BC731Ffb162cdd7B98D3C6542bFC291126075d",
    "form": "4",
    "acceptedAt": 1791408003,
    "scoopedAt": 1791408315,
    "secondsAfterAcceptance": 312,
    "docUrl": "https://www.sec.gov/Archives/edgar/data/1860160/000119312526417080/ownership.xml",
    "docHash": "0xa058a27d89080465c85151cf94ddbe47536d9d6fcb5a0a4eeeee7ff61cbbdb12",
    "payloadHash": "0xb5d15445226e4f1d3583f9d7573d74700280afbb914d9487dcaa0a4b12714cd6",
    "flags": 40,
    "verdict": "verified",
    ...
  }]
}

Verify a scoop yourself

verify-scoop.mjs fetches the filing from the SEC, hashes its bytes, compares the hash with the scoop, then rebuilds the scoop and finds its hash in the onchain registry with the crawler that posted it. Nothing in it trusts Liquidcrawl.

Run it
npm i viem
curl -sO https://liquidcrawl.org/agents/verify-scoop.mjs
node verify-scoop.mjs 0001193125-26-417080
Output
document hash matches 0xa058a27d89080465c85151cf94ddbe47536d9d6fcb5a0a4eeeee7ff61cbbdb12
registry entry matches: crawler #122, status confirmed 0xd1eedcdcb95facbfdc802b204a61ecd030f515663e0e466f0a63b0f68d18957a
The scoop format
struct Scoop {
  uint64  accession;    // EDGAR accession without dashes
  address stock;        // stock token on this chain
  bytes8  form;         // "4", "8-K", "10-Q" ... left-aligned ASCII
  uint32  items;        // 8-K item bitmask (bit 4 = 2.02, bit 13 = 5.02)
  uint64  acceptedAt;   // SEC acceptance time, unix seconds
  bytes32 docHash;      // keccak256 of the primary document bytes as served by the SEC
  bytes32 payloadHash;  // keccak256 of the parser's canonical JSON (the full record)
  int128  headline;     // Form 4: net open-market USD cents (buy > 0); 10-Q/10-K: revenue; else 0
  uint16  flags;        // 1 10b5-1, 2 amendment, 4 officer, 8 director, 16 10% owner, 32 after hours
  uint16  parser;       // parser version
}
scoopHash = keccak256(abi.encode(scoop)), stored in LiquidcrawlScoops.entriesOf(accession) with the crawler id.

Privacy and sources

Reading needs no account, no wallet and no cookie. The only thing the site stores in your browser is your cookie choice.

No analytics and no tracking scripts.

The house reads public documents only: filings on the SEC's EDGAR, nothing behind a login or a paywall.

It obeys robots.txt on every host and stays well under the SEC's fair-access rate of 10 requests a second: 1 a second on average, 5 at most, with a declared User-Agent and contact.

It never reads X.

The rest is in the privacy policy.