wallet

Multi-chain wallet: EVM and Solana balances, transfers, signing, and policy. Use when checking balances, sending tokens, signing typed data, or proposing a wallet policy (e.g. send 10 USDC on Base, sign EIP-712, Solana balance).

By starchild-ai-agent · 8,830 installs

npx skills add starchild-ai-agent/official-skills --skill wallet

Source repository · Upstream listing

💰 Wallet Skill Multi chain wallet for EVM (DeBank supported chains) + Solana. Balances, transfers, signing, and policy management. Script skill — call the functions below via bash; no wallet tools are registered. How to call All read/transfer/sign operations are Python functions in core.skill tools.wallet . Run them from bash and read the JSON result: The one operation that is NOT a script function is proposing a wallet policy — it needs to render a confirmation card in the UI, so it goes through the native frontend action tool (see Policy Management below). Functions ( from core.skill tools import wallet ) Function Description wallet info() Get all AGENT wallet addresses get user wallets() The USER'S OWN wallets (login + secondary) — read only, from env wallet balance(chain, address="", asset="") EVM balance on a chain (DeBank). chain required wallet sol balance(address="", asset="") Solana balance (Birdeye) wallet get all balances(evm address="", sol address="") All chains at once wallet transfer(to, amount, chain id=1, data="", kw) Broadcast EVM tx (gas sponsored by default) wallet sign transaction(to, amount, chain id=1, data="", kw) Sign EVM tx (no broadcast) wallet sign(message) EIP 191 message signing wallet sign typed data(domain, types, primaryType, message) EIP 712 typed data signing wallet transactions(chain="ethereum", asset="", limit=20) EVM tx history wallet sol transfer(transaction, caip2=...) Broadcast Solana tx (base64) wallet sol sign transaction(transaction) Sign Solana tx (no broadcast) wallet sol sign(message) Solana message signing wallet sol transactions(chain="solana", asset="sol", limit=20) Solana tx history wallet get policy(chain type="ethereum") Check policy status validate and clean rules(rules, chain type) Pre validate policy rules before proposing The User's Own Wallets (login / secondary) The agent wallet is NOT the user's wallet. The platform injects the user's own wallet identities as env vars (synced from the control plane at container start and on user wallet actions): USER LOGIN WALLET ADDRESS / USER LOGIN WALLET TYPE — the wallet the user logs in with (or bound as primary). USER SECONDARY WALLET ADDRESS / USER SECONDARY WALLET TYPE — the user's other linked wallet (e.g. Solana when login is EVM). When asked "what's my wallet" / "my login wallet" / "check MY balance", read these — do NOT answer with the agent wallet or say you don't know: Empty/missing values mean the user has never bound a wallet in that slot (e.g. social login) — say so and point them to wallet binding in the web app. Rules: Read only. The agent holds no keys for these wallets. To check the user's balances, pass the address into wallet balance(chain, address=...) / wallet sol balance(address=...) . Transactions from the user's wallet never go through script functions — use the native frontend action(action type="user wallet tx", ...) flow, where the user signs in the UI and expected from is enforced server side. Key Facts Amounts are in wei for EVM ( wallet transfer / wallet sign transaction ). 0.01 ETH = 10000000000000000 . For ERC 20 token sends, amount is 0 (native) and the transfer is encoded in data calldata. Gas is sponsored by default on EVM chains — user doesn't need native tokens for gas. Falls back to user paid if unavailable. Pass sponsor=False to pay gas from wallet balance. Policy default: OFF (allow all). Only when policy is enabled do transactions need UI confirmation. Supported EVM chains : All DeBank supported chains. Common names auto mapped (e.g. avalanche → avax , bsc → bsc , zksync → era ). Fallback aliases include ethereum/base/arbitrum/optimism/polygon/linea/bsc/avalanche/fantom/gnosis/zksync/scroll/blast/mantle/celo/aurora plus monad/world/unichain/abstract/sonic/berachain. Balance sources : DeBank (EVM), Birdeye (Solana), wallet service (fallback). DeBank/Birdeye keys are auto injected by sc proxy. Workflows Check balances Send a transaction (EVM) Always verify balance before, and the result/history after. Sign EIP 712 typed data Policy Management Checking policy is a script function; proposing a policy uses the native frontend action tool (it renders a signature card in the UI — a script cannot). 1. Check current policy: 2. (Optional) pre validate rules: 3. Propose — call the frontend action tool (not a script): The user confirms + signs in the UI. Call once per chain (EVM + Solana = two calls). Standard Wildcard Policy (when needed) Policy Modes — CRITICAL DECISION TABLE ⚠️ DENY ALLOW in Privy. DENY overrides ALL ALLOW rules. NEVER mix them. Mode Rules Effect Allow all (default) DENY exportPrivateKey + ALLOW Everything allowed except key export Deny all (lockdown) DENY exportPrivateKey + DENY Nothing works. No ALLOW rules! Whitelist (selective) DENY exportPrivateKey + specific ALLOW rules only Only whitelisted ops work, rest implicitly denied Mode 1: Allow All (Standard Wildcard) Mode 2: Deny All (Lockdown) Mode 3: Whitelist (Selective Allow) Privy Policy Rules — Key Constraints Rule Details Default behavior enabled=true → deny all unless explicitly ALLOWed DENY ALLOW DENY always wins when both match Empty conditions Only exportPrivateKey and (wildcard) allow conditions: [] TX methods need conditions eth sendTransaction , eth signTransaction , eth signTypedData v4 , eth signUserOperation , signAndSendTransaction , etc. ALL require ≥1 condition Valid field sources EVM: ethereum transaction (to/value/chain id), ethereum calldata (function name), ethereum typed data domain (chainId/verifyingContract), ethereum typed data message , system Valid operators eq , gt , gte , lt , lte , in (array, max 100 values) Dual chain Call frontend action(action type="update wallet policy", ...) TWICE for EVM + Solana Gotchas Policy proposal goes through the frontend action tool — needs an active SSE session (won't work from a background task). wallet balance requires chain — use wallet get all balances for discovery. For both EVM + Solana policy, call frontend action TWICE (one per chain type).