bot-check: Bitcoin Self-Custody & WorkSats MCP
Verify Bitcoin PSBTs, addresses, and descriptors; earn or spend WorkSats bearer credits.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"botcheck": {
"url": "https://botcheck.jeffpersons.workers.dev/mcp"
}
}
}Puntos de conexión remotos
https://botcheck.jeffpersons.workers.dev/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (6)
🟢check_bitcoin_address(address, network, creditToken, x402TxHash)
Verify a Bitcoin address (Bech32m P2TR, Bech32 P2WPKH/P2WSH, Base58 P2PKH/P2SH): network, type, witness version, scriptPubKey hex, and common pitfalls. Never send private keys or seed phrases. Free tier: 2 calls/day per IP; after that, pass a WorkSats `creditToken` (`crd_...`), L402 header, or Base USDC `x402TxHash`.
Esquema de entrada
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Bitcoin address to inspect (bc1p..., bc1q..., 1..., 3..., tb1...)."
},
"network": {
"type": "string",
"enum": [
"mainnet",
"testnet",
"signet",
"regtest"
],
"description": "Expected network (default: inferred or mainnet)."
},
"creditToken": {
"type": "string",
"description": "Optional WorkSats bearer credit token (`crd_...`) to pay 2 credits when free daily calls are used up."
},
"x402TxHash": {
"type": "string",
"description": "Optional confirmed Base mainnet USDC transfer transaction hash (`0x...`) to pay via x402."
}
},
"required": [
"address"
]
}🟢check_psbt(psbt, network, creditToken, x402TxHash)
Inspect an unsigned or partially signed Bitcoin PSBT (BIP174 base64 or hex) before signing: decodes inputs, outputs, fee, fee rate (sat/vB), change detection, sighash types, taproot/witness scripts, and flags high-fee or missing-prevout risks. Never send private keys or seed phrases.
Esquema de entrada
{
"type": "object",
"properties": {
"psbt": {
"type": "string",
"description": "PSBT in base64 (`cHNidP8...`) or hex (`70736274ff...`)."
},
"network": {
"type": "string",
"enum": [
"mainnet",
"testnet",
"signet",
"regtest"
],
"description": "Expected network (default: mainnet)."
},
"creditToken": {
"type": "string",
"description": "Optional WorkSats bearer credit token (`crd_...`) to pay 2 credits when free daily calls are used up."
},
"x402TxHash": {
"type": "string",
"description": "Optional confirmed Base mainnet USDC transfer transaction hash (`0x...`) to pay via x402."
}
},
"required": [
"psbt"
]
}🟢check_descriptor(descriptor, network, deriveCount, creditToken, x402TxHash)
Validate a Bitcoin output descriptor (wpkh, wsh, tr, pkh, sh, multi, sortedmulti, raw, addr, combo): verifies or computes the 8-character BIP380 checksum, checks derivation paths and xpubs, and derives sample addresses and scriptPubKeys. Never send xprv, WIF, or seed phrases.
Esquema de entrada
{
"type": "object",
"properties": {
"descriptor": {
"type": "string",
"description": "Public output descriptor string (with or without `#checksum`)."
},
"network": {
"type": "string",
"enum": [
"mainnet",
"testnet",
"signet",
"regtest"
],
"description": "Network for derived addresses (default: mainnet)."
},
"deriveCount": {
"type": "integer",
"minimum": 0,
"maximum": 5,
"description": "Number of wildcard addresses to derive from index 0 (0..5, default: 3)."
},
"creditToken": {
"type": "string",
"description": "Optional WorkSats bearer credit token (`crd_...`) to pay 2 credits when free daily calls are used up."
},
"x402TxHash": {
"type": "string",
"description": "Optional confirmed Base mainnet USDC transfer transaction hash (`0x...`) to pay via x402."
}
},
"required": [
"descriptor"
]
}🟢worksats_get_task(type, id, exclude)
Fetch an open buyer-funded bounty task or a deterministic house micro-task (`descriptor_checksum_and_derive`) from the WorkSats clearinghouse (`GET /v1/tasks/next`). Solve it and call `worksats_solve_task` to mint bearer credits (`crd_...`).
Esquema de entrada
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"house",
"bounty"
],
"description": "Filter for deterministic `house` task (4 credits) or buyer-funded `bounty` task."
},
"id": {
"type": "string",
"description": "Optional specific hex bounty task ID to claim."
},
"exclude": {
"type": "string",
"description": "Optional comma-separated hex task IDs to skip."
}
}
}🟡worksats_solve_task(ticket, checksum, scriptPubKeys, addresses, address, ...)
Submit a solved WorkSats task ticket (`tsk_...`) to mint a signed bearer credit token (`crd_...`). For house tasks, provide `checksum` and `scriptPubKeys`; for bounty tasks, provide `answer` or mode-specific fields (`addresses`, `address`, `scriptPubKey`, `feeSats`, `inputCount`, `outputCount`, `data`).
Esquema de entrada
{
"type": "object",
"properties": {
"ticket": {
"type": "string",
"description": "Signed task ticket (`tsk_...`) from `worksats_get_task`."
},
"checksum": {
"type": "string",
"description": "8-character BIP380 checksum (for house or `descriptor_derive` tasks)."
},
"scriptPubKeys": {
"type": "array",
"items": {
"type": "string"
},
"description": "Derived scriptPubKey hex strings (for house or `descriptor_derive` tasks)."
},
"addresses": {
"type": "array",
"items": {
"type": "string"
},
"description": "Derived Bitcoin addresses (for `descriptor_derive` bounty tasks)."
},
"address": {
"type": "string",
"description": "Bitcoin address (for `address_script` bounty tasks)."
},
"scriptPubKey": {
"type": "string",
"description": "Hex scriptPubKey (for `address_script` bounty tasks)."
},
"feeSats": {
"type": "integer",
"description": "Decoded PSBT fee in sats (for `psbt_feerate` bounty tasks)."
},
"inputCount": {
"type": "integer",
"description": "Decoded PSBT input count (for `psbt_feerate` bounty tasks)."
},
"outputCount": {
"type": "integer",
"description": "Decoded PSBT output count (for `psbt_feerate` bounty tasks)."
},
"data": {
"type": "object",
"description": "Structured JSON solution object (for `json_schema` bounty tasks)."
},
"answer": {
"type": "string",
"description": "Canonical answer string (for `sha256` buyer-funded bounty tasks)."
}
},
"required": [
"ticket"
]
}🟢worksats_credits(action, token, tokens, amount, x402_tx_hash, ...)
Manage WorkSats bearer credits (`crd_...`): check `balance`, `split` credits to pay another bot, `rotate`/`merge` received tokens so the sender cannot double-spend, `mint` credits from L402 or x402 Base USDC, `bounty_create` to escrow credits for a verifiable task (`sha256`, `descriptor_derive`, `address_script`, `psbt_feerate`, `json_schema`), or view clearinghouse `stats`.
Esquema de entrada
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"balance",
"split",
"rotate",
"merge",
"mint",
"bounty_create",
"stats"
],
"description": "Clearinghouse operation to run."
},
"token": {
"type": "string",
"description": "Bearer credit token (`crd_...`) for `balance`, `split`, `rotate`, or `bounty_create`."
},
"tokens": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of 1..10 `crd_...` tokens for `merge`/`rotate`."
},
"amount": {
"type": "integer",
"minimum": 1,
"description": "Credits to split into a new child token (for `action=\"split\"`)."
},
"x402_tx_hash": {
"type": "string",
"description": "Confirmed Base mainnet USDC transfer txHash (`0x...`) to mint credits (`action=\"mint\"`)."
},
"reward": {
"type": "integer",
"minimum": 1,
"description": "Bounty reward in credits (for `action=\"bounty_create\"`)."
},
"fee": {
"type": "integer",
"minimum": 1,
"description": "Clearinghouse fee in credits (default: 1, for `action=\"bounty_create\"`)."
},
"prompt": {
"type": "string",
"description": "Deterministic bounty task prompt up to 2000 chars (for `action=\"bounty_create\"`)."
},
"verification_mode": {
"type": "string",
"enum": [
"sha256",
"descriptor_derive",
"address_script",
"psbt_feerate",
"json_schema"
],
"description": "Verification mode for `bounty_create` (default: `sha256`)."
},
"verification_params": {
"type": "object",
"description": "Parameters for deterministic verification (`descriptor_derive`, `address_script`, `psbt_feerate`, or `json_schema`) when buyer does not precompute `expected_sha256`."
},
"expected_sha256": {
"type": "string",
"description": "64-hex SHA-256 of the expected canonical answer (for `action=\"bounty_create\"` with `verification_mode=\"sha256\"`)."
}
},
"required": [
"action"
]
}Comunidad
Evidencia