🔌 MCP server
Give an AI agent the ability to prove what it saw and when. Timestamp a hash, archive a page, fetch a URL with a receipt — all anchored on the Bitcoin SV blockchain, all verifiable by anyone without trusting bsv.cx.
Connect
{
"mcpServers": {
"bsv-cx": { "url": "https://bsv.cx/mcp" }
}
}
Clients that only speak stdio can bridge with npx mcp-remote https://bsv.cx/mcp.
Tools
notarize_hash
Anchor a sha256 digest in a Bitcoin SV transaction, proving the content existed at this time. Send ONLY the hash — the content never leaves your machine, and bsv.cx cannot see what was hashed. Free. Idempotent: the same hash returns the same record.
sha256— sha256 hex digest of the exact bytes you want to timestamplabeloptional — optional public note stored with the proof
verify_hash
Look up a sha256 across EVERY bsv.cx protocol — notary timestamps, verifiable-fetch receipts, notarized captures, web-page archives, Merkle batch roots and attestations — and return when it was anchored and the transaction that proves it. A hash anchored by any of these counts as found. Free, and never rate-limited into unavailability.
sha256— the sha256 hex digest to look up
spv_verify
Verify ANY Bitcoin (BSV) Merkle inclusion proof — a BEEF envelope (BRC-62), a BUMP (BRC-74), or a raw TSC proof — against block headers bsv.cx syncs itself over the BSV P2P network, NOT an explorer. Returns confirmed / rejected / inconclusive. This is the trustless core: you send only the proof (never the root), we fold the root ourselves and check it against a header we hold — so you never have to trust bsv.cx. Works for ANY txid's proof, not just bsv.cx's own anchors. Free.
beefoptional — a BEEF envelope (BRC-62) as hex — easiest input; carries the tx and its merkle pathbumpoptional — a BUMP (BRC-74) merkle path as hex; must be paired with txidtxidoptional — 64-hex txid; required with bump, or with a raw TSC proofheightoptional — block height (raw TSC proof only)indexoptional — the transaction's index in the block (raw TSC proof only)nodesoptional — TSC merkle branch nodes as hex, or "*" for a duplicated node (raw TSC proof only)
proofpack
For any CONFIRMED BSV transaction id, get a freshly SPV-verified bundle: BEEF (BRC-62) and BUMP (BRC-74) plus bsv.cx's own self-synced header-tip attestation. bsv.cx fetches the Merkle proof and folds it against block headers it syncs over the BSV P2P network BEFORE serving, so you receive a bundle that already confirms — verifiable by any @bsv/sdk client with no bsv.cx-specific code. Verification itself is free at /spv/verify; this does the fetch + fold + package for you and is priced per call (pay over HTTP with an x402 payment — see /pay).
txid— the confirmed transaction id to package a proof bundle for
archive_url
Capture a web page as it looks right now — screenshot and text — and anchor a hash of that capture on-chain. Use this before relying on a page you cite, so a later edit or deletion cannot be denied. Free.
url— the page to capturethoroughoptional — wait for lazy-loaded content; slower but better for long or image-heavy pages
get_archive
Fetch the manifest for a previous archive_url capture: when it was taken, and its proof. Free.
hash— the capture hash returned by archive_url
verifiable_fetch
Fetch a URL as readable text AND get a receipt anchoring a hash of the exact bytes returned, so you can later prove what the page said when you read it. Priced per call (pay over HTTP with an x402 payment — see /pay).
url— the page to fetchthoroughoptional — wait for lazy-loaded content
batch_timestamp
Anchor a Merkle root over many sha256 digests in a single transaction — far cheaper per item than notarizing each one. Each hash gets an inclusion proof. Priced per call (pay over HTTP with an x402 payment — see /pay).
hashes— sha256 hex digests to timestamp together
service_status
Report whether anchoring is currently working. Call this if a tool reports something stored but not anchored.
- no arguments
What it costs
What we can and cannot see
notarize_hash takes a digest, not contentA hash covers exact bytes. Re-encoding a file — a platform re-compressing an image or video on upload — changes its hash, so the proof covers your original, not a re-encoded copy someone else holds.
What a timestamp does and does not prove
It proves those exact bytes existed no later than that block. It does not prove who made them, that they are true, or that they are original. Anyone can timestamp anything, including someone else's work.
Questions or something broken? Report a problem.