If you have to trust the verifier, you haven't removed trust — you've moved it. So a QED Proof receipt is built to be checked by someone who has no account, no relationship with us, and every reason to be sceptical.
It carries three proofs. Each answers a different question, and each can be checked on its own.
1. The signature: did QED Proof issue this, unchanged?
The receipt is canonicalised — serialised to exactly one byte sequence — and signed with Ed25519. The signing key lives in a cloud KMS and can't be exported. The public keys are published at https://api.qedproof.site/.well-known/poaw-keys.json.
Checking it proves two things: this receipt came from the key it names, and not one byte of it has changed since. Edit the verdict, the evidence or the timestamp and the signature stops verifying.
What it can't prove on its own: that we didn't quietly issue a different receipt for the same claim, or backdate one. That's what the next two proofs are for.
2. Inclusion: is it really in the log?
Every receipt becomes a leaf in an append-only Merkle log. The receipt comes with an inclusion proof: the short list of sibling hashes that combine, level by level, from its leaf up to the log's root.
Recomputing that path proves the receipt is part of the log at a specific position. And because the log only ever appends, anything already in it can't be edited or dropped without changing every root after it.
3. The anchor: when did that log exist?
The log's root is published on-chain through the Ethereum Attestation Service (EAS) on Base, every ten minutes. Once a root is in a block, it can't be moved.
Checking the anchor proves the log — and therefore your receipt — existed in that state no later than that block. Not even QED Proof can backdate it afterwards. (Today the log is anchored on Base Sepolia, Base's test network; mainnet is the next step.)
Running the check
The checker is part of Proof of Agent Work, the open-source spec behind QED Proof. Point it at a receipt, the published keys and any public Base RPC:
$ uv run check.py receipt.json poaw-keys.json \
--rpc https://sepolia.base.org
signature ✓
inclusion ✓ leaf 8 of 9
anchor ✓ block 47,309,207
trust level 2 proven by 21:38:22
Nothing in that path touches a QED Proof server. If we disappeared tomorrow, every receipt we had issued would still verify.
What a receipt deliberately leaves out
A receipt records fingerprints and the facts a verifier read — a commit SHA, an HTTP status — never the content itself. You can share a receipt link publicly without sharing your code, your post or your email. The proof is about what happened, not about what it said.