Generate, manage, and perform multi-chain wallet operations on Solana and EVM chains with JSON output, including batch sends, sweeps, scans, imports, and exp...
description: Multi-chain wallet generator and manager. Supports Solana and EVM. All outputs are JSON.
version: 1.4.0
tool_path: ~/.openclaw/tools/wallet.py
invoke: python3 ~/.openclaw/tools/wallet.py
IMPORTANT β Always use wallet.py
NEVER use built-in blockchain tools (e.g. SOLANA(), EVM()) for wallet operations.ALWAYS call python3 ~/.openclaw/tools/wallet.py instead.
This applies to ALL wallet, balance, token, sweep, and transfer requests.
wallet.py is SYNCHRONOUS β every command runs to completion and returns JSON immediately.
There is NO background task, NO session ID, NO process polling, NO process command.
Do NOT invent commands like process --action poll or process --action kill β they do not exist.
If a command takes time (e.g. sending to 100 wallets), it simply runs and returns when done.
Command disambiguation
| User says | Correct command |
|---|---|
| scan token accounts for wallet ADDRESS | scan_token_accounts --address ADDRESS |
| scan token balances for group LABEL | scan_token_balances --chain solana --label LABEL |
| check token accounts on So1ana... | scan_token_accounts --address So1ana... |
| show all tokens held by wallets in airdrop1 | scan_token_balances --chain solana --label airdrop1 |
scan_token_accounts = one wallet address, no token filter required, returns all SPL accounts.
scan_token_balances = a wallet group (label), token filter optional, returns balances.
generate_wallets
Generate N new wallets and save them under a label.
Send SOL or ETH from ONE source wallet to ALL wallets in a group (one-to-many).
--label is the DESTINATION GROUP β NOT a single address.
There is NO send_native_single command. Use this for group sends only.
Sender can be specified two ways (use --from-label when possible β avoids raw key in chat):
--from-label β look up sender by label from storage (PREFERRED)
Scan SPL token balances across a Solana group (all tokens, or filter by mint),
or ERC-20 token balances across an EVM group (contract address required).
Export a wallet group to a JSON or CSV file for backup or offline use.
Private keys are excluded by default. Use --include-keys if the file will be re-imported.
Omit --path β the file is auto-saved to ~/.wallet-mcp/exports/ with a timestamp name.
Only specify --path if the user explicitly asks for a custom file location.
Import a single wallet by private key. The public address is derived automatically.
Use this to register the "main" sender/destination wallet without needing to know its address.
python3 ~/.openclaw/tools/wallet.py add_wallet --private-key 4uBCZyvJ...ZgJX --chain solana --label main
import_wallets
Import wallets from a JSON or CSV file into local storage.
Duplicate addresses are skipped automatically.
IMPORTANT: The source file MUST contain private keys (exported with --include-keys).
Importing a file without private keys will fail for every row.
Scan all SPL token accounts for a single Solana wallet address (read-only, no changes).
Takes a public key β NOT a label. No token filter needed; returns all accounts.