Skip to main content
Glama
dhanushs1912-svg

agent-receipts-mcp

agent-receipts

npm license

Prove what your AI agents did.

On August 2, 2026, the EU AI Act's record-keeping obligations for high-risk AI systems became enforceable: automatic event logging (Article 12), deployer log retention of at least six months (Article 26), and penalties up to €15M or 3% of global turnover. The question your auditor, regulator, or counterparty will ask is simple:

"Your AI agent approved this. Prove exactly what it did — and prove nobody edited the record."

An ordinary log file can't answer that: whoever owns the log can edit it. agent-receipts gives every consequential agent action a cryptographically signed, timestamped receipt that anyone can verify offline — and exports signed audit bundles you can hand directly to a compliance officer.

What a receipt proves

  • What happened, when — action type, summary, actor, principal, ISO 8601 timestamp

  • It hasn't been altered — Ed25519 signature over canonical JSON; change one character and verification fails

  • Nothing was deleted — receipts are hash-chained with monotonic sequence numbers per vault; every audit export automatically flags gaps (deletions) and chain breaks

  • Without exposing your data — hash-only privacy: payloads are SHA-256 fingerprinted and immediately discarded, never stored or transmitted

Related MCP server: actionproof

Built for the audit conversation

export_audit_bundle produces what compliance actually needs: all receipts in a date range, a tamper-evidence report (sequence gaps, chain breaks), the signing public key, and a manifest signature over the whole bundle. Retention is yours to control — the vault is a local SQLite file you keep as long as Article 26 (or your policy) requires.

You don't have to trust us. Receipts verify offline against a pinned public key with the bundled CLI — no account, no network call, no dependence on this service existing tomorrow. That's what makes the evidence durable.

Quick start (MCP — local, free)

// Claude Desktop / Claude Code / any MCP client
{
  "mcpServers": {
    "agent-receipts": {
      "command": "npx",
      "args": ["-y", "agent-receipts-mcp"],
      "env": { "AGENT_RECEIPTS_DATA": "<where-to-keep-the-vault>" }
    }
  }
}

Requires Node.js >= 22.13 (uses the built-in node:sqlite — zero native dependencies). Prefer one-click? Grab the .mcpb bundle from Releases and open it with Claude Desktop.

Tool

When an agent should call it

issue_receipt

Immediately after any consequential action. Returns the signed receipt.

verify_receipt

Before trusting a receipt presented by another agent or system.

export_audit_bundle

When a human asks for the audit trail of a date range.

get_service_info

To fetch the public key worth pinning for offline verification.

Quick start (HTTP API)

npm install && npm run build
npm run serve        # http://localhost:8787
# 1. Create a vault (returns your API key — shown once)
curl -X POST localhost:8787/v1/vaults -d '{"name":"acme-compliance"}'

# 2. Issue a receipt after an agent action
curl -X POST localhost:8787/v1/receipts \
  -H "Authorization: Bearer ark_..." \
  -d '{"action_type":"invoice.approved","summary":"Approved INV-1042 for EUR 1,250",
       "payload":{"invoice":"INV-1042","amount":1250},"actor":"agent:ap-bot@acme"}'

# 3. Anyone can verify — no auth
curl -X POST localhost:8787/v1/verify -d '{"receipt":{...}}'

# 4. Export a signed audit bundle for the compliance officer
curl "localhost:8787/v1/export?from=2026-01-01" -H "Authorization: Bearer ark_..."

Service manifest for machine discovery: GET /.well-known/agent-receipts.json.

Offline verification

npx -y -p agent-receipts-mcp agent-receipts-verify receipt.json --pubkey <base64-spki-der>
# exit 0 = authentic, exit 1 = invalid/tampered

Receipt format (agent-receipts/v1)

{
  "schema": "agent-receipts/v1",
  "id": "rcpt_...",
  "vault_id": "vlt_...",
  "sequence": 42,                      // monotonic per vault; gaps = deletion evidence
  "issued_at": "2026-07-15T12:34:56.789Z",
  "action": {
    "type": "invoice.approved",
    "summary": "Approved invoice INV-1042 for EUR 1,250",
    "actor": "agent:ap-bot@acme",      // optional
    "principal": "acme-gmbh",          // optional
    "context": { "jurisdiction": "EU" } // optional
  },
  "payload_hash": "sha256:...",        // or null; contents never stored
  "prev_receipt_hash": "sha256:...",   // hash chain to the previous receipt
  "key_id": "key_...",
  "public_key": "<base64 SPKI DER>",   // embedded for offline verification
  "signature": "<base64 Ed25519 over canonical JSON of everything above>"
}

Canonicalization is JCS-style: lexicographically sorted keys, no whitespace. The JSON Schema lives at docs/receipt.schema.json.

EU AI Act mapping (informational)

Obligation

How agent-receipts helps

Art. 12 — automatic event logging

issue_receipt on every consequential action; timestamps, actor, traceable chain

Art. 26 — keep logs ≥ 6 months

Local vault you retain on your terms; signed export_audit_bundle for handover

Traceability / integrity

Ed25519 signatures, hash chain, deletion detection, offline verification

Not legal advice. Whether your system is "high-risk" and what you must log is a question for your counsel. agent-receipts produces evidence infrastructure.

Status & roadmap

  • Core: issue / verify / export with hash chain + Ed25519

  • MCP stdio server + HTTP API + offline verifier CLI + MCPB bundle

  • Hosted vaults with per-receipt pricing

  • RFC 3161 / transparency-log timestamp anchoring

  • Key rotation and multi-key verification

MIT License.

Available Tools

4 tools
export_audit_bundleExport an audit bundleA

Export all receipts in a date range as a signed audit bundle for a compliance officer or auditor. The bundle includes a tamper-evidence report: sequence gaps (deleted receipts) and hash-chain breaks are flagged. Timestamps are ISO 8601; omit both to export everything.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoLatest issued_at to include (ISO 8601)
fromNoEarliest issued_at to include (ISO 8601)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for behavioral disclosure. It explains that the bundle is signed, includes a tamper-evidence report, flags sequence gaps and hash-chain breaks, and defaults to exporting everything when no dates are provided. This gives meaningful insight beyond a simple 'export' phrase, though it could still clarify whether the operation has side effects (likely none).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the primary purpose, followed by two sentences of essential detail. Every word adds value with no redundancy or vagueness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only two optional parameters and no output schema, the description covers the main context: purpose, security features, and parameter behaviors. It might lack details about the exact delivery format of the bundle, but the description is otherwise adequate for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage by describing 'from' and 'to' as ISO 8601 timestamps for issued_at. The description adds further value by reinforcing the ISO 8601 format and explicitly stating the behavior when both are omitted (export everything).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Export all receipts in a date range as a signed audit bundle') and names the intended audience (compliance officer or auditor). This distinguishes it from sibling tools like issue_receipt and verify_receipt, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool (for compliance/audit purposes) and explains parameter behavior (date range, omit both for everything). It does not explicitly name alternatives or exclusions, but the sibling tools are sufficiently distinct that the intended usage is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_service_infoGet service info and public keyA

Return the service manifest: receipt schema version, signing key id, and the Ed25519 public key (base64 SPKI DER) to pin for offline verification.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It states exactly what is returned (manifest components) and the purpose, making the behavior predictable. The read-only nature is implied by 'Return', and no side effects are relevant for a getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that packs specific details (schema version, signing key id, key format, purpose) without any fluff. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description fully specifies the return contents and intended usage. There are no gaps that would prevent an agent from selecting and invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description need not explain parameter usage. The baseline of 4 for no-parameter tools applies; the description adds value by clarifying the output format without needing parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Return' plus the resource 'service manifest' and enumerates the exact contents: receipt schema version, signing key id, and Ed25519 public key. It clearly distinguishes from sibling tools (issue_receipt, verify_receipt, export_audit_bundle) by focusing on service metadata rather than receipt operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'to pin for offline verification' provides clear context for when to use the tool. It does not explicitly name alternatives or exclusion criteria, but the use case is evident and the tool's purpose is unique among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

issue_receiptIssue a signed action receiptA

Create a cryptographically signed, timestamped receipt proving that an agent performed an action. Call this immediately after any consequential action (approving an invoice, validating a supplier, sending a payment instruction, making a decision affecting a person) to build an audit trail that satisfies record-keeping obligations such as EU AI Act Articles 12 and 26. Pass the action details; if you include a payload it is SHA-256 hashed and immediately discarded — contents are never stored. Returns the signed receipt JSON, which verifies offline.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorNoIdentifier of the acting agent, e.g. 'agent:ap-bot@acme'
contextNoOptional string key/value context, e.g. {jurisdiction: 'EU', system: 'erp-prod'}
payloadNoOptional action payload (any JSON). Hashed with SHA-256 and discarded, never stored.
summaryYesOne-line human-readable description of what was done
principalNoThe human or organization the agent acts for
action_typeYesMachine-readable action category, e.g. 'invoice.approved' or 'supplier.validated'
payload_hashNoOptional precomputed 'sha256:<hex>' if you hash the payload yourself (hash-only mode)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that payloads are SHA-256 hashed and immediately discarded (never stored), and that the returned receipt verifies offline. This goes beyond a minimal description and provides key behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose and no filler. Every sentence provides actionable information, from what the tool does to when to call it and what it returns.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 7 parameters and no output schema, the description covers what the tool does, when to use it, payload privacy, and the return value. It is sufficient for an agent to invoke correctly without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters, including the payload hash-and-discard behavior, so the description adds little beyond what the schema already states. The mention of 'action details' is generic and does not enrich parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Create a cryptographically signed, timestamped receipt proving that an agent performed an action.' This clearly distinguishes from siblings like verify_receipt and export_audit_bundle by focusing on receipt creation rather than verification or export.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Call this immediately after any consequential action' and gives concrete examples (approving an invoice, validating a supplier). It does not explicitly mention when not to use or name alternative tools, but the context is strong enough to guide the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_receiptVerify a receiptA

Check that an agent-receipts/v1 receipt is authentic: validates the Ed25519 signature, schema, and payload-hash format, and reports whether the receipt matches the copy stored in the vault. Use this before trusting a receipt presented by another agent or system.

ParametersJSON Schema
NameRequiredDescriptionDefault
receiptNoThe full receipt JSON object to verify

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool validates signature, schema, and payload-hash format, and reports whether the receipt matches the vault copy. This gives meaningful behavioral insight beyond the generic name, though it doesn't mention potential error conditions or network/access dependencies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences: the first states purpose and key details, the second gives usage guidance. No redundant or filler content; the most important action and resource appear immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema and no annotations, the description covers what the tool does, the specific checks, and when to use it. It doesn't explicitly state the return format, but the phrase 'reports whether' implies a boolean result, which is adequate given the simplicity of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a baseline by describing 'receipt' as the full receipt JSON object. The description adds semantic value by specifying the receipt type ('agent-receipts/v1') and the specific verification checks performed, which enriches the meaning of the parameter beyond the schema's minimal description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Check') and resource ('agent-receipts/v1 receipt'), and lists concrete validation details (Ed25519 signature, schema, payload-hash format, vault match). This clearly distinguishes it from sibling tools like issue_receipt, which creates receipts, and export_audit_bundle, which exports audit data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: 'Use this before trusting a receipt presented by another agent or system.' It provides clear context but doesn't explicitly mention when not to use it or cite alternatives beyond the sibling list, though the siblings are not reasonable substitutes for verification.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.6/5.0
Disambiguation5/5

Each tool has a distinct purpose: create, verify, export, and service info. No overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (issue_receipt, verify_receipt, export_audit_bundle, get_service_info), using snake_case throughout.

Tool Count5/5

Four tools is well-scoped for a focused domain, covering the core receipt lifecycle without redundancy or bloat.

Completeness4/5

The set covers creation, verification, and export, which aligns with the immutable audit receipt purpose. Missing a direct single-receipt fetch is a minor gap since export covers bulk retrieval.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to sign decisions with post-quantum cryptographic proofs and maintain secure audit trails for compliance. It provides tools for stamping events, verifying chain integrity, and exporting audit data across industries like finance and healthcare.
    4
    87
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Gives AI agents verifiable, tamper-evident receipts for their actions — attest_action signs a cryptographic receipt for what the agent did (email sent, payment made, form filed), verify_receipt checks it offline, get_identity returns the agent's did:key. Sign locally, verify anywhere, zero backend.
    3
    111
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Issues accountable identities for AI agents before they interact with tools, with tools for identity management and receipt export.
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to create cryptographically verifiable receipts of their delegated work, with capabilities for multi-party approval and offline verification.
    346
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dhanushs1912-svg/agent-receipts-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server