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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.