@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.
- package/CHANGELOG.md +18 -0
- package/README.md +164 -63
- package/package.json +9 -7
- package/scripts/postinstall.js +2 -1
- package/skills/vike/SKILL.md +51 -106
- package/skills/vike-candles/SKILL.md +61 -0
- package/skills/vike-hl-position-match/SKILL.md +3 -3
- package/skills/vike-perp-screener/SKILL.md +0 -1
- package/skills/vike-router/SKILL.md +4 -6
- package/skills/vike-token-research/SKILL.md +0 -5
- package/skills/vike-token-search/SKILL.md +0 -1
- package/skills/vike-token-transfers/SKILL.md +0 -1
- package/skills/vike-wallet-balances/SKILL.md +0 -2
- package/skills/vike-wallet-batch/SKILL.md +0 -1
- package/skills/vike-wallet-ens/SKILL.md +0 -1
- package/skills/vike-wallet-label-provenance/SKILL.md +0 -2
- package/skills/vike-wallet-pnl-history/SKILL.md +0 -1
- package/skills/vike-wallet-portfolio/SKILL.md +1 -3
- package/skills.sh.json +6 -18
- package/src/commands/candles.js +57 -0
- package/src/commands/init.js +1 -1
- package/src/commands/labels.js +0 -32
- package/src/commands/token.js +1 -16
- package/src/index.js +4 -9
- package/src/mcp-client.js +5 -6
- package/skills/vike-defi-positions/SKILL.md +0 -59
- package/skills/vike-fund-holdings/SKILL.md +0 -53
- package/skills/vike-ohlcv/SKILL.md +0 -65
- package/skills/vike-options-flow/SKILL.md +0 -49
- package/skills/vike-web-fetch/SKILL.md +0 -55
- package/skills/vike-web-research/SKILL.md +0 -58
- package/skills/vike-web-search/SKILL.md +0 -60
- package/src/commands/ohlcv.js +0 -33
- package/src/commands/options.js +0 -24
- package/src/commands/web.js +0 -41
package/skills/vike/SKILL.md
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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),
|
|
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
|
-
|
|
|
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 +
|
|
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
|
|
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
|
|
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,
|
|
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 |
|
|
158
|
-
| `token_transfers` | Recent transfers with USD values; supports `--min-usd`, time windows |
|
|
159
|
-
| `
|
|
160
|
-
| `
|
|
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 |
|
|
174
|
-
| `wallet_discover` | Leaderboard of top wallets by PnL/inflow on a token |
|
|
175
|
-
| `wallet_transactions` | Raw recent transactions (tx_hash, ts, from, to, token, usd) |
|
|
176
|
-
| `wallet_compare` | Side-by-side metrics for 2+ wallets |
|
|
177
|
-
| `wallet_trace` | BFS funds tracing N hops from a starting wallet |
|
|
178
|
-
| `wallet_counterparties` | Top counterparties (who they send to / receive from) |
|
|
179
|
-
| `wallet_pnl_history` | Daily PnL timeseries over `--days N` |
|
|
180
|
-
| `wallet_token_balances` | Current token balances (Moralis-backed) |
|
|
181
|
-
| `wallet_ens` | ENS name ↔ address (local cache: 477K wallets pre-resolved) |
|
|
182
|
-
| `wallet_batch_labels` | Bulk-label up to 100 addresses in one call |
|
|
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
|
|
189
|
-
|
|
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) |
|
|
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 |
|
|
206
|
-
| `perp_spreads` | Mark-price spreads of the same symbol across venues |
|
|
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 |
|
|
216
|
-
| `hl_position_match` | Reverse-lookup: share-card details (coin/side/lev/entry) → wallet holding that open position |
|
|
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
|
|
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
|
-
###
|
|
223
|
-
|
|
204
|
+
### Candles
|
|
205
|
+
Historical OHLCV from venues whose data is on-chain.
|
|
224
206
|
|
|
225
207
|
| Tool | Description | Skill |
|
|
226
208
|
|---|---|---|
|
|
227
|
-
| `
|
|
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 |
|
|
239
|
-
| `polymarket_market_detail` | Single market: outcomes, holders, recent trades, time-to-resolution |
|
|
240
|
-
| `polymarket_wallet` | One trader's positions, PnL, win rate |
|
|
241
|
-
| `polymarket_smart_money` | Top-PnL Polymarket traders + their current open positions |
|
|
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 |
|
|
262
|
-
| `alerts_create` | Create a new price/transfer/funding alert |
|
|
263
|
-
| `alerts_edit` | Edit an existing alert |
|
|
264
|
-
| `alerts_delete` | Delete an alert |
|
|
265
|
-
| `alerts_list_channels` | List user's registered delivery channels |
|
|
266
|
-
| `alerts_register_webhook` | Register an HTTPS webhook (HMAC-signed deliveries) |
|
|
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
|
-
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
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.
|
|
@@ -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,
|
|
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
|
-
|
|
|
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 |
|
|
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
|
|
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:
|
|
@@ -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
|
-
~
|
|
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
|
|
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,
|
|
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": "
|
|
68
|
-
"description": "
|
|
64
|
+
"title": "Candles",
|
|
65
|
+
"description": "Historical OHLCV for Hyperliquid perp/spot markets and Polymarket outcome tokens.",
|
|
69
66
|
"skills": [
|
|
70
|
-
"vike-
|
|
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
|
+
}
|
package/src/commands/init.js
CHANGED
|
@@ -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;
|