stampthisfile

Timestamp files in Bitcoin (OpenTimestamps): send a hash, pay per hash with x402, get a proof.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
98%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~855Tokens (tool definitions)
~1.2 KBTypical response size
Moderate attention impact (0.67% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "mcp": {
      "url": "https://stampthisfile.com/mcp"
    }
  }
}

Remote endpoints

https://stampthisfile.com/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡stamp_hashes(hashes, webhook, payment)

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.

Input Schema

{
  "type": "object",
  "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)"
    },
    "webhook": {
      "description": "Optional webhook; deliveries are always signed with our Ed25519 key (see https://stampthisfile.com/llms.txt)",
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "Public https URL that gets one POST when the batch completes or fails"
        },
        "signing_key": {
          "description": "Optional whsec_<base64> for a Standard Webhooks HMAC (v1) signature",
          "type": "string"
        }
      },
      "required": [
        "url"
      ]
    },
    "payment": {
      "description": "Only if your client cannot send _meta[\"x402/payment\"]: the x402 PaymentPayload, as an object or base64",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      ]
    }
  },
  "required": [
    "hashes"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_stamp(id)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "The stamp id (stp_…), as returned by stamp_hashes"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_proof(id)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "The stamp id (stp_…), as returned by stamp_hashes"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_proof(hash, ots)

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.

Input Schema

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

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools