bykaranteli-mcp 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -45,6 +45,8 @@ Requires Node.js 18 or newer.
45
45
  | `get_recent_signals` | "How did the signals do in the last 24h?" |
46
46
  | `get_symbol_performance` | "Win rate on ETHUSDT over 90 days?" |
47
47
  | `get_strategy_leaderboard` | "Which strategies are performing best?" |
48
+ | `get_liquidations` | "How much was liquidated today?", "Did longs or shorts get flushed this week?" |
49
+ | `get_etf_flows` | "Did the Bitcoin ETFs buy or sell yesterday?", "Cumulative ETH ETF inflow?" |
48
50
 
49
51
  All responses are JSON and carry a `generatedAt` timestamp plus a `source` URL to the human-readable page. Symbols accept both `BTCUSDT` and bare `BTC`.
50
52
 
package/dist/index.js CHANGED
@@ -97,6 +97,61 @@ server.registerTool("get_market_indices", {
97
97
  return fail(err);
98
98
  }
99
99
  });
100
+ server.registerTool("get_liquidations", {
101
+ title: "Crypto liquidations: daily long/short totals per symbol and exchange",
102
+ description: "Call this when the user asks how much was liquidated in crypto futures, whether longs or shorts got flushed, or for liquidation history. Returns daily long and short liquidation totals in USD per symbol and exchange, recorded from ByKaranteli's own Binance, Bybit and OKX stream collectors (recorded events, a floor, not estimates). One row per finalized UTC day, symbol and exchange; history begins 2026-07-30 and grows daily.",
103
+ inputSchema: {
104
+ symbol: z
105
+ .string()
106
+ .trim()
107
+ .toUpperCase()
108
+ .regex(/^[A-Z0-9]{2,20}$/)
109
+ .optional()
110
+ .describe("Optional symbol filter like BTCUSDT or ETHUSDT. Omit for all symbols."),
111
+ days: z.number().int().min(1).max(90).optional().describe("How many most recent days to return (default 7)."),
112
+ },
113
+ annotations: READ_ONLY,
114
+ }, async ({ symbol, days }) => {
115
+ try {
116
+ const d = (await fetchJson("/api/v1/public/datasets/liquidations-daily.json"));
117
+ const rows = Array.isArray(d.rows) ? d.rows : [];
118
+ const wantDays = days ?? 7;
119
+ const dates = [...new Set(rows.map((r) => String(r.date)))].sort().reverse().slice(0, wantDays);
120
+ const dateSet = new Set(dates);
121
+ const filtered = rows.filter((r) => dateSet.has(String(r.date)) && (!symbol || String(r.symbol).toUpperCase() === symbol));
122
+ return ok({
123
+ rows: filtered.slice(0, 400),
124
+ note: "Recorded from public exchange streams; totals are a floor (Binance throttles its stream). Live 24h view: " + BASE_URL + "/liquidations",
125
+ source: `${BASE_URL}/liquidations`,
126
+ });
127
+ }
128
+ catch (err) {
129
+ return fail(err);
130
+ }
131
+ });
132
+ server.registerTool("get_etf_flows", {
133
+ title: "US spot Bitcoin and Ethereum ETF daily flows",
134
+ description: "Call this when the user asks about Bitcoin or Ethereum ETF flows: daily net inflows or outflows, cumulative flow since launch, or total net assets of the US spot ETFs (IBIT, FBTC, ETHA and the rest). Returns one row per finalized US trading day and asset with net inflow, total net assets, cumulative inflow and value traded, all in USD. About 14 months of history.",
135
+ inputSchema: {
136
+ asset: z.enum(["BTC", "ETH"]).optional().describe("Filter to one asset. Omit for both."),
137
+ days: z.number().int().min(1).max(400).optional().describe("How many most recent trading days to return (default 10)."),
138
+ },
139
+ annotations: READ_ONLY,
140
+ }, async ({ asset, days }) => {
141
+ try {
142
+ const d = (await fetchJson("/api/v1/public/datasets/etf-flows.json"));
143
+ const rows = Array.isArray(d.rows) ? d.rows : [];
144
+ const filtered = rows.filter((r) => !asset || String(r.asset) === asset);
145
+ return ok({
146
+ rows: filtered.slice(0, (days ?? 10) * (asset ? 1 : 2)),
147
+ note: "Finalized US trading days only; a positive net_inflow_usd means the funds bought more of the asset than they sold that day.",
148
+ source: `${BASE_URL}/etf`,
149
+ });
150
+ }
151
+ catch (err) {
152
+ return fail(err);
153
+ }
154
+ });
100
155
  server.registerTool("get_funding_heatmap", {
101
156
  title: "Funding rates across top-30 Binance perps",
102
157
  description: "Call this when the user asks for the full current funding table across the top-30 Binance perp universe, or the funding rate of one specific coin. For a pre-ranked top-10 of the most extreme funding rates, use get_top_movers instead. Returns per-symbol funding rate (per settlement interval), 24h open interest change and 24h price change for the top-30 Binance USDT-M perpetuals. Positive funding means longs pay shorts.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bykaranteli-mcp",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "MCP server for live crypto derivatives data from bykaranteli.com: funding rates, funding arbitrage, open interest pressure, Fear & Greed, BTC dominance and verified signal performance. Free, no API key.",
5
5
  "type": "module",
6
6
  "bin": {