Multi-chain wallet management for AI agents. Create wallets, check balances, transfer tokens (USDC/native), and bridge cross-chain. Use when agents need to send/receive payments, check funds, or manage crypto wallets. Supports Solana, Base, and Ethereum. Trigger phrases include "create wallet", "check balance", "send USDC", "transfer", "my addresses", "wallet status".
---
name: agent-wallet
description: Multi-chain wallet management for AI agents. Create wallets, check balances, transfer tokens (USDC/native), and bridge cross-chain. Use when agents need to send/receive payments, check funds, or manage crypto wallets. Supports Solana, Base, and Ethereum. Trigger phrases include "create wallet", "check balance", "send USDC", "transfer", "my addresses", "wallet status".
---
# AgentWallet
Multi-chain wallet skill for AI agents. One seed phrase, all chains.
## Quick Reference
| Command | Example |
|---------|---------|
| Create wallet | "Create a new wallet" |
| Show addresses | "Show my addresses" / "What's my wallet?" |
| Check balance | "Check my balance" / "How much USDC do I have?" |
| Transfer | "Send 10 USDC to 0x..." / "Transfer 5 SOL to ..." |
| Bridge | "Bridge 10 USDC from Base to Solana" |
| Chain info | "What chains are supported?" |
## Setup
### New Wallet
```
User: "Create a new wallet"
```
Generates BIP-39 seed phrase, derives addresses for all chains. Shows seed ONCE with security warning.
### Import Existing Wallet
```
User: "Import my wallet"
```
Response: "Add your seed phrase to `.env` as `WALLET_SEED_PHRASE`, then say 'Show my addresses' to verify."
No seed phrases in chat for imports - security first.
### Environment
```bash
# Required for wallet operations
WALLET_SEED_PHRASE="your twelve word seed phrase goes here"
# Optional
NETWORK=testnet # testnet (default) or mainnet
SOLANA_RPC= # Custom Solana RPC (defaults to public)
BASE_RPC= # Custom Base RPC (defaults to public)
ETH_RPC= # Custom Ethereum RPC (defaults to public)
```
## Commands
### Create Wallet
Run: `node scripts/wallet.js create`
Output format:
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔐 NEW WALLET GENERATED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ CRITICAL: Save this seed phrase securely!
It will NOT be shown again.
Anyone with this phrase can access your funds.
Seed Phrase:
┌────────────────────────────────────────────┐
│ word1 word2 word3 word4 word5 word6 │
│ word7 word8 word9 word10 word11 word12 │
└────────────────────────────────────────────┘
Your Addresses:
├─ Solana: 7xK9...mP4q
├─ Base: 0x7a3B...4f2E
└─ Ethereum: 0x7a3B...4f2E (same as Base)
Add to .env:
WALLET_SEED_PHRASE="word1 word2 word3 ..."
Network: TESTNET
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
### Show Addresses
Run: `node scripts/wallet.js addresses`
Shows derived addresses without exposing seed.
### Check Balance
Run: `node scripts/wallet.js balance [chain]`
- `node scripts/wallet.js balance` - All chains
- `node scripts/wallet.js balance solana` - Solana only
- `node scripts/wallet.js balance base` - Base only
Output includes native token + USDC balance per chain.
### Transfer
Run: `node scripts/wallet.js transfer <chain> <token> <amount> <recipient>`
Examples:
- `node scripts/wallet.js transfer solana USDC 10 7xK9fR2...`
- `node scripts/wallet.js transfer base ETH 0.01 0x7a3B...`
- `node scripts/wallet.js transfer solana SOL 0.5 7xK9fR2...`
Supported tokens per chain:
- **Solana**: SOL, USDC
- **Base**: ETH, USDC
- **Ethereum**: ETH, USDC
### Bridge (Cross-Chain)
Run: `node scripts/wallet.js bridge <from-chain> <to-chain> <amount>`
Bridges USDC between chains using Circle CCTP V2.
Examples:
- `node scripts/wallet.js bridge base solana 10` - Bridge 10 USDC from Base to Solana
- `node scripts/wallet.js bridge ethereum base 50` - Bridge 50 USDC from Ethereum to Base
- `node scripts/wallet.js bridge solana ethereum 25` - Bridge 25 USDC from Solana to Ethereum
**Note:** Bridging takes 1-5 minutes (burn → attestation → mint). Requires USDC on source chain plus native tokens for gas.
### Chain Info
Run: `node scripts/wallet.js chains`
Lists supported chains, networks, and USDC contract addresses.
## Derivation Paths
All chains derive from single BIP-39 seed:
| Chain | Path | Standard |
|-------|------|----------|
| Solana | `m/44'/501'/0'/0'` | Solana/Phantom |
| EVM (Base/Eth) | `m/44'/60'/0'/0/0` | BIP-44 Ethereum |
EVM chains share the same address (same derivation path).
## Security Model
- **One seed per agent** - Each agent instance isolated
- **Seed shown once** - Only at creation, never logged
- **Memory only** - Private keys derived on-demand, never persisted
- **No chat import** - Seeds added via .env only (except generation)
## Error Handling
| Error | Cause | Fix |
|-------|-------|-----|
| "WALLET_SEED_PHRASE not set" | Missing env var | Add seed to .env |
| "Invalid seed phrase" | Wrong format | Must be 12 or 24 words |
| "Insufficient balance" | Not enough funds | Check balance first |
| "Invalid address" | Wrong format | Verify recipient address |
## Chain References
For RPC endpoints, USDC addresses, and chain-specific details, see [references/chains.md](references/chains.md).
don't have the plugin yet? install it then click "run inline in claude" again.
Multi-chain wallet skill for AI agents. one seed phrase, all chains.
manage crypto wallets across solana, base, and ethereum without juggling separate seed phrases. use this skill when agents need to create wallets, check balances, send tokens (USDC or native), or bridge assets between chains. triggers: "create wallet", "check balance", "send USDC", "transfer", "my addresses", "wallet status".
environment variables (required for all operations except wallet creation)
WALLET_SEED_PHRASE: 12 or 24-word BIP-39 seed phrase. must be set in .env. agents never input this via chat (security first).environment variables (optional)
NETWORK: testnet (default) or mainnet. controls which RPC endpoints and testnets are used.SOLANA_RPC: custom solana RPC URL. defaults to solana public RPC if not set.BASE_RPC: custom base RPC URL. defaults to base public RPC if not set.ETH_RPC: custom ethereum RPC URL. defaults to ethereum public RPC if not set.external connections required
runtime context
create new wallet (if user says "create wallet", "generate new wallet", etc.)
node scripts/wallet.js create.import existing wallet (if user says "import wallet", "import my seed", etc.)
show addresses (if user says "show my addresses", "what's my wallet", "my wallet addresses", etc.)
node scripts/wallet.js addresses.check balance (if user says "check balance", "how much USDC", "balance on base", etc.)
node scripts/wallet.js balance [chain] where chain is optional.node scripts/wallet.js balance for all chains.node scripts/wallet.js balance solana for solana only.node scripts/wallet.js balance base for base only.transfer tokens (if user says "send 10 USDC to...", "transfer 5 SOL to...", etc.)
node scripts/wallet.js transfer <chain> <token> <amount> <recipient>.bridge USDC cross-chain (if user says "bridge 10 USDC from base to solana", "bridge USDC", etc.)
node scripts/wallet.js bridge <from-chain> <to-chain> <amount>.show chain info (if user says "what chains supported", "chain info", etc.)
node scripts/wallet.js chains.if WALLET_SEED_PHRASE is not set in .env
if seed phrase format is invalid (not 12 or 24 words, or invalid BIP-39 checksum)
if user requests transfer or bridge but balance is insufficient
if recipient address is invalid or malformed
if bridge route is not supported
if RPC endpoint is unreachable or rate-limited
if bridge attestation times out (no attestation received after 10 minutes)
create wallet
format: plaintext box with dividers. includes seed phrase in bordered box, derived addresses (solana as base58, base and ethereum as 0x hex), .env instruction, network label (testnet/mainnet).
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔐 NEW WALLET GENERATED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ CRITICAL: Save this seed phrase securely!
It will NOT be shown again.
Anyone with this phrase can access your funds.
Seed Phrase:
┌────────────────────────────────────────────┐
│ word1 word2 word3 word4 word5 word6 │
│ word7 word8 word9 word10 word11 word12 │
└────────────────────────────────────────────┘
Your Addresses:
├─ Solana: 7xK9...mP4q
├─ Base: 0x7a3B...4f2E
└─ Ethereum: 0x7a3B...4f2E (same as Base)
Add to .env:
WALLET_SEED_PHRASE="word1 word2 word3 ..."
Network: TESTNET
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
show addresses
format: plaintext list of addresses per chain with abbreviations (first 8 chars, last 4 chars). include full addresses in clickable format if platform supports it.
Solana: 7xK9fR2m...mP4q
Base: 0x7a3B9fF2...4f2E
Ethereum: 0x7a3B9fF2...4f2E
check balance
format: plaintext table per chain. columns: chain, native token (symbol, balance), USDC (balance). include timestamp and network (testnet/mainnet).
Chain Native Balance USDC Balance
────────────────────────────────────
Solana 2