Back to skills
SKILL.md
Agentwallex Openclaw
ASecurityCreate and manage AI agents, send USDC/USDT payments, check balances across Ethereum, BSC, and Tron
- 2,128 stars
- 0 votes
- 0 copies
- 1 view
- Added September 6, 2026
Works with
Security analysis
93/100- Performs destructive filesystem operations
Pro scans all 3 files and shows the line behind each finding
npx -y skills add LeoYeAI/openclaw-master-skills --skill agentwallex-openclaw --agent claude-codeAre you the author of Agentwallex Openclaw?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/leoyeai-agentwallex-openclaw)---
name: agentwallex-openclaw
description: Create and manage AI agents, send USDC/USDT payments, check balances across Ethereum, BSC, and Tron
homepage: https://agentwallex.com
emoji: π³
metadata: {"openclaw": {"requires": {"bins": ["curl", "jq"], "configPaths": ["~/.openclaw/agentwallex/config.json"]}, "zeroConfig": false, "disableModelInvocation": false, "humanConfirmation": {"required": true, "actions": ["transfer", "pay"]}}}
---
# AgentWallex Payment Skill
## What It Does
The AgentWallex Payment skill gives AI agents core capabilities for managing agents and crypto payments:
- **Zero-config setup** β Set up AgentWallex through conversation. No config files or environment variables needed.
- **Create and manage agents** β Create, update, suspend, and delete AI agents with dedicated wallets.
- **Multi-chain support** β Operate across Ethereum, BSC, and Tron networks.
- **Check token balances** β Query available, locked, and pending balances for any agent wallet on supported chains.
- **Send outbound transfers** β Create and submit on-chain USDC/USDT transfers to any recipient address.
- **Query transaction status** β Track payment lifecycle from pending through confirmed or failed, with full tx hash details.
## Supported Chains & Tokens
### Mainnet
| Chain | Tokens | Address Format |
|-------|--------|----------------|
| Ethereum | USDC, USDT | `0x...` (42 chars) |
| BSC | USDC, USDT | `0x...` (42 chars) |
| Tron | USDT | `T...` (34 chars) |
### Sandbox (Testnet)
| Chain | Network | Tokens |
|-------|---------|--------|
| Ethereum | Sepolia | USDC, USDT |
| BSC | BSC Testnet | USDC, USDT |
| Tron | Nile Testnet | USDT |
**Start with sandbox** for development and testing. Sandbox transactions use testnet tokens and don't cost real money.
## Requirements
| Requirement | Details |
|---|---|
| System binaries | `curl`, `jq` |
No API key or environment variable is needed upfront β credentials are configured through conversation and stored locally.
## Setup
Install via ClawHub:
```bash
clawhub install agentwallex-openclaw
```
Then tell your AI agent:
```
"Set up AgentWallex"
```
The agent will use the `agentwallex_setup` tool and guide you through:
1. Opening the [AgentWallex Dashboard](https://app-sandbox.agentwallex.com) (sandbox) or [Production Dashboard](https://app.agentwallex.com)
2. Signing in with Google
3. Creating an API key (starts with `awx_`)
4. Copying your Agent ID
5. Pasting the credentials back β they're validated and saved automatically
Credentials are stored locally at `~/.openclaw/agentwallex/config.json` with owner-only permissions (0600). No environment variables needed.
### Reconfiguring
To change credentials or switch agents, just say:
```
"Reconfigure AgentWallex with my new API key awx_xxx and agent ID agent-123"
```
The agent will validate the new credentials and update the local config.
## Upgrade
Update to the latest version:
```bash
openclaw plugins update @agentwallex/agentwallex-openclaw
```
Or update all plugins at once:
```bash
openclaw plugins update --all
```
## Uninstall
```bash
openclaw plugins uninstall @agentwallex/agentwallex-openclaw
```
To keep plugin files on disk:
```bash
openclaw plugins uninstall @agentwallex/agentwallex-openclaw --keep-files
```
To also remove locally stored credentials:
```bash
rm -rf ~/.openclaw/agentwallex
```
## Available Tools
| Tool | Requires Config | Description |
|---|---|---|
| `agentwallex_setup` | No | Check configuration status and get setup instructions |
| `agentwallex_configure` | No | Validate and save API credentials |
| `agentwallex_create_agent` | Yes | Create a new AI agent with its own wallet |
| `agentwallex_list_agents` | Yes | List all agents and their status |
| `agentwallex_update_agent` | Yes | Update an agent's name or description |
| `agentwallex_delete_agent` | Yes | Delete an agent |
| `agentwallex_agent_status` | Yes | Update agent status (active / suspended) |
| `agentwallex_create_wallet` | Yes | Get or create a deposit address for the agent |
| `agentwallex_check_balance` | Yes | Check the agent's token balances (per chain) |
| `agentwallex_pay` | Yes | Send a payment to a recipient address |
| `agentwallex_tx_status` | Yes | Query the status of a transaction |
| `agentwallex_list_transactions` | Yes | List transactions with filtering |
## API Reference
### Environments
| Environment | Base URL | Description |
|---|---|---|
| **Sandbox** | `https://api-sandbox.agentwallex.com/api/v1` | Testing and development. Use sandbox API keys (`awx_sk_test_*`). |
| **Production** | `$AGENTWALLEX_BASE_URL` | Live environment. Use production API keys (`awx_sk_live_*`). |
**Start with sandbox** for development and testing. Switch to production when ready to go live.
```bash
# Set the base URL (default: sandbox)
export AGENTWALLEX_BASE_URL="https://api-sandbox.agentwallex.com/api/v1"
```
All requests require the API key header:
```
X-API-Key: <your-api-key>
```
### Response Format
**Success (single object):** Returns the object directly, no envelope.
```json
{
"agent_id": "agent-a1b2c3",
"agent_name": "payment-bot",
"chain": "ethereum",
"status": "active"
}
```
**Success (paginated list):**
```json
{
"data": [ ... ],
"total": 42,
"has_more": true
}
```
**Error:**
```json
{
"code": "not_found",
"type": "not_found_error",
"message": "Agent not found"
}
```
Error types: `validation_error` (400), `authentication_error` (401), `authorization_error` (403), `not_found_error` (404), `conflict_error` (409), `rate_limit_error` (429), `internal_error` (500), `service_unavailable` (503).
### Pagination Parameters
All list endpoints support:
| Parameter | Type | Default | Description |
|---|---|---|---|
| `page_num` | number | 1 | Page number |
| `page_size` | number | 20 | Items per page (max 100) |
| `sort` | string | `created_at` | Field to sort by |
| `order` | string | `desc` | Sort order: `asc` or `desc` |
### Create Agent
Creates a new AI agent with its own wallet on the specified chain. Returns `201 Created`.
```bash
curl -s -X POST \
"$AGENTWALLEX_BASE_URL/agents" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent_name": "payment-bot",
"chain": "ethereum",
"agent_description": "Handles outbound payments"
}' | jq
```
**Request body:**
| Field | Type | Required | Description |
|---|---|---|---|
| `agent_name` | string | yes | Name for the new agent |
| `chain` | string | yes | Blockchain network: `ethereum`, `bsc`, `tron` (mainnet) or `ethereum-sepolia`, `bsc-testnet`, `tron-nile` (sandbox) |
| `agent_description` | string | no | Optional description of the agent's purpose |
| `wallet_address` | string | no | Existing wallet address to associate |
| `metadata` | string | no | Arbitrary metadata string |
**Response** β An `Agent` object:
| Field | Type | Description |
|---|---|---|
| `agent_id` | string | Unique agent identifier |
| `agent_name` | string | Agent name |
| `chain` | string | Blockchain network |
| `status` | string | Agent status (`active`, `inactive`, `suspended`) |
| `wallet_address` | string | Associated wallet address (if any) |
| `created_at` | string | ISO 8601 creation timestamp |
### List Agents
Lists all agents accessible to the current API key, with optional filtering.
```bash
curl -s -X GET \
"$AGENTWALLEX_BASE_URL/agents?status=active&page_num=1&page_size=20" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" | jq
```
**Query parameters:**
| Field | Type | Required | Description |
|---|---|---|---|
| `status` | string | no | Filter by status: `active`, `inactive`, `suspended` |
| `chain` | string | no | Filter by blockchain network |
| `page_num` | number | no | Page number (default: 1) |
| `page_size` | number | no | Items per page (default: 20) |
| `sort` | string | no | Sort field (default: `created_at`) |
| `order` | string | no | Sort order: `asc` or `desc` (default: `desc`) |
**Response** β A paginated list:
```json
{
"data": [
{
"agent_id": "agent-a1b2c3",
"agent_name": "payment-bot",
"chain": "ethereum",
"status": "active",
"wallet_address": "0x...",
"created_at": "2025-03-01T12:00:00Z"
}
],
"total": 1,
"has_more": false
}
```
### Check Balance
Returns balances for a specific agent (one entry per chain/token).
```bash
curl -s -X GET \
"$AGENTWALLEX_BASE_URL/agents/AGENT_ID/balance" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" | jq
```
**Response** β An array of balance objects (one per chain/token):
| Field | Type | Description |
|---|---|---|
| `agent_id` | string | The agent identifier |
| `chain` | string | Blockchain network |
| `token` | string | Token symbol (`USDC` or `USDT`) |
| `available` | string | Available balance for spending |
| `locked` | string | Balance locked in pending transactions |
| `pending_income` | string | Incoming funds not yet confirmed |
| `total_deposited` | string | Lifetime deposited amount |
| `total_withdrawn` | string | Lifetime withdrawn amount |
| `total_paid` | string | Lifetime outbound payments |
| `total_earned` | string | Lifetime earned income |
### Get Deposit Address
Returns a deposit address for funding the agent wallet. EVM chains (Ethereum, BSC) share the same address.
```bash
curl -s -X POST \
"$AGENTWALLEX_BASE_URL/agents/AGENT_ID/deposit" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chain": "ethereum"
}' | jq
```
**Request body:**
| Field | Type | Required | Description |
|---|---|---|---|
| `chain` | string | no | Target chain: `ethereum`, `bsc`, `tron` (defaults to `ethereum`) |
**Response:**
```json
{
"agent_id": "AGENT_ID",
"chain": "ethereum",
"address": "0x..."
}
```
### Transfer
Initiates a transfer from an agent's wallet.
```bash
curl -s -X POST \
"$AGENTWALLEX_BASE_URL/agents/AGENT_ID/transfer" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": "10.00",
"to_address": "0xRecipientAddress",
"chain": "ethereum",
"token": "USDC"
}' | jq
```
**Request body:**
| Field | Type | Required | Description |
|---|---|---|---|
| `amount` | string | yes | Amount to transfer |
| `to_address` | string | yes | Recipient wallet address |
| `chain` | string | no | Target chain (defaults to `ethereum`) |
| `token` | string | no | Token to transfer: `USDC` or `USDT` (defaults to `USDC`) |
**Response:**
| Field | Type | Description |
|---|---|---|
| `transaction_id` | string | Transaction identifier |
| `amount` | string | Transferred amount |
| `to_address` | string | Recipient address |
| `chain` | string | Blockchain network |
| `tx_hash` | string | On-chain transaction hash (when available) |
| `status` | string | Transaction status |
### Get Transaction Status
Retrieves the current status and details of a transaction.
```bash
curl -s -X GET \
"$AGENTWALLEX_BASE_URL/transactions/TRANSACTION_ID" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" | jq
```
**Response:**
| Field | Type | Description |
|---|---|---|
| `transaction_id` | string | Transaction identifier |
| `status` | string | One of: `pending`, `completed`, `failed`, `cancelled` |
| `amount` | string | Transaction amount |
| `from_address` | string | Sender wallet address |
| `to_address` | string | Recipient wallet address |
| `token` | string | Token symbol (`USDC` or `USDT`) |
| `chain` | string | Blockchain network |
| `tx_hash` | string | On-chain transaction hash (when available) |
| `error_message` | string | Error details if status is `failed` |
| `confirmed_at` | string | ISO 8601 timestamp of confirmation |
### List Transactions
Lists transactions with optional filtering. Transactions are read-only.
```bash
curl -s -X GET \
"$AGENTWALLEX_BASE_URL/transactions?agent_id=AGENT_ID&status=completed&page_num=1" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" | jq
```
**Query parameters:**
| Field | Type | Required | Description |
|---|---|---|---|
| `agent_id` | string | no | Filter by agent |
| `status` | string | no | Filter by status |
| `direction` | string | no | Filter by direction: `inbound`, `outbound` |
| `page_num` | number | no | Page number (default: 1) |
| `page_size` | number | no | Items per page (default: 20) |
## Workflow Examples
### Flow 1: Check Balance, Send Payment, Verify Transaction
Step 1 β Check the agent's available balance:
```bash
curl -s -X GET \
"$AGENTWALLEX_BASE_URL/agents/AGENT_ID/balance" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" | jq '.[0].available'
```
Step 2 β Transfer funds (only if balance is sufficient):
```bash
TX=$(curl -s -X POST \
"$AGENTWALLEX_BASE_URL/agents/AGENT_ID/transfer" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": "10.00",
"to_address": "0xRecipientAddress",
"chain": "ethereum",
"token": "USDC"
}')
TX_ID=$(echo "$TX" | jq -r '.transaction_id')
echo "Transaction ID: $TX_ID"
```
Step 3 β Check the transaction:
```bash
curl -s -X GET \
"$AGENTWALLEX_BASE_URL/transactions?agent_id=AGENT_ID&status=completed" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" | jq '.data[0]'
```
### Flow 2: Create Agent, Fund Wallet, Send Payment
Step 1 β Create a new agent:
```bash
AGENT=$(curl -s -X POST \
"$AGENTWALLEX_BASE_URL/agents" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent_name": "payment-bot",
"chain": "ethereum",
"agent_description": "Handles outbound payments"
}')
AGENT_ID=$(echo "$AGENT" | jq -r '.agent_id')
echo "Agent ID: $AGENT_ID"
```
Step 2 β Get a deposit address for the new agent:
```bash
DEPOSIT=$(curl -s -X POST \
"$AGENTWALLEX_BASE_URL/agents/$AGENT_ID/deposit" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"chain": "ethereum"}')
echo "Deposit to: $(echo "$DEPOSIT" | jq -r '.address')"
```
Step 3 β After funding, check balance and transfer:
```bash
# Check balance
curl -s -X GET \
"$AGENTWALLEX_BASE_URL/agents/$AGENT_ID/balance" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" | jq '.[0].available'
# Transfer USDC
curl -s -X POST \
"$AGENTWALLEX_BASE_URL/agents/$AGENT_ID/transfer" \
-H "X-API-Key: $AGENTWALLEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": "10.00",
"to_address": "0xRecipientAddress",
"chain": "ethereum",
"token": "USDC"
}' | jq
```
## Guardrails & Safety
When using this skill, you MUST follow these rules:
- **Never send to zero or null addresses.** Always validate that `to_address` is a non-empty, properly formatted address before creating a transaction.
- **Always check balance before sending.** Query the agent's available balance and confirm it covers the intended amount plus potential fees.
- **Verify transaction amounts are reasonable.** Before submitting, confirm the amount matches the intended payment. Reject or flag amounts that appear unusually large.
- **Confirm recipient address format.** For EVM chains (Ethereum, BSC): address starts with `0x` and is 42 characters. For Tron: address starts with `T` and is 34 characters.
- **Verify token support on chain.** Ethereum and BSC support USDC and USDT. Tron only supports USDT.
## Error Handling
| HTTP Status | Error Type | Description | Action |
|---|---|---|---|
| 400 | `validation_error` | Invalid request parameters | Check request body and fix validation errors |
| 401 | `authentication_error` | Invalid or missing API key | Run `agentwallex_setup` to reconfigure credentials |
| 403 | `authorization_error` | Insufficient permissions | Check API key scope and agent ownership |
| 404 | `not_found_error` | Resource does not exist | Verify the ID is correct and exists |
| 409 | `conflict_error` | Resource conflict | The resource already exists or has a conflict |
| 429 | `rate_limit_error` | Too many requests | Back off with exponential delay and retry |
| 500 | `internal_error` | Internal server error | Retry after a short delay |
| 503 | `service_unavailable` | Service temporarily unavailable | Retry after a short delay |
## Troubleshooting
| Problem | Solution |
|---|---|
| "AgentWallex is not configured yet" | Run `agentwallex_setup` to start the setup flow, then use `agentwallex_configure` to save credentials. |
| "Invalid API key format" | API keys must start with `awx_`. Get a valid key from the [Dashboard](https://app.agentwallex.com). |
| Balance shows 0 but funds were deposited | Deposits may take a few minutes to confirm on-chain. Wait and re-query. Also verify you are checking the correct chain. |
| Transaction stuck in `pending` | On-chain confirmation times vary. Poll the transaction status endpoint periodically. If stuck for over 10 minutes, check the chain's block explorer using the `tx_hash`. |
| `curl: command not found` | Install curl via your system package manager (`apt install curl`, `brew install curl`, etc.). |
| `jq: command not found` | Install jq via your system package manager (`apt install jq`, `brew install jq`, etc.). |
Files in this skill
- README.md
- SKILL.md
- _meta.json
Attribution
Comments
Loading commentsβ¦