@waiaas/skills 2.10.0-rc.8 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![npm downloads](https://img.shields.io/npm/dt/@waiaas/core)](https://www.npmjs.com/package/@waiaas/core)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
7
7
  [![Node.js](https://img.shields.io/badge/Node.js-22_LTS-green.svg)](https://nodejs.org/)
8
- [![Tests](https://img.shields.io/badge/Tests-3%2C599_passing-brightgreen.svg)](#)
8
+ [![Tests](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/minhoyoo-iotrust/8eaa6e6fa868042de1a47f1b600df0f6/raw/waiaas-test-badge.json)](#)
9
9
 
10
10
  A self-hosted wallet daemon that lets AI agents perform on-chain transactions securely -- while the owner keeps full control of funds.
11
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@waiaas/skills",
3
- "version": "2.10.0-rc.8",
3
+ "version": "2.10.0",
4
4
  "description": "WAIaaS skill files for AI agents - install via npx @waiaas/skills add <name>",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -2,8 +2,8 @@
2
2
  name: "WAIaaS Actions"
3
3
  description: "Action Provider framework: list providers, execute DeFi actions through the 6-stage transaction pipeline"
4
4
  category: "api"
5
- tags: [wallet, blockchain, defi, actions, waiass, jupiter, 0x, swap, lifi, bridge, cross-chain, lido, jito, staking, liquid-staking, pendle, yield, pt, yt, drift, perp, perpetual, leverage, futures]
6
- version: "2.10.0-rc.8"
5
+ tags: [wallet, blockchain, defi, actions, waiass, jupiter, 0x, swap, lifi, bridge, cross-chain, lido, jito, staking, liquid-staking, pendle, yield, pt, yt, drift, perp, perpetual, leverage, futures, dcent-swap, dcent, aggregator, across, across-bridge, polymarket, prediction-market, clob, ctf]
6
+ version: "2.10.0"
7
7
  dispatch:
8
8
  kind: "tool"
9
9
  allowedCommands: ["curl"]
@@ -1589,7 +1589,216 @@ The ERC-8004 provider enables on-chain agent identity registration, reputation m
1589
1589
 
1590
1590
  For full action documentation, input schemas, SDK methods, and MCP tools, see **erc8004.skill.md**.
1591
1591
 
1592
- ## 13. Policy Integration
1592
+ ## 13. D'CENT Swap Aggregator -- Built-in Provider (Multi-Chain)
1593
+
1594
+ D'CENT Swap Aggregator aggregates multiple DEX providers to offer optimal swap routes across EVM chains and Solana. Supports same-chain DEX swaps (approve+txdata BATCH), cross-chain swaps (`cross_swap` providerType), and 2-hop auto-routing fallback when direct routes are unavailable.
1595
+
1596
+ - **Provider name:** `dcent_swap`
1597
+ - **Chains:** ethereum, solana (multi-chain via provider network)
1598
+ - **Requires API key:** No
1599
+ - **Feature gate:** `actions.dcent_swap_enabled` (default: true)
1600
+ - **Aggregated providers:** 1inch, SushiSwap, Uniswap Labs, SwapScanner, Rubic, ButterSwap, LI.FI
1601
+ - **Provider types:** `swap` (same-chain DEX), `cross_swap` (cross-chain DEX)
1602
+
1603
+ ### Actions (2)
1604
+
1605
+ | Action | Description | Tier | Risk |
1606
+ |--------|-------------|------|------|
1607
+ | `get_quotes` | Get swap quotes with provider comparison — supports same-chain and cross-chain swaps (informational) | INSTANT | low |
1608
+ | `dex_swap` | Execute DEX swap — supports same-chain and cross-chain swaps (approve+txdata BATCH for ERC-20, single CONTRACT_CALL for native) | DELAY | high |
1609
+
1610
+ ### Admin Settings Keys (5)
1611
+
1612
+ | Key | Default | Description |
1613
+ |-----|---------|-------------|
1614
+ | `actions.dcent_swap_enabled` | `true` | Enable/disable D'CENT Swap Aggregator |
1615
+ | `actions.dcent_swap_api_url` | `https://agent-swap.dcentwallet.com` | D'CENT Swap API base URL |
1616
+ | `actions.dcent_swap_default_slippage_bps` | `100` | Default slippage (1%) |
1617
+ | `actions.dcent_swap_max_slippage_bps` | `500` | Maximum slippage (5%) |
1618
+ | `actions.dcent_swap_currency_cache_ttl_ms` | `86400000` | Currency list cache TTL (24h) |
1619
+
1620
+ ### Example: Get Quotes
1621
+
1622
+ ```bash
1623
+ curl -s -X POST http://localhost:3100/v1/actions/dcent_swap/get_quotes \
1624
+ -H 'Content-Type: application/json' \
1625
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
1626
+ -d '{
1627
+ "params": {
1628
+ "fromAsset": "eip155:1/slip44:60",
1629
+ "toAsset": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
1630
+ "amount": "1000000000000000000",
1631
+ "fromDecimals": 18,
1632
+ "toDecimals": 6
1633
+ },
1634
+ "network": "ethereum-mainnet"
1635
+ }'
1636
+ ```
1637
+
1638
+ ### Example: DEX Swap
1639
+
1640
+ ```bash
1641
+ curl -s -X POST http://localhost:3100/v1/actions/dcent_swap/dex_swap \
1642
+ -H 'Content-Type: application/json' \
1643
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
1644
+ -d '{
1645
+ "params": {
1646
+ "fromAsset": "eip155:1/slip44:60",
1647
+ "toAsset": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
1648
+ "amount": "1000000000000000000",
1649
+ "fromDecimals": 18,
1650
+ "toDecimals": 6,
1651
+ "slippageBps": 100
1652
+ },
1653
+ "network": "ethereum-mainnet"
1654
+ }'
1655
+ ```
1656
+
1657
+ ### Policy Interaction
1658
+
1659
+ - **DEX Swap (dex_swap):** Resolves to CONTRACT_CALL targeting DEX router address. Subject to CONTRACT_WHITELIST (provider-trust bypass applies when enabled), ALLOWED_TOKENS, APPROVED_SPENDERS, and SPENDING_LIMIT policies.
1660
+ - **2-hop auto-routing:** When direct route unavailable (`fail_no_available_provider`), attempts intermediate token (ETH/USDC/USDT) routing. Multi-step BATCH with cumulative fee/slippage calculation.
1661
+
1662
+ ### SDK Methods
1663
+
1664
+ ```typescript
1665
+ const quotes = await client.getDcentQuotes({ fromAsset, toAsset, amount, fromDecimals, toDecimals, network });
1666
+ const swap = await client.dcentDexSwap({ fromAsset, toAsset, amount, fromDecimals, toDecimals, network });
1667
+ ```
1668
+
1669
+ ### MCP Tools
1670
+
1671
+ - `action_dcent_swap_get_quotes` -- Get swap quotes from D'CENT Swap Aggregator
1672
+ - `action_dcent_swap_dex_swap` -- Execute DEX swap via D'CENT Swap Aggregator
1673
+
1674
+ ## 14. Across Bridge -- Built-in Provider (EVM)
1675
+
1676
+ Intent-based cross-chain bridge with fast relayer fills (2-10 seconds). Supports Ethereum, Arbitrum, Optimism, Base, Polygon, Linea.
1677
+
1678
+ ### Prerequisites (Admin)
1679
+ - Enable via Admin Settings: `actions.across_bridge_enabled = true`
1680
+ - Add SpokePool addresses to CONTRACT_WHITELIST for each chain (or rely on provider-trust bypass)
1681
+
1682
+ ### Admin Settings
1683
+
1684
+ | Key | Default | Description |
1685
+ |-----|---------|-------------|
1686
+ | `actions.across_bridge_enabled` | `false` | Enable Across Bridge |
1687
+ | `actions.across_bridge_api_base_url` | `https://app.across.to/api` | API base URL |
1688
+ | `actions.across_bridge_integrator_id` | (empty) | Integrator ID |
1689
+ | `actions.across_bridge_fill_deadline_buffer_sec` | `21600` | Fill deadline buffer (6h) |
1690
+ | `actions.across_bridge_default_slippage_pct` | `0.01` | Default slippage (1%) |
1691
+ | `actions.across_bridge_max_slippage_pct` | `0.03` | Max slippage (3%) |
1692
+ | `actions.across_bridge_request_timeout_ms` | `10000` | Request timeout (ms) |
1693
+
1694
+ ### Available Actions
1695
+
1696
+ #### across_bridge / quote -- Get Bridge Quote
1697
+
1698
+ ```bash
1699
+ curl -s -X POST http://localhost:3100/v1/actions/across_bridge/quote \
1700
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
1701
+ -H 'Content-Type: application/json' \
1702
+ -d '{"params":{"fromChain":"ethereum","toChain":"arbitrum","inputToken":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","outputToken":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","amount":"1000000000"}}'
1703
+ ```
1704
+
1705
+ Returns: inputAmount, outputAmount, totalFee, feeBreakdown (lpFee, relayerCapitalFee, relayerGasFee), estimatedFillTimeSec, limits.
1706
+
1707
+ #### across_bridge / execute -- Execute Cross-chain Bridge
1708
+
1709
+ ```bash
1710
+ curl -s -X POST http://localhost:3100/v1/actions/across_bridge/execute \
1711
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
1712
+ -H 'Content-Type: application/json' \
1713
+ -d '{"params":{"fromChain":"ethereum","toChain":"arbitrum","inputToken":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","outputToken":"0xaf88d065e77c8cC2239327C5EDb3A432268e5831","amount":"1000000000"}}'
1714
+ ```
1715
+
1716
+ Executes approve+depositV3 BATCH (ERC-20) or single depositV3 with msg.value (native ETH). Bridge status tracked automatically via 2-phase polling.
1717
+
1718
+ #### across_bridge / status -- Check Bridge Status
1719
+
1720
+ ```bash
1721
+ curl -s -X POST http://localhost:3100/v1/actions/across_bridge/status \
1722
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
1723
+ -H 'Content-Type: application/json' \
1724
+ -d '{"params":{"depositTxHash":"0xabc..."}}'
1725
+ ```
1726
+
1727
+ Returns: status (filled/pending/expired/refunded), fillTxHash, depositId.
1728
+
1729
+ #### across_bridge / routes -- List Available Routes
1730
+
1731
+ ```bash
1732
+ curl -s -X POST http://localhost:3100/v1/actions/across_bridge/routes \
1733
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
1734
+ -H 'Content-Type: application/json' \
1735
+ -d '{"params":{}}'
1736
+ ```
1737
+
1738
+ Returns supported chain/token route combinations.
1739
+
1740
+ ### MCP Tools (auto-registered)
1741
+
1742
+ - `action_across_bridge_quote` -- Get Across bridge quote
1743
+ - `action_across_bridge_execute` -- Execute cross-chain bridge
1744
+ - `action_across_bridge_status` -- Check bridge deposit status
1745
+ - `action_across_bridge_routes` -- List available routes
1746
+
1747
+ ## 15. Polymarket Prediction Market
1748
+
1749
+ Polymarket trades on Polygon using CLOB off-chain orders and CTF on-chain settlement. Two providers: `polymarket_order` (CLOB) and `polymarket_ctf` (on-chain). Requires Polygon wallet.
1750
+
1751
+ ### Setup
1752
+
1753
+ ```bash
1754
+ curl -s -X POST http://localhost:3100/v1/wallets/${WALLET_ID}/polymarket/setup \
1755
+ -H 'Authorization: Bearer wai_sess_eyJ...'
1756
+ ```
1757
+
1758
+ ### CLOB Trading Actions (polymarket_order)
1759
+
1760
+ | Action | Tier | Description |
1761
+ |--------|------|-------------|
1762
+ | `pm_buy` | APPROVAL | Buy outcome tokens |
1763
+ | `pm_sell` | DELAY | Sell outcome tokens |
1764
+ | `pm_cancel_order` | INSTANT | Cancel order by ID |
1765
+ | `pm_cancel_all` | INSTANT | Cancel all orders |
1766
+ | `pm_update_order` | DELAY | Update order (cancel+replace) |
1767
+
1768
+ ### CTF On-chain Actions (polymarket_ctf)
1769
+
1770
+ | Action | Tier | Description |
1771
+ |--------|------|-------------|
1772
+ | `pm_split_position` | DELAY | Split USDC to outcome tokens |
1773
+ | `pm_merge_positions` | DELAY | Merge outcome tokens to USDC |
1774
+ | `pm_redeem_positions` | INSTANT | Redeem winning tokens |
1775
+ | `pm_approve_collateral` | INSTANT | Approve USDC.e for CTF |
1776
+ | `pm_approve_ctf` | INSTANT | Approve CTF ERC-1155 tokens |
1777
+
1778
+ ### Admin Settings
1779
+
1780
+ | Key | Default | Description |
1781
+ |-----|---------|-------------|
1782
+ | `actions.polymarket_enabled` | `false` | Enable Polymarket |
1783
+ | `actions.polymarket_default_fee_bps` | `0` | Default fee (bps) |
1784
+ | `actions.polymarket_order_expiry_seconds` | `86400` | Order expiry |
1785
+ | `actions.polymarket_max_position_usdc` | `1000` | Max position USDC |
1786
+ | `actions.polymarket_proxy_wallet` | `false` | Proxy wallet mode |
1787
+ | `actions.polymarket_neg_risk_enabled` | `true` | Neg risk routing |
1788
+ | `actions.polymarket_auto_approve_ctf` | `true` | Auto approve CTF |
1789
+
1790
+ ### Example: Buy on Prediction Market
1791
+
1792
+ ```bash
1793
+ curl -s -X POST http://localhost:3100/v1/actions/polymarket_order/pm_buy \
1794
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
1795
+ -H 'Content-Type: application/json' \
1796
+ -d '{"walletId":"WALLET_ID","params":{"tokenId":"TOKEN_ID","price":"0.65","size":"100"}}'
1797
+ ```
1798
+
1799
+ See **polymarket.skill.md** for full reference.
1800
+
1801
+ ## 16. Policy Integration
1593
1802
 
1594
1803
  ### CONTRACT_WHITELIST
1595
1804
 
@@ -1616,7 +1825,7 @@ The swap/bridge input amount is converted to USD via IPriceOracle and evaluated
1616
1825
 
1617
1826
  **LI.FI bridge reservation lifecycle:** Bridge amounts are reserved against the spending limit when the transaction is submitted. The reservation is released on terminal states (COMPLETED, FAILED, REFUNDED) but **held** on TIMEOUT to prevent double-spend during manual resolution. This means the spending budget is not freed until the bridge completes or fails definitively.
1618
1827
 
1619
- ## 14. Configuration via Admin Settings
1828
+ ## 17. Configuration via Admin Settings
1620
1829
 
1621
1830
  Since v28.2, all action provider settings are managed via **Admin UI > DeFi (`#/defi`)** for DeFi providers and **Admin UI > Agent Identity (`#/agent-identity`)** for ERC-8004 (not config.toml). The Admin Settings UI provides:
1622
1831
 
@@ -1656,7 +1865,7 @@ Operators can override the default security tier for individual actions. This al
1656
1865
 
1657
1866
  **Cross-reference:** Policy tier escalation rules apply on top of action tier. See **policies.skill.md** Section 3.
1658
1867
 
1659
- ## 15. Error Reference
1868
+ ## 18. Error Reference
1660
1869
 
1661
1870
  | Code | HTTP | Description | Recovery |
1662
1871
  |------|------|-------------|----------|
@@ -1672,7 +1881,7 @@ Operators can override the default security tier for individual actions. This al
1672
1881
  | `INVALID_INSTRUCTION` | 400 | Chain not supported by LI.FI integration. | Use one of the supported chains: solana, ethereum, polygon, arbitrum, optimism, base. |
1673
1882
  | `ACTION_API_ERROR` | 502 | LI.FI API returned an error. | Check LI.FI API status, verify parameters, retry. |
1674
1883
 
1675
- ## 16. MCP Auto-Registration
1884
+ ## 19. MCP Auto-Registration
1676
1885
 
1677
1886
  When a provider has `mcpExpose: true` in its metadata, the MCP server automatically registers each action as an MCP tool using the naming convention:
1678
1887
 
@@ -1723,10 +1932,11 @@ MCP tool parameters:
1723
1932
  - `network` (optional string): Target network
1724
1933
  - `wallet_id` (optional string): Target wallet ID
1725
1934
 
1726
- ## 17. Related Skill Files
1935
+ ## 20. Related Skill Files
1727
1936
 
1728
1937
  - **admin.skill.md** -- API key management, Admin Settings, daemon admin
1729
1938
  - **transactions.skill.md** -- 5-type transaction reference (actions execute as CONTRACT_CALL)
1730
1939
  - **policies.skill.md** -- Policy management (CONTRACT_WHITELIST, SPENDING_LIMIT, REPUTATION_THRESHOLD)
1731
1940
  - **wallet.skill.md** -- Wallet CRUD, sessions, assets
1732
1941
  - **erc8004.skill.md** -- ERC-8004 trustless agent identity and reputation
1942
+ - **polymarket.skill.md** -- Polymarket prediction market trading (CLOB + CTF)
@@ -3,7 +3,7 @@ name: "WAIaaS Admin"
3
3
  description: "Admin API: daemon status, kill switch, notifications, settings management, JWT rotation, shutdown, oracle status, API key management, audit logs, backup, webhooks, stats, autostop"
4
4
  category: "api"
5
5
  tags: [wallet, blockchain, admin, security, oracle, defi, waiass, audit, backup, webhook, stats, autostop]
6
- version: "2.10.0-rc.8"
6
+ version: "2.10.0"
7
7
  dispatch:
8
8
  kind: "tool"
9
9
  allowedCommands: ["curl"]
@@ -1469,7 +1469,39 @@ Add a provider later with `PUT /v1/wallets/{id}/provider` to enable **Full mode*
1469
1469
 
1470
1470
  In Admin UI, the wallet create form defaults to **None (Lite mode)** for the Provider dropdown. Lite/Full mode is shown as badges in the wallet list and detail pages.
1471
1471
 
1472
- ## 17. Related Skill Files
1472
+ ## 17. Hyperliquid Settings
1473
+
1474
+ Hyperliquid Perp Trading settings under the `actions` category:
1475
+
1476
+ | Key | Type | Default | Description |
1477
+ |-----|------|---------|-------------|
1478
+ | `actions.hyperliquid_enabled` | boolean | `false` | Enable Hyperliquid Perp trading |
1479
+ | `actions.hyperliquid_network` | string | `mainnet` | `mainnet` or `testnet` |
1480
+ | `actions.hyperliquid_api_url` | string | `` | Custom API URL (overrides network default) |
1481
+ | `actions.hyperliquid_rate_limit_weight_per_min` | number | `600` | Rate limit weight per minute (Hyperliquid max: 1200) |
1482
+ | `actions.hyperliquid_default_leverage` | number | `1` | Default leverage for new positions |
1483
+ | `actions.hyperliquid_default_margin_mode` | string | `CROSS` | Default margin mode: `CROSS` or `ISOLATED` |
1484
+ | `actions.hyperliquid_builder_address` | string | `` | Builder fee recipient address |
1485
+ | `actions.hyperliquid_builder_fee` | number | `0` | Builder fee in basis points |
1486
+ | `actions.hyperliquid_order_status_poll_interval_ms` | number | `2000` | Order status polling interval |
1487
+
1488
+ ```bash
1489
+ # Enable Hyperliquid and set default leverage to 3x
1490
+ curl -X PUT http://localhost:3100/v1/admin/settings \
1491
+ -H "X-Master-Password: $PASS" \
1492
+ -H "Content-Type: application/json" \
1493
+ -d '{"settings":{"actions.hyperliquid_enabled":"true","actions.hyperliquid_default_leverage":"3"}}'
1494
+
1495
+ # Switch to testnet
1496
+ curl -X PUT http://localhost:3100/v1/admin/settings \
1497
+ -H "X-Master-Password: $PASS" \
1498
+ -H "Content-Type: application/json" \
1499
+ -d '{"settings":{"actions.hyperliquid_network":"testnet"}}'
1500
+ ```
1501
+
1502
+ Admin UI: DeFi > Hyperliquid > Settings tab provides a form editor for all runtime keys.
1503
+
1504
+ ## 18. Related Skill Files
1473
1505
 
1474
1506
  - **actions.skill.md** -- Action Provider REST API (DeFi actions)
1475
1507
  - **policies.skill.md** -- Policy management (14 policy types for transaction controls)
@@ -3,7 +3,7 @@ name: "WAIaaS ERC-8004"
3
3
  description: "ERC-8004 Trustless Agents: identity registration, reputation management, on-chain validation"
4
4
  category: "api"
5
5
  tags: [wallet, blockchain, erc-8004, identity, reputation, validation, trust, waiass]
6
- version: "2.10.0-rc.8"
6
+ version: "2.10.0"
7
7
  dispatch:
8
8
  kind: "tool"
9
9
  allowedCommands: ["curl"]
@@ -3,7 +3,7 @@ name: "WAIaaS ERC-8128"
3
3
  description: "ERC-8128 Signed HTTP Requests: RFC 9421 + EIP-191 signature for API authentication"
4
4
  category: "api"
5
5
  tags: [wallet, blockchain, erc-8128, signing, rfc9421, http, authentication, waiass]
6
- version: "2.10.0-rc.8"
6
+ version: "2.10.0"
7
7
  dispatch:
8
8
  kind: "tool"
9
9
  allowedCommands: ["curl"]
@@ -3,7 +3,7 @@ name: "WAIaaS NFT Operations"
3
3
  description: "NFT query, transfer, and approval operations for ERC-721, ERC-1155, and Metaplex standards"
4
4
  category: "api"
5
5
  tags: [wallet, blockchain, nft, erc721, erc1155, metaplex, solana, ethereum, waiass]
6
- version: "2.10.0-rc.8"
6
+ version: "2.10.0"
7
7
  dispatch:
8
8
  kind: "tool"
9
9
  allowedCommands: ["curl"]
@@ -3,7 +3,7 @@ name: "WAIaaS Policies"
3
3
  description: "Policy engine CRUD: 14 policy types for spending limits, whitelists, time restrictions, rate limits, token/contract/approve controls, network restrictions, x402 domain controls, ERC-8128 domain controls, reputation threshold"
4
4
  category: "api"
5
5
  tags: [wallet, blockchain, policies, security, waiass]
6
- version: "2.10.0-rc.8"
6
+ version: "2.10.0"
7
7
  dispatch:
8
8
  kind: "tool"
9
9
  allowedCommands: ["curl"]
@@ -0,0 +1,343 @@
1
+ ---
2
+ name: "WAIaaS Polymarket"
3
+ description: "Polymarket prediction market trading: CLOB off-chain orders, CTF on-chain settlement, market data, position tracking"
4
+ category: "api"
5
+ tags: [polymarket, prediction-market, clob, ctf, defi, polygon, usdc]
6
+ version: "2.10.0"
7
+ dispatch:
8
+ kind: "tool"
9
+ allowedCommands: ["curl"]
10
+ ---
11
+
12
+ # WAIaaS Polymarket
13
+
14
+ Polymarket prediction market integration for AI agents. Trade on prediction markets using CLOB (Central Limit Order Book) off-chain orders and CTF (Conditional Token Framework) on-chain settlement. Runs exclusively on Polygon network using USDC.e as collateral.
15
+
16
+ > AI agents must NEVER request the master password. Use only your session token.
17
+
18
+ ## Base URL / Authentication
19
+
20
+ ```
21
+ http://localhost:3100
22
+ ```
23
+
24
+ All endpoints require **sessionAuth** via `Authorization: Bearer <token>` header.
25
+
26
+ ## Prerequisites
27
+
28
+ 1. **Polygon wallet** -- Polymarket requires a wallet on `polygon-mainnet` network
29
+ 2. **Polymarket enabled** -- Admin must set `actions.polymarket_enabled = true` in Admin Settings
30
+ 3. **API keys** -- Run setup to create Polymarket CLOB API keys for the wallet
31
+
32
+ ## 1. Setup
33
+
34
+ ### POST /v1/wallets/{walletId}/polymarket/setup -- Create API Keys
35
+
36
+ Creates Polymarket CLOB API keys for the specified wallet. Required before placing orders.
37
+
38
+ ```bash
39
+ curl -s -X POST http://localhost:3100/v1/wallets/${WALLET_ID}/polymarket/setup \
40
+ -H 'Authorization: Bearer wai_sess_eyJ...'
41
+ ```
42
+
43
+ **Response (200):**
44
+ ```json
45
+ {
46
+ "setup": {
47
+ "created": true,
48
+ "apiKey": "...",
49
+ "walletId": "..."
50
+ }
51
+ }
52
+ ```
53
+
54
+ ## 2. CLOB Trading Actions (polymarket_order)
55
+
56
+ All CLOB actions are executed via the action provider framework. Orders are placed off-chain on the Polymarket CLOB.
57
+
58
+ ### pm_buy -- Buy Outcome Tokens
59
+
60
+ **Default Tier:** APPROVAL (requires owner approval)
61
+
62
+ ```bash
63
+ curl -s -X POST http://localhost:3100/v1/actions/polymarket_order/pm_buy \
64
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
65
+ -H 'Content-Type: application/json' \
66
+ -d '{
67
+ "walletId": "WALLET_ID",
68
+ "params": {
69
+ "tokenId": "TOKEN_ID",
70
+ "price": "0.65",
71
+ "size": "100"
72
+ }
73
+ }'
74
+ ```
75
+
76
+ | Param | Type | Required | Description |
77
+ |-------|------|----------|-------------|
78
+ | `tokenId` | string | yes | Outcome token ID from market data |
79
+ | `price` | string | yes | Price per token (0-1 range, e.g. "0.65" = 65 cents) |
80
+ | `size` | string | yes | Number of tokens to buy |
81
+ | `feeRateBps` | number | no | Fee rate override (basis points) |
82
+ | `nonce` | string | no | Custom nonce |
83
+ | `expiration` | number | no | Custom expiry (unix timestamp) |
84
+
85
+ ### pm_sell -- Sell Outcome Tokens
86
+
87
+ **Default Tier:** DELAY
88
+
89
+ ```bash
90
+ curl -s -X POST http://localhost:3100/v1/actions/polymarket_order/pm_sell \
91
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
92
+ -H 'Content-Type: application/json' \
93
+ -d '{
94
+ "walletId": "WALLET_ID",
95
+ "params": {
96
+ "tokenId": "TOKEN_ID",
97
+ "price": "0.70",
98
+ "size": "50"
99
+ }
100
+ }'
101
+ ```
102
+
103
+ Same params as pm_buy.
104
+
105
+ ### pm_cancel_order -- Cancel Single Order
106
+
107
+ **Default Tier:** INSTANT
108
+
109
+ ```bash
110
+ curl -s -X POST http://localhost:3100/v1/actions/polymarket_order/pm_cancel_order \
111
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
112
+ -H 'Content-Type: application/json' \
113
+ -d '{
114
+ "walletId": "WALLET_ID",
115
+ "params": {
116
+ "orderId": "ORDER_ID"
117
+ }
118
+ }'
119
+ ```
120
+
121
+ ### pm_cancel_all -- Cancel All Orders
122
+
123
+ **Default Tier:** INSTANT
124
+
125
+ ```bash
126
+ curl -s -X POST http://localhost:3100/v1/actions/polymarket_order/pm_cancel_all \
127
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
128
+ -H 'Content-Type: application/json' \
129
+ -d '{
130
+ "walletId": "WALLET_ID",
131
+ "params": {
132
+ "conditionId": "CONDITION_ID"
133
+ }
134
+ }'
135
+ ```
136
+
137
+ | Param | Type | Required | Description |
138
+ |-------|------|----------|-------------|
139
+ | `conditionId` | string | no | Filter by market condition ID (omit for all) |
140
+
141
+ ### pm_update_order -- Update Order
142
+
143
+ **Default Tier:** DELAY (cancel + replace)
144
+
145
+ ```bash
146
+ curl -s -X POST http://localhost:3100/v1/actions/polymarket_order/pm_update_order \
147
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
148
+ -H 'Content-Type: application/json' \
149
+ -d '{
150
+ "walletId": "WALLET_ID",
151
+ "params": {
152
+ "tokenId": "TOKEN_ID",
153
+ "price": "0.70",
154
+ "size": "100",
155
+ "orderId": "EXISTING_ORDER_ID"
156
+ }
157
+ }'
158
+ ```
159
+
160
+ ## 3. CTF On-chain Actions (polymarket_ctf)
161
+
162
+ CTF actions execute on-chain transactions on the Conditional Token Framework contracts.
163
+
164
+ ### pm_split_position -- Split USDC to Outcome Tokens
165
+
166
+ **Default Tier:** DELAY
167
+
168
+ ```bash
169
+ curl -s -X POST http://localhost:3100/v1/actions/polymarket_ctf/pm_split_position \
170
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
171
+ -H 'Content-Type: application/json' \
172
+ -d '{
173
+ "walletId": "WALLET_ID",
174
+ "params": {
175
+ "conditionId": "CONDITION_ID",
176
+ "amount": "100"
177
+ }
178
+ }'
179
+ ```
180
+
181
+ ### pm_merge_positions -- Merge Outcome Tokens to USDC
182
+
183
+ **Default Tier:** DELAY
184
+
185
+ Same params as pm_split_position.
186
+
187
+ ### pm_redeem_positions -- Redeem Winning Tokens
188
+
189
+ **Default Tier:** INSTANT (post-resolution, no risk)
190
+
191
+ ```bash
192
+ curl -s -X POST http://localhost:3100/v1/actions/polymarket_ctf/pm_redeem_positions \
193
+ -H 'Authorization: Bearer wai_sess_eyJ...' \
194
+ -H 'Content-Type: application/json' \
195
+ -d '{
196
+ "walletId": "WALLET_ID",
197
+ "params": {
198
+ "conditionId": "CONDITION_ID"
199
+ }
200
+ }'
201
+ ```
202
+
203
+ ### pm_approve_collateral -- Approve USDC.e for CTF
204
+
205
+ **Default Tier:** INSTANT
206
+
207
+ ### pm_approve_ctf -- Approve CTF ERC-1155
208
+
209
+ **Default Tier:** INSTANT
210
+
211
+ ## 4. Query Endpoints
212
+
213
+ ### GET /v1/wallets/{walletId}/polymarket/positions -- List Positions
214
+
215
+ ```bash
216
+ curl -s http://localhost:3100/v1/wallets/${WALLET_ID}/polymarket/positions \
217
+ -H 'Authorization: Bearer wai_sess_eyJ...'
218
+ ```
219
+
220
+ ### GET /v1/wallets/{walletId}/polymarket/orders -- List Orders
221
+
222
+ ```bash
223
+ curl -s "http://localhost:3100/v1/wallets/${WALLET_ID}/polymarket/orders?status=LIVE" \
224
+ -H 'Authorization: Bearer wai_sess_eyJ...'
225
+ ```
226
+
227
+ | Param | Type | Description |
228
+ |-------|------|-------------|
229
+ | `status` | string | Filter: LIVE, MATCHED, CANCELLED |
230
+
231
+ ### GET /v1/wallets/{walletId}/polymarket/balance -- Token Balance
232
+
233
+ ```bash
234
+ curl -s http://localhost:3100/v1/wallets/${WALLET_ID}/polymarket/balance \
235
+ -H 'Authorization: Bearer wai_sess_eyJ...'
236
+ ```
237
+
238
+ ### GET /v1/wallets/{walletId}/polymarket/pnl -- PnL Summary
239
+
240
+ ```bash
241
+ curl -s http://localhost:3100/v1/wallets/${WALLET_ID}/polymarket/pnl \
242
+ -H 'Authorization: Bearer wai_sess_eyJ...'
243
+ ```
244
+
245
+ ### GET /v1/polymarket/markets -- Browse Markets
246
+
247
+ ```bash
248
+ curl -s "http://localhost:3100/v1/polymarket/markets?keyword=election&limit=10" \
249
+ -H 'Authorization: Bearer wai_sess_eyJ...'
250
+ ```
251
+
252
+ | Param | Type | Description |
253
+ |-------|------|-------------|
254
+ | `keyword` | string | Search query |
255
+ | `category` | string | Category filter |
256
+ | `limit` | number | Max results |
257
+
258
+ ### GET /v1/polymarket/markets/{conditionId} -- Market Detail
259
+
260
+ ```bash
261
+ curl -s http://localhost:3100/v1/polymarket/markets/${CONDITION_ID} \
262
+ -H 'Authorization: Bearer wai_sess_eyJ...'
263
+ ```
264
+
265
+ ### GET /v1/polymarket/events -- List Events
266
+
267
+ ```bash
268
+ curl -s http://localhost:3100/v1/polymarket/events \
269
+ -H 'Authorization: Bearer wai_sess_eyJ...'
270
+ ```
271
+
272
+ ## 5. Workflow Examples
273
+
274
+ ### Workflow 1: Search Market and Buy
275
+
276
+ 1. Search markets: `GET /v1/polymarket/markets?keyword=election`
277
+ 2. Get market detail: `GET /v1/polymarket/markets/{conditionId}`
278
+ 3. Setup (first time): `POST /v1/wallets/{id}/polymarket/setup`
279
+ 4. Buy outcome tokens: `POST /v1/actions/polymarket_order/pm_buy`
280
+ 5. Check position: `GET /v1/wallets/{id}/polymarket/positions`
281
+
282
+ ### Workflow 2: Redeem Resolved Market
283
+
284
+ 1. Check positions: `GET /v1/wallets/{id}/polymarket/positions`
285
+ 2. Find resolved positions with `resolved: true`
286
+ 3. Redeem: `POST /v1/actions/polymarket_ctf/pm_redeem_positions`
287
+ 4. Verify balance: `GET /v1/wallets/{id}/polymarket/balance`
288
+
289
+ ### Workflow 3: Position Management
290
+
291
+ 1. View PnL: `GET /v1/wallets/{id}/polymarket/pnl`
292
+ 2. Sell losing position: `POST /v1/actions/polymarket_order/pm_sell`
293
+ 3. Cancel pending orders: `POST /v1/actions/polymarket_order/pm_cancel_all`
294
+
295
+ ## 6. Admin Settings
296
+
297
+ | Key | Default | Description |
298
+ |-----|---------|-------------|
299
+ | `actions.polymarket_enabled` | `false` | Enable Polymarket integration |
300
+ | `actions.polymarket_default_fee_bps` | `0` | Default maker/taker fee (basis points) |
301
+ | `actions.polymarket_order_expiry_seconds` | `86400` | Order expiry (24h default) |
302
+ | `actions.polymarket_max_position_usdc` | `1000` | Max position size in USDC |
303
+ | `actions.polymarket_proxy_wallet` | `false` | Use proxy wallet for CLOB signing |
304
+ | `actions.polymarket_neg_risk_enabled` | `true` | Auto-route neg risk markets |
305
+ | `actions.polymarket_auto_approve_ctf` | `true` | Auto-approve CTF token allowances |
306
+
307
+ Admin UI: Navigate to `#/polymarket` > Settings tab.
308
+
309
+ ## 7. MCP Tools
310
+
311
+ 8 query tools registered in MCP server:
312
+
313
+ - `waiaas_pm_get_positions` -- Get wallet positions
314
+ - `waiaas_pm_get_orders` -- Get wallet orders
315
+ - `waiaas_pm_get_markets` -- Search/browse markets
316
+ - `waiaas_pm_get_market_detail` -- Get market detail by condition ID
317
+ - `waiaas_pm_get_events` -- List prediction events
318
+ - `waiaas_pm_get_balance` -- Get CTF token balance
319
+ - `waiaas_pm_get_pnl` -- Get PnL summary
320
+ - `waiaas_pm_setup` -- Create API keys for wallet
321
+
322
+ ## 8. SDK Methods
323
+
324
+ 15 convenience methods on WAIaaSClient:
325
+
326
+ **Actions:** `pmBuy`, `pmSell`, `pmCancelOrder`, `pmCancelAll`, `pmUpdateOrder`, `pmSplitPosition`, `pmMergePositions`, `pmRedeemPositions`
327
+
328
+ **Queries:** `pmGetPositions`, `pmGetOrders`, `pmGetMarkets`, `pmGetMarketDetail`, `pmGetBalance`, `pmGetPnl`, `pmSetup`
329
+
330
+ ## 9. Notes
331
+
332
+ - **Polygon only** -- All Polymarket operations require a wallet on `polygon-mainnet`. Other networks will return INVALID_NETWORK error.
333
+ - **USDC.e collateral** -- Polymarket uses USDC.e (bridged USDC on Polygon) as collateral for all trades.
334
+ - **Neg Risk routing** -- Markets with neg risk flag are automatically routed to the NegRiskCTFExchange contract.
335
+ - **Spending limits** -- `pm_buy` spending (price * size in USDC) is evaluated against SPENDING_LIMIT policies. `pm_sell`, `pm_cancel_*` have zero spending.
336
+ - **connect-info** -- When `actions.polymarket_enabled = true`, the `polymarket` capability is included in `GET /v1/connect-info` for agent self-discovery.
337
+
338
+ ## 10. Related Skill Files
339
+
340
+ - **actions.skill.md** -- Action Provider framework, policy integration
341
+ - **wallet.skill.md** -- Wallet CRUD, sessions
342
+ - **policies.skill.md** -- SPENDING_LIMIT, CONTRACT_WHITELIST
343
+ - **admin.skill.md** -- Admin Settings management
@@ -3,7 +3,7 @@ name: "WAIaaS Quickset"
3
3
  description: "End-to-end quickset: create wallet, session, check balance, send first transfer"
4
4
  category: "api"
5
5
  tags: [wallet, blockchain, solana, ethereum, quickset, quickstart, waiass]
6
- version: "2.10.0-rc.8"
6
+ version: "2.10.0"
7
7
  dispatch:
8
8
  kind: "tool"
9
9
  allowedCommands: ["curl"]
@@ -3,7 +3,7 @@ name: "WAIaaS Session Recovery"
3
3
  description: "Recover from expired or permanently expired session tokens"
4
4
  category: "api"
5
5
  tags: [wallet, blockchain, session, recovery, token, expired, waiass]
6
- version: "2.10.0-rc.8"
6
+ version: "2.10.0"
7
7
  dispatch:
8
8
  kind: "tool"
9
9
  allowedCommands: ["curl"]
@@ -3,7 +3,7 @@ name: "WAIaaS Setup"
3
3
  description: "Zero-state daemon setup: install CLI, initialize, start daemon, create wallet, configure session"
4
4
  category: "api"
5
5
  tags: [wallet, blockchain, solana, ethereum, setup, install, waiass]
6
- version: "2.10.0-rc.8"
6
+ version: "2.10.0"
7
7
  dispatch:
8
8
  kind: "tool"
9
9
  allowedCommands: ["curl", "npm", "npx", "waiaas", "which"]
@@ -3,7 +3,7 @@ name: "WAIaaS Transactions"
3
3
  description: "All 6 transaction types (TRANSFER, TOKEN_TRANSFER, CONTRACT_CALL, APPROVE, BATCH, NFT_TRANSFER) with lifecycle management"
4
4
  category: "api"
5
5
  tags: [wallet, blockchain, solana, ethereum, transactions, waiass]
6
- version: "2.10.0-rc.8"
6
+ version: "2.10.0"
7
7
  dispatch:
8
8
  kind: "tool"
9
9
  allowedCommands: ["curl"]
@@ -49,7 +49,7 @@ All transaction types accept a `network` parameter to specify the target network
49
49
 
50
50
  ## 2. Type 1: TRANSFER (Native SOL/ETH)
51
51
 
52
- Transfer native tokens to a recipient address. No policy prerequisite -- subject to SPENDING_LIMIT if configured.
52
+ Transfer native tokens to a recipient address. No policy prerequisite -- subject to SPENDING_LIMIT if configured. DCent Exchange uses TRANSFER to send funds to the exchange service's payInAddress for cross-chain swaps.
53
53
 
54
54
  ### Request
55
55
 
@@ -274,7 +274,7 @@ Parameters:
274
274
 
275
275
  ## 6. Type 5: BATCH (Multiple Instructions)
276
276
 
277
- Execute multiple instructions in a single transaction. **Solana only** -- EVM returns `BATCH_NOT_SUPPORTED` error.
277
+ Execute multiple instructions in a single transaction. **Solana only** -- EVM returns `BATCH_NOT_SUPPORTED` error. DCent DEX Swap uses BATCH with approve + swap txdata for ERC-20 sell orders (resolved internally by the action provider, not user-facing BATCH).
278
278
 
279
279
  ### Request
280
280
 
@@ -1284,3 +1284,253 @@ const signed = await client.signUserOp('wallet-id', {
1284
1284
  userOperation: { ...build, callGasLimit: '0x...', ... },
1285
1285
  });
1286
1286
  ```
1287
+
1288
+ ## Hyperliquid Perp Trading
1289
+
1290
+ Hyperliquid perpetual futures trading via the action provider pipeline. Requires `actions.hyperliquid_enabled=true` in Admin Settings.
1291
+
1292
+ > AI agents must NEVER request the master password. Use only your session token.
1293
+
1294
+ ### Action Endpoints (through pipeline)
1295
+
1296
+ Actions go through the standard `/v1/actions/hyperliquid_perp/{action}` route with policy evaluation.
1297
+
1298
+ ```bash
1299
+ # Open a market long position (10x leverage, 1 ETH)
1300
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_perp/hl_open_position \
1301
+ -H "Authorization: Bearer $TOKEN" \
1302
+ -H "Content-Type: application/json" \
1303
+ -d '{"wallet_id":"wid","market":"ETH","side":"LONG","size":"1","leverage":10,"order_type":"MARKET"}'
1304
+
1305
+ # Place a limit buy order
1306
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_perp/hl_place_order \
1307
+ -H "Authorization: Bearer $TOKEN" \
1308
+ -H "Content-Type: application/json" \
1309
+ -d '{"wallet_id":"wid","market":"ETH","side":"BUY","size":"0.5","price":"2000","order_type":"LIMIT","time_in_force":"GTC"}'
1310
+
1311
+ # Set stop-loss (trigger order)
1312
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_perp/hl_place_order \
1313
+ -H "Authorization: Bearer $TOKEN" \
1314
+ -H "Content-Type: application/json" \
1315
+ -d '{"wallet_id":"wid","market":"ETH","side":"SELL","size":"1","price":"1800","order_type":"STOP","trigger_price":"1810","time_in_force":"GTC","reduce_only":true}'
1316
+
1317
+ # Close a position
1318
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_perp/hl_close_position \
1319
+ -H "Authorization: Bearer $TOKEN" \
1320
+ -H "Content-Type: application/json" \
1321
+ -d '{"wallet_id":"wid","market":"ETH"}'
1322
+
1323
+ # Set leverage for a market
1324
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_perp/hl_set_leverage \
1325
+ -H "Authorization: Bearer $TOKEN" \
1326
+ -H "Content-Type: application/json" \
1327
+ -d '{"wallet_id":"wid","market":"ETH","leverage":5,"is_cross":true}'
1328
+ ```
1329
+
1330
+ ### Query Endpoints (no pipeline, direct)
1331
+
1332
+ ```bash
1333
+ # Get positions
1334
+ curl http://localhost:3100/v1/wallets/$WID/hyperliquid/positions \
1335
+ -H "X-Master-Password: $PASS"
1336
+
1337
+ # Get open orders
1338
+ curl http://localhost:3100/v1/wallets/$WID/hyperliquid/orders \
1339
+ -H "X-Master-Password: $PASS"
1340
+
1341
+ # Get account state (balances, margins)
1342
+ curl http://localhost:3100/v1/wallets/$WID/hyperliquid/account \
1343
+ -H "X-Master-Password: $PASS"
1344
+
1345
+ # Get trade history
1346
+ curl http://localhost:3100/v1/wallets/$WID/hyperliquid/fills?limit=50 \
1347
+ -H "X-Master-Password: $PASS"
1348
+
1349
+ # Get market list (no wallet needed)
1350
+ curl http://localhost:3100/v1/hyperliquid/markets \
1351
+ -H "X-Master-Password: $PASS"
1352
+
1353
+ # Get funding rates
1354
+ curl http://localhost:3100/v1/hyperliquid/funding-rates?market=ETH \
1355
+ -H "X-Master-Password: $PASS"
1356
+ ```
1357
+
1358
+ ### MCP Tools
1359
+
1360
+ Action tools (7, auto-registered via provider):
1361
+ - `hl_open_position`: Open a perp position (market/limit)
1362
+ - `hl_close_position`: Close a perp position
1363
+ - `hl_place_order`: Place an order (limit/stop/take-profit)
1364
+ - `hl_cancel_order`: Cancel an open order
1365
+ - `hl_set_leverage`: Set leverage for a market
1366
+ - `hl_set_margin_mode`: Set margin mode (cross/isolated)
1367
+ - `hl_transfer_usdc`: Transfer USDC between spot and perp
1368
+
1369
+ Query tools (6, manually registered):
1370
+ - `waiaas_hl_get_positions`: Get perp positions
1371
+ - `waiaas_hl_get_open_orders`: Get open orders
1372
+ - `waiaas_hl_get_markets`: Get market list
1373
+ - `waiaas_hl_get_funding_rates`: Get funding rate history
1374
+ - `waiaas_hl_get_account_state`: Get account state
1375
+ - `waiaas_hl_get_trade_history`: Get trade history (fills)
1376
+
1377
+ ### SDK Methods
1378
+
1379
+ ```typescript
1380
+ // Action methods (through pipeline)
1381
+ await client.hlOpenPosition('wallet-id', { market: 'ETH', side: 'LONG', size: '1', leverage: 10 });
1382
+ await client.hlClosePosition('wallet-id', { market: 'ETH' });
1383
+ await client.hlPlaceOrder('wallet-id', { market: 'ETH', side: 'BUY', size: '0.5', price: '2000', order_type: 'LIMIT' });
1384
+ await client.hlCancelOrder('wallet-id', { market: 'ETH', oid: 12345 });
1385
+ await client.hlSetLeverage('wallet-id', { market: 'ETH', leverage: 5, is_cross: true });
1386
+
1387
+ // Query methods (direct)
1388
+ const positions = await client.hlGetPositions('wallet-id');
1389
+ const orders = await client.hlGetOpenOrders('wallet-id');
1390
+ const markets = await client.hlGetMarkets();
1391
+ const rates = await client.hlGetFundingRates('ETH');
1392
+ const account = await client.hlGetAccountState('wallet-id');
1393
+ const fills = await client.hlGetTradeHistory('wallet-id', 50);
1394
+ ```
1395
+
1396
+ ## Hyperliquid Spot Trading
1397
+
1398
+ Hyperliquid spot market trading via the action provider pipeline. Requires `actions.hyperliquid_enabled=true` in Admin Settings.
1399
+
1400
+ > AI agents must NEVER request the master password. Use only your session token.
1401
+
1402
+ ### Action Endpoints (through pipeline)
1403
+
1404
+ Actions go through the standard `/v1/actions/hyperliquid_spot/{action}` route with policy evaluation.
1405
+
1406
+ ```bash
1407
+ # Buy 100 HYPE at market price
1408
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_spot/hl_spot_buy \
1409
+ -H "Authorization: Bearer $TOKEN" \
1410
+ -H "Content-Type: application/json" \
1411
+ -d '{"wallet_id":"wid","market":"HYPE/USDC","size":"100","orderType":"MARKET"}'
1412
+
1413
+ # Place a limit buy order for HYPE at $24.50
1414
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_spot/hl_spot_buy \
1415
+ -H "Authorization: Bearer $TOKEN" \
1416
+ -H "Content-Type: application/json" \
1417
+ -d '{"wallet_id":"wid","market":"HYPE/USDC","size":"100","price":"24.5","orderType":"LIMIT","tif":"GTC"}'
1418
+
1419
+ # Sell 50 HYPE at market price
1420
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_spot/hl_spot_sell \
1421
+ -H "Authorization: Bearer $TOKEN" \
1422
+ -H "Content-Type: application/json" \
1423
+ -d '{"wallet_id":"wid","market":"HYPE/USDC","size":"50","orderType":"MARKET"}'
1424
+
1425
+ # Cancel a specific spot order
1426
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_spot/hl_spot_cancel \
1427
+ -H "Authorization: Bearer $TOKEN" \
1428
+ -H "Content-Type: application/json" \
1429
+ -d '{"wallet_id":"wid","market":"HYPE/USDC","oid":12345}'
1430
+
1431
+ # Cancel all spot orders for a market
1432
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_spot/hl_spot_cancel \
1433
+ -H "Authorization: Bearer $TOKEN" \
1434
+ -H "Content-Type: application/json" \
1435
+ -d '{"wallet_id":"wid","market":"HYPE/USDC"}'
1436
+ ```
1437
+
1438
+ ### Query Endpoints (no pipeline, direct)
1439
+
1440
+ ```bash
1441
+ # Get spot token balances
1442
+ curl http://localhost:3100/v1/wallets/$WID/hyperliquid/spot/balances \
1443
+ -H "X-Master-Password: $PASS"
1444
+
1445
+ # Get spot market list
1446
+ curl http://localhost:3100/v1/hyperliquid/spot/markets \
1447
+ -H "X-Master-Password: $PASS"
1448
+ ```
1449
+
1450
+ ### MCP Tools
1451
+
1452
+ Action tools (3, auto-registered via provider):
1453
+ - `hl_spot_buy`: Buy tokens on Hyperliquid spot (market/limit)
1454
+ - `hl_spot_sell`: Sell tokens on Hyperliquid spot (market/limit)
1455
+ - `hl_spot_cancel`: Cancel spot orders (single or all for a market)
1456
+
1457
+ Query tools (2, manually registered):
1458
+ - `waiaas_hl_get_spot_balances`: Get spot token balances
1459
+ - `waiaas_hl_get_spot_markets`: Get spot market list
1460
+
1461
+ ### SDK Methods
1462
+
1463
+ ```typescript
1464
+ // Action methods (through pipeline)
1465
+ await client.hlSpotBuy('wallet-id', { market: 'HYPE/USDC', size: '100', orderType: 'MARKET' });
1466
+ await client.hlSpotSell('wallet-id', { market: 'HYPE/USDC', size: '50', orderType: 'MARKET' });
1467
+ await client.hlSpotCancel('wallet-id', { market: 'HYPE/USDC', oid: 12345 });
1468
+
1469
+ // Query methods (direct)
1470
+ const spotBalances = await client.hlGetSpotBalances('wallet-id');
1471
+ const spotMarkets = await client.hlGetSpotMarkets();
1472
+ ```
1473
+
1474
+ ## Hyperliquid Sub-account Management
1475
+
1476
+ Hyperliquid sub-account management for isolating funds per strategy. Requires `actions.hyperliquid_enabled=true` in Admin Settings.
1477
+
1478
+ > AI agents must NEVER request the master password. Use only your session token.
1479
+
1480
+ ### Action Endpoints (through pipeline)
1481
+
1482
+ Actions go through the standard `/v1/actions/hyperliquid_sub/{action}` route with policy evaluation.
1483
+
1484
+ ```bash
1485
+ # Create a new sub-account
1486
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_sub/hl_create_sub_account \
1487
+ -H "Authorization: Bearer $TOKEN" \
1488
+ -H "Content-Type: application/json" \
1489
+ -d '{"wallet_id":"wid","name":"Trend Following"}'
1490
+
1491
+ # Transfer USDC: master -> sub-account
1492
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_sub/hl_sub_transfer \
1493
+ -H "Authorization: Bearer $TOKEN" \
1494
+ -H "Content-Type: application/json" \
1495
+ -d '{"wallet_id":"wid","subAccount":"0xSub...","amount":"1000","isDeposit":true}'
1496
+
1497
+ # Transfer USDC: sub-account -> master
1498
+ curl -X POST http://localhost:3100/v1/actions/hyperliquid_sub/hl_sub_transfer \
1499
+ -H "Authorization: Bearer $TOKEN" \
1500
+ -H "Content-Type: application/json" \
1501
+ -d '{"wallet_id":"wid","subAccount":"0xSub...","amount":"500","isDeposit":false}'
1502
+ ```
1503
+
1504
+ ### Query Endpoints (no pipeline, direct)
1505
+
1506
+ ```bash
1507
+ # List sub-accounts
1508
+ curl http://localhost:3100/v1/wallets/$WID/hyperliquid/sub-accounts \
1509
+ -H "X-Master-Password: $PASS"
1510
+
1511
+ # Get sub-account positions
1512
+ curl http://localhost:3100/v1/wallets/$WID/hyperliquid/sub-accounts/0xSub.../positions \
1513
+ -H "X-Master-Password: $PASS"
1514
+ ```
1515
+
1516
+ ### MCP Tools
1517
+
1518
+ Action tools (2, auto-registered via provider):
1519
+ - `hl_create_sub_account`: Create a new Hyperliquid sub-account
1520
+ - `hl_sub_transfer`: Transfer USDC between master and sub-account
1521
+
1522
+ Query tools (2, manually registered):
1523
+ - `waiaas_hl_list_sub_accounts`: List sub-accounts for a wallet
1524
+ - `waiaas_hl_get_sub_positions`: Get positions for a sub-account
1525
+
1526
+ ### SDK Methods
1527
+
1528
+ ```typescript
1529
+ // Action methods (through pipeline)
1530
+ await client.hlCreateSubAccount('wallet-id', { name: 'Trend Following' });
1531
+ await client.hlSubTransfer('wallet-id', { subAccount: '0xSub...', amount: '1000', isDeposit: true });
1532
+
1533
+ // Query methods (direct)
1534
+ const subAccounts = await client.hlListSubAccounts('wallet-id');
1535
+ const positions = await client.hlGetSubPositions('wallet-id', '0xSubAddress');
1536
+ ```
@@ -3,7 +3,7 @@ name: "WAIaaS Wallet Management"
3
3
  description: "Wallet CRUD, asset queries, session management, token registry, MCP provisioning, owner management"
4
4
  category: "api"
5
5
  tags: [wallet, blockchain, solana, ethereum, sessions, tokens, mcp, waiass]
6
- version: "2.10.0-rc.8"
6
+ version: "2.10.0"
7
7
  dispatch:
8
8
  kind: "tool"
9
9
  allowedCommands: ["curl"]
@@ -124,6 +124,9 @@ Response (201):
124
124
  - `accountType`: `"smart"` -- ERC-4337 smart account
125
125
  - `signerKey`: EOA signer (owner) address that controls the smart account
126
126
  - `deployed`: `false` until the first transaction (lazy deployment via CREATE2)
127
+ - `factoryAddress`: The factory contract address used to create this smart account
128
+ - `factorySupportedNetworks`: Array of network IDs where the factory contract is deployed (e.g., `["ethereum-mainnet", "base-mainnet", ...]`). `null` for EOA wallets.
129
+ - `factoryVerifiedOnNetwork`: `true` if the factory was verified via `eth_getCode` on the current network, `false` if not found, `null` if verification was skipped or failed
127
130
 
128
131
  **Key differences from EOA:**
129
132
  - Gas can be sponsored by a Paymaster (agent needs no ETH for gas)
@@ -242,6 +245,23 @@ Response (200):
242
245
  }
243
246
  ```
244
247
 
248
+ ### DELETE /v1/wallets/{id}/purge -- Permanently Delete Wallet (masterAuth)
249
+
250
+ Permanently removes a terminated wallet and all associated data (transactions, sessions, policies, keys). Only works on wallets in TERMINATED status.
251
+
252
+ ```bash
253
+ curl -s -X DELETE http://localhost:3100/v1/wallets/01958f3a-1234-7000-8000-abcdef123456/purge \
254
+ -H 'X-Master-Password: your-master-password'
255
+ ```
256
+
257
+ Response (200):
258
+ ```json
259
+ {
260
+ "id": "01958f3a-1234-7000-8000-abcdef123456",
261
+ "status": "PURGED"
262
+ }
263
+ ```
264
+
245
265
  ### PUT /v1/wallets/{id}/owner -- Set Owner Address (masterAuth)
246
266
 
247
267
  Register a human owner address for this wallet. Enables owner-based approval workflows.
@@ -899,6 +919,7 @@ async with WAIaaSClient("http://localhost:3100", "wai_sess_...") as client:
899
919
  |------|------|-------------|
900
920
  | `WALLET_NOT_FOUND` | 404 | Wallet ID does not exist |
901
921
  | `WALLET_TERMINATED` | 410 | Wallet has been terminated |
922
+ | `WALLET_NOT_TERMINATED` | 409 | Wallet must be terminated before purging |
902
923
  | `SESSION_NOT_FOUND` | 404 | Session ID does not exist |
903
924
  | `SESSION_EXPIRED` | 401 | Session JWT has expired |
904
925
  | `SESSION_REVOKED` | 401 | Session has been revoked |
@@ -1423,3 +1444,16 @@ Key capabilities:
1423
1444
  - **Approve**: `POST /v1/transactions/send` with `type: "APPROVE"` and `nft` field
1424
1445
 
1425
1446
  The Admin UI wallet detail page includes an **NFTs** tab showing NFT grid/list views with metadata modal. NFT indexer API keys (Alchemy for EVM, Helius for Solana) can be configured in **Settings > NFT Indexer**.
1447
+
1448
+ ## 18. Hyperliquid Perp Trading
1449
+
1450
+ EVM wallets can trade Hyperliquid perpetual futures when enabled via Admin Settings (`actions.hyperliquid_enabled=true`).
1451
+
1452
+ > AI agents must NEVER request the master password. Use only your session token.
1453
+
1454
+ Key capabilities:
1455
+ - **Trade**: Open/close positions, place/cancel orders via action provider pipeline
1456
+ - **Query**: Get positions, orders, account state, trade history, market data, funding rates
1457
+ - **Configure**: Set leverage, margin mode (cross/isolated), USDC transfers (spot to perp)
1458
+
1459
+ See **transactions.skill.md** for full Hyperliquid REST/MCP/SDK reference and **admin.skill.md** for Hyperliquid Admin Settings.
@@ -3,7 +3,7 @@ name: "WAIaaS x402"
3
3
  description: "x402 auto-payment protocol: fetch URLs with automatic cryptocurrency payments"
4
4
  category: "api"
5
5
  tags: [wallet, blockchain, x402, payments, waiass]
6
- version: "2.10.0-rc.8"
6
+ version: "2.10.0"
7
7
  dispatch:
8
8
  kind: "tool"
9
9
  allowedCommands: ["curl"]