Stamp, upgrade, and verify Bitcoin timestamps via AI agents. No API keys required.
OpenTimestamps MCP server - stamp, upgrade, and verify Bitcoin timestamps via AI agents.
Exposes a set of tools to any MCP-compatible agent so it can timestamp documents, monitor confirmation status, and verify proofs against the Bitcoin blockchain - all from a conversation.
This is an independent implementation of the OpenTimestamps protocol. It is not affiliated with, endorsed by, or maintained by the OpenTimestamps project.
Note on confirmation times: After stamping, a proof is
pendinguntil Bitcoin confirms it. Confirmations typically arrive within ~60 minutes, but can take several hours during network congestion. Useots-mcp watchorupgrade_timestampto monitor. A pending proof is not a failed proof.
npm install -g @otskit/mcp
ots-mcp setup claude # Claude Desktop
ots-mcp setup claude-code # Claude Code CLI
ots-mcp setup codex # Codex CLI
Each command writes the MCP entry into the agent's config file, makes a .bak backup if the file already exists, and skips if ots-mcp is already configured. Restart the agent afterwards to apply the changes.
| Command | Description |
|---|---|
ots-mcp serve | Start the MCP server (stdio transport) |
ots-mcp stamp <sha256> | Stamp a SHA-256 hash against Bitcoin calendars |
ots-mcp upgrade <id> | Check if a pending stamp has been confirmed |
ots-mcp verify <id> | Verify a stamp against Bitcoin |
ots-mcp list [status] | List stamps (pending / confirmed / failed) |
ots-mcp watch [minutes] | Monitor pending stamps and attempt due upgrades (default: 30 min, minimum: 15 min) |
ots-mcp check-pending | Run one upgrade pass over all pending stamps |
ots-mcp scheduler install|remove|status | Manage OS-level scheduler for auto-upgrades |
ots-mcp backup [dest] | Backup the SQLite database |
ots-mcp setup <claude|claude-code|codex> | Configure MCP for an agent |
| Tool | Description |
|---|---|
create_timestamp | Stamp a SHA-256 hash against 4 public OTS calendars |
upgrade_timestamp | Check if a pending stamp has been confirmed in Bitcoin |
verify_timestamp | Verify a stamp - proves hash existed before a given Bitcoin block |
verify_external_proof | Verify a whitelisted local file against its external .ots proof, without changing the local stamp store |
inspect_timestamp | Inspect a stored proof file without network calls |
list_pending | List stamps with status, retry count, and filters |
watch | Open a terminal window monitoring pending stamps and attempting due upgrades |
hash_file | Compute the SHA-256 of a local file and return it as a 64-char hex string (no network calls) |
stamp_file | Compute SHA-256 of a local file and stamp it on Bitcoin in one step |
All data is stored in ~/.ots-mcp/:
~/.ots-mcp/
ots-mcp.db # SQLite database (stamps, proof files)
config.json # Optional config overrides
ots-mcp.log # Log file
Create ~/.ots-mcp/config.json to override defaults:
{
"stamp_enabled": true,
"scheduler_interval_minutes": 30,
"retry_max_attempts": 20,
"calendar_timeout_ms": 10000,
"calendars": [
"https://alice.btc.calendar.opentimestamps.org",
"https://bob.btc.calendar.opentimestamps.org",
"https://finney.calendar.eternitywall.com",
"https://btc.calendar.catallaxy.com"
]
}
npm run build # production build
npm run dev # watch mode
npm test # run tests
@otskit/client - OTS calendar client (brings in @otskit/core, the protocol engine)@modelcontextprotocol/sdk - MCP SDKnode-sqlite3-wasm - local database (pure WASM, no native compilation)Requires Node.js >= 20.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @otskit/mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-alexalves87-otskit-mcp": {
"command": "npx",
"args": [
"-y",
"@otskit/mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@otskit/mcpnpmio.github.AlexAlves87/otskit-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.