Skip to content

Example: Verify a receipt

After a successful transcode, take receipt from the response and verify integrity under a public key you trust.

Offline check (MCP)

{
  "name": "occam_verify",
  "arguments": {
    "receipt": "{ … paste receipt object … }",
    "markdown": "# … same markdown body …",
    "mode": "offline",
    "public_key": "-----BEGIN PUBLIC KEY-----\n…"
  }
}

For a receipt you produced on this same host, you may omit public_key (MCP defaults to the local key). For a receipt from another machine, export that machine's PEM first — otherwise you may get wrong_key or signature_invalid.

Trimmed success:

{
  "ok": true,
  "signatureValid": true,
  "contentHashMatch": true,
  "verdict": "verified",
  "keyId": "k1:…",
  "mode": "offline"
}

verified = signature and hash check passed under your supplied key — not proof of truth or origin.

Live drift check (re-fetch)

{
  "name": "occam_verify",
  "arguments": {
    "receipt": "{ … }",
    "mode": "live"
  }
}

Compares a bare re-fetch to signed hashes. Large drift often means the original used session profile, playbook, or budget knobs the re-fetch dropped — not necessarily that the site changed.

What a receipt proves

Proves Does not prove
The key holder asserted URL, backend, content hash, optional Merkle root together Who the key holder is
Signed bytes were not altered since signing Origin server served that content
Merkle citation = block was in the signed extract Block supports your claim

Human guide: Receipts · Spec: Receipt verification

CLI (mandatory --pubkey)

OccamMcp.Core keys export
OccamMcp.Core verify --receipt receipt.json --pubkey pubkey.pem --markdown page.md

Dataset manifest verification is CLI-only: --mode manifest.

Next