Skip to main content
Glama

WAIaaS

面向 AI 智能体的钱包即服务 (Wallet-as-a-Service)

npm downloads License: MIT Node.js Tests MCP Server

一个自托管的钱包守护进程,让 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 step

quickset 命令可完成您开始所需的一切:

  1. 自动创建 Solana 主网 + EVM 以太坊主网 钱包

  2. 为每个钱包颁发 MCP 会话令牌

  3. 输出 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、配置参考

API 参考

REST API 端点和身份验证

智能体自设置指南

带有自动配置的完全自主设置

智能体技能集成

适用于 27+ 个 AI 智能体平台的通用指南

Claude Code 集成

Claude Code 的技能文件 + MCP 服务器设置

OpenClaw 集成

OpenClaw 机器人的快速设置

钱包 SDK 集成

钱包开发者的集成指南

为什么选择 WAIaaS?

AI 智能体钱包安全背景

贡献

开发设置、代码风格、测试、PR 指南

许可证

MIT -- 版权所有 (c) 2026 WAIaaS 贡献者

Available Tools

60 tools
approve_tokenB

Approve a spender to transfer tokens on your behalf. Requires APPROVED_SPENDERS policy.

NameRequiredDescriptionDefault
spenderYesSpender address
tokenYesToken info. Provide full metadata (address/decimals/symbol) OR assetId alone for auto-resolve.
amountYesApproval amount in smallest units (wei for EVM, lamports for Solana). Example: "1000000" = 1 USDC (6 decimals). Use max uint256 for unlimited: "115792089237316195423570985008687907853269984665640564039457584007913129639935"
networkNoTarget network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Required for EVM wallets; auto-resolved for Solana.
wallet_idNoTarget wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.
gas_conditionNoGas 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.

NameRequiredDescriptionDefault
wallet_idYesSmart Account wallet ID (UUID).
typeYesTransaction type.
toNoRecipient address.
amountNoAmount in smallest units (wei). Example: "1000000000000000000" = 1 ETH, "1000000" = 1 USDC
tokenNoToken contract address (for TOKEN_TRANSFER/APPROVE).
contractNoContract address (for CONTRACT_CALL).
methodNoContract method name (for CONTRACT_CALL).
abiNoContract ABI (for CONTRACT_CALL).
argsNoContract method args (for CONTRACT_CALL).
callsNoBatch calls (for BATCH type).
networkYesEVM 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.

NameRequiredDescriptionDefault
toYesContract address
calldataNoHex-encoded calldata (EVM)
abiNoABI fragment for decoding (EVM)
valueNoNative token value in smallest units (wei). Example: "1000000000000000000" = 1 ETH
programIdNoProgram ID (Solana)
instructionDataNoBase64-encoded instruction data (Solana)
accountsNoAccount metas (Solana)
networkNoTarget network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Required for EVM wallets; auto-resolved for Solana.
wallet_idNoTarget wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.
gas_conditionNoGas 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.

NameRequiredDescriptionDefault

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.

NameRequiredDescriptionDefault
abiYesABI fragment array for the function (JSON array of objects)
functionNameYesFunction name to encode (e.g., "transfer", "approve")
argsNoFunction arguments array (e.g., ["0xAddress", "1000000"]). Omit for zero-arg functions.
wallet_idNoTarget 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).

NameRequiredDescriptionDefault
agent_idYesOn-chain agent ID (uint256)
erc8004_get_reputationB

Get ERC-8004 agent reputation summary (score, count, decimals).

NameRequiredDescriptionDefault
agent_idYesOn-chain agent ID (uint256)
tag1NoOptional tag1 filter
tag2NoOptional tag2 filter
erc8004_get_validation_statusC

Get ERC-8004 validation request status.

NameRequiredDescriptionDefault
request_hashYesValidation 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.

NameRequiredDescriptionDefault
methodYesHTTP method
urlYesTarget URL to sign for
headersNoHTTP headers to include in signature
bodyNoRequest body (used for Content-Digest)
wallet_idNoTarget wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.
networkNoNetwork ID (e.g., evm-ethereum-mainnet)
presetNoCovered Components preset (default: standard)
ttl_secondsNoSignature 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.

NameRequiredDescriptionDefault
methodYesHTTP method
urlYesRequest URL
headersYesHTTP headers from the signed request
signature_inputYesSignature-Input header value
signatureYesSignature header value
content_digestNoContent-Digest header value
get_addressA

Get the public address of the wallet.

NameRequiredDescriptionDefault
wallet_idNoTarget 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.

NameRequiredDescriptionDefault
networkNoQuery 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_currencyNoDisplay currency for asset value conversion (e.g. KRW, EUR). Defaults to server setting.
wallet_idNoTarget wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.
get_balanceC

Get the current balance of the wallet.

NameRequiredDescriptionDefault
networkNoQuery 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_currencyNoDisplay currency for balance conversion (e.g. KRW, EUR). Defaults to server setting.
wallet_idNoTarget 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).

NameRequiredDescriptionDefault
periodNoAggregation period: daily, weekly, or monthly (default: daily)
chainNoFilter by chain (solana or ethereum)
networkNoFilter by network
sinceNoSummary start epoch (seconds)
untilNoSummary end epoch (seconds)
wallet_idNoTarget 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.

NameRequiredDescriptionDefault
token_identifierYesNFT identifier. EVM: {contractAddress}:{tokenId}. Solana: {mintAddress}.
networkYesNetwork identifier (e.g., "ethereum-mainnet", "solana-mainnet" or CAIP-2 "eip155:1").
wallet_idNoTarget wallet ID. Required for multi-wallet sessions.
get_nonceB

Get a nonce for owner wallet signature verification.

NameRequiredDescriptionDefault
wallet_idNoTarget 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.

NameRequiredDescriptionDefault
wallet_idNoTarget wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.
limitNoMax items to return (default: 50)
offsetNoNumber of items to skip (default: 0)
get_provider_statusA

Get Smart Account provider status: provider name, supported chains, gas sponsorship (paymaster) status.

NameRequiredDescriptionDefault
wallet_idYesTarget 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.

NameRequiredDescriptionDefault
wallet_idYesWallet ID (UUID)
chain_idYesEVM chain ID (e.g. 1 for Ethereum mainnet, 137 for Polygon)
get_tokensB

Get registered tokens (builtin + custom) for a specific network.

NameRequiredDescriptionDefault
networkYesNetwork identifier (e.g., "ethereum-sepolia", "polygon-amoy" or CAIP-2 "eip155:1").
get_transactionB

Get details of a specific transaction by ID.

NameRequiredDescriptionDefault
transaction_idYesTransaction ID to retrieve
display_currencyNoDisplay currency for amount conversion (e.g. KRW, EUR). Defaults to server setting.
wallet_idNoTarget 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.

NameRequiredDescriptionDefault
wallet_idNoTarget 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).

NameRequiredDescriptionDefault
wallet_idNoWallet 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.

NameRequiredDescriptionDefault
limitNoMaximum number of transactions to return (1-100, default 20)
cursorNoPagination cursor from previous response
chainNoFilter by chain (solana or ethereum)
networkNoFilter by network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137").
statusNoFilter by status: DETECTED or CONFIRMED (default: CONFIRMED)
tokenNoFilter by token address (null for native transfers)
from_addressNoFilter by sender address
sinceNoFilter: only transactions detected after this epoch (seconds)
untilNoFilter: only transactions detected before this epoch (seconds)
wallet_idNoTarget 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.

NameRequiredDescriptionDefault
networkYesNetwork identifier (e.g., "ethereum-mainnet", "solana-mainnet" or CAIP-2 "eip155:1").
cursorNoPagination cursor from previous response.
limitNoMax NFTs per page (default: 20).
group_byNoGroup NFTs by collection.
wallet_idNoTarget wallet ID. Required for multi-wallet sessions.
list_offchain_actionsA

List off-chain action history (signedData/signedHttp) with venue/status filter and pagination.

NameRequiredDescriptionDefault
venueNoFilter by venue name (e.g. polymarket, hyperliquid)
statusNoFilter by status (e.g. PENDING, FILLED, CANCELED, EXPIRED)
limitNoMaximum number of results to return
offsetNoPagination offset
wallet_idNoWallet ID. Auto-resolved for single-wallet sessions.
list_sessionsA

List active sessions with pagination. Admin operation requiring master auth.

NameRequiredDescriptionDefault
wallet_idNoFilter by wallet ID
limitNoMax items to return (default: 50)
offsetNoNumber of items to skip (default: 0)
list_transactionsB

List transaction history with cursor-based pagination.

NameRequiredDescriptionDefault
limitNoMaximum number of transactions to return
cursorNoPagination cursor from previous response
display_currencyNoDisplay currency for amount conversion (e.g. KRW, EUR). Defaults to server setting.
wallet_idNoTarget 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.

NameRequiredDescriptionDefault
asset_idYesCAIP-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).

NameRequiredDescriptionDefault
instructionsYesArray 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.
networkNoTarget network (e.g., polygon-mainnet). Required for EVM wallets; auto-resolved for Solana.
wallet_idNoTarget wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.
gas_conditionNoGas 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.

NameRequiredDescriptionDefault
toYesDestination wallet address
amountYesAmount in smallest units (wei for EVM, lamports for Solana). Example: "1000000000000000000" = 1 ETH, "1000000000" = 1 SOL
memoNoOptional transaction memo
typeNoTransaction type. Default: TRANSFER (native). TOKEN_TRANSFER for SPL/ERC-20
networkNoTarget network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Required for EVM wallets; auto-resolved for Solana.
tokenNoRequired for TOKEN_TRANSFER. Provide full metadata (address/decimals/symbol) OR assetId alone for auto-resolve.
wallet_idNoTarget wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.
gas_conditionNoGas 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.

NameRequiredDescriptionDefault
messageNoMessage to sign (hex 0x-prefixed or UTF-8 string). Required for sign_type "personal".
sign_typeNoSign type: "personal" (default) for raw message, "typedData" for EIP-712.
typed_dataNoEIP-712 typed data structure. Required when sign_type is "typedData".
networkNoTarget network (optional).
wallet_idNoTarget 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.

NameRequiredDescriptionDefault
transactionYesRaw unsigned transaction (base64 for Solana, hex 0x-prefixed for EVM)
networkNoTarget network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137"). Required for EVM wallets; auto-resolved for Solana.
wallet_idNoTarget 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.

NameRequiredDescriptionDefault
wallet_idYesSmart Account wallet ID (UUID).
build_idYesBuild ID from build_userop response.
senderYesSmart Account address (0x hex).
nonceYesAccount nonce (0x hex).
call_dataYesEncoded call data (0x hex).
call_gas_limitYesGas limit for call execution (0x hex).
verification_gas_limitYesGas limit for verification (0x hex).
pre_verification_gasYesPre-verification gas (0x hex).
max_fee_per_gasYesMax fee per gas (0x hex).
max_priority_fee_per_gasYesMax priority fee per gas (0x hex).
signatureNoPlaceholder signature (0x hex). Default: 0x.
factoryNoFactory address for undeployed accounts.
factory_dataNoFactory data for undeployed accounts.
paymasterNoPaymaster address.
paymaster_dataNoPaymaster data.
paymaster_verification_gas_limitNoPaymaster verification gas limit.
paymaster_post_op_gas_limitNoPaymaster post-op gas limit.
simulate_transactionA

Simulate a transaction without executing it. Returns policy tier, estimated fees, balance changes, and warnings. No side effects.

NameRequiredDescriptionDefault
toYesDestination address
amountYesAmount in smallest units (wei for EVM, lamports for Solana). Example: "1000000000000000000" = 1 ETH
typeNoTransaction type. Default: TRANSFER
tokenNoRequired for TOKEN_TRANSFER
calldataNoHex-encoded calldata (EVM)
abiNoABI fragment (EVM)
valueNoNative token value in smallest units (wei for EVM). Example: "1000000000000000000" = 1 ETH
programIdNoSolana program ID
instructionDataNoBase64-encoded instruction data (Solana)
accountsNoSolana accounts
spenderNoSpender address (APPROVE type)
instructionsNoBatch instructions array
networkNoTarget network (e.g., "polygon-mainnet" or CAIP-2 "eip155:137").
wallet_idNoWallet ID for multi-wallet sessions
gas_conditionNoGas 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.

NameRequiredDescriptionDefault
toYesRecipient address (0x-hex for EVM, base58 for Solana).
token_addressYesNFT contract address (EVM) or mint address (Solana).
token_idYesToken ID within the contract (EVM). Use "0" for Solana Metaplex.
standardYesNFT standard.
networkYesNetwork identifier (e.g., "ethereum-mainnet", "solana-mainnet" or CAIP-2 "eip155:1").
amountNoNumber of tokens to transfer (default: "1"). Only relevant for ERC-1155 multi-copy NFTs. This is a count, not a smallest-unit value.
wallet_idNoTarget wallet ID. Required for multi-wallet sessions.
waiaas_get_defi_positionsC

Get DeFi lending positions with health factor and USD amounts.

NameRequiredDescriptionDefault
wallet_idNoTarget 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).

NameRequiredDescriptionDefault
wallet_idNoTarget wallet ID. Required for multi-wallet sessions; auto-resolved when session has a single wallet.
networkNoTarget network for health factor query.
waiaas_hl_get_account_stateB

Get Hyperliquid account state (balances, margins, positions).

NameRequiredDescriptionDefault
wallet_idNoWallet ID.
waiaas_hl_get_funding_ratesB

Get funding rate history for a Hyperliquid perpetual market.

NameRequiredDescriptionDefault
marketYesMarket symbol (e.g., "ETH", "BTC").
start_timeNoUnix timestamp to start from.
waiaas_hl_get_marketsA

Get Hyperliquid perpetual market list with metadata (leverage limits, etc.).

NameRequiredDescriptionDefault

No parameters

waiaas_hl_get_open_ordersC

Get Hyperliquid open orders for a wallet.

NameRequiredDescriptionDefault
wallet_idNoWallet ID.
sub_accountNoSub-account address (hex).
waiaas_hl_get_positionsB

Get Hyperliquid perpetual positions for a wallet.

NameRequiredDescriptionDefault
wallet_idNoWallet ID. Auto-resolved for single-wallet sessions.
sub_accountNoSub-account address (hex).
waiaas_hl_get_spot_balancesB

Get Hyperliquid spot token balances for a wallet.

NameRequiredDescriptionDefault
wallet_idNoWallet ID. Auto-resolved for single-wallet sessions.
waiaas_hl_get_spot_marketsA

Get Hyperliquid spot market list (trading pairs, token info).

NameRequiredDescriptionDefault

No parameters

waiaas_hl_get_sub_positionsA

Get positions for a Hyperliquid sub-account.

NameRequiredDescriptionDefault
wallet_idNoWallet ID.
sub_accountYesSub-account address (hex, 42 chars).
waiaas_hl_get_trade_historyB

Get Hyperliquid trade history (fills) for a wallet.

NameRequiredDescriptionDefault
wallet_idNoWallet ID.
limitNoMaximum number of fills to return.
waiaas_hl_list_sub_accountsB

List Hyperliquid sub-accounts for a wallet.

NameRequiredDescriptionDefault
wallet_idNoWallet ID. Auto-resolved for single-wallet sessions.
waiaas_pm_get_balanceB

Get Polymarket USDC.e balance and CTF token positions for a wallet.

NameRequiredDescriptionDefault
wallet_idNoWallet ID. Auto-resolved for single-wallet sessions.
waiaas_pm_get_eventsC

Get Polymarket events (groups of related markets).

NameRequiredDescriptionDefault
categoryNoEvent category filter.
waiaas_pm_get_market_detailB

Get detailed information about a specific Polymarket prediction market.

NameRequiredDescriptionDefault
condition_idYesMarket condition ID.
waiaas_pm_get_marketsB

Browse Polymarket prediction markets with optional filters.

NameRequiredDescriptionDefault
categoryNoMarket category filter.
statusNoMarket status filter (e.g., active, resolved).
keywordNoSearch keyword.
limitNoMaximum number of markets to return.
waiaas_pm_get_ordersC

Get Polymarket CLOB orders for a wallet.

NameRequiredDescriptionDefault
wallet_idNoWallet ID. Auto-resolved for single-wallet sessions.
statusNoFilter by order status.
waiaas_pm_get_pnlA

Get Polymarket profit and loss summary for a wallet.

NameRequiredDescriptionDefault
wallet_idNoWallet ID. Auto-resolved for single-wallet sessions.
waiaas_pm_get_positionsB

Get Polymarket prediction market positions for a wallet.

NameRequiredDescriptionDefault
wallet_idNoWallet ID. Auto-resolved for single-wallet sessions.
waiaas_pm_setupA

Set up Polymarket API keys and optional CTF contract approval for a wallet.

NameRequiredDescriptionDefault
wallet_idYesWallet ID (required).
auto_approveNoAutomatically 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.

NameRequiredDescriptionDefault
wallet_idNoTarget 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.

NameRequiredDescriptionDefault
wallet_idNoTarget 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.

NameRequiredDescriptionDefault
wallet_idNoTarget 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.

NameRequiredDescriptionDefault
urlYesTarget URL to fetch (HTTPS required)
methodNoHTTP method (default: GET)
headersNoAdditional HTTP headers
bodyNoRequest body string
wallet_idNoTarget 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.

  1. 60 tool updatesv2.11.0
    • First observedapprove_token
    • First observedbuild_userop
    • First observedcall_contract
    • First observedconnect_info
    • First observedencode_calldata
    • First observederc8004_get_agent_info
    • First observederc8004_get_reputation
    • First observederc8004_get_validation_status
    • First observederc8128_sign_request
    • First observederc8128_verify_signature
    • First observedget_address
    • First observedget_assets
    • First observedget_balance
    • First observedget_incoming_summary
    • First observedget_nft_metadata
    • First observedget_nonce
    • First observedget_policies
    • First observedget_provider_status
    • First observedget_rpc_proxy_url
    • First observedget_tokens
    • First observedget_transaction
    • First observedget_wallet_info
    • First observedlist_credentials
    • First observedlist_incoming_transactions
    • First observedlist_nfts
    • First observedlist_offchain_actions
    • First observedlist_sessions
    • First observedlist_transactions
    • First observedresolve_asset
    • First observedsend_batch
    • First observedsend_token
    • First observedsign_message
    • First observedsign_transaction
    • First observedsign_userop
    • First observedsimulate_transaction
    • First observedtransfer_nft
    • First observedwaiaas_get_defi_positions
    • First observedwaiaas_get_health_factor
    • First observedwaiaas_hl_get_account_state
    • First observedwaiaas_hl_get_funding_rates
    • First observedwaiaas_hl_get_markets
    • First observedwaiaas_hl_get_open_orders
    • First observedwaiaas_hl_get_positions
    • First observedwaiaas_hl_get_spot_balances
    • First observedwaiaas_hl_get_spot_markets
    • First observedwaiaas_hl_get_sub_positions
    • First observedwaiaas_hl_get_trade_history
    • First observedwaiaas_hl_list_sub_accounts
    • First observedwaiaas_pm_get_balance
    • First observedwaiaas_pm_get_events
    • First observedwaiaas_pm_get_market_detail
    • First observedwaiaas_pm_get_markets
    • First observedwaiaas_pm_get_orders
    • First observedwaiaas_pm_get_pnl
    • First observedwaiaas_pm_get_positions
    • First observedwaiaas_pm_setup
    • First observedwc_connect
    • First observedwc_disconnect
    • First observedwc_status
    • First observedx402_fetch

TDQS

C2.8/5.0

Scored across 60 tools

Disambiguation2/5

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 Consistency2/5

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_.

Tool Count1/5

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.

Completeness3/5

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

ActivityInactive
ResponsivenessLimited data

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Provides 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.
    40
    1,677 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Agent-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.
    8
    Apache 2.0