bsv.cx
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Timestamp & verify evidence on-chain, free. Proofpack: a portable BEEF+BUMP proof bundle per txid.
| Author | cx.bsv |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 3892 ms |
| Last measured | 2026-10-26 |
Measured statistics
| Tools measured | 9 |
|---|---|
| Latency, 30-day median (L1) | 3892 ms |
| Latency, latest (L1) | 3892 ms |
| Safe-call success | 1/1 (100%) |
| 30-day success rate (L2) | 100% |
| Last checked | 2026-10-26 |
| Total checks | 4 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"bsv.cx": {
"url": "https://bsv.cx/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (9)
notarize_hashAnchor 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.
Parameters:
sha256(required) — string — sha256 hex digest of the exact bytes you want to timestamplabel— string — optional public note stored with the proof
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
verify_hashLook 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.
Parameters:
sha256(required) — string — the sha256 hex digest to look up
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
spv_verifyVerify 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.
Parameters:
beef— string — a BEEF envelope (BRC-62) as hex — easiest input; carries the tx and its merkle pathbump— string — a BUMP (BRC-74) merkle path as hex; must be paired with txidtxid— string — 64-hex txid; required with bump, or with a raw TSC proofindex— integer — the transaction's index in the block (raw TSC proof only)nodes— array — TSC merkle branch nodes as hex, or "*" for a duplicated node (raw TSC proof only)height— integer — block height (raw TSC proof only)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
proofpackFor 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).
Parameters:
txid(required) — string — the confirmed transaction id to package a proof bundle for
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
archive_urlCapture 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.
Parameters:
url(required) — string — the page to capturethorough— boolean — wait for lazy-loaded content; slower but better for long or image-heavy pages
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_archiveFetch the manifest for a previous archive_url capture: when it was taken, and its proof. Free.
Parameters:
hash(required) — string — the capture hash returned by archive_url
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
verifiable_fetchFetch 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).
Parameters:
url(required) — string — the page to fetchthorough— boolean — wait for lazy-loaded content
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
batch_timestampAnchor 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).
Parameters:
hashes(required) — array — sha256 hex digests to timestamp together
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
service_statusReport whether anchoring is currently working. Call this if a tool reports something stored but not anchored.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.