Touchstone
FreeNot checkedBitcoin-anchored, tamper-evident audit log for AI agents — record, disclose and verify actions.
About
Bitcoin-anchored, tamper-evident audit log for AI agents — record, disclose and verify actions.
README
Local MCP server for Touchstone — record what your agent did into a tamper-evident, externally-anchored log.
This server runs on your machine and holds your Ed25519 signing key. It signs each
event locally and appends it to your recorder, so an agent only has to call
touchstone_record({ event_type, payload }). The key never leaves this process.
Canonicalization (JCS / RFC 8785) is done locally too, so a malicious or compromised server
can't trick you into signing a different commitment than you intended.
Zero dependencies — Node 18+ built-ins only. It's a single file: read it before you trust it.
The remote MCP at
https://touchstone.cv/mcpcan't sign for you (Touchstone never holds your key), so itstouchstone_recordexpects a signature you computed yourself. Run this server when you want frictionless local signing.
Install
# one-off, no install:
npx -y @touchstone-cv/mcp
# or vendor the single file:
curl -O https://touchstone.cv/touchstone-mcp.mjs
# or clone:
git clone https://github.com/Touchstone-CV/touchstone-mcp && cd touchstone-mcp
Configure
Point your MCP client at it over stdio:
{
"mcpServers": {
"touchstone": {
"command": "npx",
"args": ["-y", "@touchstone-cv/mcp"],
"env": {
"TOUCHSTONE_RECORDER": "rec_...",
"TOUCHSTONE_SUBJECT": "<your-colony-sub>",
"TOUCHSTONE_API_KEY": "tsk_...",
"TOUCHSTONE_SIGNING_KEY": "<base64 Ed25519 32-byte seed>"
}
}
}
}
| Env var | Required | Meaning |
|---|---|---|
TOUCHSTONE_RECORDER |
yes | Your recorder public id (rec_…) |
TOUCHSTONE_SUBJECT |
to record | Your Colony sub — the recorder's subject |
TOUCHSTONE_API_KEY |
yes | API key minted on the recorder (tsk_…) |
TOUCHSTONE_SIGNING_KEY |
to record | base64 Ed25519 32-byte seed — kept by you, never sent |
TOUCHSTONE_KEY_FILE |
alt | Path to JSON {"seed_b64":"…"} instead of the inline seed |
TOUCHSTONE_BASE_URL |
no | Defaults to https://touchstone.cv |
To get a recorder + key, see touchstone.cv/developers — agents can self-provision one with their own Colony token (OAuth Token Exchange, RFC 8693), no browser required.
Tools
| Tool | What it does |
|---|---|
touchstone_record |
JCS-canonicalizes payload, signs the commitment locally, appends the entry |
touchstone_disclose |
Create a shareable /d/<token> disclosure link (proxies to the service) |
touchstone_verify |
Verify a disclosure bundle (proxies to the service) |
touchstone_recorder_info |
Fetch your recorder's public info / checkpoint state |
Only touchstone_record uses your signing key; the rest proxy to the remote service over your API key.
Selective field disclosure
Call touchstone_record({ event_type, payload, selective_disclosure: true }) to commit each
payload field separately — the client computes a salted-field Merkle root locally and signs
that as payload_hash, storing the per-field salts. Later you can reveal only a subset:
touchstone_disclose({ seqs: [n], reveal: { n: ["field_a", "field_b"] } })
Revealed fields ship with Merkle proofs against payload_hash (which your signature already
covers); withheld fields are salt-bound and their values never appear in the disclosure. The
root computation matches the server and the verifiers byte-for-byte.
Verifying the log
A disclosure can be checked by anyone, with no trust in Touchstone — in the browser verifier, the standalone verify.php, or the gossip_check.py split-view checker. Those tools are served from the site (and are each a single auditable file); this repo is just the recording client.
License
Install Touchstone in Claude Desktop, Claude Code & Cursor
unyly install touchstoneInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add touchstone -- npx -y @touchstone-cv/mcpFAQ
Is Touchstone MCP free?
Yes, Touchstone MCP is free — one-click install via Unyly at no cost.
Does Touchstone need an API key?
No, Touchstone runs without API keys or environment variables.
Is Touchstone hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Touchstone in Claude Desktop, Claude Code or Cursor?
Open Touchstone on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzCompare Touchstone with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
