Skip to content

Quick Start

This guide walks you through creating, signing, and verifying an Agent Receipt using either the TypeScript or Python SDK.

OpenClaw Plugin

Hook

MCP Proxy

SDK (this guide)

SDK API call

wraps

PostToolUse

hooks

Unix socket

Unix socket

Unix socket

Unix socket

Your app code

Agent Receipts SDK

mcp-proxy

MCP Server

agent-receipts-hook

Native tools

OpenClaw gateway

Tools

agent-receipts-daemon

receipts.db

Terminal window
npm install @agnt-rcpt/sdk-ts
import {
createReceipt,
generateKeyPair,
signReceipt,
hashReceipt,
} from "@agnt-rcpt/sdk-ts";
const keys = generateKeyPair();
const unsigned = createReceipt({
issuer: { id: "did:agent:my-agent" },
principal: { id: "did:user:alice" },
action: {
type: "filesystem.file.read",
risk_level: "low",
target: { system: "local", resource: "/docs/report.md" },
},
outcome: { status: "success" },
chain: {
sequence: 1,
previous_receipt_hash: null,
chain_id: "chain_session-1",
},
});
const receipt = signReceipt(unsigned, keys.privateKey, "did:agent:my-agent#key-1");
const hash = hashReceipt(receipt);
console.log(receipt.id); // urn:receipt:<uuid>
console.log(hash); // sha256:<hex>
import { openStore } from "@agnt-rcpt/sdk-ts";
const store = openStore("receipts.db");
store.insert(receipt, hash);
const chain = store.getChain("chain_session-1");
console.log(`Chain has ${chain.length} receipt(s)`);
store.close();
import { verifyChain } from "@agnt-rcpt/sdk-ts";
const result = verifyChain(chain, keys.publicKey);
console.log(result.valid); // true
console.log(result.length); // number of receipts verified
Terminal window
pip install agent-receipts
from agent_receipts import (
CreateReceiptInput,
create_receipt,
generate_key_pair,
hash_receipt,
sign_receipt,
)
keys = generate_key_pair()
unsigned = create_receipt(
CreateReceiptInput(
issuer={"id": "did:agent:my-agent"},
principal={"id": "did:user:alice"},
action={
"type": "filesystem.file.read",
"risk_level": "low",
"target": {"system": "local", "resource": "/docs/report.md"},
},
outcome={"status": "success"},
chain={
"sequence": 1,
"previous_receipt_hash": None,
"chain_id": "chain_session-1",
},
)
)
receipt = sign_receipt(unsigned, keys.private_key, "did:agent:my-agent#key-1")
receipt_hash = hash_receipt(receipt)
from agent_receipts import verify_chain
receipts = [receipt] # or load from storage
result = verify_chain(receipts, keys.public_key)
print(result.valid) # True
print(result.length) # number of receipts verified