ORDnet ORD/mcp

ORD/mcp — 45 tools, one endpoint

Wallets, inscriptions & .web3 domains on the BSV blockchain, for any AI agent. Served by ORDnet's own nodes.

● live · v-- 45 MCP tools Streamable HTTP Own nodes Bearer auth

Quickstart

Point any MCP-capable client at https://mcp.ordnet.io/mcp. Authentication is required — every request needs a bearer token (see Authentication):

mcp client config
{
  "mcpServers": {
    "ordnet": {
      "type": "http",
      "url": "https://mcp.ordnet.io/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>"
      }
    }
  }
}

Or talk to it raw, from any HTTP client — initialize, then list the tools:

bash
# Store your access token once
export ORDNET_MCP_TOKEN="<your-token>"

# 1. Initialize an MCP session
curl -s -X POST https://mcp.ordnet.io/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer $ORDNET_MCP_TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}}'

# 2. List all 45 tools
curl -s -X POST https://mcp.ordnet.io/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer $ORDNET_MCP_TOKEN" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

# Health check (public, no token needed)
curl -s https://mcp.ordnet.io/health

Machine-readable guides: skill.md (full agent instructions) · llms.txt (compact summary).

Authentication

The MCP endpoint requires a bearer token on every request; only /health is public. Requests without a valid token receive:

http
HTTP/1.1 401 Unauthorized

Access is currently granted on request while the server is in its rollout phase — contact api@ordnet.io for a token. Spend limits are enforced server-side on top of your own policies (fail-closed), so an agent can never outspend the configured caps.

No setup? Give your AI a prompt

Copy one of these into any AI that can reach MCP servers — replace <PASTE-TOKEN> with your access token:

Read https://mcp.ordnet.io/skill.md and connect to the ORDnet MCP server with my bearer token <PASTE-TOKEN>, then show me which tools you now have.
Connect to the ORDnet MCP server (https://mcp.ordnet.io/mcp, bearer token <PASTE-TOKEN>), create a BSV wallet for me, set a spend limit of 50,000 satoshis and show me the funding address.
Via the ORDnet MCP server (bearer token <PASTE-TOKEN>), check if my favorite .web3 domain name is still available — and if it is, walk me through registering it.

Agent safety, by design

Dry-run first

ordnet_tx_simulate decodes any transaction on ORDnet's own node before a satoshi moves.

Spend policies

Per-tx and per-session limits. Exceeding a limit blocks the broadcast — fail-closed.

Ordinal aware

1-sat outputs are flagged as likely inscriptions, so agents don't burn artifacts as fees.

Own rail

Broadcasts go through ORDnet's BSV node; public explorers are fallback, never authority.

Wallet 6 tools

ordnet_wallet_init

Initialize wallet from WIF private key for blockchain operations.

ParamTypeDescription
wifstringrequiredWIF (Wallet Import Format) private key. Starts with 5, K, or L.
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_wallet_init",
    "arguments": {
      "wif": "<wif>"
    }
  }
}

ordnet_wallet_init_env

Initialize wallet from environment variable (highest security tier).

ParamTypeDescription
envVarNamestringoptionalEnvironment variable name containing the WIF (default: ORDNET_WIF)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_wallet_init_env",
    "arguments": {
      "envVarName": "<envVarName>"
    }
  }
}

ordnet_wallet_status

Check current wallet initialization status and balance.

No parameters.

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_wallet_status",
    "arguments": {}
  }
}

ordnet_wallet_balance

Get balance for any BSV address.

ParamTypeDescription
addressstringoptionalBSV address to check. If not provided, uses the initialized wallet address.
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_wallet_balance",
    "arguments": {
      "address": "1EXupec98g8TDTG5cwJwH3U8V3PezvvLv8"
    }
  }
}

ordnet_wallet_utxos

Get unspent transaction outputs (UTXOs) for an address.

ParamTypeDescription
addressstringoptionalBSV address to get UTXOs for. If not provided, uses the initialized wallet address.
limitintegeroptionalMaximum number of UTXOs to return (default: 5)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_wallet_utxos",
    "arguments": {
      "address": "1EXupec98g8TDTG5cwJwH3U8V3PezvvLv8",
      "limit": 10
    }
  }
}

ordnet_wallet_clear

Clear wallet from memory. Use when done with operations.

No parameters.

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_wallet_clear",
    "arguments": {}
  }
}

Inscriptions 8 tools

ordnet_fee_estimate

Calculate fee estimate for an inscription.

ParamTypeDescription
contentSizeintegerrequiredSize of the content to inscribe in bytes
feePerBytenumberoptionalFee per byte in satoshis (default: 0.2, minimum: 0.05)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_fee_estimate",
    "arguments": {
      "contentSize": 1000,
      "feePerByte": 1000
    }
  }
}

ordnet_inscribe_prepare

Prepare an inscription transaction without broadcasting.

ParamTypeDescription
contentstringrequiredThe content to inscribe on the blockchain
contentTypestringoptionalMIME content type (default: text/html;charset=utf8)
feePerBytenumberoptionalFee per byte in satoshis (default: 0.2)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_inscribe_prepare",
    "arguments": {
      "content": "<h1>Hello blockchain</h1>"
    }
  }
}

ordnet_inscribe_broadcast

Broadcast a prepared inscription transaction to the BSV network.

ParamTypeDescription
rawHexstringrequiredRaw transaction hex to broadcast
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_inscribe_broadcast",
    "arguments": {
      "rawHex": "<raw-transaction-hex>"
    }
  }
}

ordnet_inscribe_html

Create and broadcast an HTML inscription in one step.

ParamTypeDescription
contentstringrequiredThe content to inscribe on the blockchain
feePerBytenumberoptionalFee per byte in satoshis (default: 0.2)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_inscribe_html",
    "arguments": {
      "content": "<h1>Hello blockchain</h1>",
      "feePerByte": 1000
    }
  }
}

ordnet_inscribe_json

Create and broadcast a JSON inscription in one step.

ParamTypeDescription
contentstringrequiredThe content to inscribe on the blockchain
feePerBytenumberoptionalFee per byte in satoshis (default: 0.2)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_inscribe_json",
    "arguments": {
      "content": "<h1>Hello blockchain</h1>",
      "feePerByte": 1000
    }
  }
}

ordnet_inscribe_text

Create and broadcast a plain text inscription in one step.

ParamTypeDescription
contentstringrequiredThe content to inscribe on the blockchain
feePerBytenumberoptionalFee per byte in satoshis (default: 0.2)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_inscribe_text",
    "arguments": {
      "content": "<h1>Hello blockchain</h1>",
      "feePerByte": 1000
    }
  }
}

ordnet_inscribe_binary

Prepare an inscription for BINARY content (images, audio, video, PDF) from base64 — bytes are inscribed untouched.

ParamTypeDescription
contentBase64stringrequiredBase64-encoded binary content
contentTypestringrequiredMIME type (image/png, audio/mpeg, ...)
feePerBytenumberoptionalFee per byte (default 0.15)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_inscribe_binary",
    "arguments": {}
  }
}

ordnet_bsvmap_inscribe

Claim a BSVmap tile by inscribing ".bsvmap" (text/plain), following the bitmap convention on BSV. Tiles 0-999999.

ParamTypeDescription
tilenumberrequiredBSVmap tile number (0-999999)
feePerBytenumberoptionalFee per byte (default 0.15)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_bsvmap_inscribe",
    "arguments": {}
  }
}

Domains 6 tools

ordnet_domain_check

Check if a domain name is available for registration.

ParamTypeDescription
namestringrequiredDomain name to check (without extension, e.g., "myname")
extensionstringoptionalDomain extension (default: .sats)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_domain_check",
    "arguments": {
      "name": "myagent",
      "extension": ".sats"
    }
  }
}

ordnet_domain_info

Get detailed information about a domain.

ParamTypeDescription
fullNamestringrequiredFull domain name including extension (e.g., "myname.sats")
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_domain_info",
    "arguments": {
      "fullName": "<fullName>"
    }
  }
}

ordnet_domain_register

Register a new SNS/OPNS domain on the blockchain.

ParamTypeDescription
namestringrequiredDomain name to register (without extension)
extensionstringoptionalDomain extension (default: .sats)
protocolstringoptionalRegistration protocol: sns or opns (default: sns)
feePerBytenumberoptionalFee per byte in satoshis
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_domain_register",
    "arguments": {
      "name": "myagent"
    }
  }
}

ordnet_domain_register_sns

Quick registration of an SNS domain (.sats, .btc, etc).

ParamTypeDescription
namestringrequiredDomain name to register (without extension)
extensionstringoptionalDomain extension (default: .sats)
feePerBytenumberoptionalFee per byte in satoshis
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_domain_register_sns",
    "arguments": {
      "name": "myagent"
    }
  }
}

ordnet_domain_register_opns

Quick registration of an OPNS domain.

ParamTypeDescription
namestringrequiredDomain name to register (without extension)
extensionstringoptionalDomain extension (default: .sats)
feePerBytenumberoptionalFee per byte in satoshis
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_domain_register_opns",
    "arguments": {
      "name": "myagent"
    }
  }
}

Security 4 tools

ordnet_security_encrypt_wallet

Encrypt a WIF private key with AES-256-GCM.

ParamTypeDescription
wifstringrequiredWIF private key to encrypt
passwordstringrequiredStrong password for encryption
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_security_encrypt_wallet",
    "arguments": {
      "wif": "<wif>",
      "password": "<strong-password>"
    }
  }
}

ordnet_security_tier

Check the current wallet security tier.

No parameters.

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_security_tier",
    "arguments": {}
  }
}

ordnet_security_validate_password

Check if a password meets security requirements.

ParamTypeDescription
passwordstringrequiredPassword to validate
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_security_validate_password",
    "arguments": {
      "password": "<strong-password>"
    }
  }
}

ordnet_generate_wallet

Generate a new random BSV wallet.

No parameters.

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_generate_wallet",
    "arguments": {}
  }
}

Safety 3 tools

ordnet_tx_simulate

Decode and inspect a raw transaction via ORDnet's OWN node WITHOUT broadcasting it.

ParamTypeDescription
rawHexstringrequiredRaw transaction hex to simulate (dry-run decode, nothing is broadcast)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_tx_simulate",
    "arguments": {
      "rawHex": "<raw-transaction-hex>"
    }
  }
}

ordnet_policy_set

Configure spend limits for this server session (agent safety layer).

ParamTypeDescription
maxSatsPerTxanyoptionalMax total output sats per transaction. null = remove limit. Omit = keep current.
maxSatsPerSessionanyoptionalMax cumulative output sats this session. null = remove limit. Omit = keep current.
resetSessionbooleanoptionalReset the session spend counter to zero
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_policy_set",
    "arguments": {}
  }
}

ordnet_policy_status

Show the active spend policy and session totals.

No parameters.

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_policy_status",
    "arguments": {}
  }
}

UTXO Index 2 tools

Since v2.5 the MCP reads balances and UTXOs from ORDnet's own address index (ordnet-utxo): every UTXO is individually verified by ORDnet's own BSV node. WhatsOnChain is only a connectivity fallback.

ordnet_index_health

Check the health and sync status of ORDnet's own address/UTXO index — the primary source for balance and UTXO lookups.

No parameters.

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_index_health",
    "arguments": {}
  }
}

ordnet_address_watch

Register a BSV address in the index watchlist. The index seeds it immediately (every UTXO node-verified) and then tracks it in real time — pre-register so an agent's first balance query is instant.

ParamTypeDescription
addressstringrequiredBSV address to watch
labelstringoptionalLabel for the watchlist entry (default: "mcp")
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_address_watch",
    "arguments": {
      "address": "1EXupec98g8TDTG5cwJwH3U8V3PezvvLv8"
    }
  }
}

Payments 4 tools

Native BSV payments and transfers from the agent wallet — every broadcast passes the spend policy, funded by node-verified UTXOs from ORDnet's own index.

ordnet_send

Send a plain BSV payment (P2PKH) from the initialized wallet, with optional OP_RETURN data (e.g. an x402 payment reference).

ParamTypeDescription
tostringrequiredRecipient BSV address
satoshisnumberrequiredAmount in satoshis
opReturnstringoptionalOptional OP_RETURN data
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_send",
    "arguments": {
      "to": "1EXupec98g8TDTG5cwJwH3U8V3PezvvLv8",
      "satoshis": 5000
    }
  }
}

ordnet_transfer

Transfer an inscription (ordinal, .web3/SNS/OPNS domain, BSVmap tile) to another address.

ParamTypeDescription
inscriptionTxidstringrequiredTxid of the inscription outpoint
inscriptionVoutnumberrequiredOutput index of the inscription (usually 0)
tostringrequiredRecipient BSV address
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_transfer",
    "arguments": {}
  }
}

ordnet_tx_status

Check the status and confirmations of a transaction via ORDnet's own node.

ParamTypeDescription
txidstringrequiredTransaction ID to check
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_tx_status",
    "arguments": {}
  }
}

ordnet_price

Get the current BSV price in fiat, via ORDnet's own CoinGecko proxy.

ParamTypeDescription
currenciesstringoptionalComma-separated fiat currencies (default: usd,eur)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_price",
    "arguments": {}
  }
}

Identity — BRC-100 4 tools

Cryptographic agent identity: sign and verify messages with the wallet key, and derive deterministic per-invoice payment addresses (BRC-42/29) — the foundation of the x402 payment layer.

ordnet_identity

Return the wallet's BRC-100 identity: its public key and address.

No parameters.

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_identity",
    "arguments": {}
  }
}

ordnet_sign_message

Sign an arbitrary message with the wallet's private key (BRC-100 createSignature).

ParamTypeDescription
messagestringrequiredMessage to sign
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_sign_message",
    "arguments": {}
  }
}

ordnet_verify_message

Verify a signature against a message and public key (BRC-100 verifySignature).

ParamTypeDescription
messagestringrequiredOriginal message
signaturestringrequiredSignature to verify
publicKeystringrequiredSigner public key
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_verify_message",
    "arguments": {}
  }
}

ordnet_derive_payment_address

Derive a unique, deterministic payment address for a given invoice or reference string (BRC-42/29-style key derivation).

ParamTypeDescription
invoiceIdstringrequiredInvoice or reference string
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_derive_payment_address",
    "arguments": {}
  }
}

x402 Client 2 tools

The buyer side of the x402 protocol: agents discover prices and autonomously pay for HTTP 402-paywalled resources in native sats — guarded by a per-call budget AND the spend policy.

ordnet_x402_quote

Inspect an x402-paywalled URL WITHOUT paying: returns the price, payTo address, and payment requirements. Free and read-only.

ParamTypeDescription
urlstringrequiredResource URL
methodstringoptionalGET or POST (default GET)
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_x402_quote",
    "arguments": {
      "url": "https://x402.ordnet.io/paid/chaininfo"
    }
  }
}

ordnet_x402_fetch

Consume an x402-paywalled resource in one call: detect the 402, pay in native BSV sats, retry with proof, return the resource plus receipt. Refuses quotes above your maxSats budget.

ParamTypeDescription
urlstringrequiredResource URL
methodstringoptionalGET or POST (default GET)
maxSatsnumberrequiredSpending guard in satoshis
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_x402_fetch",
    "arguments": {
      "url": "https://x402.ordnet.io/paid/chaininfo",
      "maxSats": 50
    }
  }
}

Utilities 2 tools

ordnet_info

Get information about the ORDnet MCP server.

No parameters.

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_info",
    "arguments": {}
  }
}

ordnet_validate_address

Validate a BSV address format.

ParamTypeDescription
addressstringrequiredBSV address to validate
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ordnet_validate_address",
    "arguments": {
      "address": "1EXupec98g8TDTG5cwJwH3U8V3PezvvLv8"
    }
  }
}