{"name":"io.ironwallet/mcp-server","slug":"ironwallet-mcp-server","title":"IronWallet","description":"Non-custodial crypto wallet MCP: check balances, sign and send transfers, and swap tokens locally.","url":"https://mcp.market/server/ironwallet-mcp-server","rating":null,"grade":"A","score":94,"certified":false,"status":"active","category":"finance","tags":["finance"],"presence":{"score":28,"stars":0,"forks":0,"downloads_week":89,"last_push_at":"2026-09-10T11:03:19.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/ironwallet/ironwallet-agent-kit","website":"https://ironwallet.io/ai","version":"1.2.1","remotes":[],"packages":[{"registryType":"npm","identifier":"@ironwallet/mcp-server","version":"1.2.1","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Set to true to disable send_transfer and execute_swap for the whole server. Balances, estimates, and lists still work.","format":"boolean","name":"IW_READ_ONLY"}]}],"tools":[{"name":"accept_mcp_consent","description":"Record that the user accepted the MCP risk disclaimer in chat. Call only after showing the full consent text (from a previous create_wallets needs_consent response, or the skill) and the user explicitly confirms. Does not create a wallet. accepted must be true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_wallets","description":"Generate one or more brand-new wallets (BIP-39). Requires a current MCP consent (accept_mcp_consent in chat, or the local wallet manager). Returns names and addresses only. Seed phrases are NOT returned to the agent. The response includes a local browser URL where the user can view and back up the recovery phrases. If consent is missing, returns needs_consent and the full disclaimer instead of cre","write_action":true,"price_micros":0,"input_schema":null},{"name":"estimate_swap","description":"Get a swap quote (amounts, fees). Read-only: no order is created and no operationId is returned — there is nothing to poll with get_swap_status until execute_swap. Quote can expire — prefer execute_swap for sending (it re-estimates). Amount is a decimal string; set maxMode=true to sell the full balance (backend corrects amount).","write_action":false,"price_micros":0,"input_schema":null},{"name":"estimate_transfer","description":"Estimate fees for a transfer without sending. Returns fees and the number of transactions that would be signed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"execute_swap","description":"Execute a swap: fresh estimate → create → local sign → execute. Does NOT use the transfer relay. Irreversible once submitted — no second confirmation. Returns operationId and txHash; poll with get_swap_status.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_balance","description":"Get the balance for a wallet on a network. Optionally pass a token contract address; omit for the native coin.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_deposit_qr","description":"PNG QR to receive funds (generated on the fly; network name above the code, IW mark, address under it). Pass network for one chain; omit it for one QR per unique address — the shared EVM address is one QR captioned with every chain it serves (sharedWith). Does not move funds. Never returns keys or seed phrases. Show the attached images in chat when the host renders them and name each one by its la","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_operation_status","description":"Poll the state of a forward operation by its operation id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_runtime_info","description":"Report this process's @ironwallet/mcp-server version and compare it to the published npm package (dist-tags on the configured registry). Does not update or restart the server. If updateAvailable is true, tell the user and offer prepare_update; stage it only after they agree.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_swap_status","description":"Poll swap order status by the operationId returned by execute_swap. Only executed swaps have a status; estimate_swap does not create an order.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_transaction_history","description":"Recent transactions of a wallet address on one network, newest first, read from public block explorers (not the IronWallet backend). Each item is normalized: hash, timestamp, kind (transfer / token_transfer / contract_call / other), direction (in / out / self), status, from, to, asset, amount, fee. One call returns one page (up to 20 items); fetch older pages by passing nextCursor back as cursor o","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_swap_assets","description":"List tradable assets. direction=from lists sell assets; direction=to requires fromNetwork/fromSymbol (and fromAddress for tokens) and lists buy assets. Enriches with wallet address and balance when possible.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_swap_networks","description":"List networks available for swaps. Use before listing swap assets.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_wallets","description":"List the wallets in the local keystore with their addresses per network. Each wallet includes policy ({ enabled: false } when unset). Never returns private keys or seed phrases.","write_action":false,"price_micros":0,"input_schema":null},{"name":"open_wallet_manager","description":"Open a local browser form to add/import/create wallets, back them up (reveal the recovery phrase), or delete them. Returns a localhost URL for the user to open. Seed phrases are entered and shown ONLY in the browser and never pass through the agent. Use this whenever the user asks to add, import, create, back up, or delete a wallet — there is no tool for deleting; the user confirms it in the manag","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_update","description":"Stage a newer @ironwallet/mcp-server into this server's npx cache so the NEXT MCP restart runs it. Call only when the user explicitly asks to update (usually after get_runtime_info shows updateAvailable). The running server keeps its current version until the user restarts the MCP host; wallets and keys are untouched. Not available for global or local installs.","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_transfer","description":"Send a transfer: sign locally with the wallet's key and broadcast via the IronWallet forward relay (estimate -> sign -> forward) for EVM, Tron, Bitcoin, Litecoin, Doge, Solana, XRP and TON. Irreversible once broadcast — no second confirmation. Returns the transaction hash (and operation id where applicable).","write_action":true,"price_micros":0,"input_schema":null},{"name":"set_wallet_policy","description":"Replace the spending policy of a wallet (chat intent is the authorization; no extra confirmation). FULL REPLACE, not a patch: read list_wallets first and pass every field you want to keep. enabled=false removes all limits. readOnly blocks send_transfer and execute_swap. maxPerTxUsd caps each send/swap by USD value at the moment of the operation (rate from the IronWallet backend; if the rate is una","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":94,"grade":"A","scanned_at":"2026-09-19T19:11:33.210Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T19:11:33.224Z","components":{"code":{"score":25,"max":25,"notes":["129 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 9 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","website matches verified namespace"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@ironwallet/mcp-server","version":"1.2.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":17,"publishedAt":"2026-09-10T11:03:29.379Z","repositoryUrl":"git+https://github.com/ironwallet/ironwallet-agent-kit.git","weeklyDownloads":89}],"repo":{"found":true,"owner":"ironwallet","repo":"ironwallet-agent-kit","archived":false,"pushedAt":"2026-09-10T11:03:19Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/318626736?v=4","ownerCreatedAt":"2026-08-19T12:39:20Z","license":"MIT"},"icon":{"url":"https://raw.githubusercontent.com/ironwallet/ironwallet-agent-kit/main/.github/assets/logo.svg","source":"registry"},"presence":{"stars":0,"forks":0,"downloadsWeek":89,"license":"MIT","lastPushAt":"2026-09-10T11:03:19.000Z","score":28}}}},"grade_history":[],"reviews":[]}