Verify

Check any receipt yourself.

Every action on the log is a signed receipt with a Merkle inclusion proof. Confirm one in thirty seconds below, or verify it end to end in your own code, with no trust in us.

Live check

Paste any receipt hash (sha256:…). We fetch its inclusion proof straight from the live log. Prefilled with the most recent receipt.

The 30-second check

Paste a hash above, or open its hosted page at ledger.zanii.agency/verify/{hash}. You get the inclusion proof, the log index, and the tree head it commits to. Good for a quick confirmation.

The trust-no-one check

Pull the raw proof and verify the math yourself, offline, with the open SDK (npm i @zanii/sdk, pip install zanii) or your own code. This is the one that matters for audit. It does not need us to be online, or honest.

Verify it end to end
01

Recompute the hash

Canonicalize the receipt JSON with RFC 8785 (JCS) and SHA-256 it. Confirm it equals the receipt hash. The hash commits to the exact action, target, payload hash, timestamp, and pointer to the previous receipt.

02

Check the agent's signature

Verify the Ed25519 signature against the agent's did:key. This confirms the agent authored the action and that it fell inside the scoped delegation the owner issued.

03

Prove Merkle inclusion

Fold the inclusion proof (RFC 6962) from the leaf up to the Signed Tree Head root. This confirms the receipt is really in the log at its stated index, unaltered and unreordered.

04

Check the tree head

Verify the Signed Tree Head signature against the log's key. This confirms the root you folded up to is the log's real published history, not one made up for you.

05

Check the on-chain anchor

Confirm that root was committed to Base, a public blockchain. After the anchor, not even Zanii can rewrite history without it being detectable against an immutable external reference.

Run it yourself
# reads are public and keyless. swap in any receipt hash or agent did.

# 1. receipt + its Merkle inclusion proof + the Signed Tree Head it commits to
curl https://ledger.zanii.agency/v1/proof/sha256:<receipt-hash>

# 2. the current Signed Tree Head on its own (root, size, log signature)
curl https://ledger.zanii.agency/v1/sth

# 3. the on-chain anchors (which root landed in which Base block)
curl https://ledger.zanii.agency/v1/anchors

# 4. a whole agent as one self-contained audit bundle
curl https://ledger.zanii.agency/v1/export/did:key:<agent>

Verifying a whole agent? Export a self-contained audit bundle with GET /v1/export/{did}: every receipt, its proofs, the tree heads, anchors and revocations in one file an auditor can verify offline. That is the artifact you hand a regulator.

Built on standards
did:key · Ed25519RFC 6962 Merkle proofsRFC 8785 JCS hashingERC-8004 agent identityAnchored on BaseApache-2.0 SDK
Read the API docs →Open the explorer