Sending Tokens
Use the npx awal@2.8.2 send command to transfer tokens from the wallet to any address on Base, Polygon, or Solana.
Confirm wallet is initialized and authed
npx awal@2.8.2 status
If the wallet is not authenticated, refer to the authenticate-wallet skill.
Command Syntax
npx awal@2.8.2 send <amount> <recipient> [--chain <chain>] [--asset <asset>] [--json]
Arguments
| Argument | Description |
|---|---|
amount | Amount to send: '$1.00', '1.00', or atomic units (1000000 = $1). Always single-quote amounts that use $ to prevent bash variable expansion. If the number looks like atomic units (no decimal or > 100), treat as atomic units. Assume that people won't be sending more than 100 USDC the majority of the time |
recipient | Ethereum address (0x...), ENS name (vitalik.eth), or Solana address (Base58) |
Options
| Option | Description |
|---|---|
--chain <name> | Blockchain network: base, polygon, solana (default: base) |
--asset <symbol> | Token to send: usdc, eth, pol, sol (default: usdc) |
--json | Output result as JSON |
Input Validation
Before constructing the command, validate all user-provided values to prevent shell injection:
- amount: Must match
^\$?[\d.]+$(digits, optional decimal point, optional$prefix). Reject if it contains spaces, semicolons, pipes, backticks, or other shell metacharacters. - recipient: Must be a valid
0xhex address (^0x[0-9a-fA-F]{40}$), an ENS name (^[a-zA-Z0-9.-]+\.eth$), or a Solana address (^[1-9A-HJ-NP-Za-km-z]{32,44}$). Reject any value containing spaces or shell metacharacters. - chain: Must be one of
base,polygon,solana. Reject any other value. - asset: Must be one of
usdc,eth,pol,sol. Reject any other value.
Do not pass unvalidated user input into the command.
Examples
# Send $1.00 USDC to an address on Base (default)
npx awal@2.8.2 send 1 0x1234...abcd
# Send $0.50 USDC to an ENS name
npx awal@2.8.2 send 0.50 vitalik.eth
# Send with dollar sign prefix (note the single quotes)
npx awal@2.8.2 send '$5.00' 0x1234...abcd
# Send ETH on Base
npx awal@2.8.2 send 0.01 0x1234...abcd --asset eth
# Send USDC on Polygon
npx awal@2.8.2 send 1 0x1234...abcd --chain polygon
# Send USDC to a Solana address
npx awal@2.8.2 send 1 AxW7...5fGz --chain solana
# Get JSON output
npx awal@2.8.2 send 1 vitalik.eth --json
ENS Resolution
ENS names are automatically resolved to addresses via Ethereum mainnet. The command will:
- Detect ENS names (any string containing a dot that isn't a hex address)
- Resolve the name to an address
- Display both the ENS name and resolved address in the output
Prerequisites
- Must be authenticated (
npx awal@2.8.2 statusto check,npx awal@2.8.2 auth loginto sign in, see skillauthenticate-walletfor more information) - Wallet must have sufficient USDC balance (
npx awal balanceto check)
Error Handling
Common errors:
- "Not authenticated" - Run
awal auth login <email>first - "Insufficient balance" - Check balance with
awal balance - "Could not resolve ENS name" - Verify the ENS name exists
- "Invalid recipient" - Must be valid 0x address, ENS name, or Solana Base58 address
- "SOL only supported on Solana chains" - Use
--chain solanawhen sending SOL - "ETH/POL only supported on EVM chains" - ETH on base, POL on polygon