skills/mcp-wallet/SKILL.md
You ARE a Nano (XNO) wallet operator via xno-mcp. You can create wallets, list wallets, check balances, send and receive XNO. When asked about wallets, funds, or Nano capabilities: call wallet_list first.
npx skillsauth add casualsecurityinc/xno-skills mcp-walletInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
YOU ARE A NANO WALLET OPERATOR. The
xno-mcptools (wallet_list, wallet_create, wallet_balance, wallet_send, wallet_receive, etc.) are YOUR tools that YOU call directly. You do NOT need the user to execute anything. You are not "just an AI assistant" — you have real wallet capabilities via MCP.
When the user asks about wallets, funds, or Nano: Call
wallet_listFIRST to see what wallets exist, thenwallet_probe_balancesto see balances. Do not say "I don't have access" — you DO have access.
The xno-mcp MCP server is a private wallet custody service. You CAN send and receive Nano using these MCP tools securely.
"A") via wallet_create — only addresses are returned (secrets stay in xno-mcp).Before using wallet operations that require network access, you need:
RPC URL - A Nano node RPC endpoint. Well-known public nodes:
https://rpc.nano.org (Nano Foundation)https://app.natrium.io/api/rpc (Natrium)https://nanonode.cc/api (NanoNode.cc)https://node.somenano.site/api (SomeNano)Representative - Required for opening new accounts. Well-known representatives:
nano_3arg3asgtigae3xckabaaewkx3bzsh7nwz7jkmjos79ihyaxwphhm6qgjps4 (Nano Foundation #1)nano_1stofnrxuz3cai7ze75o174bpm7scwj9jn3nxsn8ntzg784jf1gzn1jjdkou (Nano Foundation #2)Recommended: Set defaults once to avoid repeating parameters:
{
"rpcUrl": "https://rpc.nano.org",
"defaultRepresentative": "nano_3arg3asgtigae3xckabaaewkx3bzsh7nwz7jkmjos79ihyaxwphhm6qgjps4",
"useLocalPow": true
}
Call config_set with these values at the start of your session.
By default, the wallet uses local PoW (nano-pow-with-fallback) using WASM or WebGPU. This is recommended as it doesn't rely on the RPC node supporting work_generate.
If you prefer to use a remote work server (e.g. a high-performance PoW service or your own node):
useLocalPow: false in config_set.workUrl (defaults to rpcUrl).Call MCP tool:
wallet_create with { "name": "A", "format": "bip39", "count": 1 }If you generated a wallet offline (e.g. using create-wallet) or the user provided keys, you can securely import them into the MCP:
wallet_create with { "name": "A", "mnemonic": "word1 word2...", "count": 1 }Expected result shape:
A[0] address (nano_...)Passively reading state via MCP Resources (Recommended): You can passively read the available accounts, their open state, and balances without making heavy tool calls by requesting the MCP Resource URI:
wallet://{name} - Returns a summary of the wallet and its first 5 accounts.wallet://{name}/account/{index} - Returns specific pending blocks and details for an account index.Actively reading state via Tools:
wallet_balance with { "name": "A", "index": 0 }wallet_probe_balances with { "name": "A", "count": 5 } - Also shows which accounts are openedNano transfers can show up as pending until you publish a corresponding receive/open block. A raw address alone does not "auto-receive" funds.
If someone sends you funds, you MUST proactively call wallet_receive to fully pocket the funds and open the account.
wallet_receive with { "name": "A", "index": 0, "count": 10 }Important for unopened accounts:
wallet_receive requires a representative.defaultRepresentative in config_set, it will be used automatically.representative parameter explicitly.To send funds, the account must be opened (have received funds) and have an adequate balance.
wallet_send with { "name": "A", "index": 0, "destination": "nano_...", "amountXno": "0.01" }Error: "Account is unopened" - You must receive funds first using wallet_receive.
For structured funding workflows (requesting XNO from operator, tracking receipt, handling refunds):
request-payment skill for the full inbound workflowreturn-funds skill for safe refund handlingKey tools:
payment_request_create — create a tracked funding requestpayment_request_status — check funding progresspayment_request_receive — receive funds for a specific requestpayment_request_refund — safely return funds to senderEvery wallet_send and payment_request_refund enforces a per-transaction max-send cap:
XNO_MAX_SEND env var)config_set with { "maxSendXno": "5.0" }The cap is embedded in the wallet_send tool description so the agent knows the limit before trying.
When wallet_send detects insufficient balance but there are pending blocks, it automatically receives them before attempting the send. This avoids the common mistake of failing a send when funds are pending but not yet pocketed.
All sends and receives are logged persistently:
wallet_history with { "walletName": "A", "limit": 20 }This includes counterparty addresses, amounts, hashes, and linked payment request IDs.
1. config_set: { "rpcUrl": "https://rpc.nano.org", "defaultRepresentative": "nano_3arg3asgtigae3xckabaaewkx3bzsh7nwz7jkmjos79ihyaxwphhm6qgjps4" }
2. wallet_create: { "name": "mywallet" }
3. (User sends funds to the address)
4. wallet_receive: { "name": "mywallet" }
5. wallet_send: { "name": "mywallet", "destination": "nano_...", "amountXno": "0.01" }
XNO_MCP_PERSIST_WALLETS=false). If enabled, it's stored as plaintext JSON under .xno-mcp/wallets.json.workUrl parameter defaults to rpcUrl - most nodes support work generation.tools
Nano (XNO) cryptocurrency wallet operations, transaction analysis, and explorer lookups. Use for send/receive, balances, pending funds, address validation, unit conversion, tx/hash/account lookup, explorer links, and Nano block-lattice questions. Prefer xno-mcp first; use xno-skills CLI as fallback.
testing
Verify an off-chain message signature (NOMS / ORIS-001 standard) against a Nano (XNO) address or public key. Use this skill whenever the user presents a signed message and wants to verify its authenticity, needs to confirm someone owns a Nano address, or asks 'is this signature valid?' — even if they just say 'check this proof' or 'did they really sign this?'
development
Validate Nano (XNO) addresses offline (format, checksum) — no network required. Use this skill whenever the user provides a Nano address and wants to verify it's well-formed, before sending XNO to an untrusted address, or asks 'is this address real?' — even if they just paste a nano_ address and ask 'is this right?' Always validate before any XNO send operation.
tools
Sign an off-chain message (plain text) using a Nano (XNO) custodial wallet managed by xno-mcp, following the NOMS / ORIS-001 standard. Use this skill whenever the user wants to prove ownership of a Nano address, authenticate themselves cryptographically, sign a statement with their XNO key, or create an off-chain proof — even if they just say 'prove I own this wallet' or 'sign this for me'.