bykaranteli-mcp 0.27.2 → 0.28.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 +6 -4
- package/dist/tools.js +38 -4
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
MCP (Model Context Protocol) server for **live crypto derivatives data**: funding rates, cross-exchange funding arbitrage, open interest pressure, liquidations, options, ETF flows, Fear & Greed and BTC dominance.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
47 read-only tools over the public JSON API of [bykaranteli.com](https://bykaranteli.com/developers). Since 2026-09-10 the API asks programs for an account key: a **free key** comes with any verified account at <https://bykaranteli.com/dashboard/api> (30 requests a minute, public depth), and the Builder, Business and Scale plans raise the rate and unlock member depth (LiqMap on seven timeframes, 5-minute series, the x402 catalog included). Set it as `BYKARANTELI_API_KEY`. 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
|
|
11
|
-
shared Free pool; a connector header `
|
|
12
|
-
|
|
10
|
+
assistant. Same 47 tools, nothing to install. Without a key it runs on the
|
|
11
|
+
shared Free pool; a connector header with your account key, `x-api-key: bk_...`
|
|
12
|
+
(claude.ai custom connectors) or `Authorization: Bearer bk_...` (Builder and
|
|
13
|
+
above), brings your own rate limit and member depth.
|
|
13
14
|
|
|
14
15
|
## Quick start
|
|
15
16
|
|
|
@@ -86,6 +87,7 @@ Requires Node.js 18 or newer.
|
|
|
86
87
|
| `get_orderbook_depth` | "Where is the biggest BTC bid wall? How deep is ETH within 2% on Coinbase vs Binance?" |
|
|
87
88
|
| `get_jupiter_perps` | "How much long vs short OI is on Jupiter SOL perps? Who topped Jupiter this week? What is the JLP APR?" |
|
|
88
89
|
| `get_turkey_premium` | "What do lira buyers pay for bitcoin above the world price? What is the Turkey Premium Index and its score right now? Which Turkish exchange is dearest? What is USDT/TRY against the official rate?" |
|
|
90
|
+
| `get_data_proof` | "Can I verify a ByKaranteli number was not changed later? Show the on-chain proof for BTC funding right now. Which Solana transaction sealed the newest epoch?" |
|
|
89
91
|
| `get_cycle_indicators` | "Has the Pi Cycle crossed? Mayer Multiple and Puell today?" |
|
|
90
92
|
| `get_altseason` | "Is it altseason?", "What is the altcoin season index?" |
|
|
91
93
|
| `get_metric_context` | "Is today's funding extreme historically?", "Where does this reading sit in its distribution?" |
|
package/dist/tools.js
CHANGED
|
@@ -104,7 +104,7 @@ export function registerByKaranteliTools(server, options) {
|
|
|
104
104
|
? `Invalid input: ${message}`
|
|
105
105
|
: permanent
|
|
106
106
|
? `Error fetching data from bykaranteli.com: ${message}. This is a permanent error for these inputs (wrong parameter or route), not a transient one; retrying will not help.`
|
|
107
|
-
: `Error fetching data from bykaranteli.com: ${message}.
|
|
107
|
+
: `Error fetching data from bykaranteli.com: ${message}. Transient errors usually resolve on retry.`;
|
|
108
108
|
return {
|
|
109
109
|
content: [{ type: "text", text }],
|
|
110
110
|
isError: true,
|
|
@@ -352,6 +352,9 @@ export function registerByKaranteliTools(server, options) {
|
|
|
352
352
|
regimeLabel: it.regimeLabel,
|
|
353
353
|
components: it.components,
|
|
354
354
|
explainer: it.explainer,
|
|
355
|
+
/* BYK Data Layer reference (rc6 section 14): the sealed record of the same computation,
|
|
356
|
+
* so an assistant can cite the on-chain proof of the score it quotes. */
|
|
357
|
+
...(it.byk_proof !== undefined ? { byk_proof: it.byk_proof } : {}),
|
|
355
358
|
});
|
|
356
359
|
if (symbol) {
|
|
357
360
|
const want = normalizeSymbol(symbol);
|
|
@@ -687,8 +690,8 @@ export function registerByKaranteliTools(server, options) {
|
|
|
687
690
|
}
|
|
688
691
|
});
|
|
689
692
|
server.registerTool("get_venue_markets", {
|
|
690
|
-
title: "Exchange coverage: OI, volume, funding and pegs across
|
|
691
|
-
description: "Call this when the user asks about total open interest across exchanges, which venues hold the most OI, DEX versus CEX share, funding dispersion between venues, or stablecoin pegs. Returns the latest 10-minute snapshot aggregates across
|
|
693
|
+
title: "Exchange coverage: OI, volume, funding and pegs across every exchange we snapshot",
|
|
694
|
+
description: "Call this when the user asks about total open interest across exchanges, which venues hold the most OI, DEX versus CEX share, funding dispersion between venues, or stablecoin pegs. Returns the latest 10-minute snapshot aggregates across every perpetual and spot feed we poll (the coverage field lists them); pass symbol for one coin's per-venue rows.",
|
|
692
695
|
inputSchema: {
|
|
693
696
|
symbol: z.string().optional().describe("string, optional base asset, e.g. BTC"),
|
|
694
697
|
history_days: z.number().int().min(1).max(90).optional().describe("Return the hourly multi-venue open interest history (total, DEX share, OI-weighted funding) for this many days instead of the snapshot"),
|
|
@@ -865,7 +868,7 @@ export function registerByKaranteliTools(server, options) {
|
|
|
865
868
|
}
|
|
866
869
|
});
|
|
867
870
|
server.registerTool("get_rsi_heatmap", {
|
|
868
|
-
title: "RSI heatmap: Wilder RSI(14) on eight timeframes for
|
|
871
|
+
title: "RSI heatmap: Wilder RSI(14) on eight timeframes for the top-400 crypto perps and every TradFi perp",
|
|
869
872
|
description: "Call this when the user asks which coins are overbought or oversold, for a crypto RSI heatmap, multi-timeframe RSI, or one contract's RSI on 15m, 1h, 4h, 12h, 1d, 3d, 1w or 1M. Returns the live board for the top-400 Binance crypto perps by volume plus every TradFi perp, with overbought/oversold counts per interval. Filter by symbol or kind (crypto|tradfi), sort by an interval.",
|
|
870
873
|
inputSchema: {
|
|
871
874
|
symbol: z.string().trim().toUpperCase().regex(/^[A-Z0-9]{2,24}$/).optional().describe("One Binance symbol, e.g. BTCUSDT"),
|
|
@@ -969,6 +972,37 @@ export function registerByKaranteliTools(server, options) {
|
|
|
969
972
|
return fail(err);
|
|
970
973
|
}
|
|
971
974
|
});
|
|
975
|
+
server.registerTool("get_data_proof", {
|
|
976
|
+
title: "BYK Data Layer: on-chain proof that a ByKaranteli number was sealed, signed and anchored on Solana and Base",
|
|
977
|
+
description: "Call this when the user asks whether ByKaranteli data can be verified or was changed afterwards, about the BYK Data Layer, on-chain proofs of market data, or wants the proof behind one sealed number. Every 5 minutes a catalog of derived feeds (funding composite, aggregate open interest, liquidations, depth within 2%, pressure scores, Kimchi and Turkey premiums) is sealed into one Merkle root, signed and written to Solana mainnet, and attested on Base once a day. With no arguments returns the stream overview: network, epochs and records sealed, final anchors and the newest epochs with explorer links. Pass feed and asset for one record's proof (value, 104-byte leaf, Merkle path, signed manifest, signature, Solana and Base anchors) at the newest epoch or at sequence; sequence alone for one epoch; catalog for the feed list. result ANCHORED means ByKaranteli signed it and an anchor is final; the protocol verdict is reached from the chains alone at https://bykaranteli.com/proof.",
|
|
978
|
+
inputSchema: {
|
|
979
|
+
feed: z.string().trim().toUpperCase().regex(/^BYK\.[A-Z0-9_.]{3,60}$/).optional().describe("Feed id from the catalog, e.g. BYK.FUNDING.COMPOSITE.B"),
|
|
980
|
+
asset: z.string().trim().toUpperCase().regex(/^[A-Z0-9]{2,10}$/).optional().describe("Asset of the feed: BTC, ETH, SOL, XRP, DOGE, BNB, USDT or ALL"),
|
|
981
|
+
sequence: z.number().int().min(0).optional().describe("Epoch sequence; omit for the newest"),
|
|
982
|
+
catalog: z.boolean().optional().describe("true: list every sealed feed with its unit and methodology"),
|
|
983
|
+
},
|
|
984
|
+
annotations: READ_ONLY,
|
|
985
|
+
}, async ({ feed, asset, sequence, catalog }) => {
|
|
986
|
+
try {
|
|
987
|
+
const route = (() => {
|
|
988
|
+
if (catalog)
|
|
989
|
+
return "/api/v1/proof/catalog";
|
|
990
|
+
if (feed && asset)
|
|
991
|
+
return `/api/v1/proof/proofs/${sequence ?? "latest"}/${encodeURIComponent(feed)}/${encodeURIComponent(asset)}`;
|
|
992
|
+
if (feed || asset)
|
|
993
|
+
return null;
|
|
994
|
+
if (sequence !== undefined)
|
|
995
|
+
return `/api/v1/proof/epochs/${sequence}`;
|
|
996
|
+
return "/api/v1/proof";
|
|
997
|
+
})();
|
|
998
|
+
if (!route)
|
|
999
|
+
throw new InputError("pass feed and asset together (for example feed BYK.FUNDING.COMPOSITE.B and asset BTC), or neither.");
|
|
1000
|
+
return ok(withProvenance(await fetchJson(route), route));
|
|
1001
|
+
}
|
|
1002
|
+
catch (err) {
|
|
1003
|
+
return fail(err);
|
|
1004
|
+
}
|
|
1005
|
+
});
|
|
972
1006
|
server.registerTool("get_jupiter_perps", {
|
|
973
1007
|
title: "Jupiter Perps (Solana): exact long/short OI, utilization, borrow rates, weekly top traders",
|
|
974
1008
|
description: "Call this when the user asks about Jupiter perpetuals on Solana: long versus short open interest per market (SOL, ETH, BTC) read from the on-chain custody state, pool utilization and hourly borrow rates, JLP pool AUM and APR, 24h volume, or the week's top traders by realized PnL. Pass base and history_days for the hourly OI history.",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bykaranteli-mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MCP server for live crypto derivatives data from bykaranteli.com: funding rates, funding arbitrage, open interest pressure, liquidations, options, ETF flows, Fear & Greed and BTC dominance.
|
|
3
|
+
"version": "0.28.1",
|
|
4
|
+
"description": "MCP server for live crypto derivatives data from bykaranteli.com: funding rates, funding arbitrage, open interest pressure, liquidations, options, ETF flows, Fear & Greed and BTC dominance. 47 read-only tools, free account key, paid depth via plans or x402.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"bykaranteli-mcp": "dist/index.js"
|