@aicoin/opendata-mcp 1.0.9 → 1.0.10
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/build/index.js +144 -71
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -99,6 +99,13 @@ async function apiPost(path, body = {}) {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
// src/tools/utils.ts
|
|
102
|
+
var LIST_KEYS = [
|
|
103
|
+
"data",
|
|
104
|
+
"list",
|
|
105
|
+
"items",
|
|
106
|
+
"result",
|
|
107
|
+
"results"
|
|
108
|
+
];
|
|
102
109
|
function ok(data) {
|
|
103
110
|
return {
|
|
104
111
|
content: [
|
|
@@ -109,12 +116,47 @@ function ok(data) {
|
|
|
109
116
|
]
|
|
110
117
|
};
|
|
111
118
|
}
|
|
119
|
+
function okList(data, max = 50) {
|
|
120
|
+
if (Array.isArray(data)) {
|
|
121
|
+
return ok(truncArr(data, max));
|
|
122
|
+
}
|
|
123
|
+
if (data && typeof data === "object") {
|
|
124
|
+
const obj = data;
|
|
125
|
+
for (const k of LIST_KEYS) {
|
|
126
|
+
if (Array.isArray(obj[k])) {
|
|
127
|
+
const arr = obj[k];
|
|
128
|
+
if (arr.length > max) {
|
|
129
|
+
return ok({
|
|
130
|
+
...obj,
|
|
131
|
+
[k]: arr.slice(0, max),
|
|
132
|
+
_truncated: {
|
|
133
|
+
field: k,
|
|
134
|
+
total: arr.length,
|
|
135
|
+
showing: max
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return ok(data);
|
|
143
|
+
}
|
|
144
|
+
function truncArr(arr, max) {
|
|
145
|
+
if (arr.length <= max) return arr;
|
|
146
|
+
return {
|
|
147
|
+
total: arr.length,
|
|
148
|
+
showing: max,
|
|
149
|
+
truncated: true,
|
|
150
|
+
data: arr.slice(0, max)
|
|
151
|
+
};
|
|
152
|
+
}
|
|
112
153
|
function err(e) {
|
|
154
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
113
155
|
return {
|
|
114
156
|
content: [
|
|
115
157
|
{
|
|
116
158
|
type: "text",
|
|
117
|
-
text: `Error: ${
|
|
159
|
+
text: `Error: ${msg}`
|
|
118
160
|
}
|
|
119
161
|
],
|
|
120
162
|
isError: true
|
|
@@ -125,11 +167,14 @@ function err(e) {
|
|
|
125
167
|
function registerCoinTools(server2) {
|
|
126
168
|
server2.tool(
|
|
127
169
|
"get_coin_list",
|
|
128
|
-
"Get list
|
|
170
|
+
"Get supported coins list (returns top 100 by default, use get_coin_ticker for specific coins)",
|
|
129
171
|
{},
|
|
130
172
|
async () => {
|
|
131
173
|
try {
|
|
132
|
-
return
|
|
174
|
+
return okList(
|
|
175
|
+
await apiGet("/api/v2/coin"),
|
|
176
|
+
100
|
|
177
|
+
);
|
|
133
178
|
} catch (e) {
|
|
134
179
|
return err(e);
|
|
135
180
|
}
|
|
@@ -208,7 +253,7 @@ function registerCoinTools(server2) {
|
|
|
208
253
|
symbol,
|
|
209
254
|
interval
|
|
210
255
|
};
|
|
211
|
-
|
|
256
|
+
params.limit = limit ?? "100";
|
|
212
257
|
if (start_time) params.start_time = start_time;
|
|
213
258
|
if (end_time) params.end_time = end_time;
|
|
214
259
|
return ok(
|
|
@@ -268,7 +313,7 @@ function registerCoinTools(server2) {
|
|
|
268
313
|
symbol,
|
|
269
314
|
interval
|
|
270
315
|
};
|
|
271
|
-
|
|
316
|
+
params.limit = limit ?? "100";
|
|
272
317
|
if (start_time) params.start_time = start_time;
|
|
273
318
|
if (end_time) params.end_time = end_time;
|
|
274
319
|
return ok(
|
|
@@ -298,7 +343,7 @@ function registerCoinTools(server2) {
|
|
|
298
343
|
symbol,
|
|
299
344
|
interval
|
|
300
345
|
};
|
|
301
|
-
|
|
346
|
+
params.limit = limit ?? "100";
|
|
302
347
|
if (start_time) params.start_time = start_time;
|
|
303
348
|
if (end_time) params.end_time = end_time;
|
|
304
349
|
return ok(
|
|
@@ -328,7 +373,7 @@ function registerCoinTools(server2) {
|
|
|
328
373
|
symbol,
|
|
329
374
|
interval
|
|
330
375
|
};
|
|
331
|
-
|
|
376
|
+
params.limit = limit ?? "100";
|
|
332
377
|
if (start_time) params.start_time = start_time;
|
|
333
378
|
if (end_time) params.end_time = end_time;
|
|
334
379
|
return ok(
|
|
@@ -360,7 +405,7 @@ function registerCoinTools(server2) {
|
|
|
360
405
|
symbol,
|
|
361
406
|
interval
|
|
362
407
|
};
|
|
363
|
-
|
|
408
|
+
params.limit = limit ?? "100";
|
|
364
409
|
if (start_time) params.start_time = start_time;
|
|
365
410
|
if (end_time) params.end_time = end_time;
|
|
366
411
|
return ok(
|
|
@@ -396,7 +441,7 @@ function registerCoinTools(server2) {
|
|
|
396
441
|
cycle
|
|
397
442
|
};
|
|
398
443
|
if (leverage) params.leverage = leverage;
|
|
399
|
-
|
|
444
|
+
params.limit = limit ?? "100";
|
|
400
445
|
if (start_time) params.start_time = start_time;
|
|
401
446
|
if (end_time) params.end_time = end_time;
|
|
402
447
|
return ok(
|
|
@@ -424,7 +469,7 @@ function registerCoinTools(server2) {
|
|
|
424
469
|
async ({ key, limit, start_time, end_time }) => {
|
|
425
470
|
try {
|
|
426
471
|
const params = { key };
|
|
427
|
-
|
|
472
|
+
params.limit = limit ?? "100";
|
|
428
473
|
if (start_time) params.start_time = start_time;
|
|
429
474
|
if (end_time) params.end_time = end_time;
|
|
430
475
|
return ok(
|
|
@@ -454,7 +499,7 @@ function registerCoinTools(server2) {
|
|
|
454
499
|
try {
|
|
455
500
|
const params = { key };
|
|
456
501
|
if (amount) params.amount = amount;
|
|
457
|
-
|
|
502
|
+
params.limit = limit ?? "100";
|
|
458
503
|
if (start_time) params.start_time = start_time;
|
|
459
504
|
if (end_time) params.end_time = end_time;
|
|
460
505
|
return ok(
|
|
@@ -482,7 +527,7 @@ function registerCoinTools(server2) {
|
|
|
482
527
|
async ({ dbkey, limit, start_time, end_time }) => {
|
|
483
528
|
try {
|
|
484
529
|
const params = { dbkey };
|
|
485
|
-
|
|
530
|
+
params.limit = limit ?? "100";
|
|
486
531
|
if (start_time) params.start_time = start_time;
|
|
487
532
|
if (end_time) params.end_time = end_time;
|
|
488
533
|
return ok(
|
|
@@ -512,7 +557,7 @@ function registerContentTools(server2) {
|
|
|
512
557
|
try {
|
|
513
558
|
const params = {};
|
|
514
559
|
if (page) params.page = page;
|
|
515
|
-
|
|
560
|
+
params.limit = limit ?? "20";
|
|
516
561
|
return ok(
|
|
517
562
|
await apiGet("/api/v2/content/newsflash", params)
|
|
518
563
|
);
|
|
@@ -532,7 +577,7 @@ function registerContentTools(server2) {
|
|
|
532
577
|
try {
|
|
533
578
|
const params = {};
|
|
534
579
|
if (page) params.page = page;
|
|
535
|
-
|
|
580
|
+
params.limit = limit ?? "20";
|
|
536
581
|
return ok(
|
|
537
582
|
await apiGet("/api/v2/content/news-list", params)
|
|
538
583
|
);
|
|
@@ -568,7 +613,7 @@ function registerContentTools(server2) {
|
|
|
568
613
|
try {
|
|
569
614
|
const params = {};
|
|
570
615
|
if (page) params.page = page;
|
|
571
|
-
|
|
616
|
+
params.pageSize = pageSize ?? "20";
|
|
572
617
|
return ok(
|
|
573
618
|
await apiGet(
|
|
574
619
|
"/api/v2/content/square/market/news-list",
|
|
@@ -592,11 +637,12 @@ function registerContentTools(server2) {
|
|
|
592
637
|
const params = {};
|
|
593
638
|
if (language) params.language = language;
|
|
594
639
|
if (createtime) params.createtime = createtime;
|
|
595
|
-
return
|
|
640
|
+
return okList(
|
|
596
641
|
await apiGet(
|
|
597
642
|
"/api/v2/content/flashList",
|
|
598
643
|
params
|
|
599
|
-
)
|
|
644
|
+
),
|
|
645
|
+
30
|
|
600
646
|
);
|
|
601
647
|
} catch (e) {
|
|
602
648
|
return err(e);
|
|
@@ -614,7 +660,7 @@ function registerContentTools(server2) {
|
|
|
614
660
|
try {
|
|
615
661
|
const params = {};
|
|
616
662
|
if (page) params.page = page;
|
|
617
|
-
|
|
663
|
+
params.limit = limit ?? "20";
|
|
618
664
|
return ok(
|
|
619
665
|
await apiGet(
|
|
620
666
|
"/api/v2/content/exchange-listing-flash",
|
|
@@ -651,7 +697,7 @@ function registerMarketTools(server2) {
|
|
|
651
697
|
symbol
|
|
652
698
|
};
|
|
653
699
|
if (period) params.period = period;
|
|
654
|
-
|
|
700
|
+
params.size = size ?? "100";
|
|
655
701
|
if (since) params.since = since;
|
|
656
702
|
if (open_time) params.open_time = open_time;
|
|
657
703
|
return ok(
|
|
@@ -751,7 +797,7 @@ function registerMarketTools(server2) {
|
|
|
751
797
|
params.us_stock = String(us_stock);
|
|
752
798
|
if (hk_stock != null)
|
|
753
799
|
params.hk_stock = String(hk_stock);
|
|
754
|
-
|
|
800
|
+
params.limit = String(limit ?? 30);
|
|
755
801
|
return ok(
|
|
756
802
|
await apiGet(
|
|
757
803
|
"/api/upgrade/v2/crypto_stock/top-gainer",
|
|
@@ -795,11 +841,12 @@ function registerMarketTools(server2) {
|
|
|
795
841
|
try {
|
|
796
842
|
const params = { key };
|
|
797
843
|
if (currency) params.currency = currency;
|
|
798
|
-
return
|
|
844
|
+
return okList(
|
|
799
845
|
await apiGet(
|
|
800
846
|
"/api/v2/market/hotTabCoins",
|
|
801
847
|
params
|
|
802
|
-
)
|
|
848
|
+
),
|
|
849
|
+
50
|
|
803
850
|
);
|
|
804
851
|
} catch (e) {
|
|
805
852
|
return err(e);
|
|
@@ -851,8 +898,9 @@ function registerMarketTools(server2) {
|
|
|
851
898
|
{},
|
|
852
899
|
async () => {
|
|
853
900
|
try {
|
|
854
|
-
return
|
|
855
|
-
await apiGet("/api/v2/index/getIndex")
|
|
901
|
+
return okList(
|
|
902
|
+
await apiGet("/api/v2/index/getIndex"),
|
|
903
|
+
50
|
|
856
904
|
);
|
|
857
905
|
} catch (e) {
|
|
858
906
|
return err(e);
|
|
@@ -916,7 +964,7 @@ function registerMarketTools(server2) {
|
|
|
916
964
|
indicator_key
|
|
917
965
|
};
|
|
918
966
|
if (period) params.period = period;
|
|
919
|
-
|
|
967
|
+
params.size = size ?? "100";
|
|
920
968
|
if (since) params.since = since;
|
|
921
969
|
if (open_time) params.open_time = open_time;
|
|
922
970
|
return ok(
|
|
@@ -965,11 +1013,12 @@ function registerMarketTools(server2) {
|
|
|
965
1013
|
try {
|
|
966
1014
|
const body = { coin };
|
|
967
1015
|
if (entity_id) body.entity_id = entity_id;
|
|
968
|
-
return
|
|
1016
|
+
return okList(
|
|
969
1017
|
await apiPost(
|
|
970
1018
|
"/api/upgrade/v2/coin-treasuries/history",
|
|
971
1019
|
body
|
|
972
|
-
)
|
|
1020
|
+
),
|
|
1021
|
+
100
|
|
973
1022
|
);
|
|
974
1023
|
} catch (e) {
|
|
975
1024
|
return err(e);
|
|
@@ -987,11 +1036,12 @@ function registerMarketTools(server2) {
|
|
|
987
1036
|
try {
|
|
988
1037
|
const body = { coin };
|
|
989
1038
|
if (entity_id) body.entity_id = entity_id;
|
|
990
|
-
return
|
|
1039
|
+
return okList(
|
|
991
1040
|
await apiPost(
|
|
992
1041
|
"/api/upgrade/v2/coin-treasuries/history/accumulated",
|
|
993
1042
|
body
|
|
994
|
-
)
|
|
1043
|
+
),
|
|
1044
|
+
100
|
|
995
1045
|
);
|
|
996
1046
|
} catch (e) {
|
|
997
1047
|
return err(e);
|
|
@@ -1082,11 +1132,12 @@ function registerMarketTools(server2) {
|
|
|
1082
1132
|
},
|
|
1083
1133
|
async ({ coin }) => {
|
|
1084
1134
|
try {
|
|
1085
|
-
return
|
|
1135
|
+
return okList(
|
|
1086
1136
|
await apiGet(
|
|
1087
1137
|
"/api/upgrade/v2/futures/full-depth",
|
|
1088
1138
|
{ coin }
|
|
1089
|
-
)
|
|
1139
|
+
),
|
|
1140
|
+
50
|
|
1090
1141
|
);
|
|
1091
1142
|
} catch (e) {
|
|
1092
1143
|
return err(e);
|
|
@@ -1101,11 +1152,12 @@ function registerMarketTools(server2) {
|
|
|
1101
1152
|
},
|
|
1102
1153
|
async ({ coin }) => {
|
|
1103
1154
|
try {
|
|
1104
|
-
return
|
|
1155
|
+
return okList(
|
|
1105
1156
|
await apiGet(
|
|
1106
1157
|
"/api/upgrade/v2/futures/full-depth/grouped",
|
|
1107
1158
|
{ coin }
|
|
1108
|
-
)
|
|
1159
|
+
),
|
|
1160
|
+
50
|
|
1109
1161
|
);
|
|
1110
1162
|
} catch (e) {
|
|
1111
1163
|
return err(e);
|
|
@@ -1148,8 +1200,9 @@ function registerFeatureTools(server2) {
|
|
|
1148
1200
|
const params = {};
|
|
1149
1201
|
if (coin) params.coin = coin;
|
|
1150
1202
|
if (period) params.period = period;
|
|
1151
|
-
return
|
|
1152
|
-
await apiGet("/api/v2/mix/liq", params)
|
|
1203
|
+
return okList(
|
|
1204
|
+
await apiGet("/api/v2/mix/liq", params),
|
|
1205
|
+
50
|
|
1153
1206
|
);
|
|
1154
1207
|
} catch (e) {
|
|
1155
1208
|
return err(e);
|
|
@@ -1290,8 +1343,9 @@ function registerFeatureTools(server2) {
|
|
|
1290
1343
|
{},
|
|
1291
1344
|
async () => {
|
|
1292
1345
|
try {
|
|
1293
|
-
return
|
|
1294
|
-
await apiGet("/api/v2/mix/stock-market")
|
|
1346
|
+
return okList(
|
|
1347
|
+
await apiGet("/api/v2/mix/stock-market"),
|
|
1348
|
+
50
|
|
1295
1349
|
);
|
|
1296
1350
|
} catch (e) {
|
|
1297
1351
|
return err(e);
|
|
@@ -1402,11 +1456,12 @@ function registerFeatureTools(server2) {
|
|
|
1402
1456
|
const params = {};
|
|
1403
1457
|
if (type) params.type = type;
|
|
1404
1458
|
if (currency) params.currency = currency;
|
|
1405
|
-
return
|
|
1459
|
+
return okList(
|
|
1406
1460
|
await apiGet(
|
|
1407
1461
|
"/api/v2/signal/changeSignal",
|
|
1408
1462
|
params
|
|
1409
|
-
)
|
|
1463
|
+
),
|
|
1464
|
+
50
|
|
1410
1465
|
);
|
|
1411
1466
|
} catch (e) {
|
|
1412
1467
|
return err(e);
|
|
@@ -1445,8 +1500,9 @@ function registerFeatureTools(server2) {
|
|
|
1445
1500
|
platform
|
|
1446
1501
|
};
|
|
1447
1502
|
if (type) params.type = type;
|
|
1448
|
-
return
|
|
1449
|
-
await apiGet("/api/v2/trading-pair", params)
|
|
1503
|
+
return okList(
|
|
1504
|
+
await apiGet("/api/v2/trading-pair", params),
|
|
1505
|
+
100
|
|
1450
1506
|
);
|
|
1451
1507
|
} catch (e) {
|
|
1452
1508
|
return err(e);
|
|
@@ -1460,11 +1516,14 @@ import { z as z5 } from "zod";
|
|
|
1460
1516
|
function registerHyperliquidTools(server2) {
|
|
1461
1517
|
server2.tool(
|
|
1462
1518
|
"hl_get_tickers",
|
|
1463
|
-
"Get
|
|
1519
|
+
"Get Hyperliquid ticker data (truncated to top 50, use hl_get_ticker_by_coin for specific coin)",
|
|
1464
1520
|
{},
|
|
1465
1521
|
async () => {
|
|
1466
1522
|
try {
|
|
1467
|
-
return
|
|
1523
|
+
return okList(
|
|
1524
|
+
await apiGet("/api/upgrade/v2/hl/tickers"),
|
|
1525
|
+
50
|
|
1526
|
+
);
|
|
1468
1527
|
} catch (e) {
|
|
1469
1528
|
return err(e);
|
|
1470
1529
|
}
|
|
@@ -1498,11 +1557,12 @@ function registerHyperliquidTools(server2) {
|
|
|
1498
1557
|
const params = {};
|
|
1499
1558
|
if (coin) params.coin = coin;
|
|
1500
1559
|
if (min_usd) params.min_usd = min_usd;
|
|
1501
|
-
return
|
|
1560
|
+
return okList(
|
|
1502
1561
|
await apiGet(
|
|
1503
1562
|
"/api/upgrade/v2/hl/whales/open-positions",
|
|
1504
1563
|
params
|
|
1505
|
-
)
|
|
1564
|
+
),
|
|
1565
|
+
50
|
|
1506
1566
|
);
|
|
1507
1567
|
} catch (e) {
|
|
1508
1568
|
return err(e);
|
|
@@ -1519,11 +1579,12 @@ function registerHyperliquidTools(server2) {
|
|
|
1519
1579
|
try {
|
|
1520
1580
|
const params = {};
|
|
1521
1581
|
if (coin) params.coin = coin;
|
|
1522
|
-
return
|
|
1582
|
+
return okList(
|
|
1523
1583
|
await apiGet(
|
|
1524
1584
|
"/api/upgrade/v2/hl/liquidations/history",
|
|
1525
1585
|
params
|
|
1526
|
-
)
|
|
1586
|
+
),
|
|
1587
|
+
50
|
|
1527
1588
|
);
|
|
1528
1589
|
} catch (e) {
|
|
1529
1590
|
return err(e);
|
|
@@ -1565,8 +1626,9 @@ function registerHyperliquidTools(server2) {
|
|
|
1565
1626
|
if (extra_params) {
|
|
1566
1627
|
Object.assign(body, JSON.parse(extra_params));
|
|
1567
1628
|
}
|
|
1568
|
-
return
|
|
1569
|
-
await apiPost("/api/upgrade/v2/hl/info", body)
|
|
1629
|
+
return okList(
|
|
1630
|
+
await apiPost("/api/upgrade/v2/hl/info", body),
|
|
1631
|
+
50
|
|
1570
1632
|
);
|
|
1571
1633
|
} catch (e) {
|
|
1572
1634
|
return err(e);
|
|
@@ -1581,8 +1643,9 @@ function registerHyperliquidTools(server2) {
|
|
|
1581
1643
|
},
|
|
1582
1644
|
async ({ address }) => {
|
|
1583
1645
|
try {
|
|
1584
|
-
return
|
|
1585
|
-
await apiGet(`/api/upgrade/v2/hl/fills/${address}`)
|
|
1646
|
+
return okList(
|
|
1647
|
+
await apiGet(`/api/upgrade/v2/hl/fills/${address}`),
|
|
1648
|
+
50
|
|
1586
1649
|
);
|
|
1587
1650
|
} catch (e) {
|
|
1588
1651
|
return err(e);
|
|
@@ -1633,11 +1696,12 @@ function registerHyperliquidTools(server2) {
|
|
|
1633
1696
|
try {
|
|
1634
1697
|
const params = {};
|
|
1635
1698
|
if (coin) params.coin = coin;
|
|
1636
|
-
return
|
|
1699
|
+
return okList(
|
|
1637
1700
|
await apiGet(
|
|
1638
1701
|
"/api/upgrade/v2/hl/fills/top-trades",
|
|
1639
1702
|
params
|
|
1640
|
-
)
|
|
1703
|
+
),
|
|
1704
|
+
50
|
|
1641
1705
|
);
|
|
1642
1706
|
} catch (e) {
|
|
1643
1707
|
return err(e);
|
|
@@ -1652,10 +1716,11 @@ function registerHyperliquidTools(server2) {
|
|
|
1652
1716
|
},
|
|
1653
1717
|
async ({ address }) => {
|
|
1654
1718
|
try {
|
|
1655
|
-
return
|
|
1719
|
+
return okList(
|
|
1656
1720
|
await apiGet(
|
|
1657
1721
|
`/api/upgrade/v2/hl/filled-orders/${address}/latest`
|
|
1658
|
-
)
|
|
1722
|
+
),
|
|
1723
|
+
50
|
|
1659
1724
|
);
|
|
1660
1725
|
} catch (e) {
|
|
1661
1726
|
return err(e);
|
|
@@ -1688,10 +1753,11 @@ function registerHyperliquidTools(server2) {
|
|
|
1688
1753
|
},
|
|
1689
1754
|
async ({ address }) => {
|
|
1690
1755
|
try {
|
|
1691
|
-
return
|
|
1756
|
+
return okList(
|
|
1692
1757
|
await apiGet(
|
|
1693
1758
|
`/api/upgrade/v2/hl/orders/${address}/latest`
|
|
1694
|
-
)
|
|
1759
|
+
),
|
|
1760
|
+
50
|
|
1695
1761
|
);
|
|
1696
1762
|
} catch (e) {
|
|
1697
1763
|
return err(e);
|
|
@@ -1724,11 +1790,12 @@ function registerHyperliquidTools(server2) {
|
|
|
1724
1790
|
try {
|
|
1725
1791
|
const params = {};
|
|
1726
1792
|
if (coin) params.coin = coin;
|
|
1727
|
-
return
|
|
1793
|
+
return okList(
|
|
1728
1794
|
await apiGet(
|
|
1729
1795
|
"/api/upgrade/v2/hl/orders/top-open-orders",
|
|
1730
1796
|
params
|
|
1731
|
-
)
|
|
1797
|
+
),
|
|
1798
|
+
50
|
|
1732
1799
|
);
|
|
1733
1800
|
} catch (e) {
|
|
1734
1801
|
return err(e);
|
|
@@ -1785,8 +1852,9 @@ function registerHyperliquidTools(server2) {
|
|
|
1785
1852
|
},
|
|
1786
1853
|
async ({ address }) => {
|
|
1787
1854
|
try {
|
|
1788
|
-
return
|
|
1789
|
-
await apiGet(`/api/upgrade/v2/hl/pnls/${address}`)
|
|
1855
|
+
return okList(
|
|
1856
|
+
await apiGet(`/api/upgrade/v2/hl/pnls/${address}`),
|
|
1857
|
+
100
|
|
1790
1858
|
);
|
|
1791
1859
|
} catch (e) {
|
|
1792
1860
|
return err(e);
|
|
@@ -1851,10 +1919,11 @@ function registerHyperliquidTools(server2) {
|
|
|
1851
1919
|
},
|
|
1852
1920
|
async ({ address }) => {
|
|
1853
1921
|
try {
|
|
1854
|
-
return
|
|
1922
|
+
return okList(
|
|
1855
1923
|
await apiGet(
|
|
1856
1924
|
`/api/upgrade/v2/hl/traders/${address}/completed-trades`
|
|
1857
|
-
)
|
|
1925
|
+
),
|
|
1926
|
+
50
|
|
1858
1927
|
);
|
|
1859
1928
|
} catch (e) {
|
|
1860
1929
|
return err(e);
|
|
@@ -2022,11 +2091,12 @@ function registerHyperliquidTools(server2) {
|
|
|
2022
2091
|
try {
|
|
2023
2092
|
const params = {};
|
|
2024
2093
|
if (coin) params.coin = coin;
|
|
2025
|
-
return
|
|
2094
|
+
return okList(
|
|
2026
2095
|
await apiGet(
|
|
2027
2096
|
"/api/upgrade/v2/hl/whales/latest-events",
|
|
2028
2097
|
params
|
|
2029
|
-
)
|
|
2098
|
+
),
|
|
2099
|
+
50
|
|
2030
2100
|
);
|
|
2031
2101
|
} catch (e) {
|
|
2032
2102
|
return err(e);
|
|
@@ -2064,11 +2134,12 @@ function registerHyperliquidTools(server2) {
|
|
|
2064
2134
|
try {
|
|
2065
2135
|
const params = {};
|
|
2066
2136
|
if (coin) params.coin = coin;
|
|
2067
|
-
return
|
|
2137
|
+
return okList(
|
|
2068
2138
|
await apiGet(
|
|
2069
2139
|
"/api/upgrade/v2/hl/whales/history-long-ratio",
|
|
2070
2140
|
params
|
|
2071
|
-
)
|
|
2141
|
+
),
|
|
2142
|
+
100
|
|
2072
2143
|
);
|
|
2073
2144
|
} catch (e) {
|
|
2074
2145
|
return err(e);
|
|
@@ -2120,11 +2191,12 @@ function registerHyperliquidTools(server2) {
|
|
|
2120
2191
|
try {
|
|
2121
2192
|
const params = {};
|
|
2122
2193
|
if (coin) params.coin = coin;
|
|
2123
|
-
return
|
|
2194
|
+
return okList(
|
|
2124
2195
|
await apiGet(
|
|
2125
2196
|
"/api/upgrade/v2/hl/liquidations/top-positions",
|
|
2126
2197
|
params
|
|
2127
|
-
)
|
|
2198
|
+
),
|
|
2199
|
+
50
|
|
2128
2200
|
);
|
|
2129
2201
|
} catch (e) {
|
|
2130
2202
|
return err(e);
|
|
@@ -2232,10 +2304,11 @@ function registerHyperliquidTools(server2) {
|
|
|
2232
2304
|
},
|
|
2233
2305
|
async ({ coin, interval }) => {
|
|
2234
2306
|
try {
|
|
2235
|
-
return
|
|
2307
|
+
return okList(
|
|
2236
2308
|
await apiGet(
|
|
2237
2309
|
`/api/upgrade/v2/hl/klines-with-taker-vol/${coin}/${interval}`
|
|
2238
|
-
)
|
|
2310
|
+
),
|
|
2311
|
+
100
|
|
2239
2312
|
);
|
|
2240
2313
|
} catch (e) {
|
|
2241
2314
|
return err(e);
|