🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Skill

by @ijaack

Multi-EVM agent wallet SDK with onchain identity (ERC-8004), payment rails (x402), cross-chain liquidity (Li.Fi bridging + DEX aggregation + DeFi Composer),...

Versionv1.9.7
Downloads1,813
Stars⭐ 1
TERMINAL
clawhub install evalanche

πŸ“– About This Skill


name: evalanche description: > Multi-EVM agent wallet SDK with onchain identity (ERC-8004), payment rails (x402), cross-chain liquidity (Li.Fi bridging + DEX aggregation + DeFi Composer), destination gas funding (Gas.zip), perpetual futures trading (dYdX v4), market intelligence (CoinGecko), prediction markets (Polymarket CLOB), and DeFi operations (liquid staking + EIP-4626 vaults). Supports 21+ EVM chains: Ethereum, Base, Arbitrum, Optimism, Polygon, BSC, Avalanche, and more. Agents generate and manage their own keys β€” no human input required. Use when: booting an autonomous agent wallet on any EVM chain, sending tokens, calling contracts, resolving agent identity, checking reputation, making x402 payment-gated API calls, bridging tokens cross-chain (Li.Fi), same-chain DEX swaps (31+ aggregators via Li.Fi), one-click DeFi operations (Composer: bridge + deposit into Morpho/Aave/Pendle/Lido/etc), tracking cross-chain transfer status, discovering tokens and prices across chains, querying gas prices, finding available bridges and DEX aggregators, funding gas on destination chains (Gas.zip), cross-chain transfers (Avalanche C↔X↔P), delegating stake, querying validators, signing messages, creating subnets, managing L1 validators, adding validators with BLS keys, querying node info, trading perpetual futures on dYdX v4 (100+ markets), searching for perp markets across venues, querying CoinGecko market data, searching Polymarket markets and order books, buying or selling Polymarket outcome shares on Polygon, staking/unstaking sAVAX via Benqi, depositing/withdrawing from EIP-4626 vaults (yoUSD, Morpho, Aave, etc), and resolving known Avalanche/Base DeFi contracts with canonical chain routing or interoperable-address inputs. Don't use when: managing ENS (use moltbook scripts). Network: yes (EVM RPCs via Routescan + public fallbacks, dYdX Cosmos chain). Cost: gas fees per transaction. metadata: { "openclaw": { "emoji": "⛓️", "homepage": "https://github.com/iJaack/evalanche", "source": "https://github.com/iJaack/evalanche", "requires": { "bins": ["node"] }, "env": [ { "name": "AGENT_PRIVATE_KEY", "description": "Hex-encoded private key (EVM). Optional if using boot() or AGENT_MNEMONIC.", "required": false, "secret": true, }, { "name": "AGENT_MNEMONIC", "description": "BIP-39 mnemonic phrase (required for Avalanche multi-VM X/P-Chain). Optional if using boot() or AGENT_PRIVATE_KEY.", "required": false, "secret": true, }, { "name": "AGENT_ID", "description": "ERC-8004 agent token ID for identity resolution (Avalanche C-Chain only).", "required": false, }, { "name": "AGENT_KEYSTORE_DIR", "description": "Directory for encrypted keystore in boot() mode. Default: ~/.evalanche/keys", "required": false, }, { "name": "AVALANCHE_NETWORK", "description": "EVM chain alias: 'ethereum', 'base', 'arbitrum', 'optimism', 'polygon', 'bsc', 'avalanche', 'fuji', etc. Default: avalanche.", "required": false, }, { "name": "EVM_CHAIN", "description": "Alias for AVALANCHE_NETWORK. EVM chain to connect to.", "required": false, }, ], "configPaths": ["~/.evalanche/keys/agent.json"], "install": [ { "id": "node", "kind": "node", "package": "evalanche", "bins": ["evalanche-mcp"], "label": "Install evalanche (npm)", }, ], }, }

Evalanche β€” Multi-EVM Agent Wallet

Headless wallet SDK with ERC-8004 identity, x402 payments, Li.Fi cross-chain liquidity (bridging + DEX aggregation + DeFi Composer), Gas.zip gas funding, dYdX v4 perpetuals, CoinGecko market intelligence, Polymarket market discovery and execution, contract interaction helpers (approve-and-call + UUPS upgrade), and DeFi operations (liquid staking + EIP-4626 vaults). Works on 21+ EVM chains. Works as CLI or MCP server.

Source: https://github.com/iJaack/evalanche License: MIT

Supported Chains

Ethereum, Base, Arbitrum, Optimism, Polygon, BSC, Avalanche, Fantom, Gnosis, zkSync Era, Linea, Scroll, Blast, Mantle, Celo, Moonbeam, Cronos, Berachain, + testnets (Fuji, Sepolia, Base Sepolia).

Routescan RPCs preferred where available, with public fallback RPCs.

Security Model

Key Storage & Encryption

Evalanche.boot() manages keys autonomously with encrypted-at-rest storage:

1. First run: Generates a BIP-39 mnemonic via ethers.HDNodeWallet.createRandom() 2. Encryption: AES-128-CTR + scrypt KDF (geth-compatible keystore format) 3. Password derivation: 32-byte random entropy file via crypto.randomBytes(32) 4. File permissions: chmod 0o600 (owner read/write only) 5. Storage location: ~/.evalanche/keys/ by default

MCP Server Access Controls

  • Stdio mode (default): stdin/stdout only. No network exposure.
  • HTTP mode (--http): localhost:3402. Do not expose publicly without auth.
  • OpenClaw External Secrets (Preferred when available)

    Priority: OpenClaw secrets β†’ raw env vars β†’ encrypted keystore.

    Setup

    1. Install

    npm install -g evalanche
    

    2. Boot on any chain

    import { Evalanche } from 'evalanche';

    // Base const { agent } = await Evalanche.boot({ network: 'base' });

    // Ethereum const { agent: eth } = await Evalanche.boot({ network: 'ethereum' });

    // Arbitrum const { agent: arb } = await Avalanche.boot({ network: 'arbitrum' });

    // Avalanche (with identity) const { agent: avax } = await Evalanche.boot({ network: 'avalanche', identity: { agentId: '1599' }, });

    3. Run as MCP server

    AVALANCHE_NETWORK=base evalanche-mcp
    

    Available Tools (MCP)

    Wallet

    | Tool | Description | |------|-------------| | get_address | Get agent wallet address | | get_balance | Get native token balance | | sign_message | Sign arbitrary message | | send_avax | Send native tokens | | call_contract | Call a contract method |

    Identity (ERC-8004)

    | Tool | Description | |------|-------------| | resolve_identity | Resolve agent identity + reputation | | resolve_agent | Look up any agent by ID |

    Payments (x402)

    | Tool | Description | |------|-------------| | pay_and_fetch | x402 payment-gated HTTP request |

    Reputation

    | Tool | Description | |------|-------------| | submit_feedback | Submit on-chain reputation feedback |

    Network & Chains

    | Tool | Description | |------|-------------| | get_network | Get current network config | | get_supported_chains | List all 21+ supported chains | | get_chain_info | Get details for a specific chain | | switch_network | Switch to different EVM chain |

    Arena DEX (Avalanche)

    | Tool | Description | |------|-------------| | arena_buy | Buy Arena community tokens via bonding curve (spends $ARENA) | | arena_sell | Sell Arena community tokens for $ARENA | | arena_token_info | Get token info (fees, curve params) by address | | arena_buy_cost | Calculate $ARENA cost for a given buy amount (read-only) |

    Polymarket (Polygon)

    | Tool | Description | |------|-------------| | pm_search | Search active Polymarket markets by keyword | | pm_market | Get market details and outcome tokens by condition ID | | pm_positions | Get Polymarket positions for a wallet | | pm_orderbook | Get the order book for an outcome token | | pm_balances | Get normalized collateral and outcome-token balances | | pm_order | Get venue-truth order status and reconciliation | | pm_cancel_order | Cancel an open Polymarket order | | pm_open_orders | List open Polymarket orders | | pm_trades | List recent Polymarket venue trades | | pm_approve | Approve collateral spending for Polymarket on Polygon | | pm_preflight | Run deterministic buy/sell/limit-sell preflight checks | | pm_buy | Buy YES/NO shares with market or limit orders | | pm_sell | Slippage-protected immediate YES/NO sell toward a target USDC proceeds amount | | pm_limit_sell | Post or take a YES/NO limit sell depending on postOnly | | pm_reconcile | Reconcile balances, positions, orders, and trades against venue truth | | pm_withdraw | Withdraw Polygon USDC.e from the Polymarket wallet through the official Polymarket bridge | | pm_redeem | Redeem winning positions from a resolved Polymarket market for USDC via the CTF contract |

    Contract Interaction Helpers (v0.9.0)

    | Tool | Description | |------|-------------| | approve_and_call | Approve ERC-20 spending, then execute a follow-up contract call | | upgrade_proxy | Upgrade a UUPS proxy via upgradeToAndCall |

    Bridging & Cross-Chain

    | Tool | Description | |------|-------------| | get_bridge_quote | Get cross-chain bridge quote (Li.Fi) | | get_bridge_routes | Get all bridge route options | | bridge_tokens | Bridge tokens between chains | | check_bridge_status | Poll cross-chain transfer status (PENDING/DONE/FAILED) | | fund_destination_gas | Fund gas via Gas.zip |

    Li.Fi Liquidity SDK (v0.8.0)

    | Tool | Description | |------|-------------| | lifi_swap_quote | Get same-chain DEX swap quote (31+ aggregators) | | lifi_swap | Execute same-chain DEX swap | | lifi_get_tokens | List tokens with prices on specified chains | | lifi_get_token | Get specific token info (symbol, decimals, priceUSD) | | lifi_get_chains | List all Li.Fi supported chains | | lifi_get_tools | List available bridges and DEX aggregators | | lifi_gas_prices | Get gas prices across all chains | | lifi_gas_suggestion | Get gas suggestion for a specific chain | | lifi_get_connections | Discover possible transfer paths between chains | | lifi_compose | Cross-chain DeFi Composer (bridge + deposit into Morpho/Aave/Pendle/Lido/etc in one tx) |

    lifi_swap and lifi_compose return execution envelopes with request, submission, verification, and warnings.

    Platform CLI (requires platform-cli binary β€” go install github.com/ava-labs/platform-cli@latest)

    | Tool | Description | |------|-------------| | platform_cli_available | Check if platform-cli is installed | | subnet_create | Create a new Avalanche subnet | | subnet_convert_l1 | Convert subnet to L1 blockchain | | subnet_transfer_ownership | Transfer subnet ownership | | add_validator | Add validator with BLS keys to Primary Network | | l1_register_validator | Register a new L1 validator | | l1_add_balance | Add balance to L1 validator | | l1_disable_validator | Disable an L1 validator | | node_info | Get NodeID + BLS keys from running node | | pchain_send | Send AVAX on P-Chain (P→P) |

    dYdX v4 Perpetuals (v0.7.0 β€” requires mnemonic)

    | Tool | Description | |------|-------------| | dydx_get_markets | List all dYdX perpetual markets with prices/leverage | | dydx_has_market | Check if a specific perp market exists (e.g. AKT-USD) | | dydx_get_balance | Get USDC equity on dYdX subaccount | | dydx_get_positions | Get all open perpetual positions | | dydx_place_market_order | Place a market order (BUY/SELL) | | dydx_place_limit_order | Place a limit order | | dydx_cancel_order | Cancel an open order | | dydx_close_position | Close position with reduce-only market order | | dydx_get_orders | List orders (optionally filter by status) | | hyperliquid_get_markets | List Hyperliquid perpetual markets | | hyperliquid_get_account_state | Get Hyperliquid account summary | | hyperliquid_get_positions | Get Hyperliquid open positions | | hyperliquid_place_market_order | Place Hyperliquid market order | | hyperliquid_place_limit_order | Place Hyperliquid limit order | | hyperliquid_cancel_order | Cancel Hyperliquid order | | hyperliquid_close_position | Close Hyperliquid position | | hyperliquid_get_order | Get Hyperliquid order status | | hyperliquid_get_orders | List Hyperliquid open orders | | hyperliquid_get_trades | List Hyperliquid recent fills | | find_perp_market | Search for a market across all connected perp venues |

    Programmatic Usage

    Check balance on Base

    node -e "
    const { Evalanche } = require('evalanche');
    const agent = new Evalanche({ privateKey: process.env.AGENT_PRIVATE_KEY, network: 'base' });
    agent.provider.getBalance(agent.address).then(b => {
      const { formatEther } = require('ethers');
      console.log(formatEther(b) + ' ETH');
    });
    "
    

    Bridge tokens (Ethereum β†’ Arbitrum)

    node -e "
    const { Evalanche } = require('evalanche');
    const agent = new Evalanche({ privateKey: process.env.AGENT_PRIVATE_KEY, network: 'ethereum' });
    agent.bridgeTokens({
      fromChainId: 1, toChainId: 42161,
      fromToken: '0x0000000000000000000000000000000000000000',
      toToken: '0x0000000000000000000000000000000000000000',
      fromAmount: '0.1', fromAddress: agent.address,
    }).then(r => console.log('tx:', r.txHash));
    "
    

    Same-chain DEX swap (ETH β†’ USDC on Base)

    node -e "
    const { Evalanche } = require('evalanche');
    const agent = new Evalanche({ privateKey: process.env.AGENT_PRIVATE_KEY, network: 'base' });
    agent.swap({
      fromChainId: 8453, toChainId: 8453,
      fromToken: '0x0000000000000000000000000000000000000000',
      toToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
      fromAmount: '0.05', fromAddress: agent.address,
    }).then(r => console.log('swap tx:', r.txHash));
    "
    

    Track bridge transfer status

    node -e "
    const { Evalanche } = require('evalanche');
    const agent = new Evalanche({ privateKey: process.env.AGENT_PRIVATE_KEY, network: 'ethereum' });
    agent.checkBridgeStatus({ txHash: '0x...', fromChainId: 1, toChainId: 8453 })
      .then(s => console.log(s.status, s.substatus));
    "
    

    Token discovery

    node -e "
    const { Evalanche } = require('evalanche');
    const agent = new Evalanche({ privateKey: process.env.AGENT_PRIVATE_KEY, network: 'base' });
    agent.getToken(8453, '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913')
      .then(t => console.log(t.symbol, t.priceUSD));
    "
    

    Cross-chain transfer on Avalanche (requires mnemonic)

    node -e "
    const { Evalanche } = require('evalanche');
    const agent = new Evalanche({ mnemonic: process.env.AGENT_MNEMONIC, multiVM: true });
    agent.transfer({ from: 'C', to: 'P', amount: '25' })
      .then(r => console.log('export:', r.exportTxId, 'import:', r.importTxId));
    "
    

    Key Concepts

    ERC-8004 Agent Identity (Avalanche only)

  • On-chain agent identity registry on Avalanche C-Chain
  • Agent ID β†’ tokenURI, owner, reputation score (0-100), trust level
  • Trust levels: high (β‰₯75), medium (β‰₯40), low (<40)
  • Li.Fi Cross-Chain Liquidity (v0.8.0)

  • Bridging: Aggregated routes across 27+ bridges (Across, Stargate, Hop, etc.)
  • DEX Aggregation: Same-chain swaps via 31+ DEX aggregators (1inch, Paraswap, Jupiter, etc.)
  • DeFi Composer: One-tx cross-chain DeFi (bridge + deposit into Morpho, Aave V3, Euler, Pendle, Lido wstETH, EtherFi, etc.)
  • Status Tracking: Poll transfer status (PENDING β†’ DONE/FAILED with substatus)
  • Token Discovery: List/lookup tokens with prices across all chains
  • Gas Pricing: Gas prices and suggestions per chain
  • Uses Li.Fi REST API (no SDK dependency needed)
  • Gas.zip

  • Cheap cross-chain gas funding
  • Send gas to any destination chain via deposit addresses
  • x402 Payment Protocol

  • HTTP 402 Payment Required β†’ parse requirements β†’ sign payment β†’ retry
  • maxPayment prevents overspending
  • Multi-VM (Avalanche X-Chain, P-Chain)

  • Requires mnemonic and network: 'avalanche' or 'fuji'
  • C-Chain: EVM (ethers v6), X-Chain: AVM (UTXO), P-Chain: PVM (staking)
  • Contracts

    | Contract | Address | Chain | |----------|---------|-------| | Identity Registry | 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | AVAX C-Chain (43114) | | Reputation Registry | 0x8004BAa17C55a88189AE136b182e5fdA19dE9b63 | AVAX C-Chain (43114) | | sAVAX (Benqi) | 0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE | AVAX C-Chain (43114) | | yoUSD Vault | 0x0000000f2eb9f69274678c76222b35eec7588a65 | Base (8453) |

    DeFi β€” Liquid Staking & EIP-4626 Vaults (v1.2.0)

    const { agent } = await Evalanche.boot({ network: 'avalanche' });
    const { staking, vaults } = agent.defi();

    // sAVAX unstake (instant if pool available, delayed otherwise) const q = await staking.sAvaxUnstakeQuote('5'); // { avaxOut, isInstant, poolBalance, minOutput } await staking.sAvaxUnstakeInstant('5'); // redeemInstant on Benqi await staking.sAvaxUnstakeDelayed('5'); // requestRedeem (no pool needed)

    // Stake AVAX β†’ sAVAX await staking.sAvaxStake('10', 50); // 50bps slippage

    // EIP-4626 vault deposit (any chain) const YOUSD = '0x0000000f2eb9f69274678c76222b35eec7588a65'; const baseAgent = new Evalanche({ privateKey: '0x...', network: 'base' }); const { vaults: baseVaults } = baseAgent.defi(); const info = await baseVaults.vaultInfo(YOUSD); // { assetDecimals: 6, shareDecimals: 18, ... } await baseVaults.deposit(YOUSD, '1000'); // approve + deposit await baseVaults.withdraw(YOUSD, '998'); // redeem shares

    MCP tools (defi): savax_stake_quote, savax_stake, savax_unstake_quote, savax_unstake, vault_info, vault_deposit_quote, vault_deposit, vault_withdraw_quote, vault_withdraw

    Known DeFi routing behavior:

  • yoUSD auto-routes to Base
  • sAVAX auto-routes to Avalanche
  • explicit wrong-chain overrides fail clearly before contract reads
  • interoperable address inputs like 0x...@base are accepted for address-based DeFi tools
  • Live Smoke Checklist

    Use docs/live-smoke-checklist.md as the release-certification runbook for:

  • Polymarket tiny write + reconciliation
  • Hyperliquid tiny trade + order verification
  • LI.FI tiny swap/bridge execution + tx verification
  • sAVAX / EIP-4626 tiny round-trip + balance/share verification
  • βš™οΈ Configuration

    1. Install

    npm install -g evalanche
    

    2. Boot on any chain

    import { Evalanche } from 'evalanche';

    // Base const { agent } = await Evalanche.boot({ network: 'base' });

    // Ethereum const { agent: eth } = await Evalanche.boot({ network: 'ethereum' });

    // Arbitrum const { agent: arb } = await Avalanche.boot({ network: 'arbitrum' });

    // Avalanche (with identity) const { agent: avax } = await Evalanche.boot({ network: 'avalanche', identity: { agentId: '1599' }, });

    3. Run as MCP server

    AVALANCHE_NETWORK=base evalanche-mcp