Waiaas

by minhoyoo-iotrust

130 downloads
Not rated
GitHub

About

# WAIaaS **Wallet-as-a-Service for AI Agents** [![npm downloads](https://img.shields.io/npm/dt/@waiaas/core)](https://www.npmjs.com/package/@waiaas/core) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)…

Details

Author
minhoyoo-iotrust
Downloads
130
Categories
Other

- 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:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Waiaas
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

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

npm downloads
License: MIT
Node.js
Tests

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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.