Arcaeon — Claude Code MCP server: a tamper-evident agent log
Keeps a log of what your agent did and checks it in one command. Useful when you have to show the history was not edited.
claude mcp add arcaeon -e ARCAEON_KEY=<ARCAEON_KEY> -- uvx arcaeonWhat Arcaeon does
Each row Arcaeon writes is hash-chained to the one before it. Edit a row, drop one, or swap two, and the check points at the line where the chain breaks. You can hand the file to somebody else and they run the same check on their own.
Install the server part with pip install "arcaeon[mcp]"; the base package pulls in nothing at all. Python 3.10 or newer is required. The heavy pieces sit in extras: arcaeon[mcp] brings the MCP Python SDK and roughly 30 packages, arcaeon[ts] adds tree-sitter for the TypeScript checks, arcaeon[sign] adds cryptography for signed reports. Without ARCAEON_KEY, seal and pin --remote send nothing to the hosted witness — you still get the free badge, and the command exits 3.
Run arcaeon mcp and the server comes up on stdio, handing the agent ledger, vet and witness tools. One gap: deleting the last rows slips past a plain check. arcaeon pin closes it by giving the ledger's current head to a witness. Treat ARCAEON_KEY like a password, since a leaked key lets someone pin under your name.
What it helps with
- record agent actions in a log that cannot be quietly rewritten
- find the exact line where a chain broke
- hand someone a portable receipt they can verify themselves
- confirm a refund or an email fired once, not twice
- capture every tool call made to an MCP server through a proxy
Example prompts for the agent
- Start
arcaeon mcpand list the ledger tools the agent can call - Run
arcaeon verifyonagent.jsonland tell me whether the chain broke - Check with
arcaeon oncethat the refund was recorded a single time
How to install Arcaeon
Platform CLI
claude mcp add arcaeon -e ARCAEON_KEY=<ARCAEON_KEY> -- uvx arcaeonReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from arcaeon <command>
Platform CLI
codex mcp add arcaeon --env ARCAEON_KEY=<ARCAEON_KEY> -- uvx arcaeonReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from arcaeon <command>
Config file
{
"mcpServers": {
"arcaeon": {
"command": "uvx",
"args": [
"arcaeon"
],
"env": {
"ARCAEON_KEY": "<ARCAEON_KEY>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from arcaeon <command>
Config file
{
"servers": {
"arcaeon": {
"type": "stdio",
"command": "uvx",
"args": [
"arcaeon"
],
"env": {
"ARCAEON_KEY": "<ARCAEON_KEY>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from arcaeon <command>
Platform CLI
gemini mcp add -e ARCAEON_KEY=<ARCAEON_KEY> arcaeon uvx arcaeonReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from arcaeon <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about Arcaeon
How do I install Arcaeon in Claude Code?
Add the server with claude mcp add arcaeon -e ARCAEON_KEY=<ARCAEON_KEY> -- uvx arcaeon. Or spell out the transport: claude mcp add --env ARCAEON_KEY=<ARCAEON_KEY> --transport stdio arcaeon -- uvx arcaeon.
What does Arcaeon do?
It keeps an agent log where every row is hash-chained to the previous one, and it verifies that chain. An edit, a deletion or a swap comes back with the line number.
What does Arcaeon need to run?
Python 3.10 or newer and the arcaeon[mcp] extra. The seal and pin --remote commands also need ARCAEON_KEY.