Developer SDK · open source
Prove every tool call. Verify it anywhere.
QuoxProof gives every tool your AI agent calls a signed, hash-linked receipt, written to your own machine. Anyone can verify a receipt offline with the public key it carries: no account, no backend, no shared secret.
pip install quoxproofTwo lines in
Add a decorator, get a receipt.
You do not need the whole platform to start. Enable QuoxProof once, then wrap a tool with the decorator, and every call it makes writes a signed, hash-linked receipt to your own machine.
import quoxproof
quoxproof.enable()
@quoxproof.tool
def search(query: str) -> str:
return web_search(query)
# every call writes a signed receipt to ~/.quox/proofs/
# verify later, offline: quoxproof verify <session>.ndjsonVerify offline
A receipt carries its own Ed25519 public key. Anyone can check it with no account and no network.
Local first
Receipts are written to your own machine, in ~/.quox/proofs/. Witnessing and governed execution through QuoxCORE are an upgrade, not a requirement.
Honest about proof
The verifier reports what it can and cannot show, and never collapses a receipt to a single green tick.
Verify without trusting the producer. Unlike a backend audit service, a QuoxProof receipt carries its own public key, so checking it never depends on the vendor that produced it.
The record
What is in a receipt.
Each receipt is a small, structured record, written as one line of an append-only NDJSON session file.
toolThe name of the tool that was called.inputs / outputsA hash of what went in and what came back, not the raw payload.timingStart and end timestamps for the call.status / errorWhether the call succeeded, and the error raised if it did not.prev_hash + receipt_hashThe chain link: each receipt hashes the one written before it.signature + public keyAn Ed25519 signature over the receipt, with the public key embedded alongside it.Checkpoints
An anchor against tail-rewrite.
quoxproof checkpoint signs a tip over the chain head, so truncation or a rewritten tail becomes detectable. It is an anti-rewrite anchor on your own record, not third-party witnessing: for that, a receipt can also be run through QuoxCORE.
Works with
Hook it in, or wrap it by hand.
LangChain
An auto-hook wraps LangChain tool calls with no change to the tools themselves.
MCP
An auto-hook wraps calls made through the Model Context Protocol the same way.
Anything else
The transparent @quoxproof.tool decorator wraps any Python function directly.
Start now
Ship the receipt, not just the answer.
QuoxProof is open source and free to use. Install it, wrap a tool, and read the receipt it writes. For witnessing and governed execution at platform scale, see verifiable AI operations.
pip install quoxproofgithub.com/quoxai/quoxproof →