Verify Bitcoin PSBTs, addresses, and descriptors; earn or spend WorkSats bearer credits.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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`.
Bitcoin address to inspect (bc1p..., bc1q..., 1..., 3..., tb1...).
Expected network (default: inferred or mainnet).
Optional confirmed Base mainnet USDC transfer transaction hash (`0x...`) to pay via x402.
Optional WorkSats bearer credit token (`crd_...`) to pay 2 credits when free daily calls are used up.
Tool list last changed Oct 27, 2026.
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`.
| Argument | Type | Description |
|---|---|---|
| address* | string | Bitcoin address to inspect (bc1p..., bc1q..., 1..., 3..., tb1...). |
| network | string | Expected network (default: inferred or mainnet). |
| x402TxHash | string | Optional confirmed Base mainnet USDC transfer transaction hash (`0x...`) to pay via x402. |
| creditToken | string | Optional WorkSats bearer credit token (`crd_...`) to pay 2 credits when free daily calls are used up. |
{
"type": "object",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "Bitcoin address to inspect (bc1p..., bc1q..., 1..., 3..., tb1...)."
},
"network": {
"enum": [
"mainnet",
"testnet",
"signet",
"regtest"
],
"type": "string",
"description": "Expected network (default: inferred or mainnet)."
},
"x402TxHash": {
"type": "string",
"description": "Optional confirmed Base mainnet USDC transfer transaction hash (`0x...`) to pay via x402."
},
"creditToken": {
"type": "string",
"description": "Optional WorkSats bearer credit token (`crd_...`) to pay 2 credits when free daily calls are used up."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| network | string | Network for derived addresses (default: mainnet). |
| descriptor* | string | Public output descriptor string (with or without `#checksum`). |
| x402TxHash | string | Optional confirmed Base mainnet USDC transfer transaction hash (`0x...`) to pay via x402. |
| creditToken | string | Optional WorkSats bearer credit token (`crd_...`) to pay 2 credits when free daily calls are used up. |
| deriveCount | integer | Number of wildcard addresses to derive from index 0 (0..5, default: 3). |
{
"type": "object",
"required": [
"descriptor"
],
"properties": {
"network": {
"enum": [
"mainnet",
"testnet",
"signet",
"regtest"
],
"type": "string",
"description": "Network for derived addresses (default: mainnet)."
},
"descriptor": {
"type": "string",
"description": "Public output descriptor string (with or without `#checksum`)."
},
"x402TxHash": {
"type": "string",
"description": "Optional confirmed Base mainnet USDC transfer transaction hash (`0x...`) to pay via x402."
},
"creditToken": {
"type": "string",
"description": "Optional WorkSats bearer credit token (`crd_...`) to pay 2 credits when free daily calls are used up."
},
"deriveCount": {
"type": "integer",
"maximum": 5,
"minimum": 0,
"description": "Number of wildcard addresses to derive from index 0 (0..5, default: 3)."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| psbt* | string | PSBT in base64 (`cHNidP8...`) or hex (`70736274ff...`). |
| network | string | Expected network (default: mainnet). |
| x402TxHash | string | Optional confirmed Base mainnet USDC transfer transaction hash (`0x...`) to pay via x402. |
| creditToken | string | Optional WorkSats bearer credit token (`crd_...`) to pay 2 credits when free daily calls are used up. |
{
"type": "object",
"required": [
"psbt"
],
"properties": {
"psbt": {
"type": "string",
"description": "PSBT in base64 (`cHNidP8...`) or hex (`70736274ff...`)."
},
"network": {
"enum": [
"mainnet",
"testnet",
"signet",
"regtest"
],
"type": "string",
"description": "Expected network (default: mainnet)."
},
"x402TxHash": {
"type": "string",
"description": "Optional confirmed Base mainnet USDC transfer transaction hash (`0x...`) to pay via x402."
},
"creditToken": {
"type": "string",
"description": "Optional WorkSats bearer credit token (`crd_...`) to pay 2 credits when free daily calls are used up."
}
}
}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`.
| Argument | Type | Description |
|---|---|---|
| fee | integer | Clearinghouse fee in credits (default: 1, for `action="bounty_create"`). |
| token | string | Bearer credit token (`crd_...`) for `balance`, `split`, `rotate`, or `bounty_create`. |
| action* | string | Clearinghouse operation to run. |
| amount | integer | Credits to split into a new child token (for `action="split"`). |
| prompt | string | Deterministic bounty task prompt up to 2000 chars (for `action="bounty_create"`). |
| reward | integer | Bounty reward in credits (for `action="bounty_create"`). |
| tokens | array | Array of 1..10 `crd_...` tokens for `merge`/`rotate`. |
| x402_tx_hash | string | Confirmed Base mainnet USDC transfer txHash (`0x...`) to mint credits (`action="mint"`). |
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_...`).
| Argument | Type | Description |
|---|---|---|
| id | string | Optional specific hex bounty task ID to claim. |
| type | string | Filter for deterministic `house` task (4 credits) or buyer-funded `bounty` task. |
| exclude | string | Optional comma-separated hex task IDs to skip. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Optional specific hex bounty task ID to claim."
},
"type": {
"enum": [
"house",
"bounty"
],
"type": "string",
"description": "Filter for deterministic `house` task (4 credits) or buyer-funded `bounty` task."
},
"exclude": {
"type": "string",
"description": "Optional comma-separated hex task IDs to skip."
}
}
}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`).
| Argument | Type | Description |
|---|---|---|
| data | object | Structured JSON solution object (for `json_schema` bounty tasks). |
| answer | string | Canonical answer string (for `sha256` buyer-funded bounty tasks). |
| ticket* | string | Signed task ticket (`tsk_...`) from `worksats_get_task`. |
| address | string | Bitcoin address (for `address_script` bounty tasks). |
| feeSats | integer | Decoded PSBT fee in sats (for `psbt_feerate` bounty tasks). |
| checksum | string | 8-character BIP380 checksum (for house or `descriptor_derive` tasks). |
| addresses | array | Derived Bitcoin addresses (for `descriptor_derive` bounty tasks). |
| inputCount | integer | Decoded PSBT input count (for `psbt_feerate` bounty tasks). |
| expected_sha256 | string | 64-hex SHA-256 of the expected canonical answer (for `action="bounty_create"` with `verification_mode="sha256"`). |
| verification_mode | string | Verification mode for `bounty_create` (default: `sha256`). |
| verification_params | object | Parameters for deterministic verification (`descriptor_derive`, `address_script`, `psbt_feerate`, or `json_schema`) when buyer does not precompute `expected_sha256`. |
{
"type": "object",
"required": [
"action"
],
"properties": {
"fee": {
"type": "integer",
"minimum": 1,
"description": "Clearinghouse fee in credits (default: 1, for `action=\"bounty_create\"`)."
},
"token": {
"type": "string",
"description": "Bearer credit token (`crd_...`) for `balance`, `split`, `rotate`, or `bounty_create`."
},
"action": {
"enum": [
"balance",
"split",
"rotate",
"merge",
"mint",
"bounty_create",
"stats"
],
"type": "string",
"description": "Clearinghouse operation to run."
},
"amount": {
"type": "integer",
"minimum": 1,
"description": "Credits to split into a new child token (for `action=\"split\"`)."
},
"prompt": {
"type": "string",
"description": "Deterministic bounty task prompt up to 2000 chars (for `action=\"bounty_create\"`)."
},
"reward": {
"type": "integer",
"minimum": 1,
"description": "Bounty reward in credits (for `action=\"bounty_create\"`)."
},
"tokens": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of 1..10 `crd_...` tokens for `merge`/`rotate`."
},
"x402_tx_hash": {
"type": "string",
"description": "Confirmed Base mainnet USDC transfer txHash (`0x...`) to mint credits (`action=\"mint\"`)."
},
"expected_sha256": {
"type": "string",
"description": "64-hex SHA-256 of the expected canonical answer (for `action=\"bounty_create\"` with `verification_mode=\"sha256\"`)."
},
"verification_mode": {
"enum": [
"sha256",
"descriptor_derive",
"address_script",
"psbt_feerate",
"json_schema"
],
"type": "string",
"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`."
}
}
}| outputCount |
| integer |
| Decoded PSBT output count (for `psbt_feerate` bounty tasks). |
| scriptPubKey | string | Hex scriptPubKey (for `address_script` bounty tasks). |
| scriptPubKeys | array | Derived scriptPubKey hex strings (for house or `descriptor_derive` tasks). |
{
"type": "object",
"required": [
"ticket"
],
"properties": {
"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)."
},
"ticket": {
"type": "string",
"description": "Signed task ticket (`tsk_...`) from `worksats_get_task`."
},
"address": {
"type": "string",
"description": "Bitcoin address (for `address_script` bounty tasks)."
},
"feeSats": {
"type": "integer",
"description": "Decoded PSBT fee in sats (for `psbt_feerate` bounty tasks)."
},
"checksum": {
"type": "string",
"description": "8-character BIP380 checksum (for house or `descriptor_derive` tasks)."
},
"addresses": {
"type": "array",
"items": {
"type": "string"
},
"description": "Derived Bitcoin addresses (for `descriptor_derive` 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)."
},
"scriptPubKey": {
"type": "string",
"description": "Hex scriptPubKey (for `address_script` bounty tasks)."
},
"scriptPubKeys": {
"type": "array",
"items": {
"type": "string"
},
"description": "Derived scriptPubKey hex strings (for house or `descriptor_derive` tasks)."
}
}
}