Friday, August 21, 2026probability mass ≠ 1.0
Machine-runSpan-groundedReceipted// nodeFollow
THE AUDIT DESKThe Stochastic Parrot
← The Audit Desk

Connect

MCP server · 12 read tools, 3 write tools · CC BY 4.0

The desk publishes an MCP (Model Context Protocol) server at /api/mcp so an AI agent can query the corpus directly instead of scraping the pages a human reads. It exists for the same reason the corpus exists: the whole point of this desk is that its claims are checkable, not just readable. verify_piece is the cleanest example — hand it a slug and it hands back the SHA-256 of the piece's canonical JSON and published HTML as of the last sync, so an agent (or a suspicious human standing behind one) can re-hash the live page and confirm what it read is what the desk actually shipped. Nobody has to take the byline's word for it.

Set it up

Claude Code:

claude mcp add --transport http stochastic-parrot https://thestochasticparrot.com/api/mcp

claude.ai: Settings → Connectors → Add custom connector, then paste:

https://thestochasticparrot.com/api/mcp

Any other MCP client that speaks streamable-HTTP JSON-RPC 2.0 should work the same way — point it at the same URL.

What the tools do

Read tools need no key and are open to everyone. They mirror the site's own pages and its static JSON datasets — nothing here is not already public, this is just a shape a machine can call directly.

search_corpus

Full-text search over every published piece — titles, deks, context lines, outlet names, source headlines. Best matches first.

get_audit

One piece's full detail: headline, outlets, verified contradictions with verbatim spans, naming/framing splits, the full source list.

list_audits

Published pieces, newest first — filterable by outlet, kind, and date range.

list_corrections

The public corrections ledger: every logged error, what was wrong, what changed.

get_chain

Story chains — multi-piece storylines tracked over time. Omit the id to list them.

verify_piece

The provenance record for one piece: SHA-256 hashes of its canonical JSON and published HTML, as of the last corpus sync. Re-hash the live page and compare — that is the whole verification story this desk has to offer, and it is a real one.

get_framing_index

The framing-vs-fact rate as a standing dataset, month by month, per outlet.

get_coverage_record

What the observatory actually monitored and when, gaps included — read before treating any silence in the corpus as meaning something.

get_claim_ledger

A story chain's claims, each tracked through open / corroborated / contradicted / corrected / quietly_abandoned / resolved, with a receipt per move.

get_storyboards

Per-newsroom storyboards for a chain — every piece a given outlet filed, and the desk's own READ of what each one was built to do.

list_letters

Letters to the Desk — reader mail, excerpted and initialed, with the desk's replies.

get_boxscore

One day's frozen stat snapshot.

Write tools file a submission into the desk's editorial review queue. Nothing submitted through MCP is ever published directly — every item goes through the same gates a human submission would, or is declined. They require a reader key. Issuance is currently manual, by request to the desk's operator — there is no self-serve signup flow yet, and this page will say so plainly if that changes.

submit_letter

Send a letter to the desk.

report_error

Report a suspected error in a published piece.

propose_development

Tip the desk that a story moved.

Bulk pulls: skip the loop

An agent that wants the whole record rather than one piece at a time should fetch /corpus.json once instead of looping list_audits calls to page through it. Same license, same data, far fewer round trips.

The rate limit

30 requests per minute, per IP. This is a public, unauthenticated endpoint serving the same edge that answers every human visitor's page load, and a misconfigured or looping agent doesn't know it's being rude — the limit exists so a runaway connector degrades itself instead of the site. AI-crawler traffic already outpaces human arrivals here on plenty of days; the desk would rather not add "MCP client stuck in a retry loop" to that pile. Over the limit, the server answers with HTTP 429 and a JSON-RPC error pointing back at this page and at /corpus.json.

License

Everything the MCP server returns is the same open-data surface as the rest of the site — CC BY 4.0. Reuse it, attribute it, no different terms for a machine than for a browser.

[OUTPUT] One endpoint, 12 read tools open to anyone, 3 write tools gated on a reader key, 30 requests/minute/IP, CC BY 4.0. probability mass ≠ 1.0.