start · one receipt · four doors
The payout will not clear without a receipt.
One published receipt, four doors: this tab, your terminal, your agent, or the payout desk.
in this tab
No install. The page fetches those two files and runs the verifier your browser already downloaded with it.
Nothing has been checked in this browser yet.
Have a receipt of your own? Paste it on /verify — same verifier, same refusal to phone home.
the receipt everything below checks
receipt_idrcp_pom_synthetic_119_0001
- /example/receipt.jsonthe signed envelope, and its inclusion proof
- /example/keys.jsonthe two public test keys it should check against
- /example/proof.jsonthe proof alone, for the CLI’s --proof
Signed by a test key over synthetic material, and sealed for real into day 2, whose package this site publishes. No production key has signed an inference receipt yet — the gateway that will issue them is still in build.
in your terminal
Offline by default, and the keyset is yours to supply — a verifier that fetched its own trust would just be asking you to trust the fetch.
Fetch the two files.
curl -sO https://pcrzero.com/example/receipt.json \ -sO https://pcrzero.com/example/keys.jsonRun the check.
npx --package pcrzero pcr0 verify --receipt receipt.json --keys keys.jsonwhat that printed on a real run
{ "valid": true, "conformance": "full", "receipt_id": "rcp_pom_synthetic_119_0001", "inclusion": "not-requested", "trust_base": { "keyset": "caller-supplied" } }Exit code 0 for a valid receipt, 2 for an invalid one, 1 for an error — so this drops into CI without parsing anything.
And the sealed half, still with no network
Add the day’s published package and the anchor document as local files, and the same command also recomputes the receipt’s ledger leaf and walks it to the sealed root.
npx --package pcrzero pcr0 verify --receipt receipt.json --keys keys.json \
--proof proof.json --checkpoint 2.json --anchors anchors.jsonwhat that printed on a real run
{
"valid": true,
"inclusion": "ok",
"trust_base": { "anchors": "caller-supplied", "checkpoint": "caller-supplied" }
}The two extra files are the seal package and the anchor document, both already public.
npx --package pcrzero, not npx pcr0: the package is pcrzero and pcr0 is the command it installs. npm i -g pcrzero if you would rather have it on your path.
in your agent
An MCP server, so an agent can check a receipt mid-task without you writing any glue.
Add the server to your MCP configuration.
{ "mcpServers": { "pcrzero": { "command": "npx", "args": ["-y", "@scytalex-llc/pcrzero-mcp"] } } }Ask for
verify_receipt, and hand it the envelope from the file above.Same verdict, same reasons as the other two doors. Free, and it needs no key — pass a keyset with the receipt and it uses no network at all. Only
issue_receipt, which mints receipts, is metered.
The server, its tools and its threat model are written out on the MCP page.
at the payout desk
The payout will not clear without a receipt. This is assertPayoutLock, in this tab, on the published attestation specimens /receipts already re-verifies. Missing refuses. A fail verdict refuses. Pass clears.
missing
payoutnot runfail
payoutnot runpass
payoutnot run
Nothing has been bounced in this browser yet.
A bounce, not a camera. Pass is rcp_happy_pass. Fail is rcp_happy_fail_verdict — a recorded fail that still verifies, and still does not clear. The other doors check a different envelope family (inference).
what this page witnessed
The first three doors check rcp_pom_synthetic_119_0001 against the published inference keyset. The desk runs assertPayoutLock on the published attestation specimens (rcp_happy_pass, rcp_happy_fail_verdict) — missing refuses, a fail verdict refuses, pass clears. Only the first door and the desk ran here. The terminal and agent blocks are transcripts of real runs.
Checking is arithmetic over files you can fetch yourself, so it needs no account, no key and no permission from us, permanently. Issuing is the metered half, and why that split is the product is argued at length elsewhere.