@vike-io/cli 0.11.0 → 0.12.1

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 (35) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +164 -63
  3. package/package.json +9 -7
  4. package/scripts/postinstall.js +2 -1
  5. package/skills/vike/SKILL.md +51 -106
  6. package/skills/vike-candles/SKILL.md +61 -0
  7. package/skills/vike-hl-position-match/SKILL.md +3 -3
  8. package/skills/vike-perp-screener/SKILL.md +0 -1
  9. package/skills/vike-router/SKILL.md +4 -6
  10. package/skills/vike-token-research/SKILL.md +0 -5
  11. package/skills/vike-token-search/SKILL.md +0 -1
  12. package/skills/vike-token-transfers/SKILL.md +0 -1
  13. package/skills/vike-wallet-balances/SKILL.md +0 -2
  14. package/skills/vike-wallet-batch/SKILL.md +0 -1
  15. package/skills/vike-wallet-ens/SKILL.md +0 -1
  16. package/skills/vike-wallet-label-provenance/SKILL.md +0 -2
  17. package/skills/vike-wallet-pnl-history/SKILL.md +0 -1
  18. package/skills/vike-wallet-portfolio/SKILL.md +1 -3
  19. package/skills.sh.json +6 -18
  20. package/src/commands/candles.js +57 -0
  21. package/src/commands/init.js +1 -1
  22. package/src/commands/labels.js +0 -32
  23. package/src/commands/token.js +1 -16
  24. package/src/index.js +4 -9
  25. package/src/mcp-client.js +5 -6
  26. package/skills/vike-defi-positions/SKILL.md +0 -59
  27. package/skills/vike-fund-holdings/SKILL.md +0 -53
  28. package/skills/vike-ohlcv/SKILL.md +0 -65
  29. package/skills/vike-options-flow/SKILL.md +0 -49
  30. package/skills/vike-web-fetch/SKILL.md +0 -55
  31. package/skills/vike-web-research/SKILL.md +0 -58
  32. package/skills/vike-web-search/SKILL.md +0 -60
  33. package/src/commands/ohlcv.js +0 -33
  34. package/src/commands/options.js +0 -24
  35. package/src/commands/web.js +0 -41
@@ -1,15 +1,21 @@
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, Deribit options, prediction markets (Polymarket), DeFi positions, ENS, or institutional fund holdings — 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\", \"Deribit BTC put-call ratio\", \"who is winning on Polymarket\", \"which funds hold X token\", \"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\", \"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."
4
4
  ---
5
5
 
6
6
  # vike — Multi-chain On-chain Analytics
7
7
 
8
- 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, Deribit options, Polymarket prediction markets, multi-source wallet labels, and a 34-tool MCP server.
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
+
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.
9
11
 
10
12
  **MCP endpoint for all calls:** `https://vike.io/mcp` (JSON-RPC 2.0)
11
13
  **Or use the CLI:** `npm install -g @vike-io/cli` → `vike <command>`
12
14
 
15
+ ## What it does and who it is for
16
+
17
+ It is for traders, researchers and developers who use an AI agent to look at crypto data. With this skill the agent knows which vike tool to call for wallets, tokens, smart money, Hyperliquid perps, Polymarket markets and alerts. It also knows how to read each answer and what the tools cannot do, so it reports real numbers instead of guesses. The data comes from vike.io and a free vike API key is needed.
18
+
13
19
  ---
14
20
 
15
21
  ## Critical Rules
@@ -53,7 +59,7 @@ If the user has no API key yet, tell them:
53
59
  >
54
60
  > Per-key default cap: 2000 requests/hour. Most calls return in <500ms.
55
61
 
56
- If using the MCP server directly (without the CLI), send the key as a header:
62
+ If using the MCP server directly (without the CLI), authenticate with the key in this header:
57
63
  ```
58
64
  X-API-KEY: vk_...
59
65
  ```
@@ -66,8 +72,6 @@ X-API-KEY: vk_...
66
72
  |---|---|---|
67
73
  | Token by symbol/name → address, market cap, holders | **Tokens** | `vike token search` / `token_search` |
68
74
  | Token holders, who bought/sold, top inflows | **Tokens** | `vike token transfers` / `token_transfers` |
69
- | Token chart / DEX OHLCV by contract address | **Tokens** | `vike token chart` / `token_chart` |
70
- | CEX candles by ticker/pair, any timeframe (1m–1w), spot or perp | **Tokens** | `vike ohlcv <symbol>` / `ohlcv` |
71
75
  | Filter/screen tokens by smart-money flow, liquidity, age | **Tokens** | `vike token screener` / `token_screener` |
72
76
  | Single wallet's PnL, holdings, recent activity | **Wallets** | `vike wallet summary` / `wallet_summary` |
73
77
  | Top wallets by PnL on a token / leaderboard | **Wallets** | `vike wallet discover` / `wallet_discover` |
@@ -80,32 +84,28 @@ X-API-KEY: vk_...
80
84
  | ENS name → address or address → ENS | **Wallets** | `vike wallet ens` / `wallet_ens` |
81
85
  | Bulk-label many wallets at once | **Wallets** | `vike wallet batch` / `wallet_batch_labels` |
82
86
  | Why is this wallet labeled X? (provenance) | **Labels** | `vike labels provenance` / `wallet_label_provenance` |
83
- | Which funds hold this token / what funds hold | **Funds** | `vike funds holdings` / `fund_holdings` |
84
87
  | Funding rates across CEX perps (Binance/Bybit/OKX/Aster/HL) | **CEX Perps** | `vike perp funding` / `perp_funding` |
85
88
  | Price spreads of same symbol across CEX perp venues | **CEX Perps** | `vike perp spreads` / `perp_spreads` |
86
89
  | Top Hyperliquid perp traders by PnL / volume | **HL Perps** | `vike perp top-traders` / `hl_perp_top_traders` |
87
90
  | Reverse-lookup an HL share card → which wallet holds it | **HL Perps** | `vike perp find-position` / `hl_position_match` |
88
- | Deribit options flow, put/call ratios, IV | **Options** | `vike options flow` / `options_flow` |
91
+ | Historical candles for a Hyperliquid perp or spot market (1m–1d) | **Candles** | `vike candles hl <symbol>` / `hl_ohlcv` |
92
+ | Historical probability candles for a Polymarket outcome token | **Candles** | `vike candles polymarket <token_id>` / `polymarket_ohlcv` |
89
93
  | Active Polymarket markets, volume, odds | **Polymarket** | `vike polymarket markets` / `polymarket_markets` |
90
94
  | Single Polymarket market detail | **Polymarket** | `vike polymarket detail` / `polymarket_market_detail` |
91
95
  | Polymarket trader profile / positions | **Polymarket** | `vike polymarket wallet` / `polymarket_wallet` |
92
96
  | Best-performing Polymarket traders | **Polymarket** | `vike polymarket smart-money` / `polymarket_smart_money` |
93
- | DeFi positions for a wallet (Aave/Uniswap/Lido/…) | **DeFi** | `vike defi positions` / `defi_positions` |
94
97
  | Create / list / edit price-or-flow alerts | **Alerts** | `vike alerts ...` / `alerts_*` |
95
- | General web search or fetch + AI summarize a URL | **Web** | `vike web search` / `web_search`, `vike web fetch` / `web_fetch` |
96
98
 
97
99
  **When in doubt, start with `vike token search` or `vike wallet summary`** — both are cheap, return instantly, and disambiguate what the user actually meant.
98
100
 
99
101
  ### Example query routing
100
102
  ```
101
103
  "Top 20 wallets buying PEPE in the last 24h" → wallet_discover (token=PEPE, sort=net_inflow_usd)
102
- "What is 0xd8dA6BF...AbA96 holding?" → wallet_summary + defi_positions
104
+ "What is 0xd8dA6BF...AbA96 holding?" → wallet_summary + wallet_token_balances
103
105
  "Funding rate for BTC across all perp venues" → perp_funding (symbol=BTC)
104
106
  "Cheapest venue to short ETH right now?" → perp_spreads (symbol=ETH)
105
107
  "Biggest HL perp PnL last week" → hl_perp_top_traders (window=7d, sort=pnl_usd)
106
- "Largest BTC put writes on Deribit today" → options_flow (asset=BTC, side=put)
107
108
  "Show me the largest Polymarket bets on US election" → polymarket_market_detail + polymarket_smart_money
108
- "Which funds bought Lido tokens this quarter?" → fund_holdings (token=LDO, window=90d)
109
109
  "Why is 0x28C6... labeled 'Binance hot wallet'?" → wallet_label_provenance (addr=0x28C6...)
110
110
  "Resolve vitalik.eth" → wallet_ens (name=vitalik.eth)
111
111
  "Alert me when whale 0xABCD sells over $1M of WBTC" → alerts_create
@@ -124,22 +124,7 @@ vike wallet summary 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 --json
124
124
  vike perp funding --symbol BTC --window 24h --json
125
125
  ```
126
126
 
127
- **B) Via MCP JSON-RPC (recommended when an MCP connector is available).** All 34 tools live at `https://vike.io/mcp`:
128
- ```http
129
- POST https://vike.io/mcp
130
- X-API-KEY: vk_...
131
- Content-Type: application/json
132
-
133
- {
134
- "jsonrpc": "2.0",
135
- "id": 1,
136
- "method": "tools/call",
137
- "params": {
138
- "name": "wallet_summary",
139
- "arguments": {"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "chain": "ethereum"}
140
- }
141
- }
142
- ```
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`.
143
128
 
144
129
  Run `vike 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.
145
130
 
@@ -147,19 +132,17 @@ Run `vike schema --pretty` (or call MCP `tools/list`) to see the live arg shape
147
132
 
148
133
  ## Per-service tool reference
149
134
 
150
- For deeper per-tool workflows (multi-step recipes, common pitfalls, output schemas), see the `skills/` directory in this repo. The router lives at [`skills/vike-router/SKILL.md`](skills/vike-router/SKILL.md).
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`.
151
136
 
152
137
  ### Tokens
153
- Address resolution, transfers, OHLCV, holder cohorts, screening.
138
+ Address resolution, transfers, holder cohorts, screening.
154
139
 
155
140
  | Tool | Description | Skill |
156
141
  |---|---|---|
157
- | `token_search` | Symbol/name → contract address + chain + market cap | [vike-token-search](skills/vike-token-search/SKILL.md) |
158
- | `token_transfers` | Recent transfers with USD values; supports `--min-usd`, time windows | [vike-token-transfers](skills/vike-token-transfers/SKILL.md) |
159
- | `token_chart` | DEX OHLCV by contract address (5/30/120-min, data_history aggregate) | [vike-token-research](skills/vike-token-research/SKILL.md) |
160
- | `ohlcv` | CEX candles by ticker (BTC) or pair (BTCUSDT), 1m–1w, spot/perp, paged | [vike-ohlcv](skills/vike-ohlcv/SKILL.md) |
161
- | `token_holders` | Top holders + concentration metrics | [vike-token-holders](skills/vike-token-holders/SKILL.md) |
162
- | `token_screener` | Filter tokens by smart-money inflow, age, liquidity, sector | [vike-token-screener](skills/vike-token-screener/SKILL.md) |
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` |
163
146
 
164
147
  **Key chains:** `ethereum`, `bsc`, `base`, `arbitrum`, `hyperevm` (EVM); `bitcoin`, `solana`, `tron`, `xmr`, `zec`, `dash` (non-EVM, limited tool support).
165
148
 
@@ -170,28 +153,27 @@ Profile, PnL, transactions, comparison, tracing, counterparty graph.
170
153
 
171
154
  | Tool | Description | Skill |
172
155
  |---|---|---|
173
- | `wallet_summary` | One-call profile: PnL, top holdings, recent activity, labels | [vike-wallet-summary](skills/vike-wallet-summary/SKILL.md) |
174
- | `wallet_discover` | Leaderboard of top wallets by PnL/inflow on a token | [vike-wallet-discover](skills/vike-wallet-discover/SKILL.md), [vike-smart-money-discovery](skills/vike-smart-money-discovery/SKILL.md) |
175
- | `wallet_transactions` | Raw recent transactions (tx_hash, ts, from, to, token, usd) | [vike-wallet-transactions](skills/vike-wallet-transactions/SKILL.md) |
176
- | `wallet_compare` | Side-by-side metrics for 2+ wallets | [vike-wallet-compare](skills/vike-wallet-compare/SKILL.md) |
177
- | `wallet_trace` | BFS funds tracing N hops from a starting wallet | [vike-wallet-trace](skills/vike-wallet-trace/SKILL.md) |
178
- | `wallet_counterparties` | Top counterparties (who they send to / receive from) | [vike-wallet-counterparties](skills/vike-wallet-counterparties/SKILL.md) |
179
- | `wallet_pnl_history` | Daily PnL timeseries over `--days N` | [vike-wallet-pnl-history](skills/vike-wallet-pnl-history/SKILL.md) |
180
- | `wallet_token_balances` | Current token balances (Moralis-backed) | [vike-wallet-balances](skills/vike-wallet-balances/SKILL.md) |
181
- | `wallet_ens` | ENS name ↔ address (local cache: 477K wallets pre-resolved) | [vike-wallet-ens](skills/vike-wallet-ens/SKILL.md) |
182
- | `wallet_batch_labels` | Bulk-label up to 100 addresses in one call | [vike-wallet-batch](skills/vike-wallet-batch/SKILL.md) |
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` |
183
166
 
184
167
  **Address shape:** always full 0x-prefixed hex (42 chars). Never truncate when reporting back to the user.
185
168
 
186
169
  ---
187
170
 
188
- ### Labels & Funds
189
- Institutional wallet identification + label provenance.
171
+ ### Labels
172
+ Wallet label provenance.
190
173
 
191
174
  | Tool | Description | Skill |
192
175
  |---|---|---|
193
- | `wallet_label_provenance` | Why a wallet got a given label (sources + confidence) | [vike-wallet-label-provenance](skills/vike-wallet-label-provenance/SKILL.md) |
194
- | `fund_holdings` | Which funds/institutions hold a given token + recent flows | [vike-fund-holdings](skills/vike-fund-holdings/SKILL.md) |
176
+ | `wallet_label_provenance` | Why a wallet got a given label (sources + confidence) | `vike-wallet-label-provenance` |
195
177
 
196
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.
197
179
 
@@ -202,8 +184,8 @@ Vike's label cascade is multi-source — when an answer hinges on "is this reall
202
184
 
203
185
  | Tool | Description | Skill |
204
186
  |---|---|---|
205
- | `perp_funding` | Funding rates per symbol per venue + 24h/7d averages | [vike-perp-funding-arb](skills/vike-perp-funding-arb/SKILL.md) |
206
- | `perp_spreads` | Mark-price spreads of the same symbol across venues | [vike-perp-spread-arb](skills/vike-perp-spread-arb/SKILL.md), [vike-cross-venue-perps](skills/vike-cross-venue-perps/SKILL.md) |
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` |
207
189
 
208
190
  ---
209
191
 
@@ -212,21 +194,20 @@ On-chain perps data: snapshots, fills, ledger, funding, attribution.
212
194
 
213
195
  | Tool | Description | Skill |
214
196
  |---|---|---|
215
- | `hl_perp_top_traders` | Top HL traders by PnL/volume over a window | [vike-hl-top-traders](skills/vike-hl-top-traders/SKILL.md), [vike-hl-trader-profile](skills/vike-hl-trader-profile/SKILL.md) |
216
- | `hl_position_match` | Reverse-lookup: share-card details (coin/side/lev/entry) → wallet holding that open position | [vike-hl-position-match](skills/vike-hl-position-match/SKILL.md) |
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` |
217
199
 
218
- For per-symbol HL screening / individual trader deep-dive, use [vike-perp-screener](skills/vike-perp-screener/SKILL.md) and [vike-hl-trader-profile](skills/vike-hl-trader-profile/SKILL.md).
200
+ For per-symbol HL screening / individual trader deep-dive, use `vike-perp-screener` and `vike-hl-trader-profile`.
219
201
 
220
202
  ---
221
203
 
222
- ### Options
223
- Deribit options chain + flow.
204
+ ### Candles
205
+ Historical OHLCV from venues whose data is on-chain.
224
206
 
225
207
  | Tool | Description | Skill |
226
208
  |---|---|---|
227
- | `options_flow` | Recent large trades, put/call ratios, IV by strike/expiry | [vike-options-flow](skills/vike-options-flow/SKILL.md) |
228
-
229
- Coverage: BTC + ETH on Deribit. Other venues not currently supported.
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` |
230
211
 
231
212
  ---
232
213
 
@@ -235,21 +216,10 @@ Prediction markets — markets, traders, smart-money.
235
216
 
236
217
  | Tool | Description | Skill |
237
218
  |---|---|---|
238
- | `polymarket_markets` | Active markets sorted by volume / liquidity / volatility | [vike-polymarket-markets](skills/vike-polymarket-markets/SKILL.md), [vike-polymarket-screener](skills/vike-polymarket-screener/SKILL.md) |
239
- | `polymarket_market_detail` | Single market: outcomes, holders, recent trades, time-to-resolution | [vike-polymarket-market-detail](skills/vike-polymarket-market-detail/SKILL.md) |
240
- | `polymarket_wallet` | One trader's positions, PnL, win rate | [vike-polymarket-trader](skills/vike-polymarket-trader/SKILL.md) |
241
- | `polymarket_smart_money` | Top-PnL Polymarket traders + their current open positions | [vike-polymarket-smart-money](skills/vike-polymarket-smart-money/SKILL.md) |
242
-
243
- ---
244
-
245
- ### DeFi
246
- Cross-protocol positions for a wallet.
247
-
248
- | Tool | Description | Skill |
249
- |---|---|---|
250
- | `defi_positions` | Aave/Uniswap V2+V3/Lido/Compound/etc. open positions per wallet | [vike-defi-positions](skills/vike-defi-positions/SKILL.md) |
251
-
252
- Covers ~30+ protocols across ETH/BSC/Base/Arbitrum.
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` |
253
223
 
254
224
  ---
255
225
 
@@ -258,27 +228,15 @@ Create + manage alerts; deliver to email, Telegram, Discord, Webhook.
258
228
 
259
229
  | Tool | Description | Skill |
260
230
  |---|---|---|
261
- | `alerts_list` | List user's existing alerts | [vike-alerts-setup](skills/vike-alerts-setup/SKILL.md) |
262
- | `alerts_create` | Create a new price/transfer/funding alert | [vike-alerts-setup](skills/vike-alerts-setup/SKILL.md) |
263
- | `alerts_edit` | Edit an existing alert | [vike-alerts-setup](skills/vike-alerts-setup/SKILL.md) |
264
- | `alerts_delete` | Delete an alert | [vike-alerts-setup](skills/vike-alerts-setup/SKILL.md) |
265
- | `alerts_list_channels` | List user's registered delivery channels | [vike-alerts-setup](skills/vike-alerts-setup/SKILL.md) |
266
- | `alerts_register_webhook` | Register an HTTPS webhook (HMAC-signed deliveries) | [vike-alerts-webhook](skills/vike-alerts-webhook/SKILL.md) |
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` |
267
237
 
268
238
  Alerts fire on a 2-minute cron cycle (not streaming). Don't recommend WebSocket / push streaming — it's not how the platform works.
269
239
 
270
- ---
271
-
272
- ### Web
273
- General web search + AI-summarized fetch for off-chain context (news, docs, social).
274
-
275
- | Tool | Description | Skill |
276
- |---|---|---|
277
- | `web_search` | Tavily-primary + Serper fallback web search | [vike-web-search](skills/vike-web-search/SKILL.md) |
278
- | `web_fetch` | Fetch a URL + AI Q&A over its contents (Cerebras-backed) | [vike-web-fetch](skills/vike-web-fetch/SKILL.md), [vike-web-research](skills/vike-web-research/SKILL.md) |
279
-
280
- ---
281
-
282
240
  ## Historical data availability
283
241
 
284
242
  Coverage windows per dataset. Don't ask for data older than the window — the tool will return empty or 503.
@@ -296,19 +254,6 @@ Coverage windows per dataset. Don't ask for data older than the window — the t
296
254
  | Solana | 2026-Q1 onward | Recent only — see `vike-cli` chain-coverage notes |
297
255
  | Tron/XMR/ZEC/Dash | 2024 onward | Recent only |
298
256
 
299
- ### Prices (data_history, spot)
300
-
301
- | Venue | Earliest | Notes |
302
- |---|---|---|
303
- | Binance | 2017-08 | Full minute-level OHLCV |
304
- | Bybit | 2020-03 | Full minute-level OHLCV |
305
- | OKX | 2019-04 | Full minute-level OHLCV |
306
- | Gate | 2017 (CSV) → 2024-05 (CSV ends) | After 2024-05 use API; capped 10k minutes/request |
307
- | Coinbase | 2015 | Full history (recently added) |
308
- | KuCoin | 2018 | Full history (recently added) |
309
- | Pyth | 2023 | On-chain price feed; sparse pre-2023 |
310
- | Deribit options | 2020 onward | BTC + ETH only |
311
-
312
257
  ### Hyperliquid perps (hl_perps DB)
313
258
 
314
259
  | Dataset | Window | Notes |
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: vike-candles
3
+ description: Historical OHLCV candles for a Hyperliquid perp or spot market, or for one Polymarket outcome token. Use when the user asks for a price chart, candles, OHLCV, or price history of a Hyperliquid asset or a Polymarket outcome (its probability over time).
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-candles
8
+
9
+ Two candle sources, both from venues whose data is on-chain. There is **no** candle source for
10
+ CEX tickers (BTCUSDT on Binance and the like) or for an arbitrary ERC-20 contract address; say so
11
+ rather than guessing a venue.
12
+
13
+ ## Command
14
+
15
+ Hyperliquid (perp or spot), built from HL's own executed fills:
16
+
17
+ ```bash
18
+ vike candles hl <symbol>
19
+ [--interval 1m|5m|15m|30m|1h|4h|1d] # default 1h
20
+ [--market perp|spot] # default perp
21
+ [--dex <name>] # HIP-3 builder DEX; default HL (the core venue)
22
+ [--start <iso|epoch-ms>] [--end <iso|epoch-ms>] # half-open [start, end)
23
+ [--limit N] # default 500, max 5000
24
+ [--json]
25
+ ```
26
+
27
+ Polymarket, ONE outcome token (a probability, 0-1):
28
+
29
+ ```bash
30
+ vike candles polymarket <token_id>
31
+ [--interval 1m|5m|1h|1d] # default 1h
32
+ [--from <epoch-ms>] [--to <epoch-ms>] # both inclusive
33
+ [--limit N] # default 500, max 1000
34
+ [--json]
35
+ ```
36
+
37
+ ## Common queries
38
+
39
+ | Question | Command |
40
+ |---|---|
41
+ | "Hourly BTC perp candles, last week" | `vike candles hl BTC --interval 1h --limit 168` |
42
+ | "HYPE spot daily candles" | `vike candles hl HYPE --market spot --interval 1d` |
43
+ | "4h ETH, 200 bars" | `vike candles hl ETH --interval 4h --limit 200` |
44
+ | "Price history of the YES outcome of market X" | get `clob_token_ids` from `vike polymarket market <condition_id>`, then `vike candles polymarket <token_id> --interval 1h` |
45
+
46
+ ## Output
47
+
48
+ HL: `ts` (epoch ms, UTC), `open`, `high`, `low`, `close`, `volume`, `volume_usd`, `n_trades`, ascending by `ts`, plus `source`.
49
+ Polymarket: `ts`, `open`, `high`, `low`, `close`, `volume`, `trades`, oldest first.
50
+
51
+ ## Pitfalls
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 polymarket market`.
54
+ - Polymarket has no cursor: a window wider than `--limit` is truncated at the **old** end. Raise `--from` to reach the recent end.
55
+ - Polymarket `--from` / `--to` are epoch **milliseconds**; HL `--start` / `--end` also accept ISO-8601.
56
+ - HL buckets are left-aligned UTC and the window is half-open.
57
+
58
+ ## Pairs well with
59
+
60
+ - `vike polymarket market <condition_id>` — to find the token ids
61
+ - `vike perp top-traders` — who is trading the asset behind the candles
@@ -81,6 +81,6 @@ The response includes `tolerance_used` so the caller knows which band matched (`
81
81
 
82
82
  ## Pairs well with
83
83
 
84
- - [vike-wallet-summary](../vike-wallet-summary/SKILL.md) — once you have the address, get the trader's HL profile + multi-chain identity.
85
- - [vike-hl-top-traders](../vike-hl-top-traders/SKILL.md) — check if the matched wallet is on a leaderboard.
86
- - [vike-wallet-label-provenance](../vike-wallet-label-provenance/SKILL.md) — find out if the wallet is a known CEX/fund/MM rather than a retail trader.
84
+ - `vike-wallet-summary` — once you have the address, get the trader's HL profile + multi-chain identity.
85
+ - `vike-hl-top-traders` — check if the matched wallet is on a leaderboard.
86
+ - `vike-wallet-label-provenance` — find out if the wallet is a known CEX/fund/MM rather than a retail trader.
@@ -45,5 +45,4 @@ wait
45
45
 
46
46
  ## Pairs well with
47
47
 
48
- - `vike-options-flow` for the corresponding options positioning on BTC/ETH/SOL
49
48
  - `vike-perp-funding-arb` for the funding-only deep dive
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: vike-router
3
- description: Entry point — decide which vike skill to use. Read this first when the user asks anything about on-chain analytics, perps, options, prediction markets, wallets, or tokens.
3
+ description: Entry point — decide which vike skill to use. Read this first when the user asks anything about on-chain analytics, perps, prediction markets, wallets, or tokens.
4
4
  allowed-tools: Bash(vike:*)
5
5
  ---
6
6
 
@@ -15,7 +15,6 @@ Route the user's question to the right `vike-*` skill.
15
15
  | Token by symbol/name → address | `vike-token-search` |
16
16
  | Token holders / who bought / sold | `vike-token-transfers` |
17
17
  | Token price chart / DEX OHLCV by contract address | `vike-token-research` |
18
- | CEX candles by ticker/pair, any timeframe (BTC, BTCUSDT) | `vike-ohlcv` |
19
18
  | Generic token research (everything) | `vike-token-research` |
20
19
  | Single wallet's metrics | `vike-wallet-summary` |
21
20
  | Top wallets / leaderboard | `vike-wallet-discover` |
@@ -27,18 +26,17 @@ Route the user's question to the right `vike-*` skill.
27
26
  | Profile a single HL perp trader | `vike-hl-trader-profile` |
28
27
  | HL market overview (vol/OI/funding) | `vike-perp-screener` |
29
28
  | Compare a symbol across all perp venues | `vike-cross-venue-perps` |
30
- | Deribit options flow / put-call ratios | `vike-options-flow` |
29
+ | Historical candles (Hyperliquid perp/spot, Polymarket outcome token) | `vike-candles` |
31
30
  | Create / list / edit alerts | `vike-alerts-setup` |
32
31
  | Auth / setup / "I just installed it" | `vike-core` |
33
32
 
34
33
  ## Quick command map
35
34
 
36
35
  ```
37
- vike token search | transfers | chart
38
- vike ohlcv <symbol> # CEX candles, any timeframe (BTC, BTCUSDT)
36
+ vike token search | transfers | screener | holders
39
37
  vike wallet summary | discover
40
38
  vike perp funding | spreads | top-traders
41
- vike options flow
39
+ vike candles hl <symbol> | polymarket <token_id>
42
40
  vike alerts list | channels | create | edit | delete
43
41
  vike init | doctor | schema | whoami | login | logout
44
42
  ```
@@ -22,11 +22,6 @@ Multi-call token research workflow.
22
22
  vike token transfers <addr> --tab sold --period 24h --chain <chain> --json
23
23
  ```
24
24
 
25
- 3. **Price action**
26
- ```bash
27
- vike token chart <addr> --interval 30 --json
28
- ```
29
-
30
25
  ## Verdict heuristics
31
26
 
32
27
  After step 2, classify direction-of-pressure:
@@ -36,5 +36,4 @@ vike token search PEPE --chain ethereum --limit 5
36
36
  ## Pairs well with
37
37
 
38
38
  - `vike token transfers <address>` after resolution
39
- - `vike token chart <address>`
40
39
  - `vike-token-research` for a full multi-call report
@@ -40,4 +40,3 @@ Each row is one wallet: `address`, `qty`, `usd_value`, `label` (if known), `tx_c
40
40
  ## Pairs well with
41
41
 
42
42
  - `vike wallet summary <addr>` to profile any interesting buyer/seller
43
- - `vike token chart <addr>` to correlate flows with price action
@@ -49,12 +49,10 @@ Holdings sorted by `usd_value` descending.
49
49
  ## Anti-patterns
50
50
 
51
51
  - This is ERC-20 only — does NOT include native ETH/BNB/MATIC (would need separate calls; not in our current tool surface). Mention this when reporting "total holdings".
52
- - Don't combine with `defi_positions` totals naively — there's overlap (e.g. aUSDC shows in `balances`, the Aave deposit shows in `defi_positions`; you'd double-count).
53
52
  - For wallets with 100+ tokens, the response is large — use `--min-usd 100` or higher to focus on meaningful holdings.
54
53
 
55
54
  ## Pairs well with
56
55
 
57
- - `vike defi <addr>` — protocol positions (Aave/Uniswap LP/Lido) alongside spot balances
58
56
  - `vike wallet pnl-history <addr>` — how the wallet got to its current state
59
57
  - `vike labels <addr>` — institutional context
60
58
  - `vike wallet ens <addr>` — friendly identifier
@@ -53,4 +53,3 @@ One row per INPUT address (preserves input order — useful when joining back to
53
53
 
54
54
  - `vike labels <addr>` — drill into any address showing high-confidence labels
55
55
  - `vike wallet compare <a> <b>` — pick two interesting batch results and diff them
56
- - `vike funds` — when batch reveals fund/MM/treasury wallets, get their flows
@@ -38,4 +38,3 @@ vike wallet ens 0x28c6c06298d514db089934071355e5743bf21d60
38
38
 
39
39
  - `vike labels <addr>` — combine ENS + labels for the fullest identity view
40
40
  - `vike wallet summary <addr>` — ENS + activity profile
41
- - `vike funds` — pair with ENS lookups on the top entries for richer display
@@ -61,5 +61,3 @@ vike labels 0x28C6c06298d514Db089934071355E5743bf21d60 # Binance Hot Wallet
61
61
  ## Pairs well with
62
62
 
63
63
  - `vike wallet summary <addr>` — for the flow metrics of the labeled wallet
64
- - `vike funds` — find all known fund wallets and their recent flows
65
- - `vike defi <addr>` — see what protocols this entity is using
@@ -55,4 +55,3 @@ For lifetime realized PnL: `vike wallet discover --sort pnl --window all`.
55
55
 
56
56
  - `vike wallet summary <addr>` for the aggregate context
57
57
  - `vike wallet counterparties <addr>` to see WHO they traded with
58
- - `vike token chart <addr>` to correlate flow spikes with price action
@@ -17,7 +17,6 @@ vike wallet ens $ADDR --json & # cheap, ~1 credit
17
17
  vike labels $ADDR --json & # cheap, ~1 credit
18
18
  vike wallet summary $ADDR --json & # cheap, ~2 credits
19
19
  vike wallet balances $ADDR --json & # multi-chain, ~3 credits
20
- vike defi $ADDR --json & # multi-chain, ~3 credits
21
20
  vike wallet pnl-history $ADDR --days 30 --json &
22
21
  wait
23
22
  ```
@@ -47,14 +46,13 @@ wait
47
46
 
48
47
  ## Cost
49
48
 
50
- ~6 parallel calls, ~12 credits total. Use sparingly — only when the user wants the FULL picture, not a single dimension.
49
+ ~5 parallel calls, ~9 credits total. Use sparingly — only when the user wants the FULL picture, not a single dimension.
51
50
 
52
51
  ## When to use a focused skill instead
53
52
 
54
53
  - "Just labels for X" → `vike-wallet-label-provenance`
55
54
  - "What does X hold" → `vike-wallet-balances`
56
55
  - "Top counterparties of X" → `vike-wallet-counterparties`
57
- - "DeFi positions of X" → `vike-defi-positions`
58
56
 
59
57
  ## Pairs well with
60
58
 
package/skills.sh.json CHANGED
@@ -13,11 +13,10 @@
13
13
  },
14
14
  {
15
15
  "title": "Tokens",
16
- "description": "Resolve, screen, and research tokens across 11 chains. Smart-money inflow, holders, recent transfers, OHLCV.",
16
+ "description": "Resolve, screen, and research tokens across 11 chains. Smart-money inflow, holders, recent transfers.",
17
17
  "skills": [
18
18
  "vike-token-search",
19
19
  "vike-token-research",
20
- "vike-ohlcv",
21
20
  "vike-token-transfers",
22
21
  "vike-token-holders",
23
22
  "vike-token-screener",
@@ -26,7 +25,7 @@
26
25
  },
27
26
  {
28
27
  "title": "Wallets",
29
- "description": "Per-wallet profile, PnL, counterparty graphs, ENS, batch labelling, fund affiliation, DeFi positions.",
28
+ "description": "Per-wallet profile, PnL, counterparty graphs, ENS, batch labelling, label provenance.",
30
29
  "skills": [
31
30
  "vike-wallet-summary",
32
31
  "vike-wallet-portfolio",
@@ -39,9 +38,7 @@
39
38
  "vike-wallet-pnl-history",
40
39
  "vike-wallet-balances",
41
40
  "vike-wallet-ens",
42
- "vike-wallet-label-provenance",
43
- "vike-fund-holdings",
44
- "vike-defi-positions"
41
+ "vike-wallet-label-provenance"
45
42
  ]
46
43
  },
47
44
  {
@@ -64,10 +61,10 @@
64
61
  ]
65
62
  },
66
63
  {
67
- "title": "Options",
68
- "description": "Deribit BTC/ETH options flow + put-call ratios.",
64
+ "title": "Candles",
65
+ "description": "Historical OHLCV for Hyperliquid perp/spot markets and Polymarket outcome tokens.",
69
66
  "skills": [
70
- "vike-options-flow"
67
+ "vike-candles"
71
68
  ]
72
69
  },
73
70
  {
@@ -88,15 +85,6 @@
88
85
  "vike-alerts-setup",
89
86
  "vike-alerts-webhook"
90
87
  ]
91
- },
92
- {
93
- "title": "Web research",
94
- "description": "Off-chain context: general web search and AI-summarized URL fetch for news, docs, and social.",
95
- "skills": [
96
- "vike-web-search",
97
- "vike-web-fetch",
98
- "vike-web-research"
99
- ]
100
88
  }
101
89
  ]
102
90
  }
@@ -0,0 +1,57 @@
1
+ import { callTool } from '../mcp-client.js';
2
+ import { emit, emitError } from '../format.js';
3
+ import { parseInt10 } from '../util.js';
4
+
5
+ export function registerCandles(program) {
6
+ const cmd = program
7
+ .command('candles')
8
+ .description('Historical OHLCV candles — Hyperliquid markets and Polymarket outcome tokens');
9
+
10
+ cmd
11
+ .command('hl <symbol>')
12
+ .description('Hyperliquid candles (perp or spot), aggregated from HL executed fills')
13
+ .option('--interval <i>', '1m | 5m | 15m | 30m | 1h | 4h | 1d', '1h')
14
+ .option('--market <m>', 'perp | spot', 'perp')
15
+ .option('--dex <d>', 'Perp DEX (default HL, the core venue; others are HIP-3 builder DEXs)')
16
+ .option('--start <t>', 'ISO-8601 UTC or epoch ms (inclusive)')
17
+ .option('--end <t>', 'ISO-8601 UTC or epoch ms (exclusive)')
18
+ .option('--limit <n>', 'Max candles (default 500, max 5000)', '500')
19
+ .option('--json', 'Emit JSON')
20
+ .action(async (symbol, opts) => {
21
+ try {
22
+ const args = {
23
+ symbol,
24
+ interval: opts.interval,
25
+ market: opts.market,
26
+ limit: parseInt10(opts.limit, 500),
27
+ };
28
+ if (opts.dex !== undefined) args.dex = opts.dex;
29
+ if (opts.start !== undefined) args.start = opts.start;
30
+ if (opts.end !== undefined) args.end = opts.end;
31
+ const r = await callTool('hl_ohlcv', args);
32
+ emit(r, opts);
33
+ } catch (err) { emitError(err, opts); }
34
+ });
35
+
36
+ cmd
37
+ .command('polymarket <token_id>')
38
+ .description('Candles for ONE Polymarket outcome token (prices are probabilities, 0-1)')
39
+ .option('--interval <i>', '1m | 5m | 1h | 1d', '1h')
40
+ .option('--from <ms>', 'Epoch milliseconds, inclusive lower bound')
41
+ .option('--to <ms>', 'Epoch milliseconds, inclusive upper bound')
42
+ .option('--limit <n>', 'Max candles (default 500, max 1000)', '500')
43
+ .option('--json', 'Emit JSON')
44
+ .action(async (tokenId, opts) => {
45
+ try {
46
+ const args = {
47
+ token_id: tokenId,
48
+ interval: opts.interval,
49
+ limit: parseInt10(opts.limit, 500),
50
+ };
51
+ if (opts.from !== undefined) args.from = opts.from;
52
+ if (opts.to !== undefined) args.to = opts.to;
53
+ const r = await callTool('polymarket_ohlcv', args);
54
+ emit(r, opts);
55
+ } catch (err) { emitError(err, opts); }
56
+ });
57
+ }
@@ -33,7 +33,7 @@ export function registerInit(program) {
33
33
 
34
34
  console.log('Verifying connection to vike.io/mcp ...');
35
35
  const { status, body } = await ping({ apiKey: key });
36
- if (status !== 200) {
36
+ if (status !== 200 || body?.error) {
37
37
  console.error(`Endpoint returned HTTP ${status}: ${JSON.stringify(body)}`);
38
38
  process.exitCode = 1;
39
39
  return;