{
  "markdown": "<p align=\"center\">\n  <img src=\"docs/header.png\" alt=\"OTSkit MCP\" width=\"480\" />\n</p>\n\n# @otskit/mcp\n\n[![CI](https://github.com/OTSkit/OTSkit-MCP/actions/workflows/ci.yml/badge.svg)](https://github.com/OTSkit/OTSkit-MCP/actions/workflows/ci.yml)\n[![npm version](https://img.shields.io/npm/v/@otskit/mcp.svg)](https://www.npmjs.com/package/@otskit/mcp)\n[![npm downloads](https://img.shields.io/npm/dt/@otskit/mcp.svg)](https://www.npmjs.com/package/@otskit/mcp)\n[![TypeScript](https://img.shields.io/npm/dependency-version/@otskit/mcp/dev/typescript?label=TypeScript)](https://www.typescriptlang.org/)\n[![Node](https://img.shields.io/node/v/@otskit/mcp)](https://nodejs.org)\n[![Coverage](https://codecov.io/gh/OTSkit/OTSkit-MCP/branch/main/graph/badge.svg)](https://codecov.io/gh/OTSkit/OTSkit-MCP)\n[![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=OTSkit_OTSkit-MCP&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=OTSkit_OTSkit-MCP)\n[![License](https://img.shields.io/npm/l/@otskit/mcp)](LICENSE)\n[![smithery badge](https://smithery.ai/badge/otskit/otskit-mcp)](https://smithery.ai/servers/otskit/otskit-mcp)\n\nOpenTimestamps MCP server - stamp, upgrade, and verify Bitcoin timestamps via AI agents.\n\nExposes 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.\n\n<a href=\"https://glama.ai/mcp/servers/@OTSkit/OTSkit-MCP\">\n  <img width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/@OTSkit/OTSkit-MCP/badge\" alt=\"OTSkit MCP server on Glama — security, license and quality rating plus download count\" />\n</a>\n\n> **Note on confirmation times:** After stamping, a proof is `pending` until Bitcoin confirms it. Confirmations typically arrive within **~60 minutes**, but can take **several hours** during network congestion. Use `ots-mcp watch` or `upgrade_timestamp` to monitor. A pending proof is not a failed proof.\n\n## Install\n\n```bash\nnpm install -g @otskit/mcp\n```\n\n## Agent setup\n\n```bash\nots-mcp setup claude        # Claude Desktop\nots-mcp setup claude-code   # Claude Code CLI\nots-mcp setup codex         # Codex CLI\n```\n\nEach 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.\n\n## CLI commands\n\n| Command | Description |\n|---|---|\n| `ots-mcp serve` | Start the MCP server (stdio transport) |\n| `ots-mcp stamp <sha256>` | Stamp a SHA-256 hash against Bitcoin calendars |\n| `ots-mcp upgrade <id>` | Check if a pending stamp has been confirmed |\n| `ots-mcp verify <id>` | Verify a stamp against Bitcoin |\n| `ots-mcp list [status]` | List stamps (`pending` / `confirmed` / `failed`) |\n| `ots-mcp watch [minutes]` | Monitor pending stamps and attempt due upgrades (default: 30 min, minimum: 15 min) |\n| `ots-mcp check-pending` | Run one upgrade pass over all pending stamps |\n| `ots-mcp scheduler install\\|remove\\|status` | Manage OS-level scheduler for auto-upgrades |\n| `ots-mcp backup [dest]` | Backup the SQLite database |\n| `ots-mcp setup <claude\\|claude-code\\|codex>` | Configure MCP for an agent |\n\n## MCP tools exposed to agents\n\n| Tool | Description |\n|---|---|\n| `create_timestamp` | Stamp a SHA-256 hash against 4 public OTS calendars |\n| `upgrade_timestamp` | Check if a pending stamp has been confirmed in Bitcoin |\n| `verify_timestamp` | Verify a stamp - proves hash existed before a given Bitcoin block |\n| `verify_external_proof` | Verify a whitelisted local file against its external `.ots` proof, without changing the local stamp store |\n| `inspect_timestamp` | Inspect a stored proof file without network calls |\n| `list_pending` | List stamps with status, retry count, and filters |\n| `watch` | Open a terminal window monitoring pending stamps and attempting due upgrades |\n| `hash_file` | Compute the SHA-256 of a local file and return it as a 64-char hex string (no network calls) |\n| `stamp_file` | Compute SHA-256 of a local file and stamp it on Bitcoin in one step |\n\n## Data directory\n\nAll data is stored in `~/.ots-mcp/`:\n\n```text\n~/.ots-mcp/\n  ots-mcp.db       # SQLite database (stamps, proof files)\n  config.json      # Optional config overrides\n  ots-mcp.log      # Log file\n```\n\n## Configuration\n\nCreate `~/.ots-mcp/config.json` to override defaults:\n\n```json\n{\n  \"stamp_enabled\": true,\n  \"scheduler_interval_minutes\": 30,\n  \"retry_max_attempts\": 20,\n  \"calendar_timeout_ms\": 10000,\n  \"calendars\": [\n    \"https://alice.btc.calendar.opentimestamps.org\",\n    \"https://bob.btc.calendar.opentimestamps.org\",\n    \"https://finney.calendar.eternitywall.com\",\n    \"https://btc.calendar.catallaxy.com\"\n  ]\n}\n```\n\n## Development\n\n```bash\nnpm run build    # production build\nnpm run dev      # watch mode\nnpm test         # run tests\n```\n\n## Dependencies\n\n- [`@otskit/client`](https://github.com/OTSkit/OTSkit-client) - OTS calendar client (brings in [`@otskit/core`](https://github.com/OTSkit/OTSkit-core), the protocol engine)\n- [`@modelcontextprotocol/sdk`](https://github.com/modelcontextprotocol/typescript-sdk) - MCP SDK\n- `node-sqlite3-wasm` - local database (pure WASM, no native compilation)\n\nRequires Node.js >= 20.\n",
  "bytes": 5273,
  "sha": "e9417f3a86947d3512882b8c7c98d129b0b6e9795bd5470060cb78d5232d72ae",
  "repo_slug": "otskit/otskit-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_alexalves87_otskit_mcp_4ecb7d76/readme"
}