{
  "id": "agent-wallet",
  "name": "Agent Wallet",
  "description": "Official OpenClaw plugin bridge for the agent-wallet backends, including Solana, local BTC, and local EVM.",
  "version": "0.1.91",
  "contracts": {
    "tools": [
      "agentlayer_autonomous_approve",
      "agentlayer_autonomous_revoke",
      "agentlayer_autonomous_status",
      "close_empty_token_accounts",
      "flash_trade_close_position",
      "flash_trade_open_position",
      "get_active_wallet_backend",
      "get_btc_fee_rates",
      "get_btc_max_spendable",
      "get_btc_transfer_history",
      "get_evm_aave_account",
      "get_evm_aave_positions",
      "get_evm_aave_reserves",
      "get_evm_fee_rates",
      "get_evm_morpho_markets",
      "get_evm_morpho_positions",
      "get_evm_morpho_vaults",
      "get_evm_lido_overview",
      "get_evm_lido_positions",
      "get_evm_lido_withdrawal_requests",
      "get_evm_network",
      "get_evm_swap_quote",
      "get_evm_token_balance",
      "get_evm_token_metadata",
      "get_evm_transaction_receipt",
      "get_flash_trade_markets",
      "get_flash_trade_positions",
      "get_kamino_earn_positions",
      "get_kamino_lend_market_reserves",
      "get_kamino_lend_markets",
      "get_kamino_liquidity_positions",
      "get_kamino_open_positions",
      "get_kamino_portfolio",
      "get_kamino_lend_user_obligations",
      "get_kamino_lend_user_rewards",
      "get_kamino_vaults",
      "get_lifi_quote",
      "get_lifi_supported_chains",
      "get_lifi_transfer_status",
      "get_solana_token_prices",
      "get_wallet_address",
      "get_wallet_balance",
      "get_wallet_capabilities",
      "get_wallet_portfolio",
      "kamino_earn_deposit",
      "kamino_earn_withdraw",
      "kamino_lend_borrow",
      "kamino_lend_deposit",
      "kamino_lend_repay",
      "kamino_lend_withdraw",
      "launch_bags_token",
      "manage_evm_aave_position",
      "manage_evm_morpho_market_position",
      "manage_evm_morpho_vault_position",
      "manage_evm_lido_position",
      "manage_evm_lido_withdrawal",
      "search_uniswap_pairs",
      "set_evm_network",
      "set_wallet_backend",
      "sign_wallet_message",
      "swap_evm_lifi_cross_chain_tokens",
      "swap_evm_tokens",
      "swap_solana_lifi_cross_chain_tokens",
      "swap_solana_tokens",
      "transfer_btc",
      "transfer_evm_native",
      "transfer_evm_token",
      "transfer_sol",
      "transfer_spl_token",
      "x402_get_service_details",
      "x402_pay_request",
      "x402_preview_request",
      "x402_search_services"
    ]
  },
  "skills": ["skills/wallet-operator"],
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "userId": {
        "type": "string",
        "description": "Stable wallet owner identifier for this OpenClaw agent install."
      },
      "backend": {
        "type": "string",
        "description": "Wallet backend identifier. Supported values: solana_local, wdk_btc_local, wdk_evm_local."
      },
      "network": {
        "type": "string",
        "description": "Backend network selector. Solana uses mainnet. BTC uses bitcoin. EVM uses ethereum/base."
      },
      "wdkBtcServiceUrl": {
        "type": "string",
        "description": "Base URL for the localhost-only wdk-btc-wallet HTTP service when backend=wdk_btc_local."
      },
      "wdkBtcWalletId": {
        "type": "string",
        "description": "Optional direct walletId override from the local wdk-btc-wallet vault. If omitted, agent-wallet will look for a user-bound BTC wallet under ~/.openclaw/users/<user>/wallets/."
      },
      "wdkBtcAccountIndex": {
        "type": "integer",
        "description": "Optional BTC account index to expose to the agent. Defaults to 0."
      },
      "wdkEvmServiceUrl": {
        "type": "string",
        "description": "Base URL for the localhost-only wdk-evm-wallet HTTP service when backend=wdk_evm_local."
      },
      "wdkEvmWalletId": {
        "type": "string",
        "description": "Optional direct walletId override from the local wdk-evm-wallet vault. If omitted, agent-wallet will look for a user-bound EVM wallet under ~/.openclaw/users/<user>/wallets/."
      },
      "wdkEvmAccountIndex": {
        "type": "integer",
        "description": "Optional EVM account index to expose to the agent. Defaults to 0."
      },
      "rpcUrl": {
        "type": "string",
        "description": "Optional local fallback Solana RPC URL. Deployment env SOLANA_RPC_URL wins if set."
      },
      "rpcUrls": {
        "type": "array",
        "items": { "type": "string" },
        "description": "Optional local fallback ordered list of Solana RPC URLs. Deployment env SOLANA_RPC_URLS wins if set."
      },
      "rpcProviderMode": {
        "type": "string",
        "description": "RPC mode: auto, user_direct, or shared_proxy. In auto mode, user RPC keys/URLs win; otherwise the shared provider gateway is used when configured."
      },
      "providerGatewayUrl": {
        "type": "string",
        "description": "Optional override for the shared provider gateway base URL. If omitted, the hosted OpenClaw gateway default is used for onboarding-friendly mainnet RPC and Bags launch/fees flows."
      },
      "providerGatewayRpcProvider": {
        "type": "string",
        "description": "Optional shared RPC upstream selection for the provider gateway: auto, shared, helius, or alchemy."
      },
      "swapProvider": {
        "type": "string",
        "description": "Optional Solana swap routing preference: auto or jupiter. Bags launch and fee flows still use the provider gateway separately, but token swaps stay Jupiter-first."
      },
      "heliusApiKey": {
        "type": "string",
        "description": "Optional user-owned Helius API key. If set, direct user RPC wins over shared proxy mode.",
        "uiHints": {
          "sensitive": true
        }
      },
      "alchemyApiKey": {
        "type": "string",
        "description": "Optional user-owned Alchemy API key. If set, direct user RPC wins over shared proxy mode.",
        "uiHints": {
          "sensitive": true
        }
      },
      "publicKey": {
        "type": "string",
        "description": "Read-only wallet public key."
      },
      "privateKey": {
        "type": "string",
        "description": "Deprecated insecure config path. Inject signing key material via environment variables or encrypted per-user wallets instead.",
        "uiHints": {
          "sensitive": true
        }
      },
      "keypairPath": {
        "type": "string",
        "description": "Path to a Solana CLI JSON keypair file or encrypted wallet file."
      },
      "autoCreateWallet": {
        "type": "boolean",
        "description": "Create a wallet automatically on first use if none exists."
      },
      "signOnly": {
        "type": "boolean",
        "description": "If true, signing is allowed but broadcast should not happen automatically."
      },
      "masterKey": {
        "type": "string",
        "description": "Deprecated insecure config path. Inject the wallet master secret via environment or a secret manager instead.",
        "uiHints": {
          "sensitive": true
        }
      },
      "approvalSecret": {
        "type": "string",
        "description": "Deprecated insecure config path. Inject the approval secret via environment or a secret manager instead.",
        "uiHints": {
          "sensitive": true
        }
      },
      "encryptUserWallets": {
        "type": "boolean",
        "description": "If true, per-user wallets are encrypted at rest."
      },
      "migratePlaintextUserWallets": {
        "type": "boolean",
        "description": "If true, legacy plaintext wallets are migrated in place after successful load."
      },
      "refuseMainnetWalletRecreation": {
        "type": "boolean",
        "description": "If true, refuse to silently create a new mainnet wallet when a pinned address already exists."
      },
      "openclawHome": {
        "type": "string",
        "description": "Optional OpenClaw home directory for wallet state."
      },
      "pythonBin": {
        "type": "string",
        "description": "Python interpreter used to invoke the agent-wallet bridge CLI."
      },
      "packageRoot": {
        "type": "string",
        "description": "Absolute path to the local agent-wallet Python package root."
      },
      "jupiterBaseUrl": {
        "type": "string",
        "description": "Optional Jupiter Swap API base URL."
      },
      "jupiterSwapV2BaseUrl": {
        "type": "string",
        "description": "Optional Jupiter Swap API V2 base URL."
      },
      "jupiterUltraBaseUrl": {
        "type": "string",
        "description": "Optional Jupiter Ultra API base URL."
      },
      "jupiterPriceBaseUrl": {
        "type": "string",
        "description": "Optional Jupiter Price API base URL."
      },
      "jupiterPortfolioBaseUrl": {
        "type": "string",
        "description": "Optional Jupiter Portfolio API base URL."
      },
      "jupiterApiKey": {
        "type": "string",
        "description": "Optional Jupiter API key.",
        "uiHints": {
          "sensitive": true
        }
      },
      "kaminoBaseUrl": {
        "type": "string",
        "description": "Optional Kamino REST API base URL."
      },
      "kaminoProgramId": {
        "type": "string",
        "description": "Optional Kamino lending program id."
      }
    }
  }
}
