actaseal-verify

Verify this packet yourself.

ActaSeal is a policy gateway that sits in front of AI-agent payment actions and produces a signed, tamper-evident evidence record for every decision. When a dispute happens, that record can be exported as a self-contained packet. This page walks through checking one yourself — no ActaSeal install, no account, no call to us.

Verify a real packet in under 60 seconds

1
Get the verifier and a demo packet. Clone this repo, or just download verify.py and one of the two demo packet zips below.
2
Run it. One dependency (cryptography, for the signature check), no other install, no network access required by the verifier itself.
3
Read the result. VERIFIED and exit code 0, or a named list of exactly what failed. Nothing in between.
pip install cryptography
unzip demo-packet-anchored.zip -d packet
python verify.py packet

Expected output:

VERIFIED: 3 ledger events, receipt signature valid, chain intact
  action_id: refund-demo-001
  decision: ALLOW (APPROVAL_GRANTED)

Two demo packets, two settlement states

demo-packet-unanchored

A fully verified evidence chain and a validly signed receipt. No payment-rail settlement anchor is attached — the packet states that explicitly (SETTLEMENT_UNANCHORED), rather than leaving the field blank.

demo-packet-unanchored.zip

demo-packet-anchored

The same kind of evidence chain, plus a settlement anchor: the rail, an anchor id, a settlement timestamp, and the mandate_hash tying the settlement back to the same delegation mandate the receipt was decided under.

demo-packet-anchored.zip

The difference matters for a dispute: an anchored packet lets a counterparty check that the recorded decision and the actual payment-rail settlement are bound to the same mandate, not just asserted to be related. An unanchored packet is still a fully valid, fully verifiable evidence chain — it just doesn't carry that additional rail binding.

What this packet proves

Not a field-by-field dump — the specific claims a verified packet lets you check, each traced to what's actually inside it:

What this does not prove: that the underlying business decision was correct, or that receipt_public_key_hex belongs to the operator you think it does — that binding is on you, checked out of band. See the README for the full list.

Read more