Verifiable receipts that prove what an AI agent did. Sign locally, verify anywhere, zero backend.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
A tamper-proof audit trail for AI agents. Verifiable observability: every action your agent takes gets a cryptographically signed receipt you can verify offline, anywhere β zero backend.
Observability tools (LangSmith, Langfuse, Arize) show you what your agent reportedly did β traces recorded inside their platform, on their word. But those logs are self-asserted: an agent, a bug, or an attacker can write anything into them, and you can't prove after the fact that the record wasn't edited.
ActionProof adds the missing layer: verifiable observability. Each action β email sent, form filed, payment made β gets a tamper-evident, Ed25519-signed receipt capturing what was done, by which agent, when, and on whose authority. Edit any field and verification fails. It's an audit trail you (or an auditor, a user, or a counterparty) can trust without trusting the agent, the vendor, or us.
Built for the compliance floor that's coming β the EU AI Act (Article 12) and ISO 42001 require traceable, tamper-evident logs for automated decisions. ActionProof produces exactly that, as a portable primitive rather than a walled-garden platform.
Receipts are cross-compatible: one signed in TypeScript verifies in Python, and vice-versa.
Edit any field of that receipt and verify returns invalid. That's the whole idea.
ActionProof complements your observability stack rather than replacing it. Keep using LangSmith / Langfuse / Arize for rich traces, latency, and cost β then attach an ActionProof receipt to the actions that matter (the ones that move money, change state, or touch a user's data) so that part of your trail is tamper-evident and independently verifiable.
| Observability platforms | ActionProof | |
|---|---|---|
| Recording | traces/logs inside the vendor | signed receipts you hold |
| Trust model | trust the platform's stored record | verify cryptographically, trust no one |
| Tamper-evidence | editable by whoever has DB access | any edit breaks the signature |
| Portability | lives in the vendor | offline, cross-language, anywhere |
| Cost at scale | metered per event | ~$0 (local signing, zero backend) |
It's a proof, not just a log entry β the difference between "our dashboard says the agent did this" and "here's a signed receipt anyone can verify."
result_hash β an x402 settlement, an AP2 mandate
reference, a DKIM-signed SMTP 250 β to make a receipt as strong as its counterparty
evidence.did:key (self-describing public
key). Who you trust is your policy (pinned keys, an allow-list, or the optional log
below).See SPEC.md for the wire format.
The fastest way to give an agent receipts: run ActionProof as an MCP server and add it to
Claude Desktop / Cursor. Your agent gets three tools β attest_action, verify_receipt,
get_identity β and can emit a receipt right after it does something.
Add to your MCP client config (e.g. Claude Desktop claude_desktop_config.json):
The server mints a stable Ed25519 identity on first run (stored at
~/.actionproof/agent.key.pem, override with ACTIONPROOF_KEY_PATH). Every receipt it
signs is attributable to that one agent did:key.
You don't have to call attest by hand after every action β wrap the tool once and every
call emits a receipt.
TypeScript (framework-agnostic; works with LangChain.js, Mastra, Vercel AI SDK):
Python (@attest_action decorator, or a LangChain/CrewAI callback):
MIT.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/actionproof)<a href="https://allmcps.com/mcp/actionproof"><img src="https://allmcps.com/api/badge/actionproof?style=directory" alt="ActionProof on AllMCPs" /></a>