Waiaas
About
# WAIaaS **Wallet-as-a-Service for AI Agents** [](https://www.npmjs.com/package/@waiaas/core) [](LICENSE)…
Details
- Author
- minhoyoo-iotrust
- Downloads
- 130
- Categories
- Other
Jump to
- Self-hosted local daemon (keys never leave your machine)
- Multi-chain support: Solana and EVM (13 networks)
- 3-tier authentication: masterAuth, ownerAuth, sessionAuth
- 4-tier policy engine: INSTANT / NOTIFY / DELAY / APPROVAL
- 12 policy types including spend limits, token allowlists, contract whitelists
- Multiple interfaces: MCP server, REST API, CLI, SDK, Admin UI, skill files
- DeFi Action Providers (Jupiter, 0x, LI.FI, Lido, Jito)
- x402 payment support with EIP-3009 signatures
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
WaiaasCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install the CLI globally with npm install -g @waiaas/cli, then run waiaas init to create a data directory, waiaas start to launch the daemon, and waiaas quickset to automatically create wallets and MCP session tokens. For Docker, clone the repo and run docker compose up -d.
connect_info
Get self-discovery info: accessible wallets, policies, capabilities, and AI-ready prompt. Call this first to understand your environment.
list_sessions
List active sessions with pagination. Admin operation requiring master auth.
get_policies
Get policies applied to the wallet. Shows spending limits, whitelists, rate limits, and other rules.
get_tokens
Get registered tokens (builtin + custom) for a specific network.
send_token
Send SOL/ETH or tokens from the wallet. For token transfers, specify type and token info.
get_balance
Get the current balance of the wallet.
get_address
Get the public address of the wallet.
get_assets
Get all assets (native + tokens) held by the wallet.
list_transactions
List transaction history with cursor-based pagination.
get_transaction
Get details of a specific transaction by ID.
get_nonce
Get a nonce for owner wallet signature verification.
call_contract
Call a whitelisted smart contract. Requires CONTRACT_WHITELIST policy. For EVM: provide calldata (hex). For Solana: provide programId + instructionData + accounts.
approve_token
Approve a spender to transfer tokens on your behalf. Requires APPROVED_SPENDERS policy.
send_batch
Send multiple instructions in a single atomic transaction (Solana only, 2-20 instructions).
get_wallet_info
Get wallet info including chain, address, environment, and available networks.
encode_calldata
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.
sign_transaction
Sign an unsigned transaction without broadcasting. Provide raw transaction (base64 for Solana, hex for EVM). Returns signed transaction, parsed operations, and policy evaluation.
x402_fetch
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.
wc_connect
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.
wc_status
Get WalletConnect session status. Returns session info (peer wallet, chain, expiry) or error if no active session.
wc_disconnect
Disconnect the active WalletConnect session. After disconnecting, a new pairing must be initiated to reconnect.
list_incoming_transactions
List incoming (received) transaction history with cursor-based pagination. Returns confirmed incoming transfers by default.
get_incoming_summary
Get a period-based summary of incoming transactions (daily/weekly/monthly totals with USD conversion).
waiaas_get_defi_positions
Get DeFi lending positions with health factor and USD amounts.
waiaas_get_health_factor
Get lending health factor (safe/warning/danger/critical).
simulate_transaction
Simulate a transaction without executing it. Returns policy tier, estimated fees, balance changes, and warnings. No side effects.
erc8004_get_agent_info
Get ERC-8004 agent identity info (on-chain ID, wallet, URI, metadata).
erc8004_get_reputation
Get ERC-8004 agent reputation summary (score, count, decimals).
erc8004_get_validation_status
Get ERC-8004 validation request status.
get_provider_status
Get Smart Account provider status: provider name, supported chains, gas sponsorship (paymaster) status.
sign_message
Sign a message (personal_sign) or EIP-712 typed data (signTypedData). Returns the signature. EIP-712 is EVM-only.
erc8128_sign_request
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.
erc8128_verify_signature
Verify an ERC-8128 HTTP message signature. Checks RFC 9421 signature validity, recovers the signer's Ethereum address, and validates expiry.
list_nfts
List NFTs (ERC-721, ERC-1155, Metaplex) owned by the wallet for a specific network. Requires NFT indexer API key.
get_nft_metadata
Get detailed metadata for a specific NFT (name, image, attributes, CAIP-19 assetId). EVM: contractAddress:tokenId, Solana: mintAddress.
transfer_nft
Transfer an NFT (ERC-721/ERC-1155/Metaplex) to a recipient address. Default tier: APPROVAL.
build_userop
Build an unsigned ERC-4337 UserOperation from a transaction request. Returns sender, nonce, callData, buildId. Platform fills gas/paymaster fields before signing.
sign_userop
Sign a completed UserOperation (with gas/paymaster fields). Returns signed UserOperation with signature and txId for tracking.
waiaas_hl_get_positions
Get Hyperliquid perpetual positions for a wallet.
waiaas_hl_get_open_orders
Get Hyperliquid open orders for a wallet.
waiaas_hl_get_markets
Get Hyperliquid perpetual market list with metadata (leverage limits, etc.).
waiaas_hl_get_funding_rates
Get funding rate history for a Hyperliquid perpetual market.
waiaas_hl_get_account_state
Get Hyperliquid account state (balances, margins, positions).
waiaas_hl_get_trade_history
Get Hyperliquid trade history (fills) for a wallet.
waiaas_hl_get_spot_balances
Get Hyperliquid spot token balances for a wallet.
waiaas_hl_get_spot_markets
Get Hyperliquid spot market list (trading pairs, token info).
waiaas_hl_list_sub_accounts
List Hyperliquid sub-accounts for a wallet.
waiaas_hl_get_sub_positions
Get positions for a Hyperliquid sub-account.
waiaas_pm_get_positions
Get Polymarket prediction market positions for a wallet.
waiaas_pm_get_orders
Get Polymarket CLOB orders for a wallet.
waiaas_pm_get_markets
Browse Polymarket prediction markets with optional filters.
waiaas_pm_get_market_detail
Get detailed information about a specific Polymarket prediction market.
waiaas_pm_get_events
Get Polymarket events (groups of related markets).
waiaas_pm_get_balance
Get Polymarket USDC.e balance and CTF token positions for a wallet.
waiaas_pm_get_pnl
Get Polymarket profit and loss summary for a wallet.
waiaas_pm_setup
Set up Polymarket API keys and optional CTF contract approval for a wallet.
list_offchain_actions
List off-chain action history (signedData/signedHttp) with venue/status filter and pagination.
list_credentials
List credential metadata for a wallet (names, types, expiry -- never shows values).
get_rpc_proxy_url
Get the EVM RPC proxy URL for a wallet and chain. Use this URL as --rpc-url for Forge, Hardhat, ethers.js, or viem.
resolve_asset
Resolve a CAIP-19 asset identifier to token metadata. Returns address, decimals, symbol, name, network, chainId, isNative, isRegistered.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"waiaas": {
"waiaas": {
"command": "npx",
"args": [
"-y",
"@waiaas/mcp"
],
"env": {
"WAIAAS_BASE_URL": "http://127.0.0.1:3100",
"WAIAAS_SESSION_TOKEN": "<your-session-token>"
}
}
}
}
}
McpServers
{
"waiaas": {
"command": "npx",
"args": [
"-y",
"@waiaas/mcp"
],
"env": {
"WAIAAS_BASE_URL": "http://127.0.0.1:3100",
"WAIAAS_SESSION_TOKEN": "<your-session-token>"
}
}
}
WAIaaS
Wallet-as-a-Service for AI Agents
A self-hosted wallet daemon that lets AI agents perform on-chain transactions securely -- while the owner keeps full control of funds.
The Problem
AI agents that need to transact on-chain face an impossible choice: hold private keys (and risk total loss if compromised) or depend on a centralized custodian (single point of failure, trust dependency).
WAIaaS bridges the gap -- agents handle small transactions instantly, large amounts require owner approval, and everything runs on your machine with no third-party dependency.
How It Works
WAIaaS is a local daemon that sits between your AI agent and the blockchain:
- 3-tier authentication -- Separate roles for the daemon operator (masterAuth), fund owner (ownerAuth), and AI agent (sessionAuth)
- 4-tier policy engine -- Transactions are auto-classified by USD value into INSTANT / NOTIFY / DELAY / APPROVAL tiers
- 12 policy types -- Cumulative spend limits, token allowlists, contract whitelists, approved spenders, and more
- Defense in depth -- Kill Switch, AutoStop engine, audit logging, 4-channel notifications
See Security Model for full details.
Architecture
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 packages in a monorepo:
- @waiaas/core — Shared types, Zod schemas, enums, and interfaces
- @waiaas/daemon — Self-hosted wallet daemon (Hono HTTP server)
- @waiaas/adapter-solana — Solana chain adapter (SPL / Token-2022)
- @waiaas/adapter-evm — EVM chain adapter (ERC-20 via viem)
- @waiaas/actions — DeFi Action Providers (Jupiter, 0x, LI.FI, Lido, Jito)
- @waiaas/sdk — TypeScript client library
- @waiaas/mcp — Model Context Protocol server for AI agents
- @waiaas/cli — Command-line interface
- @waiaas/admin — Preact-based Admin Web UI
- @waiaas/wallet-sdk — Wallet Signing SDK for wallet app integration
- @waiaas/push-relay — Push Relay Server (ntfy → push services)
- @waiaas/skills — Pre-built .skill.md instruction files for AI agents
See Architecture for the full technical deep-dive.
Quick Start
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
The quickset command does everything you need to get started:
1. Creates Solana Mainnet + EVM Ethereum Mainnet wallets automatically
2. Issues MCP session tokens for each wallet
3. Outputs a Claude Desktop MCP config snippet -- just copy and paste
> We recommend configuring spending limits and registering an owner wallet for high-value transaction approval. For testing, use waiaas quickset --mode testnet to create Solana Devnet + EVM Sepolia wallets instead.
Admin UI
After starting the daemon, manage everything from the admin panel at http://127.0.0.1:3100/admin (masterAuth required).
Connect Your AI Agent
After quickset, choose one of two integration paths:
Path A: MCP (Claude Desktop / Claude Code)
For AI agents that support the Model Context Protocol:
```bash
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



