ORDnet MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port (default 3000). | 3000 |
| TRANSPORT | No | Transport mode: stdio (default) or http. | stdio |
| ORDNET_WIF | No | Wallet private key (WIF). On HTTP transport this is the ONLY way to load a wallet. | |
| ORDNET_UTXO_URL | No | Base URL of the ordnet-utxo index. | http://127.0.0.1:7002 |
| ORDNET_MCP_AUTH_TOKEN | No | Bearer token (min. 32 chars). Required when TRANSPORT=http. Server refuses to start without it in HTTP mode. Generate with `openssl rand -hex 32`. | |
| ORDNET_POLICY_MAX_SATS_PER_TX | No | Operator hard ceiling per transaction. Recommended on HTTP transport. | |
| ORDNET_POLICY_MAX_SATS_PER_SESSION | No | Operator hard ceiling per server session. Recommended on HTTP transport. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ordnet_wallet_initA | Initialize wallet from WIF private key for blockchain operations. This is the first step before creating inscriptions. The wallet will be used for:
Security: WIF is held in memory only, not persisted. Use ordnet_wallet_init_env for production. Args:
Returns: { address: string, publicKey: string, balanceSatoshis: number } Example: ordnet_wallet_init({ wif: "L1a2b3c4d5..." }) → Wallet initialized at 1ABC... |
| ordnet_wallet_init_envA | Initialize wallet from environment variable (highest security tier). Reads WIF from environment variable instead of passing it directly. Recommended for production use. Args:
Returns: { address: string, balanceSatoshis: number } Example: export ORDNET_WIF="L1a2b3c4..." ordnet_wallet_init_env({}) → Wallet initialized |
| ordnet_wallet_statusA | Check current wallet initialization status and balance. Returns wallet address and balance if initialized. Returns: { initialized: boolean, address?: string, balanceSatoshis?: number } |
| ordnet_wallet_balanceA | Get balance for any BSV address. Args:
Returns: { address: string, confirmed: number, unconfirmed: number, total: number } |
| ordnet_wallet_utxosA | Get unspent transaction outputs (UTXOs) for an address. Args:
Returns: { utxos: [{ txid, vout, satoshis }], count: number } |
| ordnet_wallet_clearA | Clear wallet from memory. Use when done with operations. Returns: { cleared: true } |
| ordnet_fee_estimateA | Calculate fee estimate for an inscription. Service fees breakdown (per ordmail-v10-standalone-026.html):
Args:
Returns: { estimatedTxSize, minerFee, serviceFee, totalCost, breakdown } |
| ordnet_inscribe_prepareA | Prepare an inscription transaction without broadcasting. Creates a signed transaction ready for broadcast. Returns the raw hex and fee breakdown for review before broadcasting. Args:
Returns: { rawHex, txid, feeEstimate, inscriptionId } Requires: Wallet must be initialized first. |
| ordnet_inscribe_broadcastA | Broadcast a prepared inscription transaction to the BSV network. WARNING: This action is IRREVERSIBLE. The transaction will be permanently recorded on the blockchain. Args:
Returns: { txid, inscriptionId, viewUrl, transactionUrl } |
| ordnet_inscribe_htmlA | Create and broadcast an HTML inscription in one step. Convenience tool that prepares and broadcasts an HTML inscription. Args:
Returns: { txid, inscriptionId, viewUrl } Requires: Wallet must be initialized. |
| ordnet_inscribe_jsonA | Create and broadcast a JSON inscription in one step. Args:
Returns: { txid, inscriptionId, viewUrl } |
| ordnet_inscribe_textA | Create and broadcast a plain text inscription in one step. Args:
Returns: { txid, inscriptionId, viewUrl } |
| ordnet_domain_checkA | Check if a domain name is available for registration. Args:
Returns: { available: boolean, owner?: string, inscriptionId?: string } |
| ordnet_domain_infoA | Get detailed information about a domain. Args:
Returns: { name, extension, owner, inscriptionId, genesisHeight, protocol } |
| ordnet_domain_searchA | Search for registered domains by name prefix. Args:
Returns: { domains: [{ name, owner, inscriptionId }], count } |
| ordnet_domain_registerA | Register a new SNS/OPNS domain on the blockchain. Creates and broadcasts a domain registration inscription. Args:
Returns: { txid, inscriptionId, domain } Requires: Wallet must be initialized. |
| ordnet_domain_register_snsB | Quick registration of an SNS domain (.sats, .btc, etc). Args:
Returns: { txid, inscriptionId, domain } |
| ordnet_domain_register_opnsA | Quick registration of an OPNS domain. Args:
Returns: { txid, inscriptionId, domain } |
| ordnet_search_inscriptionsB | Search for inscriptions on the BSV blockchain. Args:
Returns: { inscriptions: [...], count } |
| ordnet_get_inscriptionA | Get detailed information about a specific inscription. Args:
Returns: { inscriptionId, contentType, contentSize, owner, ... } |
| ordnet_get_content_urlA | Get the URL to view inscription content. Args:
Returns: { inscriptionId, contentUrl, viewUrl, transactionUrl } |
| ordnet_validate_addressA | Validate a BSV address format. Args:
Returns: { valid: boolean, address } |
| ordnet_security_encrypt_walletA | Encrypt a WIF private key with AES-256-GCM. Use this to create an encrypted wallet that can be stored safely. The encrypted data can later be decrypted with ordnet_wallet_init with the password. Args:
Returns: { encrypted: { iv, data, tag, salt } } |
| ordnet_security_tierA | Check the current wallet security tier. Tiers (highest to lowest):
Returns: { tier, envVarSet, recommendation } |
| ordnet_security_validate_passwordA | Check if a password meets security requirements. Requirements:
Args:
Returns: { valid: boolean, errors: string[] } |
| ordnet_generate_walletA | Generate a new random BSV wallet. WARNING: Store the WIF securely! It cannot be recovered if lost. Returns: { wif, address } |
| ordnet_infoA | Get information about the ORDnet MCP server. Returns server version, capabilities, and service fee information. |
| ordnet_content_typesA | Get list of all supported content types for inscriptions. Returns: { contentTypes: [...] } |
| ordnet_tx_simulateA | Decode and inspect a raw transaction via ORDnet's OWN node WITHOUT broadcasting it. Use this BEFORE ordnet_inscribe_broadcast to verify exactly what a transaction will do: destinations, amounts, and safety warnings (e.g. 1-satoshi outputs that are likely ordinals/inscriptions). Args:
Returns: { txid, sizeBytes, outputCount, totalOutputSats, outputs[], warnings[] } |
| ordnet_policy_setA | Configure spend limits for this server session (agent safety layer). When any limit is set, every broadcast is first simulated via ORDnet's own node and BLOCKED if it would exceed a limit (fail-closed). When no limits are set, broadcasts behave exactly as before. Limits apply to the TOTAL output value of a transaction, including change back to the agent's own wallet (a conservative upper bound). Args:
Returns: The active policy after applying changes. |
| ordnet_policy_statusA | Show the active spend policy and session totals. Returns: { maxSatsPerTx, maxSatsPerSession, spentThisSession, broadcastCount } |
| ordnet_index_healthA | Check the health and sync status of ORDnet's own address/UTXO index (ordnet-utxo). This index is the PRIMARY source for balance and UTXO lookups since v2.5 — every UTXO in it has been individually verified by ORDnet's own BSV node. WhatsOnChain is only used as a connectivity fallback. Returns: { status, index_height, node_height, in_sync } |
| ordnet_address_watchA | Register a BSV address in ORDnet's own UTXO index watchlist. The index seeds the address immediately (WhatsOnChain as outpoint hint, every UTXO verified by ORDnet's own node) and then tracks it in real time via the tip-follower. Unknown addresses are also auto-registered on their first balance/UTXO query; this tool lets an agent pre-register addresses so that first query is instant. Args:
Returns: Watchlist registration result from the index. |
| ordnet_sendA | Send a plain BSV payment (P2PKH) from the initialized wallet. THE core tool for agent payments: miner fee only (0.15 sat/byte, min 200 sats), NO service fees — micropayments stay lean. Optional OP_RETURN data lets you attach a payment reference (e.g. an x402 invoice ID). Safety: spend policy (ordnet_policy_status) is enforced; 1-sat ordinal UTXOs are never used as funding. Args:
Returns: { txid, satoshis, minerFee, change, transactionUrl } |
| ordnet_transferA | Transfer an inscription (ordinal, .web3/SNS/OPNS domain, BSVmap tile) to another address. 1SatOrdinals semantics: the inscription outpoint becomes input 0 and the 1-sat output to the recipient becomes output 0 — the sat carries the inscription. The outpoint is verified as unspent via ORDnet's own node before building. Miner fee only. Args:
Returns: { txid, transferred, to, minerFee, transactionUrl } |
| ordnet_bsvmap_inscribeA | Claim a BSVmap tile by inscribing ".bsvmap" (text/plain), following the bitmap convention on BSV. Tiles 0-999999 map to the 1M-tile BSVmap grid. Note: first-is-first — if the tile was already claimed on-chain, your inscription will not make you the owner. Check bsvmap.io first. Args:
Returns prepared inscription; broadcast with ordnet_inscribe_broadcast. |
| ordnet_inscribe_binaryA | Prepare an inscription for BINARY content (images, audio, video, PDF) from base64. Bytes are inscribed untouched — use this instead of ordnet_inscribe_prepare for anything that is not text. Supported: image/png, image/jpeg, image/gif, image/webp, image/svg+xml, audio/mpeg, video/mp4, application/pdf. Args:
Returns prepared inscription; broadcast with ordnet_inscribe_broadcast. |
| ordnet_tx_statusA | Check the status and confirmations of a transaction via ORDnet's own node. Essential after ordnet_send / ordnet_inscribe_broadcast / ordnet_transfer: poll this to see your transaction confirm. Args:
Returns: { txid, found, confirmations, blockhash, blocktime } |
| ordnet_priceA | Get the current BSV price in fiat, via ORDnet's own CoinGecko proxy. Lets an agent convert satoshis to USD/EUR before spending. Args:
Returns: { bsv: { usd, eur, ... }, satsPerUsd } |
| ordnet_identityA | Return the wallet's BRC-100 identity: its public key and address. This is the agent's on-chain identity — counterparties can use the public key to verify signatures (ordnet_verify_message) and to confirm the agent controls the address. Requires an initialized wallet. Returns: { publicKey, address } |
| ordnet_sign_messageA | Sign an arbitrary message with the wallet's private key (BRC-100 createSignature). Use this to prove control of the identity key, authenticate to a service, or sign an x402 payment authorization off-chain. The private key never leaves the server. Requires an initialized wallet. Args:
Returns: { publicKey, signature, messageHash } |
| ordnet_verify_messageA | Verify a signature against a message and public key (BRC-100 verifySignature). Does NOT require a wallet — anyone can verify. Use this to check that a counterparty's message (e.g. a payment authorization or a signed quote) really came from the holder of a given public key. Args:
Returns: { valid: boolean } |
| ordnet_derive_payment_addressA | Derive a unique, deterministic payment address for a given invoice or reference string (BRC-42/29-style key derivation). Each invoice number yields a different address controlled by the same wallet, so incoming payments for different invoices are unlinkable on-chain — the foundation for clean x402 payment flows. The same invoice always derives the same address, so a payer and payee can compute it independently. Requires an initialized wallet. Args:
Returns: { address, publicKey, invoiceNumber } |
| ordnet_x402_quoteA | Inspect an x402-paywalled URL WITHOUT paying: returns the price, payTo address, and payment requirements from the HTTP 402 response. Use this to check costs before committing. Free and read-only. Args:
Returns: { isPaywalled, priceSats?, network?, payTo?, description?, accepts } |
| ordnet_x402_fetchA | Consume an x402-paywalled resource in one call: detect the 402, pay the quoted amount in native BSV sats from the loaded wallet, retry with proof, and return the resource plus the settlement receipt. Safety:
Args:
Returns: { status, body, paid?: { txid, satoshis, payTo }, receipt? } |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| inscribe-website | Guided workflow: put an HTML page permanently on the BSV blockchain |
| register-domain | Guided workflow: check availability and register an SNS/OPNS domain |
| agent-payment | Guided workflow: send a BSV payment with a reference, safely |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| service-fees | Current ORDnet service fee structure |
| domain-extensions | Supported domain extensions by chain |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ORDNET/ORDnet-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server