The interesting half is not the recall — it is that every fact carries a provenance chain back to the conversation that produced it, and every recorded action carries input and output hashes a third party can check against an exported public key. That is the difference between a log the agent wrote about itself and evidence. It runs entirely locally, so nothing is shared between machines unless you export a bundle.
A local MCP server that gives an agent memory across sessions and a cryptographic record of what it did. Memory is a graph — entities, observations, relationships — rather than a flat key-value store, and every fact links back to the conversation that created it. It runs on your machine against SQLite, with nothing leaving it.
- Session memory: load everything known at the start, store what is learned, search it back, and soft-delete with the deletion itself recorded — `memory_context`, `memory_observe`, `memory_recall`, `memory_forget`
- The graph itself: list entities, connect two of them, and trace one observation's provenance back to its source — `memory_entities`, `memory_relate`, `memory_provenance`
- Actions recorded as signed receipts with input and output hashes, then verified independently — `track_action`, `create_receipt`, `complete_receipt`, `verify_receipt`
- Receipt retrieval and chains: one receipt, a filtered list, or every receipt in a chain — `get_receipt`, `list_receipts`, `get_chain`
- The Ed25519 public key exported so a third party can verify without touching your server — `get_public_key`
- AI Judge evaluation against a rubric, with verdict and score attached to the receipt — `judge_receipt`, `complete_judgment`, `get_judgments`
- Portable memory bundles exported and imported with verification, plus an operations audit report and expiry cleanup — `memory_export_bundle`, `memory_import_bundle`, `memory_audit`, `cleanup`
- An invoice generated straight from receipts over a date range — `generate_invoice`
`npx @agent-receipts/mcp-server` — no API key, no account, no cloud. Claude Code takes `claude mcp add agent-receipts -- npx @agent-receipts/mcp-server`; Claude Desktop and Cursor take the same command as a config entry. Data lives in `~/.agent-receipts/`: an SQLite database plus an Ed25519 key pair generated on first run, private key at mode 0600. `AGENT_RECEIPTS_DATA_DIR`, `AGENT_RECEIPTS_AGENT_ID` and `RECEIPT_SIGNING_PRIVATE_KEY` override the defaults. The published package is `@agent-receipts/mcp-server` (0.4.0 in server.json). Getting the agent to use memory unprompted takes the system prompt: `npx @agent-receipts/cli prompts claude-code`.
One command — npx @agent-receipts/mcp-server
