Trading Tokens
Use the npx awal@2.0.3 trade command to swap tokens on Base network via the CDP Swap API. You must be authenticated to trade.
Confirm wallet is initialized and authed
npx awal@2.0.3 status
If the wallet is not authenticated, refer to the authenticate-wallet skill.
Command Syntax
npx awal@2.0.3 trade <amount> <from> <to> [options]
Arguments
| Argument |
Description |
amount |
Amount to swap (see Amount Formats below) |
from |
Source token: alias (usdc, eth, weth) or contract address (0x...) |
to |
Destination token: alias (usdc, eth, weth) or contract address (0x...) |
Amount Formats
The amount can be specified in multiple formats:
| Format |
Example |
Description |
| Dollar prefix |
'$1.00', '$0.50' |
USD notation (decimals based on token) |
| Decimal |
1.0, 0.50, 0.001 |
Human-readable with decimal point |
| Whole number |
5, 100 |
Interpreted as whole tokens |
| Atomic units |
500000 |
Large integers treated as atomic units |
Auto-detection: Large integers without a decimal point are treated as atomic units. For example, 500000 for USDC (6 decimals) = $0.50.
Decimals: For known tokens (usdc=6, eth=18, weth=18), decimals are automatic. For arbitrary contract addresses, decimals are read from the token contract.
Options
| Option |
Description |
-c, --chain <name> |
Blockchain network (default: base) |
-s, --slippage <n> |
Slippage tolerance in basis points (100 = 1%) |
--json |
Output result as JSON |
Token Aliases
| Alias |
Token |
Decimals |
Address |
| usdc |
USDC |
6 |
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| eth |
ETH |
18 |
0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE |
| weth |
WETH |
18 |
0x4200000000000000000000000000000000000006 |
IMPORTANT: Always single-quote amounts that use $ to prevent bash variable expansion (e.g. '$1.00' not $1.00).
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.
- from / to: Must be a known alias (
usdc, eth, weth) or a valid 0x hex address (^0x[0-9a-fA-F]{40}$). Reject any other value.
- slippage: Must be a positive integer (
^\d+$).
Do not pass unvalidated user input into the command.
Examples
# Swap $1 USDC for ETH (dollar prefix — note the single quotes)
npx awal@2.0.3 trade '$1' usdc eth
# Swap 0.50 USDC for ETH (decimal format)
npx awal@2.0.3 trade 0.50 usdc eth
# Swap 500000 atomic units of USDC for ETH
npx awal@2.0.3 trade 500000 usdc eth
# Swap 0.01 ETH for USDC
npx awal@2.0.3 trade 0.01 eth usdc
# Swap with custom slippage (2%)
npx awal@2.0.3 trade '$5' usdc eth --slippage 200
# Swap using contract addresses (decimals read from chain)
npx awal@2.0.3 trade 100 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 0x4200000000000000000000000000000000000006
# Get JSON output
npx awal@2.0.3 trade '$1' usdc eth --json
Prerequisites
- Must be authenticated (
awal status to check)
- Wallet must have sufficient balance of the source token
Error Handling
Common errors:
- "Not authenticated" - Run
awal auth login <email> first
- "Invalid token" - Use a valid alias (usdc, eth, weth) or 0x address
- "Cannot swap a token to itself" - From and to must be different
- "Swap failed: TRANSFER_FROM_FAILED" - Insufficient balance or approval issue
- "No liquidity" - Try a smaller amount or different token pair
- "Amount has X decimals but token only supports Y" - Too many decimal places
1---2name: trade3description: Swap or trade tokens on Base network. Use when you or the user want to trade, swap, exchange, buy, sell, or convert between tokens like USDC, ETH, and WETH. Covers phrases like "buy ETH", "sell ETH for USDC", "convert USDC to ETH", "get some ETH".4---56# Trading Tokens78Use the `npx awal@2.0.3 trade` command to swap tokens on Base network via the CDP Swap API. You must be authenticated to trade.910## Confirm wallet is initialized and authed1112```bash13npx awal@2.0.3 status14```1516If the wallet is not authenticated, refer to the `authenticate-wallet` skill.1718## Command Syntax1920```bash21npx awal@2.0.3 trade <amount> <from> <to> [options]22```2324## Arguments2526| Argument | Description |27| -------- | ---------------------------------------------------------------------- |28| `amount` | Amount to swap (see Amount Formats below) |29| `from` | Source token: alias (usdc, eth, weth) or contract address (0x...) |30| `to` | Destination token: alias (usdc, eth, weth) or contract address (0x...) |3132## Amount Formats3334The amount can be specified in multiple formats:3536| Format | Example | Description |37| ------------- | ---------------------- | -------------------------------------- |38| Dollar prefix | `'$1.00'`, `'$0.50'` | USD notation (decimals based on token) |39| Decimal | `1.0`, `0.50`, `0.001` | Human-readable with decimal point |40| Whole number | `5`, `100` | Interpreted as whole tokens |41| Atomic units | `500000` | Large integers treated as atomic units |4243**Auto-detection**: Large integers without a decimal point are treated as atomic units. For example, `500000` for USDC (6 decimals) = $0.50.4445**Decimals**: For known tokens (usdc=6, eth=18, weth=18), decimals are automatic. For arbitrary contract addresses, decimals are read from the token contract.4647## Options4849| Option | Description |50| -------------------- | --------------------------------------------- |51| `-c, --chain <name>` | Blockchain network (default: base) |52| `-s, --slippage <n>` | Slippage tolerance in basis points (100 = 1%) |53| `--json` | Output result as JSON |5455## Token Aliases5657| Alias | Token | Decimals | Address |58| ----- | ----- | -------- | ------------------------------------------ |59| usdc | USDC | 6 | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |60| eth | ETH | 18 | 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE |61| weth | WETH | 18 | 0x4200000000000000000000000000000000000006 |6263**IMPORTANT**: Always single-quote amounts that use `$` to prevent bash variable expansion (e.g. `'$1.00'` not `$1.00`).6465## Input Validation6667Before constructing the command, validate all user-provided values to prevent shell injection:6869- **amount**: Must match `^\$?[\d.]+$` (digits, optional decimal point, optional `$` prefix). Reject if it contains spaces, semicolons, pipes, backticks, or other shell metacharacters.70- **from / to**: Must be a known alias (`usdc`, `eth`, `weth`) or a valid `0x` hex address (`^0x[0-9a-fA-F]{40}$`). Reject any other value.71- **slippage**: Must be a positive integer (`^\d+$`).7273Do not pass unvalidated user input into the command.7475## Examples7677```bash78# Swap $1 USDC for ETH (dollar prefix — note the single quotes)79npx awal@2.0.3 trade '$1' usdc eth8081# Swap 0.50 USDC for ETH (decimal format)82npx awal@2.0.3 trade 0.50 usdc eth8384# Swap 500000 atomic units of USDC for ETH85npx awal@2.0.3 trade 500000 usdc eth8687# Swap 0.01 ETH for USDC88npx awal@2.0.3 trade 0.01 eth usdc8990# Swap with custom slippage (2%)91npx awal@2.0.3 trade '$5' usdc eth --slippage 2009293# Swap using contract addresses (decimals read from chain)94npx awal@2.0.3 trade 100 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 0x42000000000000000000000000000000000000069596# Get JSON output97npx awal@2.0.3 trade '$1' usdc eth --json98```99100## Prerequisites101102- Must be authenticated (`awal status` to check)103- Wallet must have sufficient balance of the source token104105## Error Handling106107Common errors:108109- "Not authenticated" - Run `awal auth login <email>` first110- "Invalid token" - Use a valid alias (usdc, eth, weth) or 0x address111- "Cannot swap a token to itself" - From and to must be different112- "Swap failed: TRANSFER_FROM_FAILED" - Insufficient balance or approval issue113- "No liquidity" - Try a smaller amount or different token pair114- "Amount has X decimals but token only supports Y" - Too many decimal places