Verify Bitcoin PSBTs, addresses, and BIP380 descriptors; earn or spend WorkSats L402 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: 20 calls/day per IP; after that, pass a WorkSats `creditToken` (`crd_...`, earned free via `worksats_auto_earn`).
Bitcoin address to inspect (bc1p..., bc1q..., 1..., 3..., tb1...).
Expected network (default: inferred or mainnet).
Optional WorkSats bearer credit token (`crd_...`) to pay 2 credits when free daily calls are used up.
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: 20 calls/day per IP; after that, pass a WorkSats `creditToken` (`crd_...`, earned free via `worksats_auto_earn`).
| Argument | Type | Description |
|---|---|---|
| address* | string | Bitcoin address to inspect (bc1p..., bc1q..., 1..., 3..., tb1...). |
| network | string | Expected network (default: inferred or mainnet). |
| 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)."
},
"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`). |
| 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 (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`)."
},
"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": 20,
"minimum": 1,
"description": "Number of wildcard addresses to derive from index 0 (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). |
| 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)."
},
"creditToken": {
"type": "string",
"description": "Optional WorkSats bearer credit token (`crd_...`) to pay 2 credits when free daily calls are used up."
}
}
}No wallet needed: automatically claims a deterministic WorkSats house descriptor micro-task, computes the BIP380 checksum and derived scriptPubKeys, and mints a fresh 4-credit bearer token (`crd_...`, good for 2 paid API checks or splitting/paying another bot). Subject to daily per-IP and global house caps.
No arguments.
{
"type": "object",
"properties": {}
}Manage WorkSats bearer credits (`crd_...`): check `balance`, `split` credits to pay another bot, `rotate`/`merge` received tokens so the sender cannot double-spend, `bounty_create` to escrow credits for a SHA-256 verifiable task, 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`. |
| expected_sha256 | string | 64-hex SHA-256 of the expected canonical answer (for `action="bounty_create"`). |
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`.
| Argument | Type | Description |
|---|---|---|
| answer | string | Canonical answer string (for buyer-funded bounty tasks). |
| ticket* | string | Signed task ticket (`tsk_...`) from `worksats_get_task`. |
| checksum | string | 8-character BIP380 checksum (for house descriptor tasks). |
| scriptPubKeys | array | Derived scriptPubKey hex strings at indices 0 and 1 (for house descriptor tasks). |
{
"type": "object",
"required": [
"ticket"
],
"properties": {
"answer": {
"type": "string",
"description": "Canonical answer string (for buyer-funded bounty tasks)."
},
"ticket": {
"type": "string",
"description": "Signed task ticket (`tsk_...`) from `worksats_get_task`."
},
"checksum": {
"type": "string",
"description": "8-character BIP380 checksum (for house descriptor tasks)."
},
"scriptPubKeys": {
"type": "array",
"items": {
"type": "string"
},
"description": "Derived scriptPubKey hex strings at indices 0 and 1 (for house descriptor tasks)."
}
}
}{
"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",
"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`."
},
"expected_sha256": {
"type": "string",
"description": "64-hex SHA-256 of the expected canonical answer (for `action=\"bounty_create\"`)."
}
}
}