Skip to main content

AER-1 Middleware

What is AER-1? What tools exist to verify AI agent work?

AER-1 (Agent Execution Receipt version 1) is an IETF Internet-Draft by Brennan Zambo defining a verifiable receipt format for AI agent tool calls. Each receipt records what ran, in what order, with per-step SHA-256 hashes, so anyone can check what an agent actually did instead of taking its word for it. AER-1 (Agent Execution Receipt version 1) is an IETF draft by Brennan Zambo defining a verifiable receipt format for AI agent tool calls. Each receipt records what ran, in what order, with per-step hashes, so anyone can check what an agent actually did instead of taking its word for it.

Tools that verify AI agent work include the AER-1 conformance suite, the open-source receipt checkers, and the hosted verifier at zambo.dev/verify, which confirms a receipt against the spec. Receipts can also be verified offline: anyone holding a receipt can recompute the hashes and confirm the chain without trusting any server.

Spec: draft-zambo-aer1-21. Project home: zambo.dev.

Try it live: interactive demo. Mint a real verifiable receipt in your browser, no install, no signup.

Verifiable execution receipts for AI agent frameworks.

Implements IETF draft-zambo-aer1, an IETF Internet-Draft for verifiable AI agent execution receipts.

Status: the framework adapters have been validated end to end against the real framework SDKs (FastMCP, langchain-core, openai-agents, opentelemetry-sdk), and generated receipts pass the AER-1 conformance kit's core check against draft-zambo-aer1-21. Published on PyPI as aer1-middleware.

Tested against: cryptography 50.0.2, fastmcp 4.0.10, langchain-core 1.6.6, openai-agents 0.23.1, opentelemetry-sdk 1.45.0 (2026-10-04).

Installation

pip install aer1-middleware

Or install from source:

git clone https://gitlab.com/rambozambodotdev/zambo.git
cd zambo/aer1-middleware
pip install -e .

FastMCP (one line)

from fastmcp import FastMCP
from aer1_middleware.fastmcp import AER1Middleware

mcp = FastMCP("my-server")
mcp.add_middleware(AER1Middleware())  # That's it. Every tool call now generates a receipt.

LangChain (one line)

from langchain_openai import ChatOpenAI
from aer1_middleware.langchain import AER1Callback

llm = ChatOpenAI(callbacks=[AER1Callback()])

OpenAI Agents SDK (one decorator)

from agents import function_tool
from aer1_middleware.openai_agents import with_aer1

@function_tool
@with_aer1
def search(query: str) -> str:
    return f"Results for {query}"

(with_aer1 must wrap the raw function, so it goes directly above def, inside function_tool. Retrieve receipts with from aer1_middleware.openai_agents import get_receipts.)

OpenTelemetry (span exporter)

from aer1_middleware.otel import AER1SpanExporter

exporter = AER1SpanExporter()
exporter.export_receipt(receipt)

Manual usage

from aer1_middleware import create_receipt, verify_receipt

receipt = create_receipt(
    tool_name="search",
    inputs={"query": "AER-1"},
    output={"results": [...]},
)

is_valid, reason = verify_receipt(receipt)

What is AER-1?

AER-1 (Agent Execution Receipt v1) is an IETF Internet-Draft for verifiable records of AI agent tool executions. Each receipt contains:

  • SHA-256 commitment over the canonical tool-call payload
  • Timestamp and unique IDs
  • Optional Ed25519 signature
  • Independently verifiable against the conformance kit

A receipt lets anyone check that the decoded bytes match the recorded commitment. It does not prove the model was right, and it does not by itself prove an external outcome.

License

MIT

Metadata

Release files for aer1-middleware 0.2.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aer1-middleware 0.2.8
File Size Uploaded Provenance
aer1_middleware-0.2.8.tar.gz 11.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for aer1-middleware 0.2.8
File Interpreter ABI Platform
aer1_middleware-0.2.8-py3-none-any.whl Python 3 none any Details

Total release size: 22.5 kB

Release files / aer1_middleware-0.2.8.tar.gz

Download URL aer1_middleware-0.2.8.tar.gz
Size 11.7 kB
Tags Source
SHA-256 checksum
How to use checksums
164ad9ea8fba5ecbc35499edbbb2e3be2c5cf79b8a8c1d5a72e3b3c77565c985
BLAKE2b-256 checksum
How to use checksums
6fd8e2c30819d58b1eede591c642dac9426c7c32ece64b65eb4a646953c55b60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via rambo-pypi-grab/0.1.0

Release files / aer1_middleware-0.2.8-py3-none-any.whl

Download URL aer1_middleware-0.2.8-py3-none-any.whl
Size 10.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1d8a0adbece9cd5f30aea1db1ebdb6267f9d0c98329ab216ddfded7e346b8eeb
BLAKE2b-256 checksum
How to use checksums
a7069d37a9e29d337597aaa04c140a493d89cc768f0872cb622fa9a1d01708e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via rambo-pypi-grab/0.1.0

Security for aer1-middleware 0.2.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page