Wallets, inscriptions & .web3 domains on the BSV blockchain, for any AI agent. Served by ORDnet's own nodes.
Point any MCP-capable client at https://mcp.ordnet.io/mcp. Authentication is required — every request needs a bearer token (see Authentication):
{
"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:
# 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).
The MCP endpoint requires a bearer token on every request; only /health is public. Requests without a valid token receive:
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.
Copy one of these into any AI that can reach MCP servers — replace <PASTE-TOKEN> with your access token:
ordnet_tx_simulate decodes any transaction on ORDnet's own node before a satoshi moves.
Per-tx and per-session limits. Exceeding a limit blocks the broadcast — fail-closed.
1-sat outputs are flagged as likely inscriptions, so agents don't burn artifacts as fees.
Broadcasts go through ORDnet's BSV node; public explorers are fallback, never authority.
ordnet_wallet_initInitialize wallet from WIF private key for blockchain operations.
| Param | Type | Description | |
|---|---|---|---|
wif | string | required | WIF (Wallet Import Format) private key. Starts with 5, K, or L. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_wallet_init",
"arguments": {
"wif": "<wif>"
}
}
}
ordnet_wallet_init_envInitialize wallet from environment variable (highest security tier).
| Param | Type | Description | |
|---|---|---|---|
envVarName | string | optional | Environment variable name containing the WIF (default: ORDNET_WIF) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_wallet_init_env",
"arguments": {
"envVarName": "<envVarName>"
}
}
}
ordnet_wallet_statusCheck current wallet initialization status and balance.
No parameters.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_wallet_status",
"arguments": {}
}
}
ordnet_wallet_balanceGet balance for any BSV address.
| Param | Type | Description | |
|---|---|---|---|
address | string | optional | BSV address to check. If not provided, uses the initialized wallet address. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_wallet_balance",
"arguments": {
"address": "1EXupec98g8TDTG5cwJwH3U8V3PezvvLv8"
}
}
}
ordnet_wallet_utxosGet unspent transaction outputs (UTXOs) for an address.
| Param | Type | Description | |
|---|---|---|---|
address | string | optional | BSV address to get UTXOs for. If not provided, uses the initialized wallet address. |
limit | integer | optional | Maximum number of UTXOs to return (default: 5) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_wallet_utxos",
"arguments": {
"address": "1EXupec98g8TDTG5cwJwH3U8V3PezvvLv8",
"limit": 10
}
}
}
ordnet_wallet_clearClear wallet from memory. Use when done with operations.
No parameters.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_wallet_clear",
"arguments": {}
}
}
ordnet_fee_estimateCalculate fee estimate for an inscription.
| Param | Type | Description | |
|---|---|---|---|
contentSize | integer | required | Size of the content to inscribe in bytes |
feePerByte | number | optional | Fee per byte in satoshis (default: 0.2, minimum: 0.05) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_fee_estimate",
"arguments": {
"contentSize": 1000,
"feePerByte": 1000
}
}
}
ordnet_inscribe_preparePrepare an inscription transaction without broadcasting.
| Param | Type | Description | |
|---|---|---|---|
content | string | required | The content to inscribe on the blockchain |
contentType | string | optional | MIME content type (default: text/html;charset=utf8) |
feePerByte | number | optional | Fee per byte in satoshis (default: 0.2) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_inscribe_prepare",
"arguments": {
"content": "<h1>Hello blockchain</h1>"
}
}
}
ordnet_inscribe_broadcastBroadcast a prepared inscription transaction to the BSV network.
| Param | Type | Description | |
|---|---|---|---|
rawHex | string | required | Raw transaction hex to broadcast |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_inscribe_broadcast",
"arguments": {
"rawHex": "<raw-transaction-hex>"
}
}
}
ordnet_inscribe_htmlCreate and broadcast an HTML inscription in one step.
| Param | Type | Description | |
|---|---|---|---|
content | string | required | The content to inscribe on the blockchain |
feePerByte | number | optional | Fee per byte in satoshis (default: 0.2) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_inscribe_html",
"arguments": {
"content": "<h1>Hello blockchain</h1>",
"feePerByte": 1000
}
}
}
ordnet_inscribe_jsonCreate and broadcast a JSON inscription in one step.
| Param | Type | Description | |
|---|---|---|---|
content | string | required | The content to inscribe on the blockchain |
feePerByte | number | optional | Fee per byte in satoshis (default: 0.2) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_inscribe_json",
"arguments": {
"content": "<h1>Hello blockchain</h1>",
"feePerByte": 1000
}
}
}
ordnet_inscribe_textCreate and broadcast a plain text inscription in one step.
| Param | Type | Description | |
|---|---|---|---|
content | string | required | The content to inscribe on the blockchain |
feePerByte | number | optional | Fee per byte in satoshis (default: 0.2) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_inscribe_text",
"arguments": {
"content": "<h1>Hello blockchain</h1>",
"feePerByte": 1000
}
}
}
ordnet_inscribe_binaryPrepare an inscription for BINARY content (images, audio, video, PDF) from base64 — bytes are inscribed untouched.
| Param | Type | Description | |
|---|---|---|---|
contentBase64 | string | required | Base64-encoded binary content |
contentType | string | required | MIME type (image/png, audio/mpeg, ...) |
feePerByte | number | optional | Fee per byte (default 0.15) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_inscribe_binary",
"arguments": {}
}
}
ordnet_bsvmap_inscribeClaim a BSVmap tile by inscribing "
| Param | Type | Description | |
|---|---|---|---|
tile | number | required | BSVmap tile number (0-999999) |
feePerByte | number | optional | Fee per byte (default 0.15) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_bsvmap_inscribe",
"arguments": {}
}
}
ordnet_domain_checkCheck if a domain name is available for registration.
| Param | Type | Description | |
|---|---|---|---|
name | string | required | Domain name to check (without extension, e.g., "myname") |
extension | string | optional | Domain extension (default: .sats) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_domain_check",
"arguments": {
"name": "myagent",
"extension": ".sats"
}
}
}
ordnet_domain_infoGet detailed information about a domain.
| Param | Type | Description | |
|---|---|---|---|
fullName | string | required | Full domain name including extension (e.g., "myname.sats") |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_domain_info",
"arguments": {
"fullName": "<fullName>"
}
}
}
ordnet_domain_searchSearch for registered domains by name prefix.
| Param | Type | Description | |
|---|---|---|---|
query | string | required | Search query for domain names |
limit | integer | optional | Maximum results to return (default: 20) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_domain_search",
"arguments": {
"query": "ordnet",
"limit": 10
}
}
}
ordnet_domain_registerRegister a new SNS/OPNS domain on the blockchain.
| Param | Type | Description | |
|---|---|---|---|
name | string | required | Domain name to register (without extension) |
extension | string | optional | Domain extension (default: .sats) |
protocol | string | optional | Registration protocol: sns or opns (default: sns) |
feePerByte | number | optional | Fee per byte in satoshis |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_domain_register",
"arguments": {
"name": "myagent"
}
}
}
ordnet_domain_register_snsQuick registration of an SNS domain (.sats, .btc, etc).
| Param | Type | Description | |
|---|---|---|---|
name | string | required | Domain name to register (without extension) |
extension | string | optional | Domain extension (default: .sats) |
feePerByte | number | optional | Fee per byte in satoshis |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_domain_register_sns",
"arguments": {
"name": "myagent"
}
}
}
ordnet_domain_register_opnsQuick registration of an OPNS domain.
| Param | Type | Description | |
|---|---|---|---|
name | string | required | Domain name to register (without extension) |
extension | string | optional | Domain extension (default: .sats) |
feePerByte | number | optional | Fee per byte in satoshis |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_domain_register_opns",
"arguments": {
"name": "myagent"
}
}
}
ordnet_search_inscriptionsSearch for inscriptions on the BSV blockchain.
| Param | Type | Description | |
|---|---|---|---|
query | string | required | Search query |
contentType | string | optional | Filter by content type (e.g., "text/html") |
limit | integer | optional | Maximum results to return (default: 20) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_search_inscriptions",
"arguments": {
"query": "ordnet"
}
}
}
ordnet_get_inscriptionGet detailed information about a specific inscription.
| Param | Type | Description | |
|---|---|---|---|
inscriptionId | string | required | Inscription ID in format: txid_outputIndex |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_get_inscription",
"arguments": {
"inscriptionId": "740b05f528c6cfbbb9a9bd14087c811e73eb1869d777c4e09f0ded25a2b6cf5e_0"
}
}
}
ordnet_get_content_urlGet the URL to view inscription content.
| Param | Type | Description | |
|---|---|---|---|
inscriptionId | string | required | Inscription ID in format: txid_outputIndex |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_get_content_url",
"arguments": {
"inscriptionId": "740b05f528c6cfbbb9a9bd14087c811e73eb1869d777c4e09f0ded25a2b6cf5e_0"
}
}
}
ordnet_content_typesGet list of all supported content types for inscriptions.
No parameters.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_content_types",
"arguments": {}
}
}
ordnet_security_encrypt_walletEncrypt a WIF private key with AES-256-GCM.
| Param | Type | Description | |
|---|---|---|---|
wif | string | required | WIF private key to encrypt |
password | string | required | Strong password for encryption |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_security_encrypt_wallet",
"arguments": {
"wif": "<wif>",
"password": "<strong-password>"
}
}
}
ordnet_security_tierCheck the current wallet security tier.
No parameters.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_security_tier",
"arguments": {}
}
}
ordnet_security_validate_passwordCheck if a password meets security requirements.
| Param | Type | Description | |
|---|---|---|---|
password | string | required | Password to validate |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_security_validate_password",
"arguments": {
"password": "<strong-password>"
}
}
}
ordnet_generate_walletGenerate a new random BSV wallet.
No parameters.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_generate_wallet",
"arguments": {}
}
}
ordnet_tx_simulateDecode and inspect a raw transaction via ORDnet's OWN node WITHOUT broadcasting it.
| Param | Type | Description | |
|---|---|---|---|
rawHex | string | required | Raw transaction hex to simulate (dry-run decode, nothing is broadcast) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_tx_simulate",
"arguments": {
"rawHex": "<raw-transaction-hex>"
}
}
}
ordnet_policy_setConfigure spend limits for this server session (agent safety layer).
| Param | Type | Description | |
|---|---|---|---|
maxSatsPerTx | any | optional | Max total output sats per transaction. null = remove limit. Omit = keep current. |
maxSatsPerSession | any | optional | Max cumulative output sats this session. null = remove limit. Omit = keep current. |
resetSession | boolean | optional | Reset the session spend counter to zero |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_policy_set",
"arguments": {}
}
}
ordnet_policy_statusShow the active spend policy and session totals.
No parameters.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_policy_status",
"arguments": {}
}
}
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_healthCheck the health and sync status of ORDnet's own address/UTXO index — the primary source for balance and UTXO lookups.
No parameters.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_index_health",
"arguments": {}
}
}
ordnet_address_watchRegister 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.
| Param | Type | Description | |
|---|---|---|---|
address | string | required | BSV address to watch |
label | string | optional | Label for the watchlist entry (default: "mcp") |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_address_watch",
"arguments": {
"address": "1EXupec98g8TDTG5cwJwH3U8V3PezvvLv8"
}
}
}
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_sendSend a plain BSV payment (P2PKH) from the initialized wallet, with optional OP_RETURN data (e.g. an x402 payment reference).
| Param | Type | Description | |
|---|---|---|---|
to | string | required | Recipient BSV address |
satoshis | number | required | Amount in satoshis |
opReturn | string | optional | Optional OP_RETURN data |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_send",
"arguments": {
"to": "1EXupec98g8TDTG5cwJwH3U8V3PezvvLv8",
"satoshis": 5000
}
}
}
ordnet_transferTransfer an inscription (ordinal, .web3/SNS/OPNS domain, BSVmap tile) to another address.
| Param | Type | Description | |
|---|---|---|---|
inscriptionTxid | string | required | Txid of the inscription outpoint |
inscriptionVout | number | required | Output index of the inscription (usually 0) |
to | string | required | Recipient BSV address |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_transfer",
"arguments": {}
}
}
ordnet_tx_statusCheck the status and confirmations of a transaction via ORDnet's own node.
| Param | Type | Description | |
|---|---|---|---|
txid | string | required | Transaction ID to check |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_tx_status",
"arguments": {}
}
}
ordnet_priceGet the current BSV price in fiat, via ORDnet's own CoinGecko proxy.
| Param | Type | Description | |
|---|---|---|---|
currencies | string | optional | Comma-separated fiat currencies (default: usd,eur) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_price",
"arguments": {}
}
}
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_identityReturn the wallet's BRC-100 identity: its public key and address.
No parameters.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_identity",
"arguments": {}
}
}
ordnet_sign_messageSign an arbitrary message with the wallet's private key (BRC-100 createSignature).
| Param | Type | Description | |
|---|---|---|---|
message | string | required | Message to sign |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_sign_message",
"arguments": {}
}
}
ordnet_verify_messageVerify a signature against a message and public key (BRC-100 verifySignature).
| Param | Type | Description | |
|---|---|---|---|
message | string | required | Original message |
signature | string | required | Signature to verify |
publicKey | string | required | Signer public key |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_verify_message",
"arguments": {}
}
}
ordnet_derive_payment_addressDerive a unique, deterministic payment address for a given invoice or reference string (BRC-42/29-style key derivation).
| Param | Type | Description | |
|---|---|---|---|
invoiceId | string | required | Invoice or reference string |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_derive_payment_address",
"arguments": {}
}
}
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_quoteInspect an x402-paywalled URL WITHOUT paying: returns the price, payTo address, and payment requirements. Free and read-only.
| Param | Type | Description | |
|---|---|---|---|
url | string | required | Resource URL |
method | string | optional | GET or POST (default GET) |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_x402_quote",
"arguments": {
"url": "https://x402.ordnet.io/paid/chaininfo"
}
}
}
ordnet_x402_fetchConsume 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.
| Param | Type | Description | |
|---|---|---|---|
url | string | required | Resource URL |
method | string | optional | GET or POST (default GET) |
maxSats | number | required | Spending guard in satoshis |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_x402_fetch",
"arguments": {
"url": "https://x402.ordnet.io/paid/chaininfo",
"maxSats": 50
}
}
}
ordnet_infoGet information about the ORDnet MCP server.
No parameters.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_info",
"arguments": {}
}
}
ordnet_validate_addressValidate a BSV address format.
| Param | Type | Description | |
|---|---|---|---|
address | string | required | BSV address to validate |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ordnet_validate_address",
"arguments": {
"address": "1EXupec98g8TDTG5cwJwH3U8V3PezvvLv8"
}
}
}