@vike-io/cli 0.13.1 → 0.14.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +10 -10
  3. package/package.json +1 -1
  4. package/skills/vike/SKILL.md +119 -191
  5. package/skills/vike-alerts-setup/SKILL.md +1 -0
  6. package/skills/vike-candles/SKILL.md +2 -2
  7. package/skills/vike-core/SKILL.md +13 -12
  8. package/skills/vike-hl-position-match/SKILL.md +7 -7
  9. package/skills/vike-hl-top-traders/SKILL.md +46 -11
  10. package/skills/vike-perp-funding/SKILL.md +82 -0
  11. package/skills/vike-perp-overview/SKILL.md +69 -0
  12. package/skills/vike-polymarket-market-detail/SKILL.md +2 -1
  13. package/skills/vike-polymarket-markets/SKILL.md +12 -7
  14. package/skills/vike-polymarket-smart-money/SKILL.md +38 -13
  15. package/skills/vike-polymarket-trader/SKILL.md +23 -20
  16. package/skills/vike-smart-money-discovery/SKILL.md +26 -32
  17. package/skills/vike-token-holders/SKILL.md +2 -1
  18. package/skills/vike-token-research/SKILL.md +22 -14
  19. package/skills/vike-token-screener/SKILL.md +35 -28
  20. package/skills/vike-token-transfers/SKILL.md +21 -11
  21. package/skills/vike-wallet-balances/SKILL.md +19 -13
  22. package/skills/vike-wallet-batch/SKILL.md +18 -14
  23. package/skills/vike-wallet-compare/SKILL.md +2 -0
  24. package/skills/vike-wallet-counterparties/SKILL.md +5 -1
  25. package/skills/vike-wallet-discover/SKILL.md +17 -10
  26. package/skills/vike-wallet-ens/SKILL.md +8 -4
  27. package/skills/vike-wallet-label-provenance/SKILL.md +25 -16
  28. package/skills/vike-wallet-pnl-history/SKILL.md +4 -1
  29. package/skills/vike-wallet-portfolio/SKILL.md +23 -21
  30. package/skills/vike-wallet-summary/SKILL.md +22 -9
  31. package/skills/vike-wallet-trace/SKILL.md +15 -11
  32. package/skills/vike-wallet-transactions/SKILL.md +3 -1
  33. package/skills.sh.json +10 -15
  34. package/src/auth.js +1 -1
  35. package/src/commands/init.js +1 -1
  36. package/src/commands/labels.js +1 -1
  37. package/src/commands/perp.js +5 -4
  38. package/src/commands/wallet.js +3 -3
  39. package/skills/vike-cross-venue-perps/SKILL.md +0 -52
  40. package/skills/vike-hl-trader-profile/SKILL.md +0 -65
  41. package/skills/vike-perp-funding-arb/SKILL.md +0 -53
  42. package/skills/vike-perp-screener/SKILL.md +0 -48
  43. package/skills/vike-perp-spread-arb/SKILL.md +0 -38
  44. package/skills/vike-polymarket-screener/SKILL.md +0 -59
  45. package/skills/vike-router/SKILL.md +0 -54
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.14.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 62464b9: Skills audit (2026-10-19). `vike-data perp find-position` now sends `symbol` to `hl_position_match` (the tool renamed `coin` on 2026-10-19; the `--coin` flag is unchanged). Help text no longer claims six balance chains, "10+" label providers or "spot-perp" spreads. 36 skills become 31: `vike-router` folds into the umbrella `vike`; `vike-perp-funding-arb` + `vike-cross-venue-perps` become `vike-perp-funding`; `vike-perp-screener` + `vike-perp-spread-arb` become `vike-perp-overview`; `vike-polymarket-screener` folds into `vike-polymarket-smart-money`; `vike-hl-trader-profile` folds into `vike-hl-top-traders`. Installed copies of the removed skills need `npx skills add vike-io/vike-data-cli` again. The audit's errors are corrected in the skill text: the umbrella (tool and chain lists, page sizes, ENS direction, command names, alert semantics, credits, rate limit of 20,000 requests per hour), token skills (`bought` is every inbound transfer, read `net_tokens`; real columns; fixed 10 rows; native coin as the zero address; screener `holders` counts active wallets; no ascending sort), wallet trace (edge direction is `out_usd` / `in_usd`), label provenance (6 sources plus heuristic, `found: false`), Hyperliquid top traders (percent units, realized-only ROI, no per-wallet HL tool), wallet summary / balances / discover / batch / transactions output shapes, and the Polymarket output keys.
8
+
9
+ ### Patch Changes
10
+
11
+ - 7aba637: The default MCP endpoint is now `https://data.vike.io/mcp`, the server's published address (same server, tools, key and hourly budget). `VIKE_MCP_URL` still overrides it; the older `https://vike.io/mcp` keeps answering while it is retired.
12
+
3
13
  ## 0.13.1
4
14
 
5
15
  ### Patch Changes
package/README.md CHANGED
@@ -13,7 +13,7 @@ positions, fills, funding, liquidations, candles, and hourly long/short position
13
13
  cohort), **Polymarket** (markets, the trade and event tape, order-book snapshots, candles and
14
14
  on-chain settlements, plus a daily Parquet archive of the full L2 order book since 2026-07-25,
15
15
  licensed CC BY 4.0), and **labelled EVM wallets** on Ethereum and BNB Chain, with Base for token
16
- transfers. The same data is served three ways: an **MCP server** at `https://vike.io/mcp` (the one
16
+ transfers. The same data is served three ways: an **MCP server** at `https://data.vike.io/mcp` (the one
17
17
  this CLI calls), a **REST API** at `https://data.vike.io/v1/`, and the **Parquet archive** at
18
18
  `https://data.vike.io/archive/`. A key allows 20,000 requests an hour, and an account can hold up
19
19
  to 5 keys; archive downloads are not counted. The archive manifest and a sample market need no key
@@ -36,7 +36,7 @@ Get a free key at [vike.io/account?tab=api-keys](https://vike.io/account?tab=api
36
36
  with `vk_`), then:
37
37
 
38
38
  ```bash
39
- vike-data init # paste the key; saves ~/.vike/config.json, checks vike.io/mcp
39
+ vike-data init # paste the key; saves ~/.vike/config.json, checks data.vike.io/mcp
40
40
  vike-data doctor # Node version, key, MCP connectivity, tool list
41
41
  vike-data token search PEPE # first query
42
42
  vike-data perp top-traders --window 7d # Hyperliquid wallets ranked by PnL
@@ -94,12 +94,12 @@ Full catalog: [vike.io/data/datasets](https://vike.io/data/datasets) · field re
94
94
 
95
95
  ## MCP server
96
96
 
97
- The crypto data MCP server is `https://vike.io/mcp` (Streamable HTTP, JSON-RPC 2.0), keyed with
97
+ The crypto data MCP server is `https://data.vike.io/mcp` (Streamable HTTP, JSON-RPC 2.0), keyed with
98
98
  the same `X-API-KEY`. MCP and REST calls share one hourly counter.
99
99
 
100
100
  ```bash
101
101
  # Claude Code
102
- claude mcp add --transport http vike https://vike.io/mcp \
102
+ claude mcp add --transport http vike https://data.vike.io/mcp \
103
103
  --header "X-API-KEY: $VIKE_API_KEY"
104
104
  ```
105
105
 
@@ -109,7 +109,7 @@ Cursor, in `~/.cursor/mcp.json`:
109
109
  {
110
110
  "mcpServers": {
111
111
  "vike": {
112
- "url": "https://vike.io/mcp",
112
+ "url": "https://data.vike.io/mcp",
113
113
  "headers": { "X-API-KEY": "YOUR_KEY" }
114
114
  }
115
115
  }
@@ -117,12 +117,12 @@ Cursor, in `~/.cursor/mcp.json`:
117
117
  ```
118
118
 
119
119
  **Claude Desktop needs no key:** Settings → Connectors → Add custom connector, URL
120
- `https://vike.io/mcp`, leave the OAuth fields empty, then log in to Vike and click Allow.
120
+ `https://data.vike.io/mcp`, leave the OAuth fields empty, then log in to Vike and click Allow.
121
121
  Setup for Gemini CLI, VS Code and other clients: [vike.io/docs/ai/data/setup](https://vike.io/docs/ai/data/setup).
122
122
 
123
123
  ```bash
124
124
  # Raw JSON-RPC: list the tools your key can call
125
- curl https://vike.io/mcp -H "X-API-KEY: $VIKE_API_KEY" \
125
+ curl https://data.vike.io/mcp -H "X-API-KEY: $VIKE_API_KEY" \
126
126
  -H "Content-Type: application/json" \
127
127
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
128
128
  ```
@@ -140,7 +140,7 @@ Every data command is one `tools/call` to the MCP server. `vike-data <group> --h
140
140
  | `vike-data token` | `search`, `transfers`, `screener`, `holders` (`--chain ethereum\|bsc\|base`) | `token_search`, `token_transfers`, `token_screener`, `token_holders` |
141
141
  | `vike-data wallet` | `summary`, `transactions` (`txs`), `compare`, `trace`, `batch`, `counterparties`, `pnl-history`, `balances`, `ens`, `discover` | `wallet_summary`, `wallet_transactions`, `wallet_compare`, `wallet_trace`, `wallet_batch_labels`, `wallet_counterparties`, `wallet_pnl_history`, `wallet_token_balances`, `wallet_ens`, `wallet_discover` |
142
142
  | `vike-data labels <address>` | multi-source label provenance for one wallet | `wallet_label_provenance` |
143
- | `vike-data perp` | `top-traders`, `find-position` (Hyperliquid); `funding`, `spreads` (cross-venue funding rates and spot-perp spreads) | `hl_perp_top_traders`, `hl_position_match`, `perp_funding`, `perp_spreads` |
143
+ | `vike-data perp` | `top-traders`, `find-position` (Hyperliquid); `funding`, `spreads` (cross-venue funding rates and perp-vs-perp price gaps) | `hl_perp_top_traders`, `hl_position_match`, `perp_funding`, `perp_spreads` |
144
144
  | `vike-data candles` | `hl <symbol>` (Hyperliquid perp or spot, from executed fills), `polymarket <token_id>` (one outcome token) | `hl_ohlcv`, `polymarket_ohlcv` |
145
145
  | `vike-data polymarket` (`pm`) | `markets`, `market <condition_id>`, `wallet <address>`, `smart-money` | `polymarket_markets`, `polymarket_market_detail`, `polymarket_wallet`, `polymarket_smart_money` |
146
146
  | `vike-data alerts` | `list`, `channels`, `create`, `edit`, `delete`, `register-webhook` (email, Discord, or an HTTPS webhook, HMAC-signed when you set a secret) | `alerts_*` |
@@ -173,7 +173,7 @@ Downloads go to `./vike-archive/`.
173
173
 
174
174
  ## For AI agents
175
175
 
176
- This package ships **36 skill playbooks** under [`skills/`](skills/): markdown files an AI coding
176
+ This package ships **31 skill playbooks** under [`skills/`](skills/): markdown files an AI coding
177
177
  agent loads so it knows when and how to call each command. [`skills.sh.json`](skills.sh.json) groups
178
178
  them by domain (Tokens, Wallets, CEX perps, Hyperliquid perps, Candles, Polymarket, Alerts). The
179
179
  entry point is the umbrella skill `vike`, which routes a question to the specialised skill.
@@ -198,7 +198,7 @@ block in files it does not own.
198
198
  | Variable | Default | Purpose |
199
199
  |---|---|---|
200
200
  | `VIKE_API_KEY` | — | API key; wins over the saved config |
201
- | `VIKE_MCP_URL` | `https://vike.io/mcp` | MCP endpoint override |
201
+ | `VIKE_MCP_URL` | `https://data.vike.io/mcp` | MCP endpoint override |
202
202
  | `VIKE_NO_TELEMETRY=1` or `DO_NOT_TRACK=1` | telemetry on | Turns off anonymous usage telemetry |
203
203
  | `VIKE_NO_UPDATE_CHECK=1` or `NO_UPDATE_NOTIFIER=1` | check on | Turns off the background npm update check |
204
204
 
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.13.1",
6
+ "version": "0.14.0",
7
7
  "description": "CLI, agent skills and MCP client for the free Vike Data API: a Polymarket full-L2 order-book archive in Parquet (CC BY 4.0), Hyperliquid positions, fills and cohorts, and labelled Ethereum/BNB wallets",
8
8
  "type": "module",
9
9
  "main": "src/index.js",
@@ -1,16 +1,16 @@
1
1
  ---
2
2
  name: vike
3
- description: "Use this skill whenever the user asks any question about on-chain crypto data, wallet behavior, token transfers, smart money, CEX perpetual futures, Hyperliquid perps, prediction markets (Polymarket), ENS, or on-chain flows — and live data from vike.io would improve the answer. This includes questions like \"who is buying X token\", \"what is wallet 0x... doing\", \"top wallets by PnL\", \"funding rate spread across Binance/Bybit/OKX\", \"largest HL perp traders this week\", \"who is winning on Polymarket\", \"resolve this ENS\", \"label this wallet\", \"trace this transfer\", \"top tokens by smart-money inflow\". Always use this skill proactively when the user's query could benefit from real-time or historical on-chain data — don't wait for the user to explicitly ask to \"use vike\". If the user asks a general on-chain question that requires synthesis across wallets/tokens/venues, route to vike first."
3
+ description: "Use this skill whenever the user asks any question about on-chain crypto data, wallet behavior, token transfers, smart money, CEX perpetual futures, Hyperliquid perps, prediction markets (Polymarket), ENS, or on-chain flows — and live data from vike.io would improve the answer. This includes questions like \"who is buying X token\", \"what is wallet 0x... doing\", \"top wallets by PnL\", \"funding rate spread across Binance/Bybit/OKX\", \"largest HL perp traders this week\", \"who is winning on Polymarket\", \"what is the ENS name of this address\", \"label this wallet\", \"trace this transfer\", \"top tokens by smart-money inflow\". It is also the entry point that decides which vike-* skill answers a question (tokens, wallets, labels, perps, Hyperliquid, Polymarket, candles, alerts). Always use this skill proactively when the user's query could benefit from real-time or historical on-chain data — don't wait for the user to explicitly ask to \"use vike\". If the user asks a general on-chain question that requires synthesis across wallets/tokens/venues, route to vike first."
4
4
  ---
5
5
 
6
- # vike — Multi-chain On-chain Analytics
6
+ # vike — on-chain, perps and prediction-market data
7
7
 
8
8
  This skill is for anyone who asks an AI agent about crypto data: who is buying a token, what a wallet holds, what Hyperliquid or Polymarket traders are doing right now. It tells the agent which vike tool answers which question and how to read the result, so it does not guess or invent numbers. It reads its data from vike.io and needs a free vike API key.
9
9
 
10
- Answer on-chain questions using the vike.io platform: 11 chains (ETH, BSC, Base, Arbitrum, HyperEVM, BTC, Solana, Tron, XMR, ZEC, Dash), full Hyperliquid perps coverage, CEX perps across 5 venues, Polymarket prediction markets, multi-source wallet labels, and a 34-tool MCP server.
10
+ What the platform has: wallet and token analytics on Ethereum and BSC, with Base for token transfers and labels (each tool's chain list is under "What each tool really returns"), multi-source wallet labels, CEX perpetual funding and cross-venue spreads, Hyperliquid top traders / share-card lookup / candles, Polymarket markets, traders and smart-money signals, and transfer alerts. 31 tools in one MCP server.
11
11
 
12
- **MCP endpoint for all calls:** `https://vike.io/mcp` (JSON-RPC 2.0)
13
- **Or use the CLI:** `npm install -g @vike-io/cli` → `vike <command>`
12
+ **MCP endpoint for all calls:** `https://data.vike.io/mcp` (JSON-RPC 2.0)
13
+ **Or use the CLI:** `npm install -g @vike-io/cli` → `vike-data <command>`
14
14
 
15
15
  ## What it does and who it is for
16
16
 
@@ -23,13 +23,14 @@ It is for traders, researchers and developers who use an AI agent to look at cry
23
23
  Hard rules — agents that violate these produce wrong answers. Read once, apply always.
24
24
 
25
25
  1. **Addresses are always full 0x-hex (42 chars).** Never truncate when querying. Never display truncated when the user asks for the address — they'll copy-paste it.
26
- 2. **Symbols are case-insensitive in queries, but display as the user typed.** `btc` and `BTC` both resolve; echo back what they wrote.
27
- 3. **Time windows are UTC, day-boundaries cut at 00:00 UTC.** "Today" = since 00:00 UTC today, not local-time today.
28
- 4. **Default page size is 50, max 500.** Don't request `--limit 10000` to "get everything" — paginate or use a screener tool instead.
29
- 5. **Refresh cadence varies by tool.** Wallet PnL, HL positions: ≤2 min. Transfer-derived metrics: 5 min. Token price history: 1 min. Always assume <5 min unless a tool says otherwise.
26
+ 2. **Perp and Hyperliquid symbols are upper-cased by the server.** Echo back what the user wrote.
27
+ 3. **Windows are counted in UTC calendar days, not a rolling 24 hours.** On the token screener `24h` spans yesterday and today; on Hyperliquid `30d` is today plus the previous 30 days.
28
+ 4. **Page sizes are small and differ per tool; there is no paging.** Max 20: `wallet_discover` (`size`), `hl_perp_top_traders` (`size`), `polymarket_smart_money`. Max 30: `polymarket_markets`. Max 50: `token_holders`, `wallet_counterparties`, `wallet_compare`, `hl_position_match`. Max 100: `token_screener`, and 100 addresses for `wallet_batch_labels`. Max 500: `wallet_transactions`. `token_transfers` has no limit: it always returns 10 rows. To go deeper, narrow the filter or the window instead of asking for more rows.
29
+ 5. **Refresh differs per tool; never promise "minutes".** `wallet_discover` and `wallet_summary` are rebuilt nightly, so a wallet active an hour ago may not show. Transfers are synced block by block. `hl_position_match` only matches positions seen within 15 minutes of the newest snapshot batch. Alerts are checked on a cron, not streamed.
30
30
  6. **USD amounts are floats in dollars.** `--min-usd 10000` = ten thousand dollars, not micro-USD.
31
- 7. **`--json` flag is always available** on CLI commands and gives stable machine-readable output. Default (human) format may change; `--json` will not.
32
- 8. **Resolve a token before asking transfer/holder questions.** `token_search` → take the canonical address → pass to `token_transfers` / `token_holders`. Symbol-only queries lose precision on tickers that collide across chains (e.g. FUN, BEAM, USDC).
31
+ 7. **`--json` is always available** on CLI commands and gives stable machine-readable output. The default (human) format may change; `--json` will not.
32
+ 8. **Resolve a token before asking transfer/holder questions.** `token_search` → take the canonical address → pass it to `token_transfers` / `token_holders`. Symbol-only queries lose precision on tickers that collide across chains (e.g. FUN, BEAM, USDC).
33
+ 9. **`bought` in `token_transfers` is every inbound transfer**, flash-loan round trips included. Read `net_tokens` (bought − sold) before calling a wallet a buyer.
33
34
 
34
35
  ---
35
36
 
@@ -38,7 +39,7 @@ Hard rules — agents that violate these produce wrong answers. Read once, apply
38
39
  Follow this decision tree **before every session**. Do not skip to Step 2 until auth is confirmed.
39
40
 
40
41
  ```
41
- 1. Is the `vike` CLI installed? (`vike-data --version`)
42
+ 1. Is the CLI installed? (`vike-data --version`)
42
43
  ├── YES → continue
43
44
  └── NO → `npm install -g @vike-io/cli`
44
45
 
@@ -57,7 +58,7 @@ If the user has no API key yet, tell them:
57
58
  > 2. Save it: `vike-data login --api-key vk_...` (or `export VIKE_API_KEY=vk_...`).
58
59
  > 3. Verify: `vike-data doctor`.
59
60
  >
60
- > Per-key default cap: 2000 requests/hour. Most calls return in <500ms.
61
+ > One key gets 20,000 requests per rolling hour, shared by the MCP server and the REST API.
61
62
 
62
63
  If using the MCP server directly (without the CLI), authenticate with the key in this header:
63
64
  ```
@@ -66,50 +67,57 @@ X-API-KEY: vk_...
66
67
 
67
68
  ---
68
69
 
69
- ## Step 2: Route to the Right Service
70
+ ## Step 2: Route the question
70
71
 
71
- | User is asking about... | Service | CLI / Tool |
72
+ Pick by the question, then read the named skill for the recipe and the traps. If two rows fit, prefer the task skill (a multi-call workflow) over the per-tool skill.
73
+
74
+ | User is asking about... | CLI / MCP tool | Skill |
72
75
  |---|---|---|
73
- | Token by symbol/name → address, market cap, holders | **Tokens** | `vike-data token search` / `token_search` |
74
- | Token holders, who bought/sold, top inflows | **Tokens** | `vike-data token transfers` / `token_transfers` |
75
- | Filter/screen tokens by smart-money flow, liquidity, age | **Tokens** | `vike-data token screener` / `token_screener` |
76
- | Single wallet's PnL, holdings, recent activity | **Wallets** | `vike-data wallet summary` / `wallet_summary` |
77
- | Top wallets by PnL on a token / leaderboard | **Wallets** | `vike-data wallet discover` / `wallet_discover` |
78
- | Recent wallet transactions with USD values | **Wallets** | `vike-data wallet transactions` / `wallet_transactions` |
79
- | Compare 2+ wallets side by side | **Wallets** | `vike-data wallet compare` / `wallet_compare` |
80
- | Trace funds N hops from a starting wallet | **Wallets** | `vike-data wallet trace` / `wallet_trace` |
81
- | Find counterparties (who sends to / receives from) | **Wallets** | `vike-data wallet counterparties` / `wallet_counterparties` |
82
- | Wallet PnL history (timeseries) | **Wallets** | `vike-data wallet pnl-history` / `wallet_pnl_history` |
83
- | Token balances for a wallet | **Wallets** | `vike-data wallet balances` / `wallet_token_balances` |
84
- | ENS name → address or address → ENS | **Wallets** | `vike-data wallet ens` / `wallet_ens` |
85
- | Bulk-label many wallets at once | **Wallets** | `vike-data wallet batch` / `wallet_batch_labels` |
86
- | Why is this wallet labeled X? (provenance) | **Labels** | `vike-data labels provenance` / `wallet_label_provenance` |
87
- | Funding rates across CEX perps (Binance/Bybit/OKX/Aster/HL) | **CEX Perps** | `vike-data perp funding` / `perp_funding` |
88
- | Price spreads of same symbol across CEX perp venues | **CEX Perps** | `vike-data perp spreads` / `perp_spreads` |
89
- | Top Hyperliquid perp traders by PnL / volume | **HL Perps** | `vike-data perp top-traders` / `hl_perp_top_traders` |
90
- | Reverse-lookup an HL share card → which wallet holds it | **HL Perps** | `vike-data perp find-position` / `hl_position_match` |
91
- | Historical candles for a Hyperliquid perp or spot market (1m–1d) | **Candles** | `vike-data candles hl <symbol>` / `hl_ohlcv` |
92
- | Historical probability candles for a Polymarket outcome token | **Candles** | `vike-data candles polymarket <token_id>` / `polymarket_ohlcv` |
93
- | Active Polymarket markets, volume, odds | **Polymarket** | `vike-data polymarket markets` / `polymarket_markets` |
94
- | Single Polymarket market detail | **Polymarket** | `vike-data polymarket detail` / `polymarket_market_detail` |
95
- | Polymarket trader profile / positions | **Polymarket** | `vike-data polymarket wallet` / `polymarket_wallet` |
96
- | Best-performing Polymarket traders | **Polymarket** | `vike-data polymarket smart-money` / `polymarket_smart_money` |
97
- | Create / list / edit price-or-flow alerts | **Alerts** | `vike-data alerts ...` / `alerts_*` |
98
-
99
- **When in doubt, start with `vike-data token search` or `vike-data wallet summary`** — both are cheap, return instantly, and disambiguate what the user actually meant.
76
+ | Token symbol/name → address | `vike-data token search` / `token_search` | `vike-token-search` |
77
+ | Who bought / sold a token (top 10, one side per call) | `vike-data token transfers` / `token_transfers` | `vike-token-transfers` |
78
+ | "Research token X" end to end | search → transfers (both tabs) | `vike-token-research` |
79
+ | Top holders of a token (ranked by net inflow, not balance) | `vike-data token holders` / `token_holders` | `vike-token-holders` |
80
+ | Tokens trending / with the biggest inflow / smart-money inflow | `vike-data token screener` / `token_screener` | `vike-token-screener` |
81
+ | "Is smart money buying X?" / alpha wallets | screener `--smart-money-only` → transfers | `vike-smart-money-discovery` |
82
+ | One wallet's volume / inflow / outflow / tx count by window | `vike-data wallet summary` / `wallet_summary` | `vike-wallet-summary` |
83
+ | Full picture of one wallet ("who is this", "everything about it") | several calls | `vike-wallet-portfolio` |
84
+ | Top wallets by volume / flow / tx count | `vike-data wallet discover` / `wallet_discover` | `vike-wallet-discover` |
85
+ | Individual transfers of a wallet | `vike-data wallet transactions` / `wallet_transactions` | `vike-wallet-transactions` |
86
+ | Who a wallet trades with | `vike-data wallet counterparties` / `wallet_counterparties` | `vike-wallet-counterparties` |
87
+ | Follow funds N hops out | `vike-data wallet trace` / `wallet_trace` | `vike-wallet-trace` |
88
+ | Are wallets A and B related (exactly two) | `vike-data wallet compare` / `wallet_compare` | `vike-wallet-compare` |
89
+ | Daily net-flow series (not PnL) | `vike-data wallet pnl-history` / `wallet_pnl_history` | `vike-wallet-pnl-history` |
90
+ | What a wallet holds right now | `vike-data wallet balances` / `wallet_token_balances` | `vike-wallet-balances` |
91
+ | ENS name of an address (reverse only) | `vike-data wallet ens` / `wallet_ens` | `vike-wallet-ens` |
92
+ | Label many addresses (up to 100) | `vike-data wallet batch` / `wallet_batch_labels` | `vike-wallet-batch` |
93
+ | Why is this wallet labelled X (sources) | `vike-data labels <address>` / `wallet_label_provenance` | `vike-wallet-label-provenance` |
94
+ | Funding rates, funding arb, one symbol across venues | `vike-data perp funding` / `perp_funding` | `vike-perp-funding` |
95
+ | Cross-venue price spread, "perp market overview" | `vike-data perp spreads` + `perp funding` + `perp top-traders` | `vike-perp-overview` |
96
+ | Top Hyperliquid traders; "is this HL address any good" | `vike-data perp top-traders` / `hl_perp_top_traders` | `vike-hl-top-traders` |
97
+ | HL share card → which wallet holds it | `vike-data perp find-position` / `hl_position_match` | `vike-hl-position-match` |
98
+ | Candles: Hyperliquid perp/spot, Polymarket outcome token | `vike-data candles hl` / `candles polymarket` | `vike-candles` |
99
+ | Trending Polymarket markets (by 24h volume) | `vike-data polymarket markets` / `polymarket_markets` | `vike-polymarket-markets` |
100
+ | One Polymarket market | `vike-data polymarket market <condition_id>` / `polymarket_market_detail` | `vike-polymarket-market-detail` |
101
+ | One Polymarket trader | `vike-data polymarket wallet` / `polymarket_wallet` | `vike-polymarket-trader` |
102
+ | Polymarket smart-money flows / mispricings / overview | `vike-data polymarket smart-money` / `polymarket_smart_money` | `vike-polymarket-smart-money` |
103
+ | Alerts: create / list / edit / delete | `vike-data alerts ...` / `alerts_*` | `vike-alerts-setup` |
104
+ | Alert delivery to an HTTPS webhook | `vike-data alerts register-webhook` | `vike-alerts-webhook` |
105
+ | Install, auth, errors, conventions | — | `vike-core` |
106
+
107
+ **When in doubt, start with `vike-data token search` or `vike-data wallet summary`.** Both are cheap and disambiguate what the user actually meant.
100
108
 
101
109
  ### Example query routing
102
110
  ```
103
- "Top 20 wallets buying PEPE in the last 24h" → wallet_discover (token=PEPE, sort=net_inflow_usd)
104
- "What is 0xd8dA6BF...AbA96 holding?" → wallet_summary + wallet_token_balances
105
- "Funding rate for BTC across all perp venues" → perp_funding (symbol=BTC)
106
- "Cheapest venue to short ETH right now?" → perp_spreads (symbol=ETH)
107
- "Biggest HL perp PnL last week" → hl_perp_top_traders (window=7d, sort=pnl_usd)
108
- "Show me the largest Polymarket bets on US election" → polymarket_market_detail + polymarket_smart_money
109
- "Why is 0x28C6... labeled 'Binance hot wallet'?" → wallet_label_provenance (addr=0x28C6...)
110
- "Resolve vitalik.eth" → wallet_ens (name=vitalik.eth)
111
- "Alert me when whale 0xABCD sells over $1M of WBTC" → alerts_create
112
- "Trace funds from 0xHACKER 3 hops out" → wallet_trace (start=0xHACKER, depth=3)
111
+ "Who bought the most PEPE in the last 24h?" → token_search, then token_transfers (tab=bought, period=24h; 10 rows; rank by net_tokens)
112
+ "What is 0xd8dA6BF...AbA96 holding?" → wallet_token_balances (+ wallet_summary for flows)
113
+ "Funding rate for BTC across all perp venues" → perp_funding (symbol=BTC; raw per-interval rates)
114
+ "Which venue pays the most funding on ETH?" → perp_funding (symbol=ETH, normalise to daily yourself)
115
+ "Biggest HL perp PnL last week" → hl_perp_top_traders (window=7d, sort=pnl)
116
+ "What are the hottest crypto prediction markets?" → polymarket_markets (category=Crypto) → polymarket_market_detail
117
+ "Why is 0x28C6... labeled 'Binance hot wallet'?" → wallet_label_provenance (address=0x28C6...)
118
+ "What is the ENS name of 0xd8dA6BF...?" → wallet_ens (address=0xd8dA...; name → address is NOT supported)
119
+ "Alert me on WBTC transfers over $1M" → alerts_create (token_symbol=WBTC, min_value_usd=1000000; fires on ANY such transfer)
120
+ "Trace funds from 0xHACKER 3 hops out" → wallet_trace (address=0xHACKER, depth=3)
113
121
  ```
114
122
 
115
123
  ---
@@ -121,182 +129,102 @@ X-API-KEY: vk_...
121
129
  **A) Via CLI (recommended for shell-bound agents).** All commands accept `--json` for machine-readable output:
122
130
  ```bash
123
131
  vike-data wallet summary 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 --json
124
- vike-data perp funding --symbol BTC --window 24h --json
132
+ vike-data perp funding --symbol BTC --json
125
133
  ```
126
134
 
127
- **B) Via an MCP connector (recommended when your client has one).** All 31 tools live at `https://vike.io/mcp`. Connect the client to that address with the `X-API-KEY` header above, then call a tool by name with its arguments, for example `wallet_summary` with `address` set to a full 0x address and `chain` set to `ethereum`.
135
+ **B) Via an MCP connector (recommended when your client has one).** All 31 tools live at `https://data.vike.io/mcp`. Connect the client to that address with the `X-API-KEY` header above, then call a tool by name with its arguments, for example `wallet_summary` with `address` set to a full 0x address.
128
136
 
129
137
  Run `vike-data schema --pretty` (or call MCP `tools/list`) to see the live arg shape for every tool. Always read the schema before constructing arguments — defaults and enum values change.
130
138
 
131
139
  ---
132
140
 
133
- ## Per-service tool reference
134
-
135
- For deeper per-tool workflows (multi-step recipes, common pitfalls, output schemas), see the `skills/` directory in this repo. The router lives at `vike-router`.
141
+ ## What each tool really returns
136
142
 
137
143
  ### Tokens
138
- Address resolution, transfers, holder cohorts, screening.
139
-
140
- | Tool | Description | Skill |
144
+ | Tool | Returns | Not |
141
145
  |---|---|---|
142
- | `token_search` | Symbol/name → contract address + chain + market cap | `vike-token-search` |
143
- | `token_transfers` | Recent transfers with USD values; supports `--min-usd`, time windows | `vike-token-transfers` |
144
- | `token_holders` | Top holders + concentration metrics | `vike-token-holders` |
145
- | `token_screener` | Filter tokens by smart-money inflow, age, liquidity, sector | `vike-token-screener` |
146
-
147
- **Key chains:** `ethereum`, `bsc`, `base`, `arbitrum`, `hyperevm` (EVM); `bitcoin`, `solana`, `tron`, `xmr`, `zec`, `dash` (non-EVM, limited tool support).
148
-
149
- ---
146
+ | `token_search` | symbol, name, address, logo for a query | no market cap |
147
+ | `token_transfers` | 10 wallets, one side (`tab` = `bought` or `sold`) per call, period 1h/24h/7d/30d: `address, bought, sold, net_tokens, usd_spent, usd_received, net_usd, chains` | no `--min-usd`; window ends at the token's newest priced row; a net seller has `net_usd > 0` |
148
+ | `token_holders` | wallets ranked by cumulative net inflow USD, with entity/type | not balances, no concentration metric |
149
+ | `token_screener` | per-token volume, net/in/out USD, `unique_holders` (wallets ACTIVE in the window, not growth), tx count | no age, liquidity or sector filter; no ascending sort; native coin shows as `0x000…000`; `symbol` is often blank |
150
150
 
151
151
  ### Wallets
152
- Profile, PnL, transactions, comparison, tracing, counterparty graph.
153
-
154
- | Tool | Description | Skill |
152
+ | Tool | Returns | Not |
155
153
  |---|---|---|
156
- | `wallet_summary` | One-call profile: PnL, top holdings, recent activity, labels | `vike-wallet-summary` |
157
- | `wallet_discover` | Leaderboard of top wallets by PnL/inflow on a token | `vike-wallet-discover`, `vike-smart-money-discovery` |
158
- | `wallet_transactions` | Raw recent transactions (tx_hash, ts, from, to, token, usd) | `vike-wallet-transactions` |
159
- | `wallet_compare` | Side-by-side metrics for 2+ wallets | `vike-wallet-compare` |
160
- | `wallet_trace` | BFS funds tracing N hops from a starting wallet | `vike-wallet-trace` |
161
- | `wallet_counterparties` | Top counterparties (who they send to / receive from) | `vike-wallet-counterparties` |
162
- | `wallet_pnl_history` | Daily PnL timeseries over `--days N` | `vike-wallet-pnl-history` |
163
- | `wallet_token_balances` | Current token balances (Moralis-backed) | `vike-wallet-balances` |
164
- | `wallet_ens` | ENS name ↔ address (local cache: 477K wallets pre-resolved) | `vike-wallet-ens` |
165
- | `wallet_batch_labels` | Bulk-label up to 100 addresses in one call | `vike-wallet-batch` |
166
-
167
- **Address shape:** always full 0x-prefixed hex (42 chars). Never truncate when reporting back to the user.
168
-
169
- ---
154
+ | `wallet_summary` | a dict keyed `all, 90d, 30d, 7d, 24h`, each with `total_volume, total_inflow, total_outflow, net_flow, tx_count, tokens_traded, first_seen, last_active`, for ONE chain (the most recently active; never summed) | no PnL, holdings or labels |
155
+ | `wallet_discover` | `{wallets, total}` ranked by volume / inflow / outflow / net_flow / tx_count / pnl (`size` ≤ 20; ethereum, bsc) | `realized_pnl` is a ranking key only, not a dollar figure; no labels column |
156
+ | `wallet_transactions` | single transfers, newest first | no aggregates |
157
+ | `wallet_compare` | shared counterparties + shared tokens of exactly two wallets | not 3+ wallets |
158
+ | `wallet_trace` | nodes + edges; direction lives in each edge's `out_usd` / `in_usd` | `from` is the side expanded first, not the sender |
159
+ | `wallet_counterparties` | top partners with sent/received USD and labels | |
160
+ | `wallet_pnl_history` | daily net inflow USD (a proxy) | not realized PnL |
161
+ | `wallet_token_balances` | holdings read from the chain at request time (ethereum, bsc); native coin is a row with `usd_value: null` | not a DeFi-position view |
162
+ | `wallet_ens` | name for an address, or `null` | no name → address |
163
+ | `wallet_batch_labels` | entity, type, risk flag + 30-day flow fields per address, in input order | on `bsc` the 30-day fields are `null` |
164
+
165
+ Chains: most token and wallet tools accept `chain` = `ethereum` | `bsc` | `base`, but Base coverage is narrower: it is documented for token transfers and `wallet_batch_labels`, while the per-wallet transfer tools (`wallet_transactions`, `wallet_counterparties`, `wallet_trace`, `wallet_compare`, `wallet_pnl_history`) are documented for Ethereum and BSC. `wallet_discover` takes `ethereum` | `bsc`, `wallet_token_balances` serves `ethereum` | `bsc` (anything else lands in `chain_errors`) and alerts take `eth` | `bsc`. `token_screener` smart-money mode and `smart_inflow` sort are `ethereum` only (a 400 elsewhere). `wallet_label_provenance` is for Ethereum wallets. Arbitrum, Bitcoin, Solana, Tron and other non-EVM chains are not served. When a chain is not covered, say so; an empty Base result means "not covered", not "no activity".
170
166
 
171
167
  ### Labels
172
- Wallet label provenance.
173
-
174
- | Tool | Description | Skill |
175
- |---|---|---|
176
- | `wallet_label_provenance` | Why a wallet got a given label (sources + confidence) | `vike-wallet-label-provenance` |
177
-
178
- Vike's label cascade is multi-source — when an answer hinges on "is this really a CEX hot wallet?", call `wallet_label_provenance` rather than trusting a single source.
168
+ `wallet_label_provenance` returns the raw source labels (at most 6 sources plus our heuristic classifier) and a consensus entity/type. When an answer hinges on "is this really a CEX hot wallet?", call it rather than trusting one source. `found: false` means the wallet is missing from our labelled-wallet table and no source is consulted at all, so it is not proof that nobody labels it, and it is not proof the wallet is clean.
179
169
 
180
- ---
181
-
182
- ### CEX Perps
183
- 5 venues: Binance, Bybit, OKX, Aster, Hyperliquid.
184
-
185
- | Tool | Description | Skill |
186
- |---|---|---|
187
- | `perp_funding` | Funding rates per symbol per venue + 24h/7d averages | `vike-perp-funding-arb` |
188
- | `perp_spreads` | Mark-price spreads of the same symbol across venues | `vike-perp-spread-arb`, `vike-cross-venue-perps` |
189
-
190
- ---
191
-
192
- ### Hyperliquid Perps
193
- On-chain perps data: snapshots, fills, ledger, funding, attribution.
170
+ ### CEX perps
171
+ | Tool | Returns |
172
+ |---|---|
173
+ | `perp_funding` | with `symbol`: raw per-venue `funding_rate` + `interval_h` (daily % = rate × 24 / interval_h × 100); without: up to 5 pre-ranked arb rows (`long_exchange`, `short_exchange`, `spread_daily_pct`) |
174
+ | `perp_spreads` | up to 10 cross-venue price-gap rows (≥ 0.5%); `symbol` only filters that global top 10, so it is often empty |
194
175
 
195
- | Tool | Description | Skill |
196
- |---|---|---|
197
- | `hl_perp_top_traders` | Top HL traders by PnL/volume over a window | `vike-hl-top-traders`, `vike-hl-trader-profile` |
198
- | `hl_position_match` | Reverse-lookup: share-card details (coin/side/lev/entry) → wallet holding that open position | `vike-hl-position-match` |
176
+ Neither returns mark prices or bid/ask per venue. "Spread" here is perp vs perp across venues, not spot vs perp.
199
177
 
200
- For per-symbol HL screening / individual trader deep-dive, use `vike-perp-screener` and `vike-hl-trader-profile`.
178
+ ### Hyperliquid
179
+ | Tool | Returns |
180
+ |---|---|
181
+ | `hl_perp_top_traders` | up to 20 wallets: `total_realized_pnl`, `roi_pct`, `win_rate_pct`, `max_drawdown_pct` (all percents; 12.5 = 12.5%), `trade_count`, `total_volume`. ROI = window realized PnL / CURRENT account value; drawdown is account-level and all-time |
182
+ | `hl_position_match` | wallets whose open position matches a share card (`symbol`, side, leverage, entry) |
183
+ | `hl_ohlcv` | perp or spot candles |
201
184
 
202
- ---
185
+ There is no per-wallet Hyperliquid profile, no open-interest and no cohort tool in the CLI yet. Say so instead of improvising from the leaderboard.
203
186
 
204
187
  ### Candles
205
- Historical OHLCV from venues whose data is on-chain.
206
-
207
- | Tool | Description | Skill |
208
- |---|---|---|
209
- | `hl_ohlcv` | Hyperliquid perp or spot candles, 1m–1d, built from HL's own executed fills (also HIP-3 builder DEXs) | `vike-candles` |
210
- | `polymarket_ohlcv` | Candles for ONE Polymarket outcome token (price = probability, 0–1); needs `token_id`, not a condition_id | `vike-candles` |
211
-
212
- ---
188
+ `hl_ohlcv` (Hyperliquid perp or spot, 1m–1d, built from HL's own fills, also HIP-3 builder DEXs) and `polymarket_ohlcv` (ONE outcome token, price = probability 0–1, needs a `token_id`, not a condition_id). There is no candle source for CEX tickers or an arbitrary ERC-20.
213
189
 
214
190
  ### Polymarket
215
- Prediction markets — markets, traders, smart-money.
216
-
217
- | Tool | Description | Skill |
218
- |---|---|---|
219
- | `polymarket_markets` | Active markets sorted by volume / liquidity / volatility | `vike-polymarket-markets`, `vike-polymarket-screener` |
220
- | `polymarket_market_detail` | Single market: outcomes, holders, recent trades, time-to-resolution | `vike-polymarket-market-detail` |
221
- | `polymarket_wallet` | One trader's positions, PnL, win rate | `vike-polymarket-trader` |
222
- | `polymarket_smart_money` | Top-PnL Polymarket traders + their current open positions | `vike-polymarket-smart-money` |
223
-
224
- ---
191
+ | Tool | Returns |
192
+ |---|---|
193
+ | `polymarket_markets` | markets ranked by 24h volume only (`volume_24h`, `liquidity`, `ended`, `outcomes[]` with `token_id`, `mid`, `bid`, `ask`) |
194
+ | `polymarket_market_detail` | one market: quotes, smart-money cohort flows, top wallets, resolution status |
195
+ | `polymarket_wallet` | one trader: realized PnL, volume-weighted `hit_rate`, `resolved_markets`, positions |
196
+ | `polymarket_smart_money` | MARKETS where the profitable-wallet cohort is flowing (`flows`) or bought below the mid (`mispricings`); not a list of top traders |
225
197
 
226
198
  ### Alerts
227
- Create + manage alerts; deliver to email, Telegram, Discord, Webhook.
228
-
229
- | Tool | Description | Skill |
230
- |---|---|---|
231
- | `alerts_list` | List user's existing alerts | `vike-alerts-setup` |
232
- | `alerts_create` | Create a new price/transfer/funding alert | `vike-alerts-setup` |
233
- | `alerts_edit` | Edit an existing alert | `vike-alerts-setup` |
234
- | `alerts_delete` | Delete an alert | `vike-alerts-setup` |
235
- | `alerts_list_channels` | List user's registered delivery channels | `vike-alerts-setup` |
236
- | `alerts_register_webhook` | Register an HTTPS webhook (HMAC-signed deliveries) | `vike-alerts-webhook` |
237
-
238
- Alerts fire on a 2-minute cron cycle (not streaming). Don't recommend WebSocket / push streaming — it's not how the platform works.
199
+ Create + manage on-chain transfer alerts delivered to email, Discord or an HTTPS webhook.
239
200
 
240
- ## Historical data availability
241
-
242
- Coverage windows per dataset. Don't ask for data older than the window — the tool will return empty or 503.
243
-
244
- ### Transfers & on-chain (per chain)
245
-
246
- | Chain | Earliest block / date | Notes |
247
- |---|---|---|
248
- | Ethereum | 2018-01 (block ~4.85M) | Full history; ETH + ERC-20 |
249
- | BSC | 2021-01 | Full history; BNB + BEP-20 |
250
- | Base | 2023-08 (chain launch) | Full history |
251
- | Arbitrum | 2024-Q3 onward | Backfill in progress; pre-2024 sparse |
252
- | HyperEVM | 2025-Q1 (chain launch) | Full history |
253
- | Bitcoin | 2024-01 | Recent windows only — full-history backfill not active |
254
- | Solana | 2026-Q1 onward | Recent only — see `vike-cli` chain-coverage notes |
255
- | Tron/XMR/ZEC/Dash | 2024 onward | Recent only |
256
-
257
- ### Hyperliquid perps (hl_perps DB)
258
-
259
- | Dataset | Window | Notes |
260
- |---|---|---|
261
- | Snapshots (positions / equity) | 30 days | TTL — older snapshots dropped |
262
- | Fills | 30 days | TTL |
263
- | Ledger (deposits/withdrawals) | 30 days | TTL |
264
- | Funding payments | 90 days | API-backed since 2026-04-22 |
265
- | Daily attributed PnL | All-time | `wallet_pnl_attributed_daily` is the long-history view |
266
- | Daily flows | All-time | `wallet_flows_daily` |
267
- | Top-trader leaderboards | rolling 24h / 7d / 30d | derived on-the-fly |
268
-
269
- ### CEX perps (data_perp DB)
270
-
271
- | Dataset | Window |
201
+ | Tool | Does |
272
202
  |---|---|
273
- | `tickers_1m` (ticker snapshots) | rolling 24h |
274
- | Funding rates | 90 days |
275
- | Trades (ws_trades) | rolling 7-30 days per venue |
276
-
277
- ### Polymarket
278
-
279
- | Dataset | Window | Notes |
280
- |---|---|---|
281
- | Active markets | live | scraper paused 2026-05-24 (CF block); historical snapshots still queryable |
282
- | Wallet positions | last known snapshot | not real-time until scraper resumes |
203
+ | `alerts_list`, `alerts_list_channels` | list rules / enabled channels |
204
+ | `alerts_create`, `alerts_edit`, `alerts_delete` | manage a rule (token symbol + chain `eth`/`bsc` + USD thresholds) |
205
+ | `alerts_register_webhook` | register an HTTPS webhook (HMAC-signed deliveries) |
283
206
 
284
- If your query needs older data than what's listed: say so clearly and offer the nearest in-range window. Don't silently return empty.
207
+ An alert fires on ANY transfer of the token above the USD threshold on that chain. It cannot watch one address, and there is no price or funding alert. There is no Telegram delivery. Alerts are checked on a cron, not streamed; do not suggest WebSockets.
285
208
 
286
209
  ---
287
210
 
288
- ## Cost & rate-limit awareness
211
+ ## Cost & rate limits
289
212
 
290
- - **Cheap (counts as 1 credit):** `token_search`, `wallet_summary`, `alerts_list`, `wallet_ens`, `perp_funding`.
291
- - **Standard (1-3 credits):** most tools.
292
- - **Heavy (5+ credits):** `wallet_discover` with large pages, `wallet_trace` with deep `--depth`, `token_screener` with no filters, `hl_perp_top_traders` with `--limit > 100`.
213
+ Credits are an accounting figure only; they never block a call. The one limit is 20,000 requests per rolling hour per key, shared by MCP and REST.
293
214
 
294
- Per-key default: 2000 requests/hour. Hitting the cap returns `MCP error -32000: Hourly rate limit exceeded`. Wait or upgrade plan.
215
+ - **0 credits:** `token_search`, `alerts_list`, `alerts_list_channels`.
216
+ - **1:** `wallet_ens`, `wallet_label_provenance`, `perp_funding`, `perp_spreads`, `hl_ohlcv`, `polymarket_markets`, `polymarket_ohlcv`.
217
+ - **2:** most others, `wallet_summary` among them.
218
+ - **3:** `token_screener`, `wallet_compare`, `wallet_token_balances`, `alerts_create`.
219
+ - **4:** `wallet_trace`.
295
220
 
296
221
  ## What vike does NOT do
297
222
 
298
223
  - **No NFT data** — out of scope by design.
299
224
  - **No on-chain trading / signing** — read-only platform, no execution.
300
- - **No WebSocket / push streaming alerts** — alerts run on a 2-minute cron.
225
+ - **No WebSocket / push streaming alerts.**
226
+ - **No ENS name → address**, no per-address alerts, no candles for CEX tickers or arbitrary ERC-20 contracts.
227
+ - **No Hyperliquid per-wallet profile, open interest or cohort positioning** through the CLI yet.
228
+ - **No non-EVM chains** (Bitcoin, Solana, Tron, Monero, Zcash, Dash) and no Arbitrum.
301
229
 
302
230
  If the user asks for any of the above, say so directly rather than proposing a workaround.
@@ -55,6 +55,7 @@ vike-data alerts delete 42 --hard # permanently remove
55
55
  ## Notes + gotchas
56
56
 
57
57
  - Currently chains supported: **eth** and **bsc** only. For both, create two alerts.
58
+ - **An alert watches a token, not an address.** It fires on ANY transfer of that token on that chain whose USD value crosses the thresholds. There is no wallet filter, so "alert me when whale 0xABCD sells" cannot be built: say so, and offer the token-wide alert or periodic `vike-data wallet transactions` checks instead. There are no price or funding alerts, and delivery is email, Discord or an HTTPS webhook (no Telegram).
58
59
  - Thresholds are in **USD value** of the transfer at fire time, not token quantity.
59
60
  - `--cooldown` is per-alert minimum gap between triggers (default 60 min). Useful to avoid spam during high-volume hours.
60
61
  - Tokens are matched by symbol (UPPERCASE). For cross-chain symbols like `USDC` that exist on multiple chains, be explicit with `--chain`.
@@ -41,7 +41,7 @@ vike-data candles polymarket <token_id>
41
41
  | "Hourly BTC perp candles, last week" | `vike-data candles hl BTC --interval 1h --limit 168` |
42
42
  | "HYPE spot daily candles" | `vike-data candles hl HYPE --market spot --interval 1d` |
43
43
  | "4h ETH, 200 bars" | `vike-data candles hl ETH --interval 4h --limit 200` |
44
- | "Price history of the YES outcome of market X" | get `clob_token_ids` from `vike-data polymarket market <condition_id>`, then `vike-data candles polymarket <token_id> --interval 1h` |
44
+ | "Price history of the YES outcome of market X" | take the leg's `token_id` from `outcomes[]` in `vike-data polymarket markets` (or `clob_token_ids` in `vike-data polymarket market <condition_id>`), then `vike-data candles polymarket <token_id> --interval 1h` |
45
45
 
46
46
  ## Output
47
47
 
@@ -50,7 +50,7 @@ Polymarket: `ts`, `open`, `high`, `low`, `close`, `volume`, `trades`, oldest fir
50
50
 
51
51
  ## Pitfalls
52
52
 
53
- - Polymarket takes an **outcome token id**, not a `condition_id`. A condition id returns nothing useful; read the token ids off `clob_token_ids` in `vike-data polymarket market`.
53
+ - Polymarket takes an **outcome token id**, not a `condition_id`. A condition id returns nothing useful; read the token ids off `outcomes[].token_id` in `vike-data polymarket markets` or `clob_token_ids` in `vike-data polymarket market`.
54
54
  - Polymarket has no cursor: a window wider than `--limit` is truncated at the **old** end. Raise `--from` to reach the recent end.
55
55
  - Polymarket `--from` / `--to` are epoch **milliseconds**; HL `--start` / `--end` also accept ISO-8601.
56
56
  - HL buckets are left-aligned UTC and the window is half-open.