touchstone-mcp

touchstone-mcp

Local MCP server that signs and records agent actions into a tamper-evident log using Ed25519 keys for frictionless integration with Touchstone.

Category
Visit Server

README

touchstone-mcp

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/mcp can't sign for you (Touchstone never holds your key), so its touchstone_record expects 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

Apache-2.0.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured