hvip-mcp-server 0.1.4 → 0.1.6
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/dist/index.js +421 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -21161,7 +21161,27 @@ var publicApi = {
|
|
|
21161
21161
|
getHistoryCandles: (instId, bar, after, before, limit) => request("GET", "/api/v5/market/history-candles", { params: { instId, bar, after, before, limit } }),
|
|
21162
21162
|
getHistoryTrades: (instId, limit) => request("GET", "/api/v5/market/history-trades", { params: { instId, limit } }),
|
|
21163
21163
|
getSystemStatus: () => request("GET", "/api/v5/system/status"),
|
|
21164
|
-
getPriceLimitBatch: (instType, uly, instId) => request("GET", "/api/v5/public/price-limit", { params: { instType, uly, instId } })
|
|
21164
|
+
getPriceLimitBatch: (instType, uly, instId) => request("GET", "/api/v5/public/price-limit", { params: { instType, uly, instId } }),
|
|
21165
|
+
getOptSummary: (uly, expTime) => request("GET", "/api/v5/public/opt-summary", { params: { uly, expTime } }),
|
|
21166
|
+
getInsuranceFund: (instType, uly) => request("GET", "/api/v5/public/insurance-fund", { params: { instType, uly } }),
|
|
21167
|
+
convertContractCoin: (instId, sz, unit, opType) => request("GET", "/api/v5/public/convert-contract-coin", { params: { instId, sz, unit, opType } }),
|
|
21168
|
+
getSupportCoin: () => request("GET", "/api/v5/rubik/stat/trading-data/support-coin"),
|
|
21169
|
+
getTopTraderLongShortRatio: (instId, begin, end) => request("GET", "/api/v5/rubik/stat/contracts/long-short-account-ratio-contract-top-trader", { params: { instId, begin, end } }),
|
|
21170
|
+
getOptionPutCallRatio: (ccy, begin, end) => request("GET", "/api/v5/rubik/stat/option/open-interest-volume-ratio", { params: { ccy, begin, end } }),
|
|
21171
|
+
getLendingRateSummary: (ccy) => request("GET", "/api/v5/finance/savings/lending-rate-summary", { params: { ccy } }),
|
|
21172
|
+
// ── 网格交易机器人(公共) ────────────────────────────────────────────────────
|
|
21173
|
+
getGridAiParam: (instId, algoOrdType, direction) => request("GET", "/api/v5/tradingBot/grid/ai-param", { params: { instId, algoOrdType, direction } }),
|
|
21174
|
+
// ── 大宗交易行情(公共) ─────────────────────────────────────────────────────
|
|
21175
|
+
getBlockTickers: (instType) => request("GET", "/api/v5/market/block-tickers", { params: { instType } }),
|
|
21176
|
+
// ── 价差交易(公共) ──────────────────────────────────────────────────────────
|
|
21177
|
+
getSpreads: (sprdId, baseCcy, instId, state) => request("GET", "/api/v5/sprd/spreads", { params: { sprdId, baseCcy, instId, state } }),
|
|
21178
|
+
getSpreadTicker: (sprdId) => request("GET", "/api/v5/sprd/ticker", { params: { sprdId } }),
|
|
21179
|
+
getSpreadOrderbook: (sprdId, sz) => request("GET", "/api/v5/sprd/books", { params: { sprdId, sz } }),
|
|
21180
|
+
getSpreadTrades: (sprdId, limit) => request("GET", "/api/v5/sprd/trades", { params: { sprdId, limit } }),
|
|
21181
|
+
getSpreadCandles: (sprdId, bar, limit) => request("GET", "/api/v5/sprd/candles", { params: { sprdId, bar, limit } }),
|
|
21182
|
+
// ── 公告(公共) ──────────────────────────────────────────────────────────────
|
|
21183
|
+
getAnnouncements: (annType, lang) => request("GET", "/api/v5/support/announcements", { params: { annType, lang } }),
|
|
21184
|
+
getAnnouncementTypes: () => request("GET", "/api/v5/support/announcement-types")
|
|
21165
21185
|
};
|
|
21166
21186
|
var privateApi = {
|
|
21167
21187
|
getBalance: (auth, ccy) => request("GET", "/api/v5/account/balance", { params: { ccy }, auth }),
|
|
@@ -21185,6 +21205,16 @@ var privateApi = {
|
|
|
21185
21205
|
getDepositAddress: (auth, ccy) => request("GET", "/api/v5/asset/deposit-address", { params: { ccy }, auth }),
|
|
21186
21206
|
getDepositHistory: (auth, ccy, limit) => request("GET", "/api/v5/asset/deposit-history", { params: { ccy, limit }, auth }),
|
|
21187
21207
|
getWithdrawalHistory: (auth, ccy, limit) => request("GET", "/api/v5/asset/withdrawal-history", { params: { ccy, limit }, auth }),
|
|
21208
|
+
getEthStakingBalance: (auth) => request("GET", "/api/v5/finance/staking-defi/eth/balance", { auth }),
|
|
21209
|
+
getEthStakingHistory: (auth, limit) => request("GET", "/api/v5/finance/staking-defi/eth/purchase-redeem-history", { params: { limit }, auth }),
|
|
21210
|
+
getSolStakingBalance: (auth) => request("GET", "/api/v5/finance/staking-defi/sol/balance", { auth }),
|
|
21211
|
+
// ── 网格交易机器人(私有) ────────────────────────────────────────────────────
|
|
21212
|
+
getGridOrdersPending: (auth, algoOrdType, instId, instType) => request("GET", "/api/v5/tradingBot/grid/orders-algo-pending", { params: { algoOrdType, instId, instType }, auth }),
|
|
21213
|
+
getGridOrdersHistory: (auth, algoOrdType, instId, instType) => request("GET", "/api/v5/tradingBot/grid/orders-algo-history", { params: { algoOrdType, instId, instType }, auth }),
|
|
21214
|
+
getGridSubOrders: (auth, algoId, algoOrdType, type, groupId) => request("GET", "/api/v5/tradingBot/grid/sub-orders", { params: { algoId, algoOrdType, type, groupId }, auth }),
|
|
21215
|
+
// ── 定投机器人(私有) ────────────────────────────────────────────────────────
|
|
21216
|
+
getRecurringOrdersPending: (auth) => request("GET", "/api/v5/tradingBot/recurring/orders-algo-pending", { auth }),
|
|
21217
|
+
getRecurringOrdersHistory: (auth) => request("GET", "/api/v5/tradingBot/recurring/orders-algo-history", { auth }),
|
|
21188
21218
|
getAlgoOrders: (auth, ordType, instType) => request("GET", "/api/v5/trade/orders-algo-pending", { params: { ordType, instType }, auth }),
|
|
21189
21219
|
getAlgoOrdersHistory: (auth, ordType, state, instType) => request("GET", "/api/v5/trade/orders-algo-history", { params: { ordType, state, instType }, auth }),
|
|
21190
21220
|
placeAlgoOrder: (auth, body) => request("POST", "/api/v5/trade/order-algo", { body, auth }),
|
|
@@ -21410,6 +21440,21 @@ function registerMarketTools(server) {
|
|
|
21410
21440
|
}
|
|
21411
21441
|
}
|
|
21412
21442
|
);
|
|
21443
|
+
server.tool(
|
|
21444
|
+
"okx_get_block_tickers",
|
|
21445
|
+
"\u83B7\u53D6\u5927\u5B97\u4EA4\u6613\uFF08Block Trading\uFF09\u5B9E\u65F6\u884C\u60C5\uFF0C\u542B\u6210\u4EA4\u91CF\u7EDF\u8BA1\u3002\u5927\u5B97\u4EA4\u6613\u4E13\u4E3A\u673A\u6784\u5927\u989D\u4EA4\u6613\u8BBE\u8BA1\uFF0C\u6210\u4EA4\u6570\u636E\u53CD\u6620\u673A\u6784\u8D44\u91D1\u52A8\u5411\u3002",
|
|
21446
|
+
{
|
|
21447
|
+
instType: external_exports.enum(["SPOT", "SWAP", "FUTURES", "OPTION"]).describe("\u4EA7\u54C1\u7C7B\u578B")
|
|
21448
|
+
},
|
|
21449
|
+
async ({ instType }) => {
|
|
21450
|
+
try {
|
|
21451
|
+
const data = await publicApi.getBlockTickers(instType);
|
|
21452
|
+
return toResult(data);
|
|
21453
|
+
} catch (e) {
|
|
21454
|
+
return toError(e);
|
|
21455
|
+
}
|
|
21456
|
+
}
|
|
21457
|
+
);
|
|
21413
21458
|
}
|
|
21414
21459
|
|
|
21415
21460
|
// src/tools/public.ts
|
|
@@ -21501,6 +21546,85 @@ function registerPublicTools(server) {
|
|
|
21501
21546
|
}
|
|
21502
21547
|
}
|
|
21503
21548
|
);
|
|
21549
|
+
server.tool(
|
|
21550
|
+
"okx_get_opt_summary",
|
|
21551
|
+
"\u83B7\u53D6\u671F\u6743\u5E02\u573A\u6458\u8981\u6570\u636E\uFF0C\u542B\u5404\u5230\u671F\u65E5\u7684\u9690\u542B\u6CE2\u52A8\u7387\uFF08IV\uFF09\u3001\u672A\u5E73\u4ED3\u91CF\u548C\u6210\u4EA4\u91CF\u5206\u5E03\u3002\u7528\u4E8E\u671F\u6743\u4EA4\u6613\u524D\u7684\u6574\u4F53\u5E02\u573A\u626B\u63CF\u3002",
|
|
21552
|
+
{
|
|
21553
|
+
uly: external_exports.string().describe("\u6807\u7684\u6307\u6570\uFF0C\u5982 BTC-USD\u3001ETH-USD"),
|
|
21554
|
+
expTime: external_exports.string().optional().describe("\u5230\u671F\u65E5\u7B5B\u9009\uFF0C\u683C\u5F0F YYYYMMDD\uFF0C\u5982 20250101")
|
|
21555
|
+
},
|
|
21556
|
+
async ({ uly, expTime }) => {
|
|
21557
|
+
try {
|
|
21558
|
+
const data = await publicApi.getOptSummary(uly, expTime);
|
|
21559
|
+
return toResult(data);
|
|
21560
|
+
} catch (e) {
|
|
21561
|
+
return toError(e);
|
|
21562
|
+
}
|
|
21563
|
+
}
|
|
21564
|
+
);
|
|
21565
|
+
server.tool(
|
|
21566
|
+
"okx_get_insurance_fund",
|
|
21567
|
+
"\u83B7\u53D6OKX\u4FDD\u9669\u57FA\u91D1\u4F59\u989D\u53D8\u52A8\u5386\u53F2\u3002\u4FDD\u9669\u57FA\u91D1\u89C4\u6A21\u53CD\u6620\u4EA4\u6613\u6240\u62B5\u5FA1\u6781\u7AEF\u884C\u60C5\u7684\u80FD\u529B\uFF0C\u4E5F\u662F\u8861\u91CF\u5E73\u53F0\u98CE\u9669\u7684\u6307\u6807\u3002",
|
|
21568
|
+
{
|
|
21569
|
+
instType: external_exports.enum(["SWAP", "FUTURES", "OPTION", "MARGIN"]).describe("\u4EA7\u54C1\u7C7B\u578B"),
|
|
21570
|
+
uly: external_exports.string().optional().describe("\u6807\u7684\u6307\u6570\uFF0C\u5982 BTC-USD\uFF08SWAP/FUTURES/OPTION\u5FC5\u586B\uFF09")
|
|
21571
|
+
},
|
|
21572
|
+
async ({ instType, uly }) => {
|
|
21573
|
+
try {
|
|
21574
|
+
const data = await publicApi.getInsuranceFund(instType, uly);
|
|
21575
|
+
return toResult(data);
|
|
21576
|
+
} catch (e) {
|
|
21577
|
+
return toError(e);
|
|
21578
|
+
}
|
|
21579
|
+
}
|
|
21580
|
+
);
|
|
21581
|
+
server.tool(
|
|
21582
|
+
"okx_convert_contract_coin",
|
|
21583
|
+
"\u5408\u7EA6\u5F20\u6570\u4E0E\u5E01\u6570\u4E92\u6362\u8BA1\u7B97\u3002\u4E0B\u5408\u7EA6\u5355\u65F6\u5148\u7528\u6B64\u63A5\u53E3\u6362\u7B97\u5F20\u6570\uFF0C\u907F\u514D\u6570\u91CF\u586B\u9519\u3002",
|
|
21584
|
+
{
|
|
21585
|
+
instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP"),
|
|
21586
|
+
sz: external_exports.string().describe("\u6570\u91CF\uFF08\u5F20\u6570\u6216\u5E01\u6570\uFF0C\u53D6\u51B3\u4E8Eunit\uFF09"),
|
|
21587
|
+
unit: external_exports.enum(["coin", "usds", "contracts"]).describe("sz\u7684\u5355\u4F4D\uFF1Acoin=\u5E01\uFF0Ccontracts=\u5F20"),
|
|
21588
|
+
opType: external_exports.enum(["open", "close"]).describe("\u5F00\u4ED3\u6216\u5E73\u4ED3")
|
|
21589
|
+
},
|
|
21590
|
+
async ({ instId, sz, unit, opType }) => {
|
|
21591
|
+
try {
|
|
21592
|
+
const data = await publicApi.convertContractCoin(instId, sz, unit, opType);
|
|
21593
|
+
return toResult(data);
|
|
21594
|
+
} catch (e) {
|
|
21595
|
+
return toError(e);
|
|
21596
|
+
}
|
|
21597
|
+
}
|
|
21598
|
+
);
|
|
21599
|
+
server.tool(
|
|
21600
|
+
"okx_get_announcements",
|
|
21601
|
+
"\u83B7\u53D6OKX\u5B98\u65B9\u516C\u544A\u5217\u8868\uFF08\u7EF4\u62A4\u901A\u77E5\u3001\u65B0\u5E01\u4E0A\u7EBF\u3001\u6D3B\u52A8\u7B49\uFF09\u3002\u5B9A\u671F\u67E5\u8BE2\u53EF\u53CA\u65F6\u4E86\u89E3\u5E73\u53F0\u53D8\u5316\uFF0C\u63D0\u524D\u505A\u597D\u98CE\u9669\u51C6\u5907\u3002",
|
|
21602
|
+
{
|
|
21603
|
+
annType: external_exports.string().optional().describe("\u516C\u544A\u7C7B\u578BID\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\u3002\u53EF\u5148\u8C03\u7528 okx_get_announcement_types \u67E5\u8BE2\u53EF\u7528\u7C7B\u578B"),
|
|
21604
|
+
lang: external_exports.enum(["zh-Hans", "en-US"]).optional().describe("\u8BED\u8A00\uFF0C\u9ED8\u8BA4\u4E2D\u6587")
|
|
21605
|
+
},
|
|
21606
|
+
async ({ annType, lang }) => {
|
|
21607
|
+
try {
|
|
21608
|
+
const data = await publicApi.getAnnouncements(annType, lang);
|
|
21609
|
+
return toResult(data);
|
|
21610
|
+
} catch (e) {
|
|
21611
|
+
return toError(e);
|
|
21612
|
+
}
|
|
21613
|
+
}
|
|
21614
|
+
);
|
|
21615
|
+
server.tool(
|
|
21616
|
+
"okx_get_announcement_types",
|
|
21617
|
+
"\u83B7\u53D6OKX\u516C\u544A\u5206\u7C7B\u5217\u8868\uFF08\u5982\u7EF4\u62A4\u901A\u77E5\u3001\u4E0A\u65B0\u516C\u544A\u3001\u6D3B\u52A8\u516C\u544A\u7B49\uFF09\u3002\u7528\u4E8E\u7B5B\u9009\u7279\u5B9A\u7C7B\u578B\u516C\u544A\u3002",
|
|
21618
|
+
{},
|
|
21619
|
+
async () => {
|
|
21620
|
+
try {
|
|
21621
|
+
const data = await publicApi.getAnnouncementTypes();
|
|
21622
|
+
return toResult(data);
|
|
21623
|
+
} catch (e) {
|
|
21624
|
+
return toError(e);
|
|
21625
|
+
}
|
|
21626
|
+
}
|
|
21627
|
+
);
|
|
21504
21628
|
}
|
|
21505
21629
|
|
|
21506
21630
|
// src/tools/account.ts
|
|
@@ -21973,6 +22097,66 @@ function registerStatsTools(server) {
|
|
|
21973
22097
|
}
|
|
21974
22098
|
}
|
|
21975
22099
|
);
|
|
22100
|
+
server.tool(
|
|
22101
|
+
"okx_get_stats_support_coin",
|
|
22102
|
+
"\u83B7\u53D6\u4EA4\u6613\u5927\u6570\u636E\u6A21\u5757\u652F\u6301\u67E5\u8BE2\u7684\u6240\u6709\u5E01\u79CD\u5217\u8868\u3002\u5728\u8C03\u7528\u5176\u4ED6\u4EA4\u6613\u5927\u6570\u636E\u63A5\u53E3\u524D\uFF0C\u53EF\u5148\u67E5\u8BE2\u6B64\u63A5\u53E3\u786E\u8BA4\u5E01\u79CD\u53EF\u7528\u3002",
|
|
22103
|
+
{},
|
|
22104
|
+
async () => {
|
|
22105
|
+
try {
|
|
22106
|
+
const data = await publicApi.getSupportCoin();
|
|
22107
|
+
return toResult(data);
|
|
22108
|
+
} catch (e) {
|
|
22109
|
+
return toError(e);
|
|
22110
|
+
}
|
|
22111
|
+
}
|
|
22112
|
+
);
|
|
22113
|
+
server.tool(
|
|
22114
|
+
"okx_get_top_trader_long_short_ratio",
|
|
22115
|
+
"\u83B7\u53D6\u7CBE\u82F1\u4EA4\u6613\u5458\u591A\u7A7A\u6301\u4ED3\u6BD4\u4F8B\uFF08\u4EC5\u7EDF\u8BA1\u524D5%\u5927\u6237\uFF09\u3002\u5927\u6237\u7684\u4ED3\u4F4D\u6BD4\u6563\u6237\u66F4\u5177\u9884\u6D4B\u4EF7\u503C\uFF0C\u80CC\u79BB\u65F6\u5F80\u5F80\u662F\u9006\u52BF\u4FE1\u53F7\u3002",
|
|
22116
|
+
{
|
|
22117
|
+
instId: external_exports.string().describe("\u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3001ETH-USDT-SWAP"),
|
|
22118
|
+
begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09"),
|
|
22119
|
+
end: external_exports.string().optional().describe("\u7ED3\u675F\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09")
|
|
22120
|
+
},
|
|
22121
|
+
async ({ instId, begin, end }) => {
|
|
22122
|
+
try {
|
|
22123
|
+
const data = await publicApi.getTopTraderLongShortRatio(instId, begin, end);
|
|
22124
|
+
return toResult(data);
|
|
22125
|
+
} catch (e) {
|
|
22126
|
+
return toError(e);
|
|
22127
|
+
}
|
|
22128
|
+
}
|
|
22129
|
+
);
|
|
22130
|
+
server.tool(
|
|
22131
|
+
"okx_get_put_call_ratio",
|
|
22132
|
+
"\u83B7\u53D6\u671F\u6743Put/Call\u6BD4\uFF08\u672A\u5E73\u4ED3\u91CF\u548C\u6210\u4EA4\u91CF\uFF09\u3002Put/Call > 1 \u8868\u793A\u5E02\u573A\u504F\u5411\u770B\u8DCC\uFF0C\u662F\u8861\u91CF\u671F\u6743\u5E02\u573A\u60C5\u7EEA\u7684\u7ECF\u5178\u6307\u6807\u3002",
|
|
22133
|
+
{
|
|
22134
|
+
ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3001ETH"),
|
|
22135
|
+
begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09"),
|
|
22136
|
+
end: external_exports.string().optional().describe("\u7ED3\u675F\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09")
|
|
22137
|
+
},
|
|
22138
|
+
async ({ ccy, begin, end }) => {
|
|
22139
|
+
try {
|
|
22140
|
+
const data = await publicApi.getOptionPutCallRatio(ccy, begin, end);
|
|
22141
|
+
return toResult(data);
|
|
22142
|
+
} catch (e) {
|
|
22143
|
+
return toError(e);
|
|
22144
|
+
}
|
|
22145
|
+
}
|
|
22146
|
+
);
|
|
22147
|
+
server.tool(
|
|
22148
|
+
"okx_get_lending_rate_summary",
|
|
22149
|
+
"\u83B7\u53D6\u6D3B\u671F\u501F\u5E01\u5F53\u524D\u5E02\u573A\u5229\u7387\u6C47\u603B\uFF08\u516C\u5F00\u6570\u636E\uFF0C\u65E0\u9700API Key\uFF09\u3002\u7528\u4E8E\u5224\u65AD\u501F\u8D37\u6210\u672C\uFF0C\u6216\u5BFB\u627E\u95F2\u7F6E\u8D44\u91D1\u7684\u6700\u4F18\u51FA\u501F\u5229\u7387\u3002",
|
|
22150
|
+
{ ccy: external_exports.string().optional().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3001USDT\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8") },
|
|
22151
|
+
async ({ ccy }) => {
|
|
22152
|
+
try {
|
|
22153
|
+
const data = await publicApi.getLendingRateSummary(ccy);
|
|
22154
|
+
return toResult(data);
|
|
22155
|
+
} catch (e) {
|
|
22156
|
+
return toError(e);
|
|
22157
|
+
}
|
|
22158
|
+
}
|
|
22159
|
+
);
|
|
21976
22160
|
}
|
|
21977
22161
|
|
|
21978
22162
|
// src/tools/subaccount.ts
|
|
@@ -22085,6 +22269,50 @@ function registerFinanceTools(server, auth) {
|
|
|
22085
22269
|
}
|
|
22086
22270
|
}
|
|
22087
22271
|
);
|
|
22272
|
+
server.tool(
|
|
22273
|
+
"okx_get_eth_staking_balance",
|
|
22274
|
+
"\u67E5\u8BE2ETH\u8D28\u62BC\uFF08BETH\uFF09\u6301\u4ED3\u4F59\u989D\uFF0C\u542B\u8D28\u62BC\u603B\u91CF\u3001BETH\u6570\u91CF\u548C\u5F53\u524D\u5E74\u5316\u6536\u76CA\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
|
|
22275
|
+
{},
|
|
22276
|
+
async () => {
|
|
22277
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22278
|
+
try {
|
|
22279
|
+
const data = await privateApi.getEthStakingBalance(auth);
|
|
22280
|
+
return toResult(data);
|
|
22281
|
+
} catch (e) {
|
|
22282
|
+
return toError(e);
|
|
22283
|
+
}
|
|
22284
|
+
}
|
|
22285
|
+
);
|
|
22286
|
+
server.tool(
|
|
22287
|
+
"okx_get_eth_staking_history",
|
|
22288
|
+
"\u67E5\u8BE2ETH\u8D28\u62BC/\u8D4E\u56DE\u5386\u53F2\u8BB0\u5F55\uFF0C\u542B\u64CD\u4F5C\u65F6\u95F4\u3001\u6570\u91CF\u548C\u72B6\u6001\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
|
|
22289
|
+
{
|
|
22290
|
+
limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
|
|
22291
|
+
},
|
|
22292
|
+
async ({ limit }) => {
|
|
22293
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22294
|
+
try {
|
|
22295
|
+
const data = await privateApi.getEthStakingHistory(auth, limit);
|
|
22296
|
+
return toResult(data);
|
|
22297
|
+
} catch (e) {
|
|
22298
|
+
return toError(e);
|
|
22299
|
+
}
|
|
22300
|
+
}
|
|
22301
|
+
);
|
|
22302
|
+
server.tool(
|
|
22303
|
+
"okx_get_sol_staking_balance",
|
|
22304
|
+
"\u67E5\u8BE2SOL\u8D28\u62BC\u6301\u4ED3\u4F59\u989D\uFF0C\u542B\u8D28\u62BC\u603B\u91CF\u548C\u5F53\u524D\u5E74\u5316\u6536\u76CA\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
|
|
22305
|
+
{},
|
|
22306
|
+
async () => {
|
|
22307
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22308
|
+
try {
|
|
22309
|
+
const data = await privateApi.getSolStakingBalance(auth);
|
|
22310
|
+
return toResult(data);
|
|
22311
|
+
} catch (e) {
|
|
22312
|
+
return toError(e);
|
|
22313
|
+
}
|
|
22314
|
+
}
|
|
22315
|
+
);
|
|
22088
22316
|
}
|
|
22089
22317
|
|
|
22090
22318
|
// src/tools/outcomes.ts
|
|
@@ -22201,17 +22429,208 @@ function registerOutcomesTools(server) {
|
|
|
22201
22429
|
);
|
|
22202
22430
|
}
|
|
22203
22431
|
|
|
22432
|
+
// src/tools/bot.ts
|
|
22433
|
+
function registerBotTools(server, auth) {
|
|
22434
|
+
server.tool(
|
|
22435
|
+
"okx_get_grid_ai_param",
|
|
22436
|
+
"\u83B7\u53D6OKX\u667A\u80FD\u7F51\u683C\u63A8\u8350\u53C2\u6570\uFF08\u65E0\u9700API Key\uFF09\u3002\u5305\u542B\u5EFA\u8BAE\u7684\u7F51\u683C\u4E0A\u4E0B\u754C\u3001\u683C\u6570\u3001\u9884\u671F\u5E74\u5316\u6536\u76CA\u3002\u5F00\u7F51\u683C\u524D\u5FEB\u901F\u8BC4\u4F30\u53C2\u6570\u5408\u7406\u6027\u3002",
|
|
22437
|
+
{
|
|
22438
|
+
instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3001BTC-USDT-SWAP"),
|
|
22439
|
+
algoOrdType: external_exports.enum(["grid", "contract_grid", "moon_grid"]).describe("\u7F51\u683C\u7C7B\u578B\uFF1Agrid=\u73B0\u8D27\u7F51\u683C\uFF0Ccontract_grid=\u5408\u7EA6\u7F51\u683C\uFF0Cmoon_grid=\u5929\u5730\u7F51\u683C"),
|
|
22440
|
+
direction: external_exports.enum(["long", "short", "neutral"]).optional().describe("\u5408\u7EA6\u7F51\u683C\u65B9\u5411\uFF08\u4EC5contract_grid\u9700\u8981\uFF09")
|
|
22441
|
+
},
|
|
22442
|
+
async ({ instId, algoOrdType, direction }) => {
|
|
22443
|
+
try {
|
|
22444
|
+
const data = await publicApi.getGridAiParam(instId, algoOrdType, direction);
|
|
22445
|
+
return toResult(data);
|
|
22446
|
+
} catch (e) {
|
|
22447
|
+
return toError(e);
|
|
22448
|
+
}
|
|
22449
|
+
}
|
|
22450
|
+
);
|
|
22451
|
+
server.tool(
|
|
22452
|
+
"okx_get_grid_orders_pending",
|
|
22453
|
+
"\u67E5\u8BE2\u5F53\u524D\u8FD0\u884C\u4E2D\u7684\u7F51\u683C\u7B56\u7565\u5217\u8868\uFF0C\u542B\u6BCF\u4E2A\u7F51\u683C\u7684\u76C8\u4E8F\u3001\u6210\u4EA4\u6B21\u6570\u548C\u8D44\u91D1\u5360\u7528\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
|
|
22454
|
+
{
|
|
22455
|
+
algoOrdType: external_exports.enum(["grid", "contract_grid", "moon_grid"]).describe("\u7F51\u683C\u7C7B\u578B"),
|
|
22456
|
+
instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
|
|
22457
|
+
instType: external_exports.enum(["SPOT", "MARGIN", "FUTURES", "SWAP"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u7B5B\u9009")
|
|
22458
|
+
},
|
|
22459
|
+
async ({ algoOrdType, instId, instType }) => {
|
|
22460
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22461
|
+
try {
|
|
22462
|
+
const data = await privateApi.getGridOrdersPending(auth, algoOrdType, instId, instType);
|
|
22463
|
+
return toResult(data);
|
|
22464
|
+
} catch (e) {
|
|
22465
|
+
return toError(e);
|
|
22466
|
+
}
|
|
22467
|
+
}
|
|
22468
|
+
);
|
|
22469
|
+
server.tool(
|
|
22470
|
+
"okx_get_grid_orders_history",
|
|
22471
|
+
"\u67E5\u8BE2\u5DF2\u505C\u6B62\u7684\u5386\u53F2\u7F51\u683C\u7B56\u7565\uFF0C\u542B\u6700\u7EC8\u76C8\u4E8F\u548C\u8FD0\u884C\u65F6\u957F\u3002\u7528\u4E8E\u8BC4\u4F30\u5386\u53F2\u7B56\u7565\u6548\u679C\uFF0C\u4F18\u5316\u4E0B\u6B21\u53C2\u6570\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
|
|
22472
|
+
{
|
|
22473
|
+
algoOrdType: external_exports.enum(["grid", "contract_grid", "moon_grid"]).describe("\u7F51\u683C\u7C7B\u578B"),
|
|
22474
|
+
instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
|
|
22475
|
+
instType: external_exports.enum(["SPOT", "MARGIN", "FUTURES", "SWAP"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u7B5B\u9009")
|
|
22476
|
+
},
|
|
22477
|
+
async ({ algoOrdType, instId, instType }) => {
|
|
22478
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22479
|
+
try {
|
|
22480
|
+
const data = await privateApi.getGridOrdersHistory(auth, algoOrdType, instId, instType);
|
|
22481
|
+
return toResult(data);
|
|
22482
|
+
} catch (e) {
|
|
22483
|
+
return toError(e);
|
|
22484
|
+
}
|
|
22485
|
+
}
|
|
22486
|
+
);
|
|
22487
|
+
server.tool(
|
|
22488
|
+
"okx_get_grid_sub_orders",
|
|
22489
|
+
"\u67E5\u8BE2\u67D0\u4E2A\u7F51\u683C\u7B56\u7565\u7684\u5B50\u8BA2\u5355\u5217\u8868\uFF08\u6BCF\u4E00\u683C\u7684\u4E70\u5356\u8BB0\u5F55\uFF09\u3002\u7528\u4E8E\u5206\u6790\u7F51\u683C\u6210\u4EA4\u60C5\u51B5\uFF0C\u9A8C\u8BC1\u7B56\u7565\u662F\u5426\u6309\u9884\u671F\u8FD0\u884C\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
|
|
22490
|
+
{
|
|
22491
|
+
algoId: external_exports.string().describe("\u7F51\u683C\u7B56\u7565ID"),
|
|
22492
|
+
algoOrdType: external_exports.enum(["grid", "contract_grid", "moon_grid"]).describe("\u7F51\u683C\u7C7B\u578B"),
|
|
22493
|
+
type: external_exports.enum(["filled", "unfilled"]).describe("filled=\u5DF2\u6210\u4EA4\uFF0Cunfilled=\u672A\u6210\u4EA4")
|
|
22494
|
+
},
|
|
22495
|
+
async ({ algoId, algoOrdType, type }) => {
|
|
22496
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22497
|
+
try {
|
|
22498
|
+
const data = await privateApi.getGridSubOrders(auth, algoId, algoOrdType, type);
|
|
22499
|
+
return toResult(data);
|
|
22500
|
+
} catch (e) {
|
|
22501
|
+
return toError(e);
|
|
22502
|
+
}
|
|
22503
|
+
}
|
|
22504
|
+
);
|
|
22505
|
+
server.tool(
|
|
22506
|
+
"okx_get_recurring_orders_pending",
|
|
22507
|
+
"\u67E5\u8BE2\u5F53\u524D\u8FD0\u884C\u4E2D\u7684\u5B9A\u6295\u8BA1\u5212\u5217\u8868\uFF0C\u542B\u6295\u8D44\u5E01\u79CD\u3001\u5468\u671F\u3001\u5DF2\u6295\u603B\u989D\u548C\u5F53\u524D\u76C8\u4E8F\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
|
|
22508
|
+
{},
|
|
22509
|
+
async () => {
|
|
22510
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22511
|
+
try {
|
|
22512
|
+
const data = await privateApi.getRecurringOrdersPending(auth);
|
|
22513
|
+
return toResult(data);
|
|
22514
|
+
} catch (e) {
|
|
22515
|
+
return toError(e);
|
|
22516
|
+
}
|
|
22517
|
+
}
|
|
22518
|
+
);
|
|
22519
|
+
server.tool(
|
|
22520
|
+
"okx_get_recurring_orders_history",
|
|
22521
|
+
"\u67E5\u8BE2\u5DF2\u7ED3\u675F\u7684\u5386\u53F2\u5B9A\u6295\u8BA1\u5212\uFF0C\u542B\u603B\u6295\u5165\u3001\u603B\u6536\u76CA\u548C\u5E74\u5316\u6536\u76CA\u7387\u3002\u7528\u4E8E\u8BC4\u4F30\u5B9A\u6295\u7B56\u7565\u957F\u671F\u6548\u679C\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
|
|
22522
|
+
{},
|
|
22523
|
+
async () => {
|
|
22524
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22525
|
+
try {
|
|
22526
|
+
const data = await privateApi.getRecurringOrdersHistory(auth);
|
|
22527
|
+
return toResult(data);
|
|
22528
|
+
} catch (e) {
|
|
22529
|
+
return toError(e);
|
|
22530
|
+
}
|
|
22531
|
+
}
|
|
22532
|
+
);
|
|
22533
|
+
}
|
|
22534
|
+
|
|
22535
|
+
// src/tools/spread.ts
|
|
22536
|
+
function registerSpreadTools(server) {
|
|
22537
|
+
server.tool(
|
|
22538
|
+
"okx_get_spreads",
|
|
22539
|
+
"\u83B7\u53D6\u4EF7\u5DEE\u5408\u7EA6\u4EA7\u54C1\u5217\u8868\u3002\u4EF7\u5DEE\u4EA4\u6613\u662F\u540C\u65F6\u4E70\u5165\u4E00\u4E2A\u5408\u7EA6\u3001\u5356\u51FA\u53E6\u4E00\u4E2A\u5408\u7EA6\uFF0C\u6355\u83B7\u4E24\u8005\u4EF7\u683C\u4E4B\u5DEE\uFF0C\u5E38\u7528\u4E8E\u8DE8\u671F\u5957\u5229\u3002",
|
|
22540
|
+
{
|
|
22541
|
+
sprdId: external_exports.string().optional().describe("\u4EF7\u5DEE\u5408\u7EA6ID\uFF0C\u5982 BTC-USDT_BTC-USDT-SWAP"),
|
|
22542
|
+
baseCcy: external_exports.string().optional().describe("\u6807\u7684\u5E01\u79CD\uFF0C\u5982 BTC"),
|
|
22543
|
+
instId: external_exports.string().optional().describe("\u817F\u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u7CBE\u786E\u7B5B\u9009"),
|
|
22544
|
+
state: external_exports.enum(["live", "expired", "suspend"]).optional().describe("\u5408\u7EA6\u72B6\u6001")
|
|
22545
|
+
},
|
|
22546
|
+
async ({ sprdId, baseCcy, instId, state }) => {
|
|
22547
|
+
try {
|
|
22548
|
+
const data = await publicApi.getSpreads(sprdId, baseCcy, instId, state);
|
|
22549
|
+
return toResult(data);
|
|
22550
|
+
} catch (e) {
|
|
22551
|
+
return toError(e);
|
|
22552
|
+
}
|
|
22553
|
+
}
|
|
22554
|
+
);
|
|
22555
|
+
server.tool(
|
|
22556
|
+
"okx_get_spread_ticker",
|
|
22557
|
+
"\u83B7\u53D6\u5355\u4E2A\u4EF7\u5DEE\u5408\u7EA6\u5B9E\u65F6\u884C\u60C5\uFF0C\u542B\u6700\u65B0\u4EF7\u3001\u4E70\u5356\u4EF7\u5DEE\u3002\u5148\u7528 okx_get_spreads \u67E5\u8BE2\u53EF\u7528\u7684\u4EF7\u5DEE\u5408\u7EA6ID\u3002",
|
|
22558
|
+
{
|
|
22559
|
+
sprdId: external_exports.string().describe("\u4EF7\u5DEE\u5408\u7EA6ID\uFF0C\u5982 BTC-USD-SWAP_BTC-USD-260925")
|
|
22560
|
+
},
|
|
22561
|
+
async ({ sprdId }) => {
|
|
22562
|
+
try {
|
|
22563
|
+
const data = await publicApi.getSpreadTicker(sprdId);
|
|
22564
|
+
return toResult(data);
|
|
22565
|
+
} catch (e) {
|
|
22566
|
+
return toError(e);
|
|
22567
|
+
}
|
|
22568
|
+
}
|
|
22569
|
+
);
|
|
22570
|
+
server.tool(
|
|
22571
|
+
"okx_get_spread_orderbook",
|
|
22572
|
+
"\u83B7\u53D6\u4EF7\u5DEE\u5408\u7EA6\u8BA2\u5355\u7C3F\u6DF1\u5EA6\u3002\u5206\u6790\u4E70\u5356\u53CC\u65B9\u6302\u5355\u5206\u5E03\uFF0C\u5224\u65AD\u4EF7\u5DEE\u5E02\u573A\u7684\u6D41\u52A8\u6027\u8D28\u91CF\u3002",
|
|
22573
|
+
{
|
|
22574
|
+
sprdId: external_exports.string().describe("\u4EF7\u5DEE\u5408\u7EA6ID"),
|
|
22575
|
+
sz: external_exports.number().int().min(1).max(400).optional().describe("\u6DF1\u5EA6\u6863\u4F4D\uFF0C\u9ED8\u8BA420")
|
|
22576
|
+
},
|
|
22577
|
+
async ({ sprdId, sz }) => {
|
|
22578
|
+
try {
|
|
22579
|
+
const data = await publicApi.getSpreadOrderbook(sprdId, sz);
|
|
22580
|
+
return toResult(data);
|
|
22581
|
+
} catch (e) {
|
|
22582
|
+
return toError(e);
|
|
22583
|
+
}
|
|
22584
|
+
}
|
|
22585
|
+
);
|
|
22586
|
+
server.tool(
|
|
22587
|
+
"okx_get_spread_trades",
|
|
22588
|
+
"\u83B7\u53D6\u4EF7\u5DEE\u5408\u7EA6\u6700\u65B0\u6210\u4EA4\u8BB0\u5F55\u3002\u7528\u4E8E\u5206\u6790\u5E02\u573A\u53C2\u4E0E\u8005\u5BF9\u5F53\u524D\u4EF7\u5DEE\u6C34\u5E73\u7684\u8BA4\u53EF\u5EA6\u3002",
|
|
22589
|
+
{
|
|
22590
|
+
sprdId: external_exports.string().describe("\u4EF7\u5DEE\u5408\u7EA6ID"),
|
|
22591
|
+
limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420")
|
|
22592
|
+
},
|
|
22593
|
+
async ({ sprdId, limit }) => {
|
|
22594
|
+
try {
|
|
22595
|
+
const data = await publicApi.getSpreadTrades(sprdId, limit);
|
|
22596
|
+
return toResult(data);
|
|
22597
|
+
} catch (e) {
|
|
22598
|
+
return toError(e);
|
|
22599
|
+
}
|
|
22600
|
+
}
|
|
22601
|
+
);
|
|
22602
|
+
server.tool(
|
|
22603
|
+
"okx_get_spread_candles",
|
|
22604
|
+
"\u83B7\u53D6\u4EF7\u5DEE\u5408\u7EA6K\u7EBF\u6570\u636E\u3002\u7528\u4E8E\u7814\u7A76\u4EF7\u5DEE\u5386\u53F2\u8D70\u52BF\uFF0C\u8BC6\u522B\u5747\u503C\u56DE\u5F52\u673A\u4F1A\u3002",
|
|
22605
|
+
{
|
|
22606
|
+
sprdId: external_exports.string().describe("\u4EF7\u5DEE\u5408\u7EA6ID"),
|
|
22607
|
+
bar: external_exports.enum(["1m", "5m", "15m", "30m", "1H", "4H", "1D"]).optional().describe("K\u7EBF\u5468\u671F\uFF0C\u9ED8\u8BA41H"),
|
|
22608
|
+
limit: external_exports.number().int().min(1).max(300).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
|
|
22609
|
+
},
|
|
22610
|
+
async ({ sprdId, bar, limit }) => {
|
|
22611
|
+
try {
|
|
22612
|
+
const data = await publicApi.getSpreadCandles(sprdId, bar, limit);
|
|
22613
|
+
return toResult(data);
|
|
22614
|
+
} catch (e) {
|
|
22615
|
+
return toError(e);
|
|
22616
|
+
}
|
|
22617
|
+
}
|
|
22618
|
+
);
|
|
22619
|
+
}
|
|
22620
|
+
|
|
22204
22621
|
// src/index.ts
|
|
22205
22622
|
async function main() {
|
|
22206
|
-
const server = new McpServer({ name: "hvip", version: "0.1.
|
|
22623
|
+
const server = new McpServer({ name: "hvip", version: "0.1.5" });
|
|
22207
22624
|
const auth = getAuth();
|
|
22208
22625
|
registerMarketTools(server);
|
|
22209
22626
|
registerPublicTools(server);
|
|
22210
22627
|
registerStatsTools(server);
|
|
22628
|
+
registerSpreadTools(server);
|
|
22211
22629
|
registerOutcomesTools(server);
|
|
22212
22630
|
registerAccountTools(server, auth);
|
|
22213
22631
|
registerTradingTools(server, auth);
|
|
22214
22632
|
registerAlgoTools(server, auth);
|
|
22633
|
+
registerBotTools(server, auth);
|
|
22215
22634
|
registerFundingTools(server, auth);
|
|
22216
22635
|
registerSubAccountTools(server, auth);
|
|
22217
22636
|
registerFinanceTools(server, auth);
|