waiaas
WAIaaS
面向 AI 智能体的钱包即服务 (Wallet-as-a-Service)
一个自托管的钱包守护进程,让 AI 智能体能够安全地执行链上交易,同时所有者保留对资金的完全控制权。
问题所在
需要进行链上交易的 AI 智能体面临着两难选择:要么持有私钥(一旦泄露将面临全部损失),要么依赖中心化托管机构(存在单点故障和信任依赖)。
WAIaaS 弥补了这一差距——智能体可以即时处理小额交易,大额交易则需要所有者审批,且一切都在您的机器上运行,无需任何第三方依赖。
Related MCP server: seashail
工作原理
WAIaaS 是一个位于您的 AI 智能体与区块链之间的本地守护进程:
三层身份验证 —— 为守护进程操作员 (masterAuth)、资金所有者 (ownerAuth) 和 AI 智能体 (sessionAuth) 分离角色
四层策略引擎 —— 交易根据美元价值自动分类为:即时 (INSTANT) / 通知 (NOTIFY) / 延迟 (DELAY) / 审批 (APPROVAL) 层级
12 种策略类型 —— 累计支出限额、代币允许列表、合约白名单、已批准支出者等
纵深防御 —— 终止开关 (Kill Switch)、自动停止引擎 (AutoStop)、审计日志、4 通道通知
详情请参阅 安全模型。
架构
graph LR
subgraph Interfaces
SDK["TypeScript SDK"]
MCP["MCP Server"]
CLI["CLI"]
Admin["Admin UI"]
Skills["Skill Files"]
WalletSDK["Wallet SDK"]
end
subgraph Daemon
API["API Layer<br>(Hono + Middleware)"]
Services["Service Layer<br>(Policy, Notifications, Kill Switch)"]
Pipeline["Transaction Pipeline<br>(6-stage + 8-state)"]
Infra["Infrastructure<br>(SQLite, Keystore, Config)"]
end
subgraph Blockchain
Solana["Solana"]
EVM["EVM Chains"]
end
SDK & MCP & CLI & Admin & Skills & WalletSDK --> API
API --> Services --> Pipeline --> Infra
Infra --> Solana & EVM单仓库中的 12 个包:
@waiaas/core — 共享类型、Zod 模式、枚举和接口
@waiaas/daemon — 自托管钱包守护进程 (Hono HTTP 服务器)
@waiaas/adapter-solana — Solana 链适配器 (SPL / Token-2022)
@waiaas/adapter-evm — EVM 链适配器 (通过 viem 的 ERC-20)
@waiaas/actions — DeFi 操作提供程序 (Jupiter, 0x, LI.FI, Lido, Jito)
@waiaas/sdk — TypeScript 客户端库
@waiaas/mcp — 面向 AI 智能体的模型上下文协议服务器
@waiaas/cli — 命令行界面
@waiaas/admin — 基于 Preact 的管理 Web UI
@waiaas/wallet-sdk — 用于钱包应用集成的钱包签名 SDK
@waiaas/push-relay — 推送中继服务器 (守护进程 → Pushwoosh/FCM 原生推送)
@waiaas/skills — 为 AI 智能体预构建的
.skill.md指令文件
有关完整的技术深度解析,请参阅 架构。
快速入门
npm install -g @waiaas/cli
waiaas init # Create data directory + config.toml
waiaas start # Start daemon (sets master password on first run)
waiaas quickset --mode mainnet # Create wallets + MCP sessions in one stepquickset 命令可完成您开始所需的一切:
自动创建 Solana 主网 + EVM 以太坊主网 钱包
为每个钱包颁发 MCP 会话令牌
输出 Claude Desktop MCP 配置 片段 —— 只需复制粘贴即可
我们建议配置支出限额并注册一个所有者钱包,以便对高价值交易进行审批。如需测试,请使用
waiaas quickset --mode testnet来创建 Solana Devnet + EVM Sepolia 钱包。
管理 UI
启动守护进程后,可在 http://127.0.0.1:3100/admin 管理面板进行所有管理(需要 masterAuth)。
连接您的 AI 智能体
快速设置后,选择以下两种集成路径之一:
路径 A:MCP (Claude Desktop / Claude Code)
适用于支持 模型上下文协议 (Model Context Protocol) 的 AI 智能体:
# quickset already printed the MCP config JSON -- paste it into
# ~/Library/Application Support/Claude/claude_desktop_config.json
# Or auto-register with all wallets:
waiaas mcp setup --all守护进程作为 MCP 服务器运行。您的智能体直接调用钱包工具 —— 发送代币、检查余额、管理策略 —— 全部通过 MCP 协议完成。
路径 B:技能文件 (任何 AI 智能体)
适用于不支持 MCP 的智能体,或者当您更倾向于 REST API 集成时:
npx @waiaas/skills add all这会将 .skill.md 指令文件添加到您的项目中。将其包含在智能体的上下文中,它就会自动学习 WAIaaS API。可用技能:setup, quickstart, wallet, transactions, policies, admin, actions, x402。
智能体自设置 (自动配置)
AI 智能体可以在无需人工干预的情况下完全自主地设置 WAIaaS:
npm install -g @waiaas/cli
waiaas init --auto-provision # Generates random master password → recovery.key
waiaas start # No password prompt
waiaas quickset # Creates wallets + sessions automatically
waiaas set-master # (Later) Harden password, then delete recovery.key--auto-provision 标志会生成一个加密随机的主密码并将其保存到 ~/.waiaas/recovery.key。后续所有 CLI 命令都会自动读取它。请参阅 智能体自设置指南 获取完整流程。
如需通过人工引导输入密码进行手动设置,请安装技能并按照 waiaas-setup/SKILL.md 操作:
npx @waiaas/skills add all替代方案:Docker
git clone https://github.com/minho-yoo/waiaas.git && cd waiaas
docker compose up -d守护进程监听 http://127.0.0.1:3100。
使用 SDK
import { WAIaaSClient } from '@waiaas/sdk';
const client = new WAIaaSClient({
baseUrl: 'http://127.0.0.1:3100',
sessionToken: process.env.WAIAAS_SESSION_TOKEN,
});
const balance = await client.getBalance();
console.log(`Balance: ${balance.balance} ${balance.symbol}`);
const tx = await client.sendToken({
to: 'recipient-address...',
amount: '0.1',
});
console.log(`Transaction: ${tx.id}`);管理 UI
使用您的主密码访问 http://127.0.0.1:3100/admin 处的管理面板:
仪表板 —— 系统概览、钱包余额、近期交易
钱包 —— 创建、管理和监控跨链钱包;RPC 端点、余额监控和 WalletConnect 设置
会话 —— 颁发和撤销智能体会话令牌;会话生命周期和速率限制设置
策略 —— 使用可视化表单编辑器配置 12 种策略类型;默认拒绝和层级设置
通知 —— 通道状态和交付日志;Telegram、Discord 和 Slack 设置
安全 —— 终止开关紧急控制、AutoStop 保护规则、JWT 轮换
系统 —— API 密钥、显示货币、价格预言机、速率限制、日志级别和守护进程关闭
功能包括设置搜索 (Ctrl+K / Cmd+K) 和未保存更改保护。
默认启用(配置中 admin_ui = true)。
支持的网络
链 | 环境 | 网络 |
Solana | 主网 | mainnet |
Solana | 测试网 | devnet, testnet |
EVM | 主网 | ethereum-mainnet, polygon-mainnet, arbitrum-mainnet, optimism-mainnet, base-mainnet |
EVM | 测试网 | ethereum-sepolia, polygon-amoy, arbitrum-sepolia, optimism-sepolia, base-sepolia |
共 13 个网络(Solana 3 + EVM 10)。
功能特性
自托管本地守护进程 —— 无中心服务器;私钥永远不会离开您的机器
多链支持 —— 通过
IChainAdapter支持 Solana (SPL / Token-2022) 和 EVM (ERC-20)代币、合约与 DeFi —— 原生转账、代币转账、合约调用、批准、批量交易、操作提供程序插件 (Jupiter Swap 等)
美元策略评估 —— 价格预言机 (CoinGecko / Pyth / Chainlink) 以美元评估所有交易
x402 支付 —— 带有 EIP-3009 签名的自动 HTTP 402 支付处理
多种接口 —— REST API、TypeScript SDK、Python SDK、MCP 服务器、CLI、管理 Web UI、Tauri Desktop、Telegram Bot
技能文件 —— 预构建的指令文件,教导 AI 智能体如何使用 API
文档
文档 | 描述 |
系统概览、包结构、流水线、链适配器 | |
身份验证、策略引擎、终止开关、AutoStop | |
Docker、npm、配置参考 | |
REST API 端点和身份验证 | |
带有自动配置的完全自主设置 | |
适用于 27+ 个 AI 智能体平台的通用指南 | |
Claude Code 的技能文件 + MCP 服务器设置 | |
OpenClaw 机器人的快速设置 | |
钱包开发者的集成指南 | |
AI 智能体钱包安全背景 | |
开发设置、代码风格、测试、PR 指南 |
许可证
MIT -- 版权所有 (c) 2026 WAIaaS 贡献者
Available Tools
60 toolsapprove_tokenB
Approve a spender to transfer tokens on your behalf. Requires APPROVED_SPENDERS policy.
| Name | Required | Description | Default |
|---|---|---|---|
| spender | Yes | Spender address | |
| token | Yes | Token info. Provide full metadata (address/decimals/symbol) OR assetId alone for auto-resolve. | |
| amount | Yes | Approval amount in smallest units (wei for EVM, lamports for Solana). Example: "1000000" = 1 USDC (6 decimals). Use max uint256 for unlimited: "115792089237316195423570985008687907853269984665640564039457584007913129639935" | |
| network | No | Target network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Required for EVM wallets; auto-resolved for Solana. | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. | |
| gas_condition | No | Gas price condition for deferred execution. At least one of max_gas_price or max_priority_fee required. |
build_useropA
Build an unsigned ERC-4337 UserOperation from a transaction request. Returns sender, nonce, callData, buildId. Platform fills gas/paymaster fields before signing.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | Yes | Smart Account wallet ID (UUID). | |
| type | Yes | Transaction type. | |
| to | No | Recipient address. | |
| amount | No | Amount in smallest units (wei). Example: "1000000000000000000" = 1 ETH, "1000000" = 1 USDC | |
| token | No | Token contract address (for TOKEN_TRANSFER/APPROVE). | |
| contract | No | Contract address (for CONTRACT_CALL). | |
| method | No | Contract method name (for CONTRACT_CALL). | |
| abi | No | Contract ABI (for CONTRACT_CALL). | |
| args | No | Contract method args (for CONTRACT_CALL). | |
| calls | No | Batch calls (for BATCH type). | |
| network | Yes | EVM network (e.g., "ethereum-sepolia"). |
call_contractA
Call a whitelisted smart contract. Requires CONTRACT_WHITELIST policy. For EVM: provide calldata (hex). For Solana: provide programId + instructionData + accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Contract address | |
| calldata | No | Hex-encoded calldata (EVM) | |
| abi | No | ABI fragment for decoding (EVM) | |
| value | No | Native token value in smallest units (wei). Example: "1000000000000000000" = 1 ETH | |
| programId | No | Program ID (Solana) | |
| instructionData | No | Base64-encoded instruction data (Solana) | |
| accounts | No | Account metas (Solana) | |
| network | No | Target network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Required for EVM wallets; auto-resolved for Solana. | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. | |
| gas_condition | No | Gas price condition for deferred execution. At least one of max_gas_price or max_priority_fee required. |
connect_infoA
Get self-discovery info: accessible wallets, policies, capabilities, and AI-ready prompt. Call this first to understand your environment.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
encode_calldataA
Encode EVM function call into calldata hex. Provide ABI fragment array, function name, and arguments. Returns hex calldata and function selector for use with call_contract.
| Name | Required | Description | Default |
|---|---|---|---|
| abi | Yes | ABI fragment array for the function (JSON array of objects) | |
| functionName | Yes | Function name to encode (e.g., "transfer", "approve") | |
| args | No | Function arguments array (e.g., ["0xAddress", "1000000"]). Omit for zero-arg functions. | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
erc8004_get_agent_infoA
Get ERC-8004 agent identity info (on-chain ID, wallet, URI, metadata).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | On-chain agent ID (uint256) |
erc8004_get_reputationB
Get ERC-8004 agent reputation summary (score, count, decimals).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | On-chain agent ID (uint256) | |
| tag1 | No | Optional tag1 filter | |
| tag2 | No | Optional tag2 filter |
erc8004_get_validation_statusC
Get ERC-8004 validation request status.
| Name | Required | Description | Default |
|---|---|---|---|
| request_hash | Yes | Validation request hash (bytes32) |
erc8128_sign_requestA
Sign an HTTP request using ERC-8128 (RFC 9421 + EIP-191). Returns Signature-Input, Signature, and Content-Digest headers for the given HTTP method, URL, headers, and body.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | HTTP method | |
| url | Yes | Target URL to sign for | |
| headers | No | HTTP headers to include in signature | |
| body | No | Request body (used for Content-Digest) | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. | |
| network | No | Network ID (e.g., evm-ethereum-mainnet) | |
| preset | No | Covered Components preset (default: standard) | |
| ttl_seconds | No | Signature TTL in seconds (default: 300) |
erc8128_verify_signatureB
Verify an ERC-8128 HTTP message signature. Checks RFC 9421 signature validity, recovers the signer's Ethereum address, and validates expiry.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | HTTP method | |
| url | Yes | Request URL | |
| headers | Yes | HTTP headers from the signed request | |
| signature_input | Yes | Signature-Input header value | |
| signature | Yes | Signature header value | |
| content_digest | No | Content-Digest header value |
get_addressA
Get the public address of the wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
get_assetsB
Get all assets (native + tokens) held by the wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Query assets for specific network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Use "all" for all networks. Required for EVM wallets; auto-resolved for Solana. | |
| display_currency | No | Display currency for asset value conversion (e.g. KRW, EUR). Defaults to server setting. | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
get_balanceC
Get the current balance of the wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Query balance for specific network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Use "all" for all networks. Required for EVM wallets; auto-resolved for Solana. | |
| display_currency | No | Display currency for balance conversion (e.g. KRW, EUR). Defaults to server setting. | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
get_incoming_summaryB
Get a period-based summary of incoming transactions (daily/weekly/monthly totals with USD conversion).
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Aggregation period: daily, weekly, or monthly (default: daily) | |
| chain | No | Filter by chain (solana or ethereum) | |
| network | No | Filter by network | |
| since | No | Summary start epoch (seconds) | |
| until | No | Summary end epoch (seconds) | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
get_nft_metadataB
Get detailed metadata for a specific NFT (name, image, attributes, CAIP-19 assetId). EVM: contractAddress:tokenId, Solana: mintAddress.
| Name | Required | Description | Default |
|---|---|---|---|
| token_identifier | Yes | NFT identifier. EVM: {contractAddress}:{tokenId}. Solana: {mintAddress}. | |
| network | Yes | Network identifier (e.g., "ethereum-mainnet", "solana-mainnet" or CAIP-2 "eip155:1"). | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions. |
get_nonceB
Get a nonce for owner wallet signature verification.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
get_policiesA
Get policies applied to the wallet. Shows spending limits, whitelists, rate limits, and other rules.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. | |
| limit | No | Max items to return (default: 50) | |
| offset | No | Number of items to skip (default: 0) |
get_provider_statusA
Get Smart Account provider status: provider name, supported chains, gas sponsorship (paymaster) status.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | Yes | Target wallet ID (UUID). |
get_rpc_proxy_urlA
Get the EVM RPC proxy URL for a wallet and chain. Use this URL as --rpc-url for Forge, Hardhat, ethers.js, or viem.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | Yes | Wallet ID (UUID) | |
| chain_id | Yes | EVM chain ID (e.g. 1 for Ethereum mainnet, 137 for Polygon) |
get_tokensB
Get registered tokens (builtin + custom) for a specific network.
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | Network identifier (e.g., "ethereum-sepolia", "polygon-amoy" or CAIP-2 "eip155:1"). |
get_transactionB
Get details of a specific transaction by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| transaction_id | Yes | Transaction ID to retrieve | |
| display_currency | No | Display currency for amount conversion (e.g. KRW, EUR). Defaults to server setting. | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
get_wallet_infoA
Get wallet info including chain, address, environment, and available networks.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
list_credentialsA
List credential metadata for a wallet (names, types, expiry -- never shows values).
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Wallet ID. Auto-resolved for single-wallet sessions. |
list_incoming_transactionsA
List incoming (received) transaction history with cursor-based pagination. Returns confirmed incoming transfers by default.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of transactions to return (1-100, default 20) | |
| cursor | No | Pagination cursor from previous response | |
| chain | No | Filter by chain (solana or ethereum) | |
| network | No | Filter by network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). | |
| status | No | Filter by status: DETECTED or CONFIRMED (default: CONFIRMED) | |
| token | No | Filter by token address (null for native transfers) | |
| from_address | No | Filter by sender address | |
| since | No | Filter: only transactions detected after this epoch (seconds) | |
| until | No | Filter: only transactions detected before this epoch (seconds) | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
list_nftsA
List NFTs (ERC-721, ERC-1155, Metaplex) owned by the wallet for a specific network. Requires NFT indexer API key.
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | Network identifier (e.g., "ethereum-mainnet", "solana-mainnet" or CAIP-2 "eip155:1"). | |
| cursor | No | Pagination cursor from previous response. | |
| limit | No | Max NFTs per page (default: 20). | |
| group_by | No | Group NFTs by collection. | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions. |
list_offchain_actionsA
List off-chain action history (signedData/signedHttp) with venue/status filter and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| venue | No | Filter by venue name (e.g. polymarket, hyperliquid) | |
| status | No | Filter by status (e.g. PENDING, FILLED, CANCELED, EXPIRED) | |
| limit | No | Maximum number of results to return | |
| offset | No | Pagination offset | |
| wallet_id | No | Wallet ID. Auto-resolved for single-wallet sessions. |
list_sessionsA
List active sessions with pagination. Admin operation requiring master auth.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Filter by wallet ID | |
| limit | No | Max items to return (default: 50) | |
| offset | No | Number of items to skip (default: 0) |
list_transactionsB
List transaction history with cursor-based pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of transactions to return | |
| cursor | No | Pagination cursor from previous response | |
| display_currency | No | Display currency for amount conversion (e.g. KRW, EUR). Defaults to server setting. | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
resolve_assetA
Resolve a CAIP-19 asset identifier to token metadata. Returns address, decimals, symbol, name, network, chainId, isNative, isRegistered.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | CAIP-19 asset identifier (e.g., "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "eip155:1/slip44:60") |
send_batchA
Send multiple instructions in a single atomic transaction (Solana only, 2-20 instructions).
| Name | Required | Description | Default |
|---|---|---|---|
| instructions | Yes | Array of instruction objects (each is a TRANSFER/TOKEN_TRANSFER/CONTRACT_CALL/APPROVE without the type field). All amount values must be in smallest units (wei/lamports). TOKEN_TRANSFER/APPROVE instructions can include an optional assetId field in the token object for CAIP-19 asset identification. | |
| network | No | Target network (e.g., polygon-mainnet). Required for EVM wallets; auto-resolved for Solana. | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. | |
| gas_condition | No | Gas price condition for deferred execution. At least one of max_gas_price or max_priority_fee required. |
send_tokenB
Send SOL/ETH or tokens from the wallet. For token transfers, specify type and token info.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination wallet address | |
| amount | Yes | Amount in smallest units (wei for EVM, lamports for Solana). Example: "1000000000000000000" = 1 ETH, "1000000000" = 1 SOL | |
| memo | No | Optional transaction memo | |
| type | No | Transaction type. Default: TRANSFER (native). TOKEN_TRANSFER for SPL/ERC-20 | |
| network | No | Target network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Required for EVM wallets; auto-resolved for Solana. | |
| token | No | Required for TOKEN_TRANSFER. Provide full metadata (address/decimals/symbol) OR assetId alone for auto-resolve. | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. | |
| gas_condition | No | Gas price condition for deferred execution. At least one of max_gas_price or max_priority_fee required. |
sign_messageA
Sign a message (personal_sign) or EIP-712 typed data (signTypedData). Returns the signature. EIP-712 is EVM-only.
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | Message to sign (hex 0x-prefixed or UTF-8 string). Required for sign_type "personal". | |
| sign_type | No | Sign type: "personal" (default) for raw message, "typedData" for EIP-712. | |
| typed_data | No | EIP-712 typed data structure. Required when sign_type is "typedData". | |
| network | No | Target network (optional). | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions. |
sign_transactionA
Sign an unsigned transaction without broadcasting. Provide raw transaction (base64 for Solana, hex for EVM). Returns signed transaction, parsed operations, and policy evaluation.
| Name | Required | Description | Default |
|---|---|---|---|
| transaction | Yes | Raw unsigned transaction (base64 for Solana, hex 0x-prefixed for EVM) | |
| network | No | Target network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Required for EVM wallets; auto-resolved for Solana. | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
sign_useropA
Sign a completed UserOperation (with gas/paymaster fields). Returns signed UserOperation with signature and txId for tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | Yes | Smart Account wallet ID (UUID). | |
| build_id | Yes | Build ID from build_userop response. | |
| sender | Yes | Smart Account address (0x hex). | |
| nonce | Yes | Account nonce (0x hex). | |
| call_data | Yes | Encoded call data (0x hex). | |
| call_gas_limit | Yes | Gas limit for call execution (0x hex). | |
| verification_gas_limit | Yes | Gas limit for verification (0x hex). | |
| pre_verification_gas | Yes | Pre-verification gas (0x hex). | |
| max_fee_per_gas | Yes | Max fee per gas (0x hex). | |
| max_priority_fee_per_gas | Yes | Max priority fee per gas (0x hex). | |
| signature | No | Placeholder signature (0x hex). Default: 0x. | |
| factory | No | Factory address for undeployed accounts. | |
| factory_data | No | Factory data for undeployed accounts. | |
| paymaster | No | Paymaster address. | |
| paymaster_data | No | Paymaster data. | |
| paymaster_verification_gas_limit | No | Paymaster verification gas limit. | |
| paymaster_post_op_gas_limit | No | Paymaster post-op gas limit. |
simulate_transactionA
Simulate a transaction without executing it. Returns policy tier, estimated fees, balance changes, and warnings. No side effects.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination address | |
| amount | Yes | Amount in smallest units (wei for EVM, lamports for Solana). Example: "1000000000000000000" = 1 ETH | |
| type | No | Transaction type. Default: TRANSFER | |
| token | No | Required for TOKEN_TRANSFER | |
| calldata | No | Hex-encoded calldata (EVM) | |
| abi | No | ABI fragment (EVM) | |
| value | No | Native token value in smallest units (wei for EVM). Example: "1000000000000000000" = 1 ETH | |
| programId | No | Solana program ID | |
| instructionData | No | Base64-encoded instruction data (Solana) | |
| accounts | No | Solana accounts | |
| spender | No | Spender address (APPROVE type) | |
| instructions | No | Batch instructions array | |
| network | No | Target network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). | |
| wallet_id | No | Wallet ID for multi-wallet sessions | |
| gas_condition | No | Gas price condition (included for request compatibility, ignored by simulation) |
transfer_nftB
Transfer an NFT (ERC-721/ERC-1155/Metaplex) to a recipient address. Default tier: APPROVAL.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient address (0x-hex for EVM, base58 for Solana). | |
| token_address | Yes | NFT contract address (EVM) or mint address (Solana). | |
| token_id | Yes | Token ID within the contract (EVM). Use "0" for Solana Metaplex. | |
| standard | Yes | NFT standard. | |
| network | Yes | Network identifier (e.g., "ethereum-mainnet", "solana-mainnet" or CAIP-2 "eip155:1"). | |
| amount | No | Number of tokens to transfer (default: "1"). Only relevant for ERC-1155 multi-copy NFTs. This is a count, not a smallest-unit value. | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions. |
waiaas_get_defi_positionsC
Get DeFi lending positions with health factor and USD amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
waiaas_get_health_factorB
Get lending health factor (safe/warning/danger/critical).
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. | |
| network | No | Target network for health factor query. |
waiaas_hl_get_account_stateB
Get Hyperliquid account state (balances, margins, positions).
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Wallet ID. |
waiaas_hl_get_funding_ratesB
Get funding rate history for a Hyperliquid perpetual market.
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes | Market symbol (e.g., "ETH", "BTC"). | |
| start_time | No | Unix timestamp to start from. |
waiaas_hl_get_marketsA
Get Hyperliquid perpetual market list with metadata (leverage limits, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
waiaas_hl_get_open_ordersC
Get Hyperliquid open orders for a wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Wallet ID. | |
| sub_account | No | Sub-account address (hex). |
waiaas_hl_get_positionsB
Get Hyperliquid perpetual positions for a wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Wallet ID. Auto-resolved for single-wallet sessions. | |
| sub_account | No | Sub-account address (hex). |
waiaas_hl_get_spot_balancesB
Get Hyperliquid spot token balances for a wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Wallet ID. Auto-resolved for single-wallet sessions. |
waiaas_hl_get_spot_marketsA
Get Hyperliquid spot market list (trading pairs, token info).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
waiaas_hl_get_sub_positionsA
Get positions for a Hyperliquid sub-account.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Wallet ID. | |
| sub_account | Yes | Sub-account address (hex, 42 chars). |
waiaas_hl_get_trade_historyB
Get Hyperliquid trade history (fills) for a wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Wallet ID. | |
| limit | No | Maximum number of fills to return. |
waiaas_hl_list_sub_accountsB
List Hyperliquid sub-accounts for a wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Wallet ID. Auto-resolved for single-wallet sessions. |
waiaas_pm_get_balanceB
Get Polymarket USDC.e balance and CTF token positions for a wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Wallet ID. Auto-resolved for single-wallet sessions. |
waiaas_pm_get_eventsC
Get Polymarket events (groups of related markets).
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Event category filter. |
waiaas_pm_get_market_detailB
Get detailed information about a specific Polymarket prediction market.
| Name | Required | Description | Default |
|---|---|---|---|
| condition_id | Yes | Market condition ID. |
waiaas_pm_get_marketsB
Browse Polymarket prediction markets with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Market category filter. | |
| status | No | Market status filter (e.g., active, resolved). | |
| keyword | No | Search keyword. | |
| limit | No | Maximum number of markets to return. |
waiaas_pm_get_ordersC
Get Polymarket CLOB orders for a wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Wallet ID. Auto-resolved for single-wallet sessions. | |
| status | No | Filter by order status. |
waiaas_pm_get_pnlA
Get Polymarket profit and loss summary for a wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Wallet ID. Auto-resolved for single-wallet sessions. |
waiaas_pm_get_positionsB
Get Polymarket prediction market positions for a wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Wallet ID. Auto-resolved for single-wallet sessions. |
waiaas_pm_setupA
Set up Polymarket API keys and optional CTF contract approval for a wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | Yes | Wallet ID (required). | |
| auto_approve | No | Automatically approve CTF contracts. |
wc_connectA
Start WalletConnect pairing. Returns a WC URI that the wallet owner can use to connect their external wallet (D'CENT, MetaMask, Phantom, etc). Share the URI with the user -- they can paste it into their wallet app.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
wc_disconnectA
Disconnect the active WalletConnect session. After disconnecting, a new pairing must be initiated to reconnect.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
wc_statusA
Get WalletConnect session status. Returns session info (peer wallet, chain, expiry) or error if no active session.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
x402_fetchA
Fetch a URL with automatic x402 payment. If the server responds with HTTP 402, automatically sign a cryptocurrency payment and retry. Returns the response along with payment details if payment was made.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target URL to fetch (HTTPS required) | |
| method | No | HTTP method (default: GET) | |
| headers | No | Additional HTTP headers | |
| body | No | Request body string | |
| wallet_id | No | Target wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
60 tool updates
v2.11.0- First observed
approve_token - First observed
build_userop - First observed
call_contract - First observed
connect_info - First observed
encode_calldata - First observed
erc8004_get_agent_info - First observed
erc8004_get_reputation - First observed
erc8004_get_validation_status - First observed
erc8128_sign_request - First observed
erc8128_verify_signature - First observed
get_address - First observed
get_assets - First observed
get_balance - First observed
get_incoming_summary - First observed
get_nft_metadata - First observed
get_nonce - First observed
get_policies - First observed
get_provider_status - First observed
get_rpc_proxy_url - First observed
get_tokens - First observed
get_transaction - First observed
get_wallet_info - First observed
list_credentials - First observed
list_incoming_transactions - First observed
list_nfts - First observed
list_offchain_actions - First observed
list_sessions - First observed
list_transactions - First observed
resolve_asset - First observed
send_batch - First observed
send_token - First observed
sign_message - First observed
sign_transaction - First observed
sign_userop - First observed
simulate_transaction - First observed
transfer_nft - First observed
waiaas_get_defi_positions - First observed
waiaas_get_health_factor - First observed
waiaas_hl_get_account_state - First observed
waiaas_hl_get_funding_rates - First observed
waiaas_hl_get_markets - First observed
waiaas_hl_get_open_orders - First observed
waiaas_hl_get_positions - First observed
waiaas_hl_get_spot_balances - First observed
waiaas_hl_get_spot_markets - First observed
waiaas_hl_get_sub_positions - First observed
waiaas_hl_get_trade_history - First observed
waiaas_hl_list_sub_accounts - First observed
waiaas_pm_get_balance - First observed
waiaas_pm_get_events - First observed
waiaas_pm_get_market_detail - First observed
waiaas_pm_get_markets - First observed
waiaas_pm_get_orders - First observed
waiaas_pm_get_pnl - First observed
waiaas_pm_get_positions - First observed
waiaas_pm_setup - First observed
wc_connect - First observed
wc_disconnect - First observed
wc_status - First observed
x402_fetch
TDQS
Scored across 60 tools
Many tools have overlapping purposes: get_balance, get_assets, get_tokens, and waiaas_hl_get_spot_balances all return balance-like data; get_transaction, list_transactions, and list_incoming_transactions all cover transaction history; waiaas_pm_get_markets and waiaas_pm_get_events both browse Polymarket data. The waiaas_* prefix is applied inconsistently, and several tools (get_wallet_info, connect_info, get_provider_status) all provide environment/wallet discovery info.
Naming is highly inconsistent: some tools use verb_noun (get_balance, list_transactions, send_token), some use domain prefixes (waiaas_pm_*, waiaas_hl_*, erc8004_*, erc8128_*), and some use bare names (connect_info, resolve_asset, x402_fetch). The waiaas_ prefix is applied to some tools but not others, and there is no clear pattern for when to use get_ vs list_ vs waiaas_<domain>_get_.
60 tools is far beyond the typical well-scoped server size. The server attempts to cover Polymarket, Hyperliquid, DeFi lending, ERC-8004, ERC-8128, WalletConnect, x402, NFTs, smart accounts, and generic wallet operations, resulting in a sprawling surface that is difficult for an agent to navigate.
The tool surface is broad but uneven. Core wallet operations (balance, send, transactions, signing) are well covered, and each domain has read-focused tools, but many domains lack write/action coverage (e.g., Hyperliquid has no order placement/cancellation, Polymarket has no order creation/cancellation, DeFi has no lending/borrowing actions). This leaves agents unable to complete full workflows in those domains.
Maintenance
Related MCP Connectors
Policy-gated MCP treasury for AI agents — x402 subscribe, 50+ tools, multi-chain.
Native Solana staking for AI agents. 26 MCP tools, one-shot signing, webhooks.
Multi-chain wallet MCP. 18 tools: balance, swap, bridge, stake, claim. Pay-per-call USDC (x402 v2).
Crypto wallet for AI agents: balances, payments, swaps and trading with owner controls.
Related MCP Servers
- AlicenseBqualityBmaintenanceProvides permissionless wallet infrastructure for AI agents to manage wallets, sign transactions, and handle tokens across Solana and all EVM-compatible chains. It includes 29 specialized tools for on-chain operations, featuring built-in security guards and automated x402 payment processing without KYC requirements.401,677 npm3MIT
- AlicenseNot gradedqualityDmaintenanceAgent-native, self-hosted MCP server for crypto trading and DeFi management. Enables agents to query balances, execute trades, and manage positions with a policy engine and secure key storage.8Apache 2.0
- AlicenseNot gradedqualityCmaintenanceSelf-hosted MCP server enabling AI agents to manage EVM wallets, check balances, swap tokens, and securely execute transactions via 1Claw Intents without exposing private keys.78 PyPIMIT
- AlicenseNot gradedqualityCmaintenanceMCP server that lets any AI agent operate a wallet directly on-chain: create wallets, send, swap, bridge, and deploy contracts across EVM and Bitcoin networks.1MIT