{
  "schemaVersion": "1.0",
  "item": {
    "slug": "openclaw-wallet",
    "name": "Openclaw Wallet",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/loomlay/openclaw-wallet",
    "canonicalUrl": "https://clawhub.ai/loomlay/openclaw-wallet",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/openclaw-wallet",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openclaw-wallet",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/openclaw-wallet"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/openclaw-wallet",
    "agentPageUrl": "https://openagent3.xyz/skills/openclaw-wallet/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openclaw-wallet/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openclaw-wallet/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "OpenClaw Wallet Plugin",
        "body": "Multi-chain wallet and trading toolkit for AI agents with 27 tools."
      },
      {
        "title": "Installation",
        "body": "You must install the npm package before using any tools:\n\nnpm install @loomlay/openclaw-wallet-plugin\n\nThis installs the plugin and all its dependencies. No additional packages needed.\n\nAuthentication is automatic. On first use, the plugin auto-registers for an API key and saves it to ~/.loomlay/credentials.json. No manual setup required.\n\nTo use a specific API key instead of auto-registration:\n\nexport LOOMLAY_API_KEY=agent_your_key_here"
      },
      {
        "title": "First-Time Setup",
        "body": "IMPORTANT: After installing the plugin, you must set up a wallet before using trading/wallet tools.\n\nOn first interaction with a user (or when the skill is first loaded), run this setup sequence:\n\nconst { wallet_get, wallet_create } = require('@loomlay/openclaw-wallet-plugin');\n\n// 1. Check if a wallet already exists\nconst existing = await wallet_get();\n\nif (!existing.success) {\n  // 2. No wallet yet — create one\n  const created = await wallet_create();\n  if (created.success) {\n    // 3. Show the user their new wallet\n    // IMPORTANT: The seed phrase is shown ONCE. Tell the user to save it.\n    // \"Your wallet has been created:\"\n    // \"  Solana: <solanaAddress>\"\n    // \"  EVM: <evmAddress>\"\n    // \"  Seed phrase: <seedPhrase> (save this securely — it won't be shown again)\"\n  }\n} else {\n  // Wallet exists — show addresses\n  // \"Your wallet:\"\n  // \"  Solana: <solanaAddress>\"\n  // \"  SOL balance: <balance>\"\n}\n\nAlways run this check before any wallet or trading operation. If wallet_get() fails with UNAUTHORIZED, the API key may need to be re-registered — delete ~/.loomlay/credentials.json and retry."
      },
      {
        "title": "How to Use the Tools",
        "body": "All 27 tools are exported as flat async functions from the plugin package. Use them in Node.js like this:\n\nconst { wallet_get, swap_quote, swap, dex_trending, token_search } = require('@loomlay/openclaw-wallet-plugin');\n\n// Check wallet balance\nconst wallet = await wallet_get();\n// wallet.data.balances.solana.sol\n\n// Get trending tokens\nconst trending = await dex_trending({ chain: 'solana', limit: 10 });\n// trending.data.pairs[...]\n\nEvery tool returns a standardized response:\n\n{\n  success: true,       // or false\n  data: { ... },       // result data (when success is true)\n  error: {             // error info (when success is false)\n    message: \"...\",\n    code: \"RATE_LIMITED\",\n    retryAfter: 30     // seconds (for rate limits)\n  }\n}\n\nAlways check result.success before using result.data."
      },
      {
        "title": "Important: Verify Before Executing",
        "body": "For any action involving funds:\n\nGet a quote first — show the user what will happen\nGet user confirmation — never execute without approval\nExecute — run the transaction\nVerify — check the result and new balances\n\nconst { swap_quote, swap } = require('@loomlay/openclaw-wallet-plugin');\n\n// Step 1: Quote\nconst quote = await swap_quote({ inputToken: 'SOL', outputToken: 'USDC', amount: '$100' });\n// Tell user: \"You'll swap ~1.2 SOL for ~$99.50 USDC\"\n\n// Step 2: User confirms → Step 3: Execute\nconst result = await swap({ inputToken: 'SOL', outputToken: 'USDC', amount: '$100' });\nif (result.success) {\n  // Show txHash and new balance\n}"
      },
      {
        "title": "Security Rules",
        "body": "Never log seed phrases — wallet_create() returns it once, tell user to save it offline\nNever execute without user confirmation — always quote first\nNever guess token addresses — use token_search() to find them\nNever hardcode API keys — use environment variables"
      },
      {
        "title": "Amount Formats",
        "body": "Trading tools accept flexible amounts:\n\nFormatExampleMeaningDecimal\"1.5\"Exact token amountUSD\"$100\"Dollar value (auto-converts)Percentage\"50%\"Half of balanceMax\"max\"Entire balance"
      },
      {
        "title": "Wallet (3)",
        "body": "const { wallet_create, wallet_get, wallet_export_keys } = require('@loomlay/openclaw-wallet-plugin');\n\n// Create new wallet (returns seed phrase ONCE)\nawait wallet_create()\n// → { wallet: { solanaAddress, evmAddress }, seedPhrase, message }\n\n// Get wallet addresses and balances\nawait wallet_get()\n// → { wallet: { solanaAddress, evmAddress }, balances: { solana, evm } }\n\n// Export private keys (requires seed phrase)\nawait wallet_export_keys({ seedPhrase: '12 word phrase here' })\n// → { solanaPrivateKey, evmPrivateKey }"
      },
      {
        "title": "Trading (5)",
        "body": "const { swap, swap_quote, transfer, bridge, bridge_quote } = require('@loomlay/openclaw-wallet-plugin');\n\n// Swap tokens\nawait swap({ inputToken: 'SOL', outputToken: 'USDC', amount: '$100', chain: 'solana', slippage: 1 })\n// → { success, txHash, inputAmount, outputAmount }\n\n// Get swap quote (no execution)\nawait swap_quote({ inputToken: 'SOL', outputToken: 'USDC', amount: '$100' })\n// → { inputAmount, outputAmount, minOutputAmount, priceImpact, route }\n\n// Transfer tokens\nawait transfer({ token: 'SOL', amount: '1.5', to: 'recipient_address' })\n// → { success, txHash, amount, token, to }\n\n// Bridge cross-chain\nawait bridge({ inputToken: 'SOL', amount: '1', sourceChain: 'solana', destinationChain: 'base' })\n// → { success, sourceTxHash, destinationTxHash, status }\n\n// Bridge quote\nawait bridge_quote({ inputToken: 'SOL', amount: '1', sourceChain: 'solana', destinationChain: 'base' })\n// → { inputAmount, outputAmount, fee, estimatedTime }"
      },
      {
        "title": "Tokens (4)",
        "body": "const { token_search, token_price, token_details, token_chart } = require('@loomlay/openclaw-wallet-plugin');\n\n// Search tokens by name/symbol\nawait token_search({ query: 'BONK' })\n// → { tokens: [{ address, symbol, name, price, safetyScore }] }\n\n// Get token price\nawait token_price({ token: 'SOL', chain: 'solana' })\n// → { token, price, chain }\n\n// Get detailed token info\nawait token_details({ address: 'token_mint_address' })\n// → { token, market, safety }\n\n// Get OHLCV chart data\nawait token_chart({ address: 'token_mint_address' })\n// → { data: [...] }"
      },
      {
        "title": "Portfolio (2)",
        "body": "const { portfolio_get, portfolio_history } = require('@loomlay/openclaw-wallet-plugin');\n\n// Get combined portfolio across all chains\nawait portfolio_get()\n// → { positions: [...], totalUsdValue: number }\n\n// Get transaction history\nawait portfolio_history({ chain: 'solana', limit: 50 })\n// → { transactions: [...] }"
      },
      {
        "title": "DEX Market Data (7)",
        "body": "const { dex_trending, dex_volume, dex_gainers, dex_losers, dex_new, dex_pumpfun, dex_query } = require('@loomlay/openclaw-wallet-plugin');\n\n// Trending pairs\nawait dex_trending({ chain: 'solana', minLiquidity: 10000, limit: 10 })\n// → { pairs: [...], pagination }\n\n// Top volume pairs\nawait dex_volume({ chain: 'solana', minLiquidity: 10000, limit: 10 })\n\n// Top gainers (24h)\nawait dex_gainers({ chain: 'solana', minLiquidity: 10000, limit: 10 })\n\n// Top losers (24h)\nawait dex_losers({ chain: 'solana', minLiquidity: 10000, limit: 10 })\n\n// Newly created pairs (< 24h)\nawait dex_new({ chain: 'solana', minLiquidity: 5000, limit: 10 })\n\n// Pumpfun trending (Solana only)\nawait dex_pumpfun({ maxAge: 6, maxProgress: 80, limit: 10 })\n\n// Advanced query with custom filters\nawait dex_query({\n  chain: 'solana',\n  timeframe: 'h24',\n  rankBy: 'volume',\n  order: 'desc',\n  minSafetyScore: 80,\n  limit: 10\n})"
      },
      {
        "title": "Token Launch (2)",
        "body": "const { tokenize_launch, tokenize_info } = require('@loomlay/openclaw-wallet-plugin');\n\n// Launch a token (one per account)\nawait tokenize_launch({\n  name: 'My Token',\n  symbol: 'MYT',\n  tier: '100k',        // 10k, 100k, 1m, 10m\n  imageUrl: 'https://...'\n})\n// → { success, launchId, tokenMint, poolAddress, dexscreenerUrl }\n\n// Get your launched token info\nawait tokenize_info()\n// → { hasToken, launchId, tokenMint, poolAddress, dexscreenerUrl }"
      },
      {
        "title": "Fees (2)",
        "body": "const { fees_status, fees_claim } = require('@loomlay/openclaw-wallet-plugin');\n\n// Check fee status\nawait fees_status()\n// → { totalFeesGeneratedSol, beneficiaryFeesUnclaimedSol, canClaim, feeForfeitsAt }\n\n// Claim fees (platform pays gas)\nawait fees_claim()\n// → { success, amountSol, txSignature }"
      },
      {
        "title": "RPC (2)",
        "body": "const { rpc_call, rpc_chains } = require('@loomlay/openclaw-wallet-plugin');\n\n// Direct RPC call\nawait rpc_call({ chain: 'solana', method: 'getBalance', params: ['address'] })\n// → { result, error }\n\n// List supported chains\nawait rpc_chains()\n// → { chains: [...] }"
      },
      {
        "title": "Supported Chains",
        "body": "ChainSwapsBridgesRPCSolanayesyesyesEthereumyesyesyesBaseyesyesyesArbitrumyesyesyesOptimismyesyesyesPolygonyesyesyesBSCyesyesyes"
      },
      {
        "title": "Error Handling",
        "body": "const result = await swap({ inputToken: 'SOL', outputToken: 'USDC', amount: '1' });\n\nif (!result.success) {\n  switch (result.error?.code) {\n    case 'RATE_LIMITED':\n      // Wait result.error.retryAfter seconds and retry\n      break;\n    case 'BAD_REQUEST':\n      // Invalid parameters\n      break;\n    case 'UNAUTHORIZED':\n      // API key issue — check LOOMLAY_API_KEY or ~/.loomlay/credentials.json\n      break;\n    case 'INSUFFICIENT_BALANCE':\n      // Not enough funds\n      break;\n    default:\n      // General error\n      break;\n  }\n}"
      },
      {
        "title": "Reference Documents",
        "body": "references/wallet-operations.md - Wallet creation, security, key export\nreferences/trading-guide.md - Swaps, transfers, bridges with amount formats\nreferences/market-analysis.md - DEX data, trending, filtering\nreferences/token-launch.md - Tokenize workflow, tiers, fee structure\nreferences/error-handling.md - Error types, recovery patterns, retries\nreferences/amount-formats.md - Flexible amounts explained\nreferences/chain-reference.md - Supported chains and behaviors"
      },
      {
        "title": "Workflows",
        "body": "workflows/first-time-setup.md - Installation → wallet creation → first trade\nworkflows/token-launch-playbook.md - Complete token launch guide"
      }
    ],
    "body": "OpenClaw Wallet Plugin\n\nMulti-chain wallet and trading toolkit for AI agents with 27 tools.\n\nInstallation\n\nYou must install the npm package before using any tools:\n\nnpm install @loomlay/openclaw-wallet-plugin\n\n\nThis installs the plugin and all its dependencies. No additional packages needed.\n\nAuthentication is automatic. On first use, the plugin auto-registers for an API key and saves it to ~/.loomlay/credentials.json. No manual setup required.\n\nTo use a specific API key instead of auto-registration:\n\nexport LOOMLAY_API_KEY=agent_your_key_here\n\nFirst-Time Setup\n\nIMPORTANT: After installing the plugin, you must set up a wallet before using trading/wallet tools.\n\nOn first interaction with a user (or when the skill is first loaded), run this setup sequence:\n\nconst { wallet_get, wallet_create } = require('@loomlay/openclaw-wallet-plugin');\n\n// 1. Check if a wallet already exists\nconst existing = await wallet_get();\n\nif (!existing.success) {\n  // 2. No wallet yet — create one\n  const created = await wallet_create();\n  if (created.success) {\n    // 3. Show the user their new wallet\n    // IMPORTANT: The seed phrase is shown ONCE. Tell the user to save it.\n    // \"Your wallet has been created:\"\n    // \"  Solana: <solanaAddress>\"\n    // \"  EVM: <evmAddress>\"\n    // \"  Seed phrase: <seedPhrase> (save this securely — it won't be shown again)\"\n  }\n} else {\n  // Wallet exists — show addresses\n  // \"Your wallet:\"\n  // \"  Solana: <solanaAddress>\"\n  // \"  SOL balance: <balance>\"\n}\n\n\nAlways run this check before any wallet or trading operation. If wallet_get() fails with UNAUTHORIZED, the API key may need to be re-registered — delete ~/.loomlay/credentials.json and retry.\n\nHow to Use the Tools\n\nAll 27 tools are exported as flat async functions from the plugin package. Use them in Node.js like this:\n\nconst { wallet_get, swap_quote, swap, dex_trending, token_search } = require('@loomlay/openclaw-wallet-plugin');\n\n// Check wallet balance\nconst wallet = await wallet_get();\n// wallet.data.balances.solana.sol\n\n// Get trending tokens\nconst trending = await dex_trending({ chain: 'solana', limit: 10 });\n// trending.data.pairs[...]\n\n\nEvery tool returns a standardized response:\n\n{\n  success: true,       // or false\n  data: { ... },       // result data (when success is true)\n  error: {             // error info (when success is false)\n    message: \"...\",\n    code: \"RATE_LIMITED\",\n    retryAfter: 30     // seconds (for rate limits)\n  }\n}\n\n\nAlways check result.success before using result.data.\n\nImportant: Verify Before Executing\n\nFor any action involving funds:\n\nGet a quote first — show the user what will happen\nGet user confirmation — never execute without approval\nExecute — run the transaction\nVerify — check the result and new balances\nconst { swap_quote, swap } = require('@loomlay/openclaw-wallet-plugin');\n\n// Step 1: Quote\nconst quote = await swap_quote({ inputToken: 'SOL', outputToken: 'USDC', amount: '$100' });\n// Tell user: \"You'll swap ~1.2 SOL for ~$99.50 USDC\"\n\n// Step 2: User confirms → Step 3: Execute\nconst result = await swap({ inputToken: 'SOL', outputToken: 'USDC', amount: '$100' });\nif (result.success) {\n  // Show txHash and new balance\n}\n\nSecurity Rules\nNever log seed phrases — wallet_create() returns it once, tell user to save it offline\nNever execute without user confirmation — always quote first\nNever guess token addresses — use token_search() to find them\nNever hardcode API keys — use environment variables\nAmount Formats\n\nTrading tools accept flexible amounts:\n\nFormat\tExample\tMeaning\nDecimal\t\"1.5\"\tExact token amount\nUSD\t\"$100\"\tDollar value (auto-converts)\nPercentage\t\"50%\"\tHalf of balance\nMax\t\"max\"\tEntire balance\nAll 27 Tools Reference\nWallet (3)\nconst { wallet_create, wallet_get, wallet_export_keys } = require('@loomlay/openclaw-wallet-plugin');\n\n// Create new wallet (returns seed phrase ONCE)\nawait wallet_create()\n// → { wallet: { solanaAddress, evmAddress }, seedPhrase, message }\n\n// Get wallet addresses and balances\nawait wallet_get()\n// → { wallet: { solanaAddress, evmAddress }, balances: { solana, evm } }\n\n// Export private keys (requires seed phrase)\nawait wallet_export_keys({ seedPhrase: '12 word phrase here' })\n// → { solanaPrivateKey, evmPrivateKey }\n\nTrading (5)\nconst { swap, swap_quote, transfer, bridge, bridge_quote } = require('@loomlay/openclaw-wallet-plugin');\n\n// Swap tokens\nawait swap({ inputToken: 'SOL', outputToken: 'USDC', amount: '$100', chain: 'solana', slippage: 1 })\n// → { success, txHash, inputAmount, outputAmount }\n\n// Get swap quote (no execution)\nawait swap_quote({ inputToken: 'SOL', outputToken: 'USDC', amount: '$100' })\n// → { inputAmount, outputAmount, minOutputAmount, priceImpact, route }\n\n// Transfer tokens\nawait transfer({ token: 'SOL', amount: '1.5', to: 'recipient_address' })\n// → { success, txHash, amount, token, to }\n\n// Bridge cross-chain\nawait bridge({ inputToken: 'SOL', amount: '1', sourceChain: 'solana', destinationChain: 'base' })\n// → { success, sourceTxHash, destinationTxHash, status }\n\n// Bridge quote\nawait bridge_quote({ inputToken: 'SOL', amount: '1', sourceChain: 'solana', destinationChain: 'base' })\n// → { inputAmount, outputAmount, fee, estimatedTime }\n\nTokens (4)\nconst { token_search, token_price, token_details, token_chart } = require('@loomlay/openclaw-wallet-plugin');\n\n// Search tokens by name/symbol\nawait token_search({ query: 'BONK' })\n// → { tokens: [{ address, symbol, name, price, safetyScore }] }\n\n// Get token price\nawait token_price({ token: 'SOL', chain: 'solana' })\n// → { token, price, chain }\n\n// Get detailed token info\nawait token_details({ address: 'token_mint_address' })\n// → { token, market, safety }\n\n// Get OHLCV chart data\nawait token_chart({ address: 'token_mint_address' })\n// → { data: [...] }\n\nPortfolio (2)\nconst { portfolio_get, portfolio_history } = require('@loomlay/openclaw-wallet-plugin');\n\n// Get combined portfolio across all chains\nawait portfolio_get()\n// → { positions: [...], totalUsdValue: number }\n\n// Get transaction history\nawait portfolio_history({ chain: 'solana', limit: 50 })\n// → { transactions: [...] }\n\nDEX Market Data (7)\nconst { dex_trending, dex_volume, dex_gainers, dex_losers, dex_new, dex_pumpfun, dex_query } = require('@loomlay/openclaw-wallet-plugin');\n\n// Trending pairs\nawait dex_trending({ chain: 'solana', minLiquidity: 10000, limit: 10 })\n// → { pairs: [...], pagination }\n\n// Top volume pairs\nawait dex_volume({ chain: 'solana', minLiquidity: 10000, limit: 10 })\n\n// Top gainers (24h)\nawait dex_gainers({ chain: 'solana', minLiquidity: 10000, limit: 10 })\n\n// Top losers (24h)\nawait dex_losers({ chain: 'solana', minLiquidity: 10000, limit: 10 })\n\n// Newly created pairs (< 24h)\nawait dex_new({ chain: 'solana', minLiquidity: 5000, limit: 10 })\n\n// Pumpfun trending (Solana only)\nawait dex_pumpfun({ maxAge: 6, maxProgress: 80, limit: 10 })\n\n// Advanced query with custom filters\nawait dex_query({\n  chain: 'solana',\n  timeframe: 'h24',\n  rankBy: 'volume',\n  order: 'desc',\n  minSafetyScore: 80,\n  limit: 10\n})\n\nToken Launch (2)\nconst { tokenize_launch, tokenize_info } = require('@loomlay/openclaw-wallet-plugin');\n\n// Launch a token (one per account)\nawait tokenize_launch({\n  name: 'My Token',\n  symbol: 'MYT',\n  tier: '100k',        // 10k, 100k, 1m, 10m\n  imageUrl: 'https://...'\n})\n// → { success, launchId, tokenMint, poolAddress, dexscreenerUrl }\n\n// Get your launched token info\nawait tokenize_info()\n// → { hasToken, launchId, tokenMint, poolAddress, dexscreenerUrl }\n\nFees (2)\nconst { fees_status, fees_claim } = require('@loomlay/openclaw-wallet-plugin');\n\n// Check fee status\nawait fees_status()\n// → { totalFeesGeneratedSol, beneficiaryFeesUnclaimedSol, canClaim, feeForfeitsAt }\n\n// Claim fees (platform pays gas)\nawait fees_claim()\n// → { success, amountSol, txSignature }\n\nRPC (2)\nconst { rpc_call, rpc_chains } = require('@loomlay/openclaw-wallet-plugin');\n\n// Direct RPC call\nawait rpc_call({ chain: 'solana', method: 'getBalance', params: ['address'] })\n// → { result, error }\n\n// List supported chains\nawait rpc_chains()\n// → { chains: [...] }\n\nSupported Chains\nChain\tSwaps\tBridges\tRPC\nSolana\tyes\tyes\tyes\nEthereum\tyes\tyes\tyes\nBase\tyes\tyes\tyes\nArbitrum\tyes\tyes\tyes\nOptimism\tyes\tyes\tyes\nPolygon\tyes\tyes\tyes\nBSC\tyes\tyes\tyes\nError Handling\nconst result = await swap({ inputToken: 'SOL', outputToken: 'USDC', amount: '1' });\n\nif (!result.success) {\n  switch (result.error?.code) {\n    case 'RATE_LIMITED':\n      // Wait result.error.retryAfter seconds and retry\n      break;\n    case 'BAD_REQUEST':\n      // Invalid parameters\n      break;\n    case 'UNAUTHORIZED':\n      // API key issue — check LOOMLAY_API_KEY or ~/.loomlay/credentials.json\n      break;\n    case 'INSUFFICIENT_BALANCE':\n      // Not enough funds\n      break;\n    default:\n      // General error\n      break;\n  }\n}\n\nReference Documents\nreferences/wallet-operations.md - Wallet creation, security, key export\nreferences/trading-guide.md - Swaps, transfers, bridges with amount formats\nreferences/market-analysis.md - DEX data, trending, filtering\nreferences/token-launch.md - Tokenize workflow, tiers, fee structure\nreferences/error-handling.md - Error types, recovery patterns, retries\nreferences/amount-formats.md - Flexible amounts explained\nreferences/chain-reference.md - Supported chains and behaviors\nWorkflows\nworkflows/first-time-setup.md - Installation → wallet creation → first trade\nworkflows/token-launch-playbook.md - Complete token launch guide"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/loomlay/openclaw-wallet",
    "publisherUrl": "https://clawhub.ai/loomlay/openclaw-wallet",
    "owner": "loomlay",
    "version": "0.1.5",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/openclaw-wallet",
    "downloadUrl": "https://openagent3.xyz/downloads/openclaw-wallet",
    "agentUrl": "https://openagent3.xyz/skills/openclaw-wallet/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openclaw-wallet/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openclaw-wallet/agent.md"
  }
}