💰 Wallet Skill
Multi-chain wallet for EVM (6 chains) + Solana. Balances, transfers, signing, policy management.
Tools
| Tool |
Description |
wallet_info |
Get all wallet addresses |
wallet_balance |
EVM balance on a chain (DeBank) |
wallet_sol_balance |
Solana balance (Birdeye) |
wallet_get_all_balances |
All chains at once |
wallet_transfer |
Broadcast EVM tx (gas sponsored) |
wallet_sign_transaction |
Sign EVM tx (no broadcast) |
wallet_sign |
EIP-191 message signing |
wallet_sign_typed_data |
EIP-712 typed data signing |
wallet_transactions |
EVM tx history |
wallet_sol_transfer |
Broadcast Solana tx |
wallet_sol_sign_transaction |
Sign Solana tx (no broadcast) |
wallet_sol_sign |
Solana message signing |
wallet_sol_transactions |
Solana tx history |
wallet_get_policy |
Check policy status |
wallet_propose_policy |
Propose policy (sends to UI) |
Key Facts
- Gas is sponsored on EVM chains — user doesn't need ETH for gas
- Policy default: OFF (allow-all). Only when user enables policy do transactions need UI confirmation
- Supported EVM chains: ethereum, base, arbitrum, optimism, polygon, linea
- Balance sources: DeBank (EVM), Birdeye (Solana), wallet-service (fallback)
Workflow
Check Balances
- Single chain:
wallet_balance(chain="base") or wallet_sol_balance()
- All at once:
wallet_get_all_balances()
Send Transaction (EVM)
- Check balance:
wallet_balance(chain=...)
- Transfer:
wallet_transfer(to=..., amount=..., chain_id=...)
- Verify:
wallet_transactions() or check balance again
Policy Management
- Check:
wallet_get_policy(chain_type="ethereum")
- If user wants to enable:
wallet_propose_policy(chain_type, rules, title, description)
- User confirms in UI → policy applied
Standard Wildcard Policy (when needed)
rules = [
{"name": "Deny key export", "method": "exportPrivateKey", "conditions": [], "action": "DENY"},
{"name": "Allow all", "method": "*", "conditions": [], "action": "ALLOW"},
]
Gotchas
wallet_propose_policy sends SSE event to frontend — needs streaming context
- DeBank/Birdeye keys are auto-injected by sc-proxy
wallet_balance requires chain param — use wallet_get_all_balances for discovery
- Policy validation:
eth_signTypedData_v4 requires at least one condition
- For both EVM + Solana policy, call
wallet_propose_policy TWICE
1---2name: 554-wallet3description: Multi-chain wallet — balances, transfers, signing, policy (EVM + Solana)4---56# 💰 Wallet Skill78Multi-chain wallet for EVM (6 chains) + Solana. Balances, transfers, signing, policy management.910## Tools1112| Tool | Description |13|------|-------------|14| `wallet_info` | Get all wallet addresses |15| `wallet_balance` | EVM balance on a chain (DeBank) |16| `wallet_sol_balance` | Solana balance (Birdeye) |17| `wallet_get_all_balances` | All chains at once |18| `wallet_transfer` | **Broadcast** EVM tx (gas sponsored) |19| `wallet_sign_transaction` | Sign EVM tx (no broadcast) |20| `wallet_sign` | EIP-191 message signing |21| `wallet_sign_typed_data` | EIP-712 typed data signing |22| `wallet_transactions` | EVM tx history |23| `wallet_sol_transfer` | **Broadcast** Solana tx |24| `wallet_sol_sign_transaction` | Sign Solana tx (no broadcast) |25| `wallet_sol_sign` | Solana message signing |26| `wallet_sol_transactions` | Solana tx history |27| `wallet_get_policy` | Check policy status |28| `wallet_propose_policy` | Propose policy (sends to UI) |2930## Key Facts3132- **Gas is sponsored** on EVM chains — user doesn't need ETH for gas33- **Policy default: OFF** (allow-all). Only when user enables policy do transactions need UI confirmation34- **Supported EVM chains**: ethereum, base, arbitrum, optimism, polygon, linea35- **Balance sources**: DeBank (EVM), Birdeye (Solana), wallet-service (fallback)3637## Workflow3839### Check Balances401. Single chain: `wallet_balance(chain="base")` or `wallet_sol_balance()`412. All at once: `wallet_get_all_balances()`4243### Send Transaction (EVM)441. Check balance: `wallet_balance(chain=...)`452. Transfer: `wallet_transfer(to=..., amount=..., chain_id=...)`463. Verify: `wallet_transactions()` or check balance again4748### Policy Management491. Check: `wallet_get_policy(chain_type="ethereum")`502. If user wants to enable: `wallet_propose_policy(chain_type, rules, title, description)`513. User confirms in UI → policy applied5253### Standard Wildcard Policy (when needed)54```55rules = [56 {"name": "Deny key export", "method": "exportPrivateKey", "conditions": [], "action": "DENY"},57 {"name": "Allow all", "method": "*", "conditions": [], "action": "ALLOW"},58]59```6061## Gotchas6263- `wallet_propose_policy` sends SSE event to frontend — needs streaming context64- DeBank/Birdeye keys are auto-injected by sc-proxy65- `wallet_balance` requires `chain` param — use `wallet_get_all_balances` for discovery66- Policy validation: `eth_signTypedData_v4` requires at least one condition67- For both EVM + Solana policy, call `wallet_propose_policy` TWICE