{
  "markdown": "# IronWallet for AI agents\n\nThe IronWallet MCP server gives AI agents secure access to a **non-custodial** wallet. Seed phrases stay encrypted on the host and never leave this machine. Agents can retrieve balances, sign locally, transfer tokens, and swap across 10+ networks.\n\nSeed-compatible with the [IronWallet](https://ironwallet.io) app. There is no per-transaction confirmation UI.\n\n**Requirements:** Node.js 20+ (`npx`). Use a dedicated wallet with limited balance.\n\nProduct page: [ironwallet.io/ai](https://ironwallet.io/ai). Machine-readable index: [llms.txt](llms.txt).\n\nOpening this repository in Claude Code starts the wallet MCP via [`.mcp.json`](.mcp.json). See [CLAUDE.md](CLAUDE.md).\n\n## Install\n\n**Cursor:** [ironwallet.io/ai](https://ironwallet.io/ai)\n\n**Claude Code:**\n\n```bash\nclaude plugin marketplace add ironwallet/ironwallet-agent-kit\nclaude plugin install ironwallet-mcp@ironwallet\n```\n\n**Codex:**\n\n```bash\ncodex plugin marketplace add ironwallet/ironwallet-agent-kit\ncodex plugin add ironwallet-mcp@ironwallet\n```\n\n**Grok:**\n\n```bash\ngrok plugin marketplace add ironwallet/ironwallet-agent-kit\ngrok plugin install ironwallet-mcp --trust\n```\n\nReload so MCP picks up `PATH`. From a local clone, use `.` instead of the GitHub repo.\n\n### MCP only (no plugin)\n\nManually installed MCP does **not** auto-update with the plugin.\n\n```json\n{\n  \"mcpServers\": {\n    \"ironwallet\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@ironwallet/mcp-server\"]\n    }\n  }\n}\n```\n\n## What's included\n\n### Skill\n\n| Skill | When to use |\n|-------|-------------|\n| **ironwallet-mcp** | Non-custodial wallet: balances, local signing, transfers, swaps, deposit QR. Invoke as `/ironwallet-mcp` |\n\n### Rules\n\n| Rule | What it enforces |\n|------|------------------|\n| **wallet-transaction-safety** | Hot wallet; no extra confirmation UI; poll status on timeout, never resubmit blindly |\n| **seed-phrase-handling** | Recovery phrases and private keys never appear in chat, files, or logs |\n| **swap-asset-resolution** | Networks and tokens come from catalog tools, not model memory |\n\n### Agent\n\n| Agent | Purpose |\n|-------|---------|\n| **ironwallet-operator** | Operate the non-custodial wallet: balances, local signing, transfers, swaps, deposit QR |\n\n### MCP server\n\n`@ironwallet/mcp-server` over stdio. Networks: Ethereum, BSC, Polygon, Base, Arbitrum, Optimism, Avalanche, Tron, Bitcoin, Litecoin, Dogecoin, Solana, XRP, TON.\n\n## Tools\n\n<!-- tools-table -->\n| Tool | Purpose | Moves funds? |\n|------|---------|:------------:|\n| `get_runtime_info` | Running version vs published npm package | no |\n| `prepare_update` | Stage the npm update for the next restart | no |\n| `list_wallets` | Names, addresses, and `policy` | no |\n| `accept_mcp_consent` | Record chat acceptance of the MCP disclaimer | no |\n| `create_wallets` | New wallets; returns a browser `backup_url` | no |\n| `open_wallet_manager` | Local browser UI to import / create / back up / delete | no |\n| `set_wallet_policy` | Replace per-wallet limits (`readOnly`, `maxPerTxUsd`, allow-list) | no |\n| `get_deposit_qr` | PNG QR (try chat; else local `qr_url`) | no |\n| `get_balance` | Native or token balance | no |\n| `get_transaction_history` | Recent txs from public explorers (paged) | no |\n| `estimate_transfer` | Fee estimate, no broadcast | no |\n| `send_transfer` | Sign locally and send | **yes** |\n| `get_operation_status` | Poll a transfer | no |\n| `list_swap_networks` | Networks available for swap | no |\n| `list_swap_assets` | Sell / buy catalog | no |\n| `estimate_swap` | Quote (may expire) | no |\n| `execute_swap` | Fresh quote → sign → swap | **yes** |\n| `get_swap_status` | Poll a swap | no |\n<!-- /tools-table -->\n\nNo tool accepts or returns a seed. Import, backup, and delete only in the local browser (`open_wallet_manager` / `backup_url`); deleting asks the user to retype the wallet name.\n\n## Configuration\n\nNothing to paste into MCP config for normal use. On first launch the server writes a relay API key, keystore wrapping secret, and device id under `~/.ironwallet-mcp/` (mode `0600`). Override with `IW_RELAY_API_KEY` / `IW_PASSPHRASE` / `IW_DEVICE_ID` only if you must.\n\nThe user-facing backup is the **recovery phrase** in the wallet manager, not those files.\n\n## Security\n\n- Seeds are encrypted at rest. They never appear in tool results, agent chat, or backend requests.\n- The agent **can move funds without asking again**. Optional wallet policy (`readOnly`, `maxPerTxUsd`, transfer recipient allow-list — set via `set_wallet_policy`) is off by default and applies to both sends and swaps.\n- Anyone with the keystore **and** the wrapping secret controls the funds. A leaked seed cannot be revoked.\n- Timeout is not always failure: poll status before retrying a send or swap.\n- **Do not** put a main wallet here. Use a small hot wallet.\n\nDetails and private disclosure: [SECURITY.md](SECURITY.md).\n\n## Contributing\n\nThis public tree is a release snapshot. See [CONTRIBUTING.md](CONTRIBUTING.md). Please follow the [Code of Conduct](CODE_OF_CONDUCT.md).\n\n## License\n\n[MIT](LICENSE)\n",
  "bytes": 5069,
  "sha": "29706c3586d821e98126dbadd98b5773cb74e439aa0a4022b76b93cf6616951b",
  "repo_slug": "ironwallet/ironwallet-agent-kit",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_ironwallet_mcp_server_e40ec63d/readme"
}