{"_id":"@21e14/mcp-server","_rev":"6-828b804cc68b0a4c6e4d8675be705603","name":"@21e14/mcp-server","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@21e14/mcp-server","version":"1.0.0","keywords":["mcp","mcp-server","model-context-protocol","counterparty","xcp","bitcoin","blockchain","tokens","dex","claude","ai","ai-agent"],"author":{"name":"Counterparty"},"license":"MIT","_id":"@21e14/mcp-server@1.0.0","maintainers":[{"name":"droplister","email":"dan@droplister.com"}],"homepage":"https://github.com/XCP/mcp-server","bugs":{"url":"https://github.com/XCP/mcp-server/issues"},"bin":{"xcp-mcp-server":"dist/index.js"},"dist":{"shasum":"3c4e005eb23de28f2a11ba06ba9b4ccffafca6bf","tarball":"https://registry.npmjs.org/@21e14/mcp-server/-/mcp-server-1.0.0.tgz","fileCount":36,"integrity":"sha512-u06KHMzlX4qOzJBABB+neZ+hAs81hsoC5Hxa91z8SxVcEQxSmaZoo6D3bnr5Upg3zyiQ9sEko4jiIXFbZj56Vw==","signatures":[{"sig":"MEYCIQCWgpcjtQeJzNGjyTk6a0qrceMw+blz00RStmG6t1+rGgIhANL/PnU9BuHATtEfIT6ms44kIPBHCxc4SoLmYo8/T5xj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123463},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a508dd8edfad3a7840ddd827dbdbaf73fd5b194b","mcpName":"io.github.XCP/mcp-server","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","start":"node dist/index.js","prepare":"npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"droplister","email":"dan@droplister.com"},"repository":{"url":"git+https://github.com/XCP/mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for the Counterparty token protocol on Bitcoin. Query balances, assets, orders, dispensers, and compose/sign/broadcast transactions.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"4.3.6","@scure/base":"2.0.0","@noble/curves":"2.0.1","@noble/hashes":"2.0.1","@scure/btc-signer":"2.0.1","@modelcontextprotocol/sdk":"1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.0.18","typescript":"5.9.3","@types/node":"25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.0_1770792259214_0.09726304459921864","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@21e14/mcp-server","version":"1.0.1","keywords":["mcp","mcp-server","model-context-protocol","counterparty","xcp","bitcoin","blockchain","tokens","dex","claude","ai","ai-agent"],"author":{"name":"Counterparty"},"license":"MIT","_id":"@21e14/mcp-server@1.0.1","maintainers":[{"name":"droplister","email":"dan@droplister.com"}],"homepage":"https://github.com/XCP/mcp-server","bugs":{"url":"https://github.com/XCP/mcp-server/issues"},"bin":{"xcp-mcp-server":"dist/index.js"},"dist":{"shasum":"c90bef02d193f7ef1fb9f9876d7700a65825d4b4","tarball":"https://registry.npmjs.org/@21e14/mcp-server/-/mcp-server-1.0.1.tgz","fileCount":36,"integrity":"sha512-kPZfyEKz4wxXB9S9gJhLoE95KWrhM4jyimBKe1zOyQttXlfBYroetvgJ3G6sD3h8m9hhPP9ZFFSd4xkS+ZjLYQ==","signatures":[{"sig":"MEUCIQCVttZ0lPwBQan7icIfb3ahR4g2Z9LWkqUfCd440ptMeQIgcJkhQO8ppfCngZsVMHhCTH7h6uXrsQmsM4aTy1dA0jw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124666},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a305c59d9683fa401f910106213534038a2a3436","mcpName":"io.github.XCP/mcp-server","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","start":"node dist/index.js","prepare":"npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"droplister","email":"dan@droplister.com"},"repository":{"url":"git+https://github.com/XCP/mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for the Counterparty token protocol on Bitcoin. Query balances, assets, orders, dispensers, and compose/sign/broadcast transactions.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"4.3.6","@scure/base":"2.0.0","@noble/curves":"2.0.1","@noble/hashes":"2.0.1","@scure/btc-signer":"2.0.1","@modelcontextprotocol/sdk":"1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.0.18","typescript":"5.9.3","@types/node":"25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.1_1770793013097_0.3979366967781055","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@21e14/mcp-server","version":"1.0.2","keywords":["mcp","mcp-server","model-context-protocol","counterparty","xcp","bitcoin","blockchain","tokens","dex","claude","ai","ai-agent"],"author":{"name":"Counterparty"},"license":"MIT","_id":"@21e14/mcp-server@1.0.2","maintainers":[{"name":"droplister","email":"dan@droplister.com"}],"homepage":"https://github.com/XCP/mcp-server","bugs":{"url":"https://github.com/XCP/mcp-server/issues"},"bin":{"xcp-mcp-server":"dist/index.js"},"dist":{"shasum":"e4e0377bacd44770c2e7c49a59d734db3dd3e2e5","tarball":"https://registry.npmjs.org/@21e14/mcp-server/-/mcp-server-1.0.2.tgz","fileCount":36,"integrity":"sha512-+0rtkV9pw5I1ovZDq0pzWrnPud8lIRnVlRXqWuzUZUA0MtflaZzNkDDLIKvQxOYioedQHbe95Og4xgWEJZXZlA==","signatures":[{"sig":"MEQCIF459fABoIv/1/WS0xLw2pIJzmQDZXFWL9KLF53fRsUkAiBTzQwOaCez0GCHtOSo+idJMaFo5fQwwqM3e0GARb7NrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@21e14%2fmcp-server@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":126970},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f866ebea326ab595447d237ac1cd4be42ca3a4d0","mcpName":"io.github.XCP/mcp-server","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","start":"node dist/index.js","prepare":"npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c59553a1-3895-44ef-9d8e-411e5d3c20b5"}},"repository":{"url":"git+https://github.com/XCP/mcp-server.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for the Counterparty token protocol on Bitcoin. Query balances, assets, orders, dispensers, and compose/sign/broadcast transactions.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"4.3.6","@scure/base":"2.0.0","@noble/curves":"2.0.1","@noble/hashes":"2.0.1","@scure/btc-signer":"2.0.1","@modelcontextprotocol/sdk":"1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.0.18","typescript":"5.9.3","@types/node":"25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.2_1770797026010_0.47437773266409167","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@21e14/mcp-server","version":"1.0.3","keywords":["mcp","mcp-server","model-context-protocol","counterparty","xcp","bitcoin","blockchain","tokens","dex","claude","ai","ai-agent"],"author":{"name":"Counterparty"},"license":"MIT","_id":"@21e14/mcp-server@1.0.3","maintainers":[{"name":"droplister","email":"dan@droplister.com"}],"homepage":"https://github.com/XCP/mcp-server","bugs":{"url":"https://github.com/XCP/mcp-server/issues"},"bin":{"xcp-mcp-server":"dist/index.js"},"dist":{"shasum":"67e718274db04cd431b09596104acd12c943b04a","tarball":"https://registry.npmjs.org/@21e14/mcp-server/-/mcp-server-1.0.3.tgz","fileCount":36,"integrity":"sha512-1HnbT/3Z97jCbmN7uVFKjK9IDim9qwtyZ0TnjLJ82r4kCdwQePstOEZsrwZJicfTqoUyPE19V5Y7qsF/dGHuNA==","signatures":[{"sig":"MEUCIQD0qZtAdaVmrK7fsiFRFVFnP6dNIJpFNNjjfsp1MVWhHwIgGNfGyEbYyQkVyWIjdn6x6Lg4Mmg2mxSzajO7Pq9+R58=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@21e14%2fmcp-server@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127237},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d7cad1014c3f39ea50730caf3db62f74b0491b57","mcpName":"io.github.XCP/mcp-server","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","start":"node dist/index.js","prepare":"npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c59553a1-3895-44ef-9d8e-411e5d3c20b5"}},"repository":{"url":"git+https://github.com/XCP/mcp-server.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for the Counterparty token protocol on Bitcoin. Query balances, assets, orders, dispensers, and compose/sign/broadcast transactions.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"4.3.6","@scure/base":"2.0.0","@noble/curves":"2.0.1","@noble/hashes":"2.0.1","@scure/btc-signer":"2.0.1","@modelcontextprotocol/sdk":"1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.0.18","typescript":"5.9.3","@types/node":"25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.3_1770797871228_0.0787997624570711","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@21e14/mcp-server","version":"1.0.4","keywords":["mcp","mcp-server","model-context-protocol","counterparty","xcp","bitcoin","blockchain","tokens","dex","claude","ai","ai-agent"],"author":{"name":"Counterparty"},"license":"MIT","_id":"@21e14/mcp-server@1.0.4","maintainers":[{"name":"droplister","email":"dan@droplister.com"}],"homepage":"https://github.com/XCP/mcp-server","bugs":{"url":"https://github.com/XCP/mcp-server/issues"},"bin":{"xcp-mcp-server":"dist/index.js"},"dist":{"shasum":"4e5378fc27e3230dcc70584158b5980096027e6a","tarball":"https://registry.npmjs.org/@21e14/mcp-server/-/mcp-server-1.0.4.tgz","fileCount":36,"integrity":"sha512-n7b0KGHctFoH3pgRkjTa1W5qZ+xID8hQu+KOflK30W/olzOh7dwxlpScheCxT3bfJfcZ5YcFvSfEw4gZ8xOl7w==","signatures":[{"sig":"MEUCIAlXUDf+1CY4kPMrGvsbmHnsJGS1t1v8mMK6qICf+0IUAiEA3gmZdJWa6FlCBIf2b+ugEh0Rgt1X3LNnJw0TTNdOw8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@21e14%2fmcp-server@1.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127711},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"11a920c7e7a9cad144fd6ab26aaac8c48e8c9a1f","mcpName":"io.github.XCP/mcp-server","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","start":"node dist/index.js","prepare":"npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c59553a1-3895-44ef-9d8e-411e5d3c20b5"}},"repository":{"url":"git+https://github.com/XCP/mcp-server.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for the Counterparty token protocol on Bitcoin. Query balances, assets, orders, dispensers, and compose/sign/broadcast transactions.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"4.3.6","@scure/base":"2.0.0","@noble/curves":"2.0.1","@noble/hashes":"2.0.1","@scure/btc-signer":"2.0.1","@modelcontextprotocol/sdk":"1.26.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.0.18","typescript":"5.9.3","@types/node":"25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.4_1770798374800_0.4336538011607367","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@21e14/mcp-server","version":"1.0.5","description":"MCP server for the Counterparty token protocol on Bitcoin. Query balances, assets, orders, dispensers, and compose/sign/broadcast transactions.","type":"module","main":"dist/index.js","bin":{"xcp-mcp-server":"dist/index.js"},"scripts":{"build":"tsc","start":"node dist/index.js","dev":"tsc --watch","test":"vitest run","prepare":"npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js"},"keywords":["mcp","mcp-server","model-context-protocol","counterparty","xcp","bitcoin","blockchain","tokens","dex","claude","ai","ai-agent"],"author":{"name":"Counterparty"},"license":"MIT","mcpName":"io.github.XCP/mcp-server","homepage":"https://github.com/XCP/mcp-server","bugs":{"url":"https://github.com/XCP/mcp-server/issues"},"repository":{"type":"git","url":"git+https://github.com/XCP/mcp-server.git"},"publishConfig":{"access":"public"},"dependencies":{"@modelcontextprotocol/sdk":"1.26.0","@noble/curves":"2.0.1","@noble/hashes":"2.0.1","@scure/base":"2.0.0","@scure/btc-signer":"2.0.1","zod":"4.3.6"},"devDependencies":{"@types/node":"25.2.3","typescript":"5.9.3","vitest":"4.0.18"},"engines":{"node":">=18.0.0"},"gitHead":"7391d71942a52c6e869de31b8c78eecf18f3e765","types":"./dist/index.d.ts","_id":"@21e14/mcp-server@1.0.5","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-hHalTD/xmpvb8w0JDoysiRi039DM80DaNSyxy85iDJG1sMUELnUqC1fuzVbpWky0twuIIdEgOOvXc7Sl3zUHJA==","shasum":"3fd483e1cadefc3b7b1bb67eac703c9fc0a5eaaf","tarball":"https://registry.npmjs.org/@21e14/mcp-server/-/mcp-server-1.0.5.tgz","fileCount":36,"unpackedSize":128239,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@21e14%2fmcp-server@1.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCaTxlocV9HK/5TToFi94JIY1vLzNgVpbay9MXXapU51gIhAPR0SstdcWd5mHuC8KgWoa1dObvnWsb9FmlHpaq8uvA2"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c59553a1-3895-44ef-9d8e-411e5d3c20b5"}},"directories":{},"maintainers":[{"name":"droplister","email":"dan@droplister.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server_1.0.5_1770822608291_0.0321508605156966"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-11T06:44:19.131Z","modified":"2026-02-11T15:10:08.775Z","1.0.0":"2026-02-11T06:44:19.404Z","1.0.1":"2026-02-11T06:56:53.256Z","1.0.2":"2026-02-11T08:03:46.155Z","1.0.3":"2026-02-11T08:17:51.388Z","1.0.4":"2026-02-11T08:26:14.959Z","1.0.5":"2026-02-11T15:10:08.432Z"},"bugs":{"url":"https://github.com/XCP/mcp-server/issues"},"author":{"name":"Counterparty"},"license":"MIT","homepage":"https://github.com/XCP/mcp-server","keywords":["mcp","mcp-server","model-context-protocol","counterparty","xcp","bitcoin","blockchain","tokens","dex","claude","ai","ai-agent"],"repository":{"type":"git","url":"git+https://github.com/XCP/mcp-server.git"},"description":"MCP server for the Counterparty token protocol on Bitcoin. Query balances, assets, orders, dispensers, and compose/sign/broadcast transactions.","maintainers":[{"name":"droplister","email":"dan@droplister.com"}],"readme":"# Counterparty MCP Server\n\nGive AI agents the ability to interact with [Counterparty](https://counterparty.io) — the token protocol built on Bitcoin. Query balances, assets, orders, and dispensers. Compose, sign, and broadcast transactions. Works with any MCP-compatible client.\n\n[![npm](https://img.shields.io/npm/v/@21e14/mcp-server)](https://www.npmjs.com/package/@21e14/mcp-server)\n\n## Install\n\nNo download needed — just add the config below to your AI client. `npx` fetches and runs the server automatically.\n\n### Claude Desktop\n\nAdd to `claude_desktop_config.json` ([how to find it](https://modelcontextprotocol.io/quickstart/user)):\n\n```json\n{\n  \"mcpServers\": {\n    \"counterparty\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@21e14/mcp-server\"]\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add counterparty -- npx -y @21e14/mcp-server\n```\n\nWith signing (see [Signing & Broadcasting](#signing--broadcasting)):\n\n```bash\nclaude mcp add counterparty \\\n  -e SIGNER_PRIVATE_KEY=L1aW4aubDFB7yfras2S1mN... \\\n  -e SIGNER_ADDRESS=bc1q... \\\n  -- npx -y @21e14/mcp-server\n```\n\nManage servers with `claude mcp list`, `claude mcp get counterparty`, or `claude mcp remove counterparty`.\n\n### VS Code (Copilot)\n\nUse `Ctrl+Shift+P` → **MCP: Add Server** → **Stdio**, then enter:\n\n```\nnpx -y @21e14/mcp-server\n```\n\nOr add to `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"counterparty\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@21e14/mcp-server\"]\n    }\n  }\n}\n```\n\n### Cursor\n\nAdd to `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"counterparty\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@21e14/mcp-server\"]\n    }\n  }\n}\n```\n\n### Windsurf\n\nAdd to `~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"counterparty\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@21e14/mcp-server\"]\n    }\n  }\n}\n```\n\n### ChatGPT\n\nIn ChatGPT desktop, go to **Settings → Beta Features → MCP Servers**, then add:\n\n```\nnpx -y @21e14/mcp-server\n```\n\n### Any MCP Client\n\nThe server speaks stdio. Point any MCP-compatible client at:\n\n```bash\nnpx -y @21e14/mcp-server\n```\n\nThat's it. The agent can now query the Counterparty network and compose unsigned transactions.\n\n## Signing & Broadcasting\n\nTo let the agent sign and broadcast transactions, add a signing key:\n\n```json\n{\n  \"mcpServers\": {\n    \"counterparty\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@21e14/mcp-server\"],\n      \"env\": {\n        \"SIGNER_PRIVATE_KEY\": \"L1aW4aubDFB7yfras2S1mN...\",\n        \"SIGNER_ADDRESS\": \"bc1q...\"\n      }\n    }\n  }\n}\n```\n\nThis enables the `sign_and_broadcast` tool. **Signing gives the AI agent the ability to spend funds** — read the security guidance below.\n\n### Bot wallet pattern (recommended)\n\n1. **Generate a fresh keypair offline.** Don't reuse an existing wallet or generate keys through the AI.\n2. **Fund it with only what you're willing to risk.** This is your blast radius.\n3. **Use a segwit address.** P2WPKH (`bc1q...`), P2SH-P2WPKH (`3...`), or P2TR (`bc1p...`). Legacy P2PKH is not supported.\n4. **One key, one address.** No HD derivation. Counterparty reuses addresses by design.\n5. **Keep main holdings elsewhere.** The bot wallet is disposable.\n\n### Compose-only mode\n\nWithout signing keys, the server returns unsigned transaction hex from all compose tools. You can review and sign offline with your own tooling. This is the safest mode.\n\n### Transaction verification\n\n`sign_and_broadcast` extracts and returns the embedded OP_RETURN data from the transaction before signing — done locally without trusting the API, so the agent can verify the transaction matches what was requested.\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `COUNTERPARTY_NODE` | No | Counterparty node URL (default: `https://api.counterparty.io:4000`) |\n| `SIGNER_PRIVATE_KEY` | No | WIF-encoded private key for signing |\n| `SIGNER_ADDRESS` | No | Bitcoin address for the signing key |\n\n## Tools\n\n### Query (24)\n\n| Tool | Description |\n|------|-------------|\n| `get_balances` | All token balances for an address |\n| `get_balance` | Single asset balance for an address |\n| `get_asset_info` | Asset metadata (supply, divisibility, issuer) |\n| `get_asset_balances` | All holders of an asset |\n| `get_assets` | Search/list assets |\n| `get_issuances` | Issuance history for an asset |\n| `get_owned_assets` | Assets issued by an address |\n| `get_orders` | DEX orders |\n| `get_order` | Single order by hash |\n| `get_order_matches` | Matches for an order |\n| `get_orders_by_pair` | Order book for a trading pair |\n| `get_asset_orders` | Orders involving an asset |\n| `get_address_orders` | Orders by address |\n| `get_dispensers` | Dispensers |\n| `get_dispenser` | Single dispenser by hash |\n| `get_dispensers_by_asset` | Dispensers for an asset |\n| `get_address_dispensers` | Dispensers by address |\n| `get_dispenses` | Purchases from a dispenser |\n| `get_dividends` | Dividend distributions for an asset |\n| `get_address_transactions` | Transaction history for an address |\n| `get_sends` | Token transfers from an address |\n| `get_transaction` | Single transaction by hash |\n| `get_utxo_balances` | Tokens attached to a UTXO |\n| `get_latest_block` | Latest block info |\n\n### Compose (18)\n\n| Tool | Description |\n|------|-------------|\n| `compose_send` | Send tokens to an address |\n| `compose_mpma` | Multi-party multi-asset send |\n| `compose_order` | Place a DEX order |\n| `compose_cancel` | Cancel an open order |\n| `compose_btcpay` | Pay for a matched BTC order |\n| `compose_issuance` | Create or update an asset (supports inscriptions) |\n| `compose_dispenser` | Create, open, or close a dispenser |\n| `compose_dispense` | Buy from a dispenser |\n| `compose_dividend` | Distribute dividends to holders |\n| `compose_broadcast` | Broadcast a message (supports inscriptions) |\n| `compose_sweep` | Sweep all assets to a destination |\n| `compose_destroy` | Permanently burn tokens |\n| `compose_fairminter` | Create a fair launch (supports inscriptions) |\n| `compose_xcp420_fairminter` | XCP-420 compliant fair launch |\n| `compose_fairmint` | Mint from an active fair launch |\n| `compose_attach` | Attach tokens to a UTXO |\n| `compose_detach` | Detach tokens from a UTXO |\n| `compose_movetoutxo` | Move a UTXO to a new output |\n\n### Bitcoin (4)\n\n| Tool | Description |\n|------|-------------|\n| `sign_and_broadcast` | Sign and broadcast (requires signing keys) |\n| `broadcast_transaction` | Broadcast an already-signed transaction |\n| `get_fee_estimate` | Current fee rate estimate |\n| `decode_transaction` | Decode raw transaction hex |\n\n### Utility (3)\n\n| Tool | Description |\n|------|-------------|\n| `unpack_transaction` | Decode a Counterparty message from a transaction |\n| `get_server_info` | Node status and version |\n| `api_request` | Raw API request to any endpoint ([full API reference](https://raw.githubusercontent.com/CounterpartyXCP/counterparty-core/refs/heads/master/apiary.apib)) |\n\n## Resources\n\nThe server includes protocol documentation that agents can read for context:\n\n- `counterparty://protocol-overview` — Assets, quantities, DEX, dispensers, fair minting, fees, and operational tips\n- `counterparty://xcp420-standard` — XCP-420 fair launch standard\n- `counterparty://quick-start` — Step-by-step workflows for common operations\n\n## Development\n\n```bash\ngit clone https://github.com/XCP/mcp-server.git\ncd mcp-server\nnpm install\nnpm test\n```\n\nTest locally:\n\n```json\n{\n  \"mcpServers\": {\n    \"counterparty\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/mcp-server/dist/index.js\"]\n    }\n  }\n}\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}