Verifiable agent actions.
Every action becomes signed context for the next.
Wrap an agent or its MCP tools once. From then on, every action is signed into a context graph: who acted, what evidence mattered, and what the next agent should build on.
Then verify it from the public log.
pnpm add @atrib/mcpimport { atrib } from "@atrib/mcp"
server.use(atrib())Why atrib exists
Agent systems already produce chats, traces, logs, and memory writes. What they rarely produce is a past another agent can prove and use: who signed the action, what evidence mattered, what changed, and which prior belief was superseded.
server.use(atrib()) adds that evidence without changing the primary path. Each action becomes a signed receipt inside a graph that grows and evolves. Recall, audit, handoff, and settlement can read from the same verified chain instead of four disconnected logs.
The layer
One layer, three primitives,
a context graph.
atrib sits between the agents that act and the systems that read those actions.
Everything on the top plugs in through one package.
Everything on the bottom becomes context for the next pass.
Signature
Every action, provably authored. Ed25519 over canonical JSON.
Chain
Every action, linked to what caused it. A causal graph, by construction.
Receipt
Every chain, readable by anyone. Verified through receipts, traces, annotations, and revisions.
The next agent starts from verified context, not memory drift.
Teams can replay which evidence changed a decision.
Corrections become signed context for future work.
The next agent starts from verified context, not memory drift.
Teams can replay which evidence changed a decision.
Corrections become signed context for future work.
Receipts flow out, settle, audit, and return as the next trace. The loop closes by itself. You didn't write a single line to make that happen.
The surface
One wrapper line. Every action becomes context.
6 agent frameworks · 6 payment protocols detected · 36 paths from action to receipt.
New frameworks and protocols ship as additive detectors. The signed context graph keeps the same verifier path.
Builds on
Each of these is open and standard. atrib wires them into signed context records that agents and people can verify.
The full chain
- 01Ed25519 signature (RFC 8032) over JCS-canonicalized JSON (RFC 8785).
- 02Record hash committed to an append-only Merkle log (RFC 6962).
- 03Log served via C2SP tlog-tiles, state signed as C2SP tlog-checkpoints.
- 04Each record bound to the agent's OpenTelemetry trace via its W3C Trace Context trace-id.
Verifying a record means checking the signature, the Merkle inclusion proof, and the checkpoint signature.
Why you can build on it
Context you don't have to trust us for.
- 01Verifier-first
Check the signature, inclusion proof, and checkpoint outside atrib.
- 02Standard primitives
Ed25519, SHA-256, JCS, RFC 6962, C2SP checkpoints, and OpenTelemetry trace context.
- 03Composable adoption
Use agent middleware, an MCP wrapper, OpenTelemetry spans, or cognitive primitives.
- 04Self-hostable
Apache 2.0. Run your own log; the verifier still has the same job.
Start in a minute
Install the package, add the middleware, then inspect the signed context graph in the explorer.
pnpm add @atrib/mcp