Skills llm_wallet
Manage crypto wallets and make x402 micropayments with USDC stablecoins on Polygon
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/akshatgada/llm-wallet" ~/.claude/skills/openclaw-skills-llm-wallet && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/akshatgada/llm-wallet" ~/.openclaw/skills/openclaw-skills-llm-wallet && rm -rf "$T"
skills/akshatgada/llm-wallet/SKILL.mdLLM Wallet - Crypto Wallet & x402 Micropayments
Use
llm-wallet commands to manage crypto wallets and make micropayments to paid APIs using USDC stablecoins on Polygon blockchain.
Default Network: Polygon Testnet (polygon-amoy) - safe for testing Facilitator: https://x402-amoy.polygon.technology
Quick Start
# Create wallet llm-wallet create # Check balance llm-wallet balance # Set spending limits (recommended) llm-wallet set-limit --per-tx 0.10 --daily 5.00 # View transaction history llm-wallet history
Wallet Management
Create Wallet
llm-wallet create [--label <name>]
Creates a new HD wallet with encryption. Returns wallet address.
Example:
llm-wallet create --label "agent-wallet"
Import Wallet
llm-wallet import --private-key <key> [--label <name>]
Import existing wallet from private key.
Check Balance
llm-wallet balance
Shows USDC balance and native token balance on current network.
Transaction History
llm-wallet history
View all transactions and payments made from this wallet.
Spending Limits
Set Limits
llm-wallet set-limit --per-tx <amount> --daily <amount>
Set per-transaction and daily spending caps in USDC.
Example:
llm-wallet set-limit --per-tx 0.10 --daily 5.00
Check Limits
llm-wallet get-limits
View current spending limits and daily usage.
x402 Payments
Make Payment
llm-wallet pay <url> [--method GET|POST] [--body <json>]
Make x402 micropayment to a paid API endpoint.
⚠️ IMPORTANT: Always ask user for approval before making payments!
Example:
# Ask user: "I need to make a payment to https://api.example.com/weather. Cost: $0.001 USDC. Approve?" llm-wallet pay "https://api.example.com/weather?location=London"
Workflow:
- Check if payment is needed:
llm-wallet check-payment <url> - Show user: URL, estimated cost, current limits
- Wait for user approval
- Execute:
llm-wallet pay <url> - Confirm completion and show transaction ID
Check Payment (Pre-flight)
llm-wallet check-payment <url>
Checks if wallet can afford payment without executing it.
Dynamic API Registration
Register API
llm-wallet register-api <url> --name <tool_name>
Register a paid API endpoint as a reusable tool.
Example:
llm-wallet register-api "https://api.example.com/weather" --name weather_api
List Registered APIs
llm-wallet list-apis
Show all registered API tools.
Call Registered API
llm-wallet call-api <tool_name> [--params <json>]
Execute a registered API tool. Requires approval if payment needed.
Example:
# Ask user for approval first if cost > 0 llm-wallet call-api weather_api --params '{"location": "London"}'
Unregister API
llm-wallet unregister-api <tool_name>
Remove a registered API tool.
Seller Tools (Advanced)
Verify Payment
llm-wallet verify-payment --header <x-payment-header> --requirements <json>
Verify incoming payment from a buyer (seller-side).
Create Payment Requirements
llm-wallet create-requirements --price <amount> --pay-to <address> --url <resource-url>
Generate payment requirements for a protected resource.
Safety Rules
- Network Default: Always uses polygon-amoy (testnet) unless configured otherwise
- Approval Required: Always ask user before making payments
- Spending Limits: Check limits before payment attempts
- Transaction Logging: All payments are logged with timestamps
- Encryption: Wallets are encrypted with AES-256-GCM
Configuration
Environment Variables
- Wallet encryption key (32+ chars, auto-generated if missing)WALLET_ENCRYPTION_KEY
- Network selection (default:WALLET_NETWORK
|polygon-amoy
)polygon
- Custom facilitator URL (auto-configured)FACILITATOR_URL
- Per-transaction limit overrideWALLET_MAX_TX_AMOUNT
- Daily limit overrideWALLET_DAILY_LIMIT
Network Info
- Polygon Testnet (Amoy): Chain ID 80002, Facilitator: https://x402-amoy.polygon.technology
- Polygon Mainnet: Chain ID 137, Facilitator: https://x402.polygon.technology
Common Workflows
First Time Setup
# 1. Create wallet llm-wallet create --label "my-agent" # 2. Set spending limits llm-wallet set-limit --per-tx 0.10 --daily 5.00 # 3. Check balance (will be 0 initially) llm-wallet balance # 4. Fund wallet with testnet USDC # User needs to: visit https://faucet.polygon.technology/
Making a Payment
# 1. Pre-check payment llm-wallet check-payment "https://api.example.com/weather?location=London" # 2. Show user: URL, cost estimate, current limits # 3. Ask user: "Approve payment of $0.001 USDC to https://api.example.com/weather?" # 4. If approved, execute payment llm-wallet pay "https://api.example.com/weather?location=London" # 5. Confirm and show transaction ID llm-wallet history
Registering a Paid API
# 1. Register the API llm-wallet register-api "https://api.example.com/translate" --name translate_api # 2. List available APIs llm-wallet list-apis # 3. Call the API (with approval) llm-wallet call-api translate_api --params '{"text": "hello", "to": "es"}' # 4. View payment in history llm-wallet history
Error Handling
- Insufficient Balance: Show error and guide user to faucet (testnet) or funding instructions (mainnet)
- Payment Rejected: Transaction reverted, check error message for details
- Limit Exceeded: Show current limits and daily usage, suggest increasing limits
- Network Timeout: Retry with exponential backoff (max 3 attempts)
References
See
references/ folder for:
- x402 payment protocol overviewx402-protocol.md
- Detailed wallet setup guidewallet-setup.md
- More usage examplesexamples.md
Notes
- All amounts are in USDC (6 decimals)
- Default network is testnet for safety
- Testnet USDC has no real value
- Always verify network before mainnet usage
- Keep encryption key secure (never share or commit)