ワンクリックで
openclaw-elsa-x402
DeFi tools for portfolio analysis, token search, and swap execution via Elsa API with x402 micropayments
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
DeFi tools for portfolio analysis, token search, and swap execution via Elsa API with x402 micropayments
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | openclaw-elsa-x402 |
| description | DeFi tools for portfolio analysis, token search, and swap execution via Elsa API with x402 micropayments |
| metadata | {"openclaw":{"requires":{"env":["PAYMENT_PRIVATE_KEY"]},"primaryEnv":"PAYMENT_PRIVATE_KEY"}} |
This skill provides access to the Elsa DeFi API for portfolio management, token analysis, and swap execution using x402 micropayments.
When executing swaps, follow this 4-step flow:
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────┐ ┌─────────────────────┐
│ 1. Get Quote │ ──▶ │ 2. Dry Run │ ──▶ │ 3. Confirm │ ──▶ │ 4. Execute Pipeline │
│ elsa_get_swap_quote │ │ elsa_execute_swap_ │ │ [User says │ │ elsa_pipeline_run_ │
│ │ │ dry_run │ │ "yes"] │ │ and_wait │
└─────────────────────┘ └─────────────────────┘ └─────────────┘ └─────────────────────┘
Step 1: Get Quote - Show user what they'll receive
npx tsx scripts/index.ts elsa_get_swap_quote '{
"from_chain": "base", "from_token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"from_amount": "10", "to_chain": "base", "to_token": "0x4200000000000000000000000000000000000006",
"wallet_address": "0x...", "slippage": 0.5
}'
Step 2: Dry Run - Create pipeline, get pipeline_id
npx tsx scripts/index.ts elsa_execute_swap_dry_run '{...same params...}'
# Returns: { "pipeline_id": "abc-123", "confirmation_token": "..." }
Step 3: User Confirmation - Present results and wait for explicit "yes"
Step 4: Execute Pipeline - Sign and broadcast transactions
ELSA_ENABLE_EXECUTION_TOOLS=true npx tsx scripts/index.ts elsa_pipeline_run_and_wait '{
"pipeline_id": "abc-123",
"timeout_seconds": 180,
"poll_interval_seconds": 3,
"mode": "local_signer"
}'
# Automatically: signs approve tx → submits → signs swap tx → submits → returns tx hashes
# For x402 API payments
PAYMENT_PRIVATE_KEY=0x...
# For signing swap transactions (optional - falls back to PAYMENT_PRIVATE_KEY)
TRADE_PRIVATE_KEY=0x...
# Enable execution tools
ELSA_ENABLE_EXECUTION_TOOLS=true
elsa_budget_status if unsure about remaining budgetSearch for tokens across supported blockchains.
npx tsx scripts/index.ts elsa_search_token '{"query": "USDC", "limit": 5}'
Input:
query (string, required): Token name, symbol, or addresslimit (number, optional): Max results (default: 10)Get current price for a token.
npx tsx scripts/index.ts elsa_get_token_price '{"token_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "chain": "base"}'
Input:
token_address (string, required): Token contract addresschain (string, optional): Chain name (default: "base")Get token balances for a wallet.
npx tsx scripts/index.ts elsa_get_balances '{"wallet_address": "0x..."}'
Input:
wallet_address (string, required): Wallet address to queryGet comprehensive portfolio analysis.
npx tsx scripts/index.ts elsa_get_portfolio '{"wallet_address": "0x..."}'
Input:
wallet_address (string, required): Wallet address to analyzeGet wallet behavior and risk assessment.
npx tsx scripts/index.ts elsa_analyze_wallet '{"wallet_address": "0x..."}'
Input:
wallet_address (string, required): Wallet address to analyzeGet a swap quote with optimal routing.
npx tsx scripts/index.ts elsa_get_swap_quote '{
"from_chain": "base",
"from_token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"from_amount": "100",
"to_chain": "base",
"to_token": "0x4200000000000000000000000000000000000006",
"wallet_address": "0x...",
"slippage": 0.5
}'
Input:
from_chain (string, required): Source chainfrom_token (string, required): Source token addressfrom_amount (string, required): Amount to swapto_chain (string, required): Destination chainto_token (string, required): Destination token addresswallet_address (string, required): Wallet addressslippage (number, required): Slippage tolerance (0-50)Simulate a swap without execution. Returns a confirmation token for subsequent confirmed execution.
npx tsx scripts/index.ts elsa_execute_swap_dry_run '{
"from_chain": "base",
"from_token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"from_amount": "100",
"to_chain": "base",
"to_token": "0x4200000000000000000000000000000000000006",
"wallet_address": "0x...",
"slippage": 0.5
}'
Output includes:
confirmation_token (if ELSA_REQUIRE_CONFIRMATION_TOKEN=true)Check current budget usage and remaining limits.
npx tsx scripts/index.ts elsa_budget_status '{}'
Output:
spent_today_usd: Amount spent todayremaining_today_usd: Remaining daily budgetcalls_last_minute: Recent call countlast_calls: Recent call detailsGet all limit orders for a wallet.
npx tsx scripts/index.ts elsa_get_limit_orders '{"wallet_address": "0x...", "chain": "base"}'
Input:
wallet_address (string, required): Wallet address to querychain (string, optional): Chain name (default: "base")Output:
orders: Array of limit orders with status, prices, and expiryGet perpetual positions for a wallet.
npx tsx scripts/index.ts elsa_get_perp_positions '{"wallet_address": "0x..."}'
Input:
wallet_address (string, required): Wallet address to queryOutput:
positions: Array of open perp positions with PnL, leverage, and liquidation pricestotal_unrealized_pnl: Sum of unrealized profits/lossestotal_margin: Total margin usedGet transaction history for a wallet.
npx tsx scripts/index.ts elsa_get_transaction_history '{"wallet_address": "0x...", "chain": "base", "limit": 20}'
Input:
wallet_address (string, required): Wallet address to querychain (string, optional): Filter by chainlimit (number, optional): Max results (default: 20, max: 100)Output:
transactions: Array of transactions with details, token transfers, and statusExecute a confirmed swap. Requires prior dry-run and confirmation token.
npx tsx scripts/index.ts elsa_execute_swap_confirmed '{
"from_chain": "base",
"from_token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"from_amount": "100",
"to_chain": "base",
"to_token": "0x4200000000000000000000000000000000000006",
"wallet_address": "0x...",
"slippage": 0.5,
"confirmation_token": "abc123..."
}'
Check status of a pipeline/transaction.
npx tsx scripts/index.ts elsa_pipeline_get_status '{"pipeline_id": "pip_123456789"}'
Submit a signed transaction hash to the pipeline.
npx tsx scripts/index.ts elsa_pipeline_submit_tx_hash '{"task_id": "task_123", "tx_hash": "0x..."}'
Orchestrate full pipeline execution with automatic signing and submission.
npx tsx scripts/index.ts elsa_pipeline_run_and_wait '{
"pipeline_id": "pip_123456789",
"timeout_seconds": 120,
"poll_interval_seconds": 2,
"mode": "local_signer"
}'
Modes:
local_signer: Signs and broadcasts transactions using TRADE_PRIVATE_KEYexternal_signer: Returns unsigned tx_data for external signingCreate a limit order to execute when price reaches target.
ELSA_ENABLE_EXECUTION_TOOLS=true npx tsx scripts/index.ts elsa_create_limit_order '{
"wallet_address": "0x...",
"chain": "base",
"from_token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"to_token": "0x4200000000000000000000000000000000000006",
"from_amount": "100",
"limit_price": "0.0004",
"expiry_hours": 24
}'
Input:
wallet_address (string, required): Wallet addresschain (string, required): Chain namefrom_token (string, required): Token to sellto_token (string, required): Token to buyfrom_amount (string, required): Amount to selllimit_price (string, required): Target price to trigger executionexpiry_hours (number, optional): Hours until order expires (default: 24, max: 720)Cancel an existing limit order.
ELSA_ENABLE_EXECUTION_TOOLS=true npx tsx scripts/index.ts elsa_cancel_limit_order '{
"wallet_address": "0x...",
"order_id": "order_123",
"chain": "base"
}'
Input:
wallet_address (string, required): Wallet addressorder_id (string, required): Order ID to cancelchain (string, optional): Chain name (default: "base")Open a perpetual futures position.
ELSA_ENABLE_EXECUTION_TOOLS=true npx tsx scripts/index.ts elsa_open_perp_position '{
"wallet_address": "0x...",
"market": "ETH-USD",
"side": "long",
"size_usd": "100",
"leverage": 5,
"take_profit": "4000",
"stop_loss": "2800"
}'
Input:
wallet_address (string, required): Wallet addressmarket (string, required): Market pair (e.g., "ETH-USD", "BTC-USD")side (enum, required): "long" or "short"size_usd (string, required): Position size in USDleverage (number, optional): Leverage multiplier (default: 1, max: 100)take_profit (string, optional): Take profit pricestop_loss (string, optional): Stop loss priceClose an open perpetual position.
ELSA_ENABLE_EXECUTION_TOOLS=true npx tsx scripts/index.ts elsa_close_perp_position '{
"wallet_address": "0x...",
"position_id": "pos_123",
"close_percentage": 100
}'
Input:
wallet_address (string, required): Wallet addressposition_id (string, required): Position ID to closeclose_percentage (number, optional): Percentage to close (default: 100, range: 1-100)| Tool | Estimated Cost |
|---|---|
| elsa_search_token | $0.002 |
| elsa_get_token_price | $0.002 |
| elsa_get_balances | $0.002 |
| elsa_get_portfolio | $0.002 |
| elsa_analyze_wallet | $0.005 |
| elsa_get_swap_quote | $0.002 |
| elsa_execute_swap_dry_run | $0.005 |
| elsa_get_limit_orders | $0.002 |
| elsa_get_perp_positions | $0.002 |
| elsa_get_transaction_history | $0.002 |
| elsa_create_limit_order | $0.05 |
| elsa_cancel_limit_order | $0.01 |
| elsa_open_perp_position | $0.05 |
| elsa_close_perp_position | $0.05 |
| elsa_execute_swap_confirmed | $0.05 |