Local MCP server for Touchstone — record agent actions to a tamper-evident, externally-anchored log. Signs locally; your key never leaves your machine.
Setup
Choose your client, copy the config, then fill in any required environment variables.
Local
claude mcp add touchstone --env TOUCHSTONE_RECORDER='<TOUCHSTONE_RECORDER>' --env TOUCHSTONE_SUBJECT='<TOUCHSTONE_SUBJECT>' --env TOUCHSTONE_API_KEY='<TOUCHSTONE_API_KEY>' --env TOUCHSTONE_SIGNING_KEY='<TOUCHSTONE_SIGNING_KEY>' -- npx -y @touchstone-cv/mcp~/.codex/config.toml
[mcp_servers.touchstone]
command = "npx"
args = ["-y", "@touchstone-cv/mcp"]
env = { TOUCHSTONE_RECORDER = "<TOUCHSTONE_RECORDER>", TOUCHSTONE_SUBJECT = "<TOUCHSTONE_SUBJECT>", TOUCHSTONE_API_KEY = "<TOUCHSTONE_API_KEY>", TOUCHSTONE_SIGNING_KEY = "<TOUCHSTONE_SIGNING_KEY>" }
# codex mcp add touchstone --env TOUCHSTONE_RECORDER='<TOUCHSTONE_RECORDER>' --env TOUCHSTONE_SUBJECT='<TOUCHSTONE_SUBJECT>' --env TOUCHSTONE_API_KEY='<TOUCHSTONE_API_KEY>' --env TOUCHSTONE_SIGNING_KEY='<TOUCHSTONE_SIGNING_KEY>' -- npx -y @touchstone-cv/mcp~/.cursor/mcp.json
{
"mcpServers": {
"touchstone": {
"command": "npx",
"args": [
"-y",
"@touchstone-cv/mcp"
],
"env": {
"TOUCHSTONE_RECORDER": "<TOUCHSTONE_RECORDER>",
"TOUCHSTONE_SUBJECT": "<TOUCHSTONE_SUBJECT>",
"TOUCHSTONE_API_KEY": "<TOUCHSTONE_API_KEY>",
"TOUCHSTONE_SIGNING_KEY": "<TOUCHSTONE_SIGNING_KEY>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"touchstone": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@touchstone-cv/mcp"
],
"env": {
"TOUCHSTONE_RECORDER": "<TOUCHSTONE_RECORDER>",
"TOUCHSTONE_SUBJECT": "<TOUCHSTONE_SUBJECT>",
"TOUCHSTONE_API_KEY": "<TOUCHSTONE_API_KEY>",
"TOUCHSTONE_SIGNING_KEY": "<TOUCHSTONE_SIGNING_KEY>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"touchstone": {
"command": "npx",
"args": [
"-y",
"@touchstone-cv/mcp"
],
"env": {
"TOUCHSTONE_RECORDER": "<TOUCHSTONE_RECORDER>",
"TOUCHSTONE_SUBJECT": "<TOUCHSTONE_SUBJECT>",
"TOUCHSTONE_API_KEY": "<TOUCHSTONE_API_KEY>",
"TOUCHSTONE_SIGNING_KEY": "<TOUCHSTONE_SIGNING_KEY>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"touchstone": {
"command": "npx",
"args": [
"-y",
"@touchstone-cv/mcp"
],
"env": {
"TOUCHSTONE_RECORDER": "<TOUCHSTONE_RECORDER>",
"TOUCHSTONE_SUBJECT": "<TOUCHSTONE_SUBJECT>",
"TOUCHSTONE_API_KEY": "<TOUCHSTONE_API_KEY>",
"TOUCHSTONE_SIGNING_KEY": "<TOUCHSTONE_SIGNING_KEY>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"touchstone": {
"command": "npx",
"args": [
"-y",
"@touchstone-cv/mcp"
],
"env": {
"TOUCHSTONE_RECORDER": "<TOUCHSTONE_RECORDER>",
"TOUCHSTONE_SUBJECT": "<TOUCHSTONE_SUBJECT>",
"TOUCHSTONE_API_KEY": "<TOUCHSTONE_API_KEY>",
"TOUCHSTONE_SIGNING_KEY": "<TOUCHSTONE_SIGNING_KEY>"
}
}
}
}Remote
claude mcp add --transport http touchstone https://touchstone.cv/mcp --header 'Authorization: <AUTHORIZATION>'~/.codex/config.toml
[mcp_servers.touchstone]
url = "https://touchstone.cv/mcp"
http_headers = { Authorization = "<AUTHORIZATION>" }
# codex mcp add touchstone --url https://touchstone.cv/mcp~/.cursor/mcp.json
{
"mcpServers": {
"touchstone": {
"url": "https://touchstone.cv/mcp",
"headers": {
"Authorization": "<AUTHORIZATION>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"touchstone": {
"type": "http",
"url": "https://touchstone.cv/mcp",
"headers": {
"Authorization": "<AUTHORIZATION>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"touchstone": {
"httpUrl": "https://touchstone.cv/mcp",
"headers": {
"Authorization": "<AUTHORIZATION>"
}
}
}
}claude_desktop_config.json · Customize › Connectors › Add custom connector
{
"mcpServers": {
"touchstone": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://touchstone.cv/mcp",
"--header",
"Authorization:<AUTHORIZATION>"
]
}
}
}.trae/mcp.json
{
"mcpServers": {
"touchstone": {
"url": "https://touchstone.cv/mcp",
"headers": {
"Authorization": "<AUTHORIZATION>"
}
}
}
}Environment variables
TOUCHSTONE_RECORDERTOUCHSTONE_SUBJECTTOUCHSTONE_API_KEYTOUCHSTONE_SIGNING_KEY
Replace the placeholders with your own credentials and keep them out of version control.