ORDnet MCP Server
ORDnet MCP Server enables AI agents to create permanent, censorship-resistant Web3 content on the Bitcoin SV blockchain using 1SatOrdinals. It provides tools for inscriptions, domain registration, payments, and agent identity management.
README
ORDnet MCP Server v3.1
Enable AI agents to create Web3 content on Bitcoin SV blockchain
Overview
ORDnet MCP Server enables AI agents (Claude, GPT, etc.) to create permanent, censorship-resistant content on the Bitcoin SV blockchain using the 1SatOrdinals protocol. This is a key component of the freedom of speech infrastructure - allowing AI to autonomously publish Web3 content.
Key Features
- 43 MCP Tools for complete blockchain content creation, payments and transfers
- BRC-100 aligned identity (v3.0):
ordnet_identity,ordnet_sign_message,ordnet_verify_message,ordnet_derive_payment_address— agent identity, off-chain signing, and per-invoice payment-address derivation as the foundation for x402 - Agent payments:
ordnet_send(P2PKH + optional OP_RETURN reference, miner fee only — x402-ready),ordnet_transferfor ordinals/domains (1SatOrdinals input-0/output-0 semantics, outpoint verified via own node) - Binary inscriptions via
ordnet_inscribe_binary(base64 → bytes untouched); BSVmap tile claims viaordnet_bsvmap_inscribe - Agent conveniences:
ordnet_tx_status(confirmations via own node),ordnet_price(via own CoinGecko proxy) - 3 MCP Prompts (
prompts/list): inscribe-website, register-domain, agent-payment - 1SatOrdinals inscriptions (HTML, JSON, text, images, etc.)
- SNS/OPNS domain registration (.sats, .btc, .bsv, etc.)
- 3-tier wallet security (env vars → encrypted → plaintext; plaintext-WIF tools are disabled on the HTTP transport)
- Agent safety layer: tx simulation via ORDnet's own node + spend limits with operator-set hard ceilings (fail-closed)
- HTTP transport with mandatory bearer auth (
ORDNET_MCP_AUTH_TOKEN, server refuses to start without it) - Fee structure identical to ordmail-v10-standalone-026.html: 396 sats service fees across 11 outputs / 10 addresses, miner fee 0.15 sat/byte (min. 200 sats)
Quick Start
Installation
git clone https://github.com/ORDNET/ORDnet-MCP-Server.git && cd ORDnet-MCP-Server
npm install && npm run build
Note: the package is not (yet) published on npm; install from source.
Usage with Claude Desktop
Add to your Claude Desktop config (~/.config/claude/claude_desktop_config.json):
{
"mcpServers": {
"ordnet": {
"command": "npx",
"args": ["@ordnet/mcp-server"],
"env": {
"ORDNET_WIF": "your-wif-private-key"
}
}
}
}
Usage with OpenClaw
{
"mcp_servers": [
{
"name": "ordnet",
"command": "node",
"args": ["/path/to/ordnet-mcp-server/dist/index.js"],
"env": {
"ORDNET_WIF": "your-wif-private-key"
}
}
]
}
Service Fees
Every inscription includes a total service fee of 396 satoshis, split
across 11 outputs exactly as defined in src/constants.ts
(SERVICE_FEE_OUTPUTS). These are the values the code actually writes:
| Label | Amount | Address |
|---|---|---|
| ordiBuilder | 11 sats | 1HdbyucjYU2yfDFXzAQt3kCdP3VvM4tjzr |
| onnoBuilder | 11 sats | 1JKcD1kx8XeJFfd32sug1MaXfruurHTCjv |
| algoBuilder | 11 sats | 1AHEUcWuCfdRnfwNsvwZhZSetXjEuAvBot |
| colleagueI | 11 sats | 1ENW3XBoAv4KQ4FuQ4MtzNkLq82eJd12PV |
| protocol | 22 sats | 15q8YQSqUa9uTh6gh4AVixxq29xkpBBP9z |
| colleagueD | 22 sats | 1GeifRjPLWTDqL1DZ2vaqorX6pqCi9PyJB |
| monitor | 33 sats | 1EXupec98g8TDTG5cwJwH3U8V3PezvvLv8 |
| indexer | 44 sats | 18RHRqQhsKKZwMnGevvnRQ8KrryAXvQUWQ |
| partner | 66 sats | 19o4rByWRvdq6zziJEfhpe4xdq5z43jYrr |
| founder | 77 sats | 1EXupec98g8TDTG5cwJwH3U8V3PezvvLv8 |
| foundation | 88 sats | 1ATEXPH6FSctbZdAz8MnXCfDpCvDnFrWma |
| Total | 396 sats | 11 outputs |
Miner fee is separate: 0.15 sat/byte, minimum 200 sats.
Note:
ordnet_send(plain payments / x402 micropayments) carries no service fee — only the miner fee — so agent-to-agent payments stay lean.
Tools Reference
Wallet Management (6 tools)
| Tool | Description |
|---|---|
ordnet_wallet_init |
Initialize wallet from WIF private key |
ordnet_wallet_init_env |
Initialize from environment variable (recommended) |
ordnet_wallet_status |
Check wallet status and balance |
ordnet_wallet_balance |
Get balance for any BSV address |
ordnet_wallet_utxos |
Get unspent transaction outputs |
ordnet_wallet_clear |
Clear wallet from memory |
Inscriptions (6 tools)
| Tool | Description |
|---|---|
ordnet_fee_estimate |
Calculate fee for an inscription |
ordnet_inscribe_prepare |
Prepare inscription (no broadcast) |
ordnet_inscribe_broadcast |
Broadcast prepared transaction |
ordnet_inscribe_html |
Quick HTML inscription |
ordnet_inscribe_json |
Quick JSON inscription |
ordnet_inscribe_text |
Quick plain text inscription |
Domains (6 tools)
| Tool | Description |
|---|---|
ordnet_domain_check |
Check domain availability |
ordnet_domain_info |
Get domain information |
ordnet_domain_search |
Search registered domains |
ordnet_domain_register |
Register SNS/OPNS domain |
ordnet_domain_register_sns |
Quick SNS registration |
ordnet_domain_register_opns |
Quick OPNS registration |
Search & Lookup (4 tools)
| Tool | Description |
|---|---|
ordnet_search_inscriptions |
Search inscriptions |
ordnet_get_inscription |
Get inscription details |
ordnet_get_content_url |
Get content URLs |
ordnet_validate_address |
Validate BSV address |
Security (4 tools)
| Tool | Description |
|---|---|
ordnet_security_encrypt_wallet |
Encrypt WIF with AES-256-GCM |
ordnet_security_tier |
Check security tier |
ordnet_security_validate_password |
Validate password strength |
ordnet_generate_wallet |
Generate new random wallet |
Payments (5 tools)
| Tool | Description |
|---|---|
ordnet_send |
Plain BSV payment (miner fee only, no service fee) |
ordnet_transfer |
Transfer an ordinal/domain to another address |
ordnet_x402_quote |
Probe an x402-paywalled URL and parse the quote (SSRF-guarded) |
ordnet_x402_fetch |
Pay an x402 resource in native sats and retrieve it |
ordnet_derive_payment_address |
Derive a BRC-42 payment address (watch-only) |
Identity & signing (3 tools)
| Tool | Description |
|---|---|
ordnet_identity |
Get the wallet's identity public key |
ordnet_sign_message |
Sign a message with the wallet key |
ordnet_verify_message |
Verify a signed message |
Utilities (11 tools)
| Tool | Description |
|---|---|
ordnet_info |
Server information |
ordnet_content_types |
List supported content types |
ordnet_tx_simulate |
Decode/simulate a raw tx via ORDnet's own node |
ordnet_policy_set |
Set spend-policy limits (within operator ceilings) |
ordnet_policy_status |
Show the active spend policy and session total |
ordnet_index_health |
UTXO index health |
ordnet_address_watch |
Add an address to the watch index |
ordnet_bsvmap_inscribe |
Inscribe a BSVmap tile |
ordnet_inscribe_binary |
Inscribe binary content (e.g. an image) |
ordnet_tx_status |
Look up a transaction's status |
ordnet_price |
BSV price in fiat |
Total: 45 tools.
Example: Create an HTML Inscription
User: Create a simple webpage saying "Hello from AI" and inscribe it on Bitcoin
AI: I'll create and inscribe this HTML content on the BSV blockchain.
1. First, let me initialize the wallet...
[ordnet_wallet_init_env]
✓ Wallet initialized at 1ABC...
2. Creating the HTML inscription...
[ordnet_inscribe_html] content="<html><body><h1>Hello from AI</h1></body></html>"
✓ Inscription successful!
- TXID: abc123...
- Inscription ID: abc123..._0
- View: https://ordnet.io/view/abc123..._0
Supported Content Types
text/html;charset=utf8- HTML web pagestext/plain;charset=utf8- Plain textapplication/json- JSON dataimage/svg+xml- SVG graphicsimage/png- PNG imagesimage/jpeg- JPEG imagesimage/gif- GIF animationsimage/webp- WebP imagesaudio/mpeg- MP3 audiovideo/mp4- MP4 videoapplication/pdf- PDF documents
Supported Domain Extensions
Universal
.sats
Chain-specific
- BTC:
.btc.ord.xbt.gm.unisat.x - BSV:
.bsv - DOGE:
.doge.shibe - LTC:
.ltc - BCH:
.bch - BELLS:
.bells - And more...
Security Tiers
| Tier | Method | Security Level |
|---|---|---|
| Environment | ORDNET_WIF env var |
⭐⭐⭐ Highest |
| Encrypted | AES-256-GCM encrypted store | ⭐⭐ Medium |
| Plaintext | Direct WIF input | ⭐ Lowest |
Recommendation: Always use environment variables in production.
Development
# Clone and install
git clone https://github.com/ordnet/mcp-server
cd mcp-server
npm install
# Build
npm run build
# Run the audit regression tests (SSRF guard + spend policy).
# These run straight from source with Node's type stripping:
node --experimental-strip-types test/audit-2026-08-11.test.mjs
# Start server (stdio)
npm start
# Start server (HTTP)
TRANSPORT=http PORT=3000 npm start
Transaction Structure
The inscription transaction follows the same output layout as the reference
inscriber (ordmail-v10-standalone-026.html). The service-fee outputs are the
11 entries of SERVICE_FEE_OUTPUTS in src/constants.ts:
Input: UTXO(s) (user funds)
Output 0: 1 sat - Inscription (OP_FALSE OP_IF "ord" ... OP_ENDIF + P2PKH)
Output 1: 0 sat - OP_RETURN "ORDnet.io"
Output 2..12: - 11 service-fee outputs (11,11,11,11,22,22,33,44,66,77,88 = 396 sats)
Output 13: Change (if > 546 sats)
The exact per-output amounts and addresses are listed under Service Fees
above and are the single source of truth (SERVICE_FEE_OUTPUTS). ordnet_send
omits the fee outputs entirely.
API Endpoints Used
- WhatsOnChain:
https://api.whatsonchain.com/v1/bsv/main - ORDnet Registry:
https://registry.ordnet.io - ORDnet Search:
https://search.ordnet.io
License
MIT © ORDnet.io / Mister HHC B.V.
Links
- Website: https://ordnet.io
- Documentation: https://docs.ordnet.io
- GitHub: https://github.com/ordnet
Environment Variables (v2.4)
| Variable | Required | Purpose |
|---|---|---|
ORDNET_WIF |
for wallet ops | Wallet private key (WIF). On HTTP transport this is the ONLY way to load a wallet. |
TRANSPORT |
no | stdio (default) or http. |
PORT |
no | HTTP port (default 3000). |
ORDNET_MCP_AUTH_TOKEN |
yes, when TRANSPORT=http | Bearer token (min. 32 chars). Server refuses to start without it. Generate: openssl rand -hex 32. |
ORDNET_POLICY_MAX_SATS_PER_TX |
recommended on http | Operator hard ceiling per transaction. ordnet_policy_set can tighten below it, never loosen above it. |
ORDNET_POLICY_MAX_SATS_PER_SESSION |
recommended on http | Operator hard ceiling per server session. |
ORDNET_UTXO_URL |
no | Base URL of the ordnet-utxo index (default http://127.0.0.1:7002). |
Known limitations
- Wallet and spend-policy state are per server process, not per client session. Run the HTTP transport for a single trusted agent/team behind the auth token, not as a public multi-tenant service.
- Balance and UTXO lookups use ORDnet's OWN address index (ordnet-utxo, port 7002, every UTXO node-verified) since v2.5; WhatsOnChain is a connectivity fallback only. New tools in v2.5:
ordnet_index_health,ordnet_address_watch. - UTXO selection skips 1-sat UTXOs as ordinal protection and combines multiple inputs when needed.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。