Install
npm install aer-1
The package is the AER-1 reference kit for JavaScript and TypeScript: it mints receipts in your own agent code and verifies any AER-1 receipt locally, with no network call and no trust in any server. Current npm release: aer-1 0.1.23, written against draft-zambo-aer1-26.
The three-line check
import { verifyReceipt } from "aer-1";
const failures = verifyReceipt(receipt);
console.log(failures.length === 0 ? "receipt checks out" : failures);
verifyReceipt returns a list of failures. An empty list means the receipt is intact: the sha-256 digest recomputed from the saved bytes matches the digest committed in the receipt, so the recorded result was not changed after it was saved. Any edit to the saved result, however small, makes the recompute miss and the failure list names what broke.
Check a whole job, not just one call
A finished job is a chain of calls, and the kit verifies the chain as one record:
import { verifyWorkflow } from "aer-1";
const verdict = verifyWorkflow(workflowRecord);
A workflow close binds its step receipts under one Merkle root. verifyWorkflow recomputes that root from the step receipts under the close's declared merkle rule (draft-zambo-aer1-26, Section 8.1), so a step added, dropped, or edited after the close fails the check.
Try it on a live receipt
This is a real receipt from a live Zambo call, a BTC price check run on 2026-10-24: https://zambo.dev/run/26b353a9-8e34-4820-a351-9a65208e11c1. Open it, read the saved result and its digest, then run the three-line check against it, or paste the receipt ID into the public verifier at zambo.dev/verify. The same record, checked three independent ways, gives the same answer.
What a receipt is, in one sentence: an agent receipt is a record of one ai agent tool call that anyone can check: it keeps the exact saved bytes and their sha-256 digest, and it proves the result was not changed since it was saved, not that it was right.
What a pass means, and what it does not
A pass means the record you are holding is the record that was saved when the call ran. It does not mean the agent's answer was right: a receipt proves the saved result was not changed, not that the result was correct. That boundary is the point of the format. A checker that claimed more would be asking you to trust it, and this one asks you to trust arithmetic instead.
Get receipts on your own agent work
Checking receipts is the second half. The first half is making sure your agents' calls leave one: when a client or a teammate disputes what an agent did, the argument ends where a checkable record begins. Add Zambo and every call your agents run through the endpoint comes back with a verifiable AER-1 receipt at a public link, starting with 20 free calls per day.
Frequently asked questions
How do I verify an AER-1 receipt with npm?
Install the kit with npm install aer-1, import verifyReceipt, and pass it the receipt object. It returns a list of failures; an empty list means the receipt checks out, because the sha-256 digest recomputed from the saved bytes matches the digest committed in the receipt.
What does the AER-1 npm verifier check?
It recomputes the sha-256 digest of the receipt's saved bytes and compares it with the committed digest, and for a workflow close it recomputes the Merkle root from the step receipts under the declared merkle rule. Any change to the saved result after the call ran makes the check fail.
Does a passing check prove the agent's answer was right?
No. An agent receipt is a record of one ai agent tool call that anyone can check: it keeps the exact saved bytes and their sha-256 digest, and it proves the result was not changed since it was saved, not that it was right. The check proves the record was not changed; judging whether the work itself was right is still yours.
Is the AER-1 npm verifier free?
Yes. The aer-1 package is free to install from npm, and checking any receipt is also free in the browser at zambo.dev/verify. The verifier runs locally and never needs an account.
Where is AER-1 specified?
AER-1 is an open IETF Internet-Draft, draft-zambo-aer1, and the current revision is draft-zambo-aer1-26 on the IETF Datatracker. The public conformance corpus ships with the kit: 126 vectors and 129 checks at kit v1.5.7.
Related
- AER-1 Python verifier: aer1-verify on PyPI
- AER-1 at the IETF: draft-zambo-aer1-26 is current
- AER-1: the agent execution receipt standard
- AER-1 conformance test: run the suite
- AER-1 conformance test: independent implementations and their results, on the registry.
- Verify AI work: the verification loop