bykaranteli-mcp 0.22.0 → 0.23.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/README.md +5 -3
- package/dist/tools.js +45 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
MCP (Model Context Protocol) server for **live crypto derivatives data**: funding rates, cross-exchange funding arbitrage, open interest pressure, Fear & Greed, BTC dominance and a verified signal track record.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
48 read-only tools over the free, no-auth public JSON API of [bykaranteli.com](https://bykaranteli.com/developers). No API key, no account, no rate-limit registration. Data covers Binance USDT-M perpetuals (funding arbitrage additionally compares OKX, Bybit, Gate, HTX, BingX, Kraken, MEXC and Bitget).
|
|
6
6
|
|
|
7
7
|
## Hosted endpoint (no install)
|
|
8
8
|
|
|
9
9
|
Paste `https://mcp.bykaranteli.com` as a custom connector in any MCP-capable
|
|
10
|
-
assistant. Same
|
|
10
|
+
assistant. Same 48 tools, nothing to install, no key.
|
|
11
11
|
|
|
12
12
|
## Quick start
|
|
13
13
|
|
|
@@ -69,6 +69,8 @@ Requires Node.js 18 or newer.
|
|
|
69
69
|
| `get_withdrawal_status` | "Has KuCoin paused USDT withdrawals?", "Cheapest network to withdraw USDT from Gate?", "Which exchanges have withdrawals closed right now?" |
|
|
70
70
|
| `get_venue_profile` | "What do you record about Bybit?", "How many contracts does OKX list?", "Is HTX up, and what happened there this week?" |
|
|
71
71
|
| `get_settlements` | "What expires this week?", "When is the next BTC quarterly on OKX?", "At what price did the September future settle?" |
|
|
72
|
+
| `get_borrow_rates` | "What does it cost to borrow USDT on Binance?", "Cheapest venue to borrow ETH?", "Is stablecoin borrow spiking?" |
|
|
73
|
+
| `get_fee_table` | "What are Bitget's perp fees?", "Which exchange has the lowest taker fee?", "Did any venue change fees this week?" |
|
|
72
74
|
| `get_lead_lag` | "Does Coinbase or Binance move first?" |
|
|
73
75
|
| `get_iv_surface` | "What is BTC implied vol by expiry?", "Is downside protection expensive (skew)?" |
|
|
74
76
|
| `get_whale_tape` | "Are whales buying or selling right now?" |
|
|
@@ -117,7 +119,7 @@ MIT. Attribution appreciated: "ByKaranteli (bykaranteli.com)".
|
|
|
117
119
|
|
|
118
120
|
## Paid depth (optional)
|
|
119
121
|
|
|
120
|
-
The
|
|
122
|
+
The 48 tools above are free and stay free. For recorded history and raw records
|
|
121
123
|
beyond the live snapshots, bykaranteli.com also exposes pay-per-call x402
|
|
122
124
|
endpoints (USDC on Solana or Base, priced per call, no account):
|
|
123
125
|
<https://bykaranteli.com/developers#x402> · machine catalog:
|
package/dist/tools.js
CHANGED
|
@@ -37,6 +37,24 @@ export function registerByKaranteliTools(server, options) {
|
|
|
37
37
|
}
|
|
38
38
|
/* Every answer carries where it came from and when (README promise; audit
|
|
39
39
|
* P3 #416): routes that already emit these keep their own values. */
|
|
40
|
+
/* API stems whose public page has a different name. Stripping /api/public off
|
|
41
|
+
* the route gave nine tools a `source` that 404s on the site (2026-09-04
|
|
42
|
+
* audit: /borrow-rates, /oi, /recent, /venues/markets ...). */
|
|
43
|
+
const PAGE_FOR_STEM = {
|
|
44
|
+
"/borrow-rates": "/borrow",
|
|
45
|
+
"/oi": "/oi-leaderboard",
|
|
46
|
+
"/recent": "/signals",
|
|
47
|
+
"/leaderboard": "/strategies",
|
|
48
|
+
"/venues/markets": "/venues",
|
|
49
|
+
"/venues/lead-lag": "/venues",
|
|
50
|
+
"/venues/profile": "/venues",
|
|
51
|
+
"/datasets/etf-flows": "/etf",
|
|
52
|
+
"/datasets/liquidations-daily": "/liquidations",
|
|
53
|
+
};
|
|
54
|
+
function pageForApiPath(path) {
|
|
55
|
+
const stem = path.replace(/^\/api\/(?:v1\/)?public/, "").split("?")[0] || "/";
|
|
56
|
+
return PAGE_FOR_STEM[stem] ?? stem;
|
|
57
|
+
}
|
|
40
58
|
function withProvenance(data, path) {
|
|
41
59
|
if (!data || typeof data !== "object" || Array.isArray(data))
|
|
42
60
|
return data;
|
|
@@ -44,7 +62,7 @@ export function registerByKaranteliTools(server, options) {
|
|
|
44
62
|
return {
|
|
45
63
|
...record,
|
|
46
64
|
generatedAt: typeof record.generatedAt === "string" ? record.generatedAt : new Date().toISOString(),
|
|
47
|
-
source: typeof record.source === "string" ? record.source : `${PUBLIC_URL}${path
|
|
65
|
+
source: typeof record.source === "string" ? record.source : `${PUBLIC_URL}${pageForApiPath(path)}`,
|
|
48
66
|
};
|
|
49
67
|
}
|
|
50
68
|
function ok(data) {
|
|
@@ -615,6 +633,32 @@ export function registerByKaranteliTools(server, options) {
|
|
|
615
633
|
return fail(err);
|
|
616
634
|
}
|
|
617
635
|
});
|
|
636
|
+
server.registerTool("get_borrow_rates", {
|
|
637
|
+
title: "Margin borrow rates per venue: the cost of leverage, hourly",
|
|
638
|
+
description: "Call this when the user asks what it costs to borrow USDT, USDC, BTC, ETH or a major alt on an exchange, which venue has the cheapest borrow, whether stablecoin borrow cost is spiking, or what the carry of a basis trade is on a venue (funding minus borrow). Returns the latest annualised rate per venue and asset, 30 days of hourly series for the stablecoins and majors, and the carry table. Recorded hourly by ByKaranteli (Binance and OKX today).",
|
|
639
|
+
inputSchema: {},
|
|
640
|
+
annotations: READ_ONLY,
|
|
641
|
+
}, async () => {
|
|
642
|
+
try {
|
|
643
|
+
return ok(withProvenance(await fetchJson("/api/public/borrow-rates"), "/api/public/borrow-rates"));
|
|
644
|
+
}
|
|
645
|
+
catch (err) {
|
|
646
|
+
return fail(err);
|
|
647
|
+
}
|
|
648
|
+
});
|
|
649
|
+
server.registerTool("get_fee_table", {
|
|
650
|
+
title: "Trading fee schedules per venue, base tier maker and taker",
|
|
651
|
+
description: "Call this when the user asks what an exchange charges to trade, how maker and taker fees compare across venues, whether a venue changed its fees, or what a round trip costs on a given notional. Returns base tier maker and taker per venue and market type (median across pairs where the venue prices per pair) and the fee change log, read daily by ByKaranteli from each venue's own fee endpoint.",
|
|
652
|
+
inputSchema: {},
|
|
653
|
+
annotations: READ_ONLY,
|
|
654
|
+
}, async () => {
|
|
655
|
+
try {
|
|
656
|
+
return ok(withProvenance(await fetchJson("/api/public/fees"), "/api/public/fees"));
|
|
657
|
+
}
|
|
658
|
+
catch (err) {
|
|
659
|
+
return fail(err);
|
|
660
|
+
}
|
|
661
|
+
});
|
|
618
662
|
server.registerTool("get_settlements", {
|
|
619
663
|
title: "Expiry calendar and settlement prices across venues",
|
|
620
664
|
description: "Call this when the user asks what futures or options expire soon, when the next quarterly expiry is on an exchange, how many contracts settle this week, or at what price a dated future settled. Returns the next 60 days of dated future and option expiries grouped by date, venue and underlying from 54 venues' market lists, plus the settlement prices recorded as dated futures deliver.",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bykaranteli-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.1",
|
|
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": {
|