Koskamo

stampthisfile MCP

This hosted MCP server enables AI agents to timestamp file hashes in Bitcoin using the OpenTimestamps protocol. Agents can submit SHA-256 hashes, pay per hash via x402 on Base, retrieve proof status, download .ots proofs, and verify proofs. No account or API key is required; the server is stateless and uses Streamable HTTP.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

stampthisfile MCP logo, by stampthisfileCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by stampthisfile
MCP endpoint (Streamable HTTP)
https://stampthisfile.com/mcp
Vendor documentation

What you can do with it

  • Timestamp file hashes in Bitcoin
  • Retrieve stamp status and proofs
  • Verify OpenTimestamps proofs

Source and maintenance

Community listingRegistry 0.1.0
Maintenance checked

Protocol and capabilities

Server
stampthisfile 0.1.0
MCP protocol
2025-06-18
Tools
4 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Timestamp files in Bitcoin with OpenTimestamps. Hash the file yourself (SHA-256) and send only the hash: the file never leaves your device. stamp_hashes costs 0.05 USDC per hash on Base, paid with x402 (no account or API key). It returns a standard .ots proof per hash, pending at first; it completes once Bitcoin confirms it, usually within 1-6 hours (get_stamp, then get_proof for the complete proof). A complete proof shows the file existed no later than the time of its Bitcoin block; it is not a signature and does not show who made the file. verify_proof checks any .ots proof for free, and any OpenTimestamps tool can verify it without us. Read https://stampthisfile.com/evidence.md before stamping something meant as evidence.

Tools

4 advertised

stamp_hashes — Stamp hashes
Advertised by the server during the last successful anonymous check.

Timestamp 1-100 SHA-256 hashes in Bitcoin. Paid per hash with x402: without a payment the tool returns an error whose structuredContent is an x402 PaymentRequired (x402Version 2, exact scheme, USDC on Base). Retry with the same arguments and the signed PaymentPayload in the request's _meta["x402/payment"] (the x402 MCP transport), or, if your client cannot set _meta, in the `payment` argument. The settlement comes back in _meta["x402/payment-response"]. Returns a batch with, per hash, the stamp id, a pending .ots proof (base64: save it now) and its ots_url, plus a receipt signed by us. Invalid input is never charged; retrying with the same payment and arguments returns the same answer without paying twice.

stamp_hashes input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "hashes"
  ],
  "properties": {
    "hashes": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "SHA-256 of the file, 64 hex characters"
      },
      "description": "1-100 SHA-256 hashes, each only once (sha256sum file.pdf, shasum -a 256 file.pdf)"
    },
    "payment": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      ],
      "description": "Only if your client cannot send _meta[\"x402/payment\"]: the x402 PaymentPayload, as an object or base64"
    },
    "webhook": {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "Public https URL that gets one POST when the batch completes or fails"
        },
        "signing_key": {
          "type": "string",
          "description": "Optional whsec_<base64> for a Standard Webhooks HMAC (v1) signature"
        }
      },
      "description": "Optional webhook; deliveries are always signed with our Ed25519 key (see https://stampthisfile.com/llms.txt)"
    }
  }
}
get_stamp — Get stamp
Advertised by the server during the last successful anonymous check.
Advertised read-only

Status of one stamp: pending, complete (with the Bitcoin block height and time, and a statement of what it proves) or failed (not confirmed within 7 days). Free.

get_stamp input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "The stamp id (stp_…), as returned by stamp_hashes"
    }
  }
}
get_stamp annotations
{
  "readOnlyHint": true
}
get_proof — Get proof
Advertised by the server during the last successful anonymous check.
Advertised read-only

The current .ots proof of one stamp, base64. Once get_stamp says complete, fetch it again: the complete proof carries the Bitcoin attestation and can be verified by anyone, without us. Save it next to the file as <file>.ots. Free.

get_proof input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "The stamp id (stp_…), as returned by stamp_hashes"
    }
  }
}
get_proof annotations
{
  "readOnlyHint": true
}
verify_proof — Verify proof
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check an OpenTimestamps proof (from us or anyone) against the SHA-256 of a file. Returns valid with status complete (Bitcoin block and the time the file existed by), valid with status pending (not in Bitcoin yet), or invalid with a reason. A pending proof whose calendars have since committed it comes back complete with `upgraded: true` and the completed proof in `ots` (base64): save it in place of the pending one. Nothing is stored. Free.

verify_proof input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "hash",
    "ots"
  ],
  "properties": {
    "ots": {
      "type": "string",
      "description": "The .ots proof, base64"
    },
    "hash": {
      "type": "string",
      "description": "SHA-256 of the file, 64 hex characters"
    }
  }
}
verify_proof annotations
{
  "readOnlyHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
232 ms
95th percentile latency
232 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 232 ms · metadata changed · 4 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http stampthisfile-mcp https://stampthisfile.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add stampthisfile-mcp --url https://stampthisfile.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable stampthisfile-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "stampthisfile-mcp": {
      "url": "https://stampthisfile.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "stampthisfile-mcp": {
      "type": "streamableHttp",
      "url": "https://stampthisfile.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start stampthisfile-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "stampthisfile-mcp": {
      "type": "http",
      "url": "https://stampthisfile.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http stampthisfile-mcp https://stampthisfile.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "stampthisfile-mcp": {
      "url": "https://stampthisfile.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "stampthisfile-mcp": {
      "serverUrl": "https://stampthisfile.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like stampthisfile MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.