hvip-mcp-server 0.1.5 → 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 +257 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -21168,7 +21168,20 @@ var publicApi = {
|
|
|
21168
21168
|
getSupportCoin: () => request("GET", "/api/v5/rubik/stat/trading-data/support-coin"),
|
|
21169
21169
|
getTopTraderLongShortRatio: (instId, begin, end) => request("GET", "/api/v5/rubik/stat/contracts/long-short-account-ratio-contract-top-trader", { params: { instId, begin, end } }),
|
|
21170
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 } })
|
|
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")
|
|
21172
21185
|
};
|
|
21173
21186
|
var privateApi = {
|
|
21174
21187
|
getBalance: (auth, ccy) => request("GET", "/api/v5/account/balance", { params: { ccy }, auth }),
|
|
@@ -21195,6 +21208,13 @@ var privateApi = {
|
|
|
21195
21208
|
getEthStakingBalance: (auth) => request("GET", "/api/v5/finance/staking-defi/eth/balance", { auth }),
|
|
21196
21209
|
getEthStakingHistory: (auth, limit) => request("GET", "/api/v5/finance/staking-defi/eth/purchase-redeem-history", { params: { limit }, auth }),
|
|
21197
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 }),
|
|
21198
21218
|
getAlgoOrders: (auth, ordType, instType) => request("GET", "/api/v5/trade/orders-algo-pending", { params: { ordType, instType }, auth }),
|
|
21199
21219
|
getAlgoOrdersHistory: (auth, ordType, state, instType) => request("GET", "/api/v5/trade/orders-algo-history", { params: { ordType, state, instType }, auth }),
|
|
21200
21220
|
placeAlgoOrder: (auth, body) => request("POST", "/api/v5/trade/order-algo", { body, auth }),
|
|
@@ -21420,6 +21440,21 @@ function registerMarketTools(server) {
|
|
|
21420
21440
|
}
|
|
21421
21441
|
}
|
|
21422
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
|
+
);
|
|
21423
21458
|
}
|
|
21424
21459
|
|
|
21425
21460
|
// src/tools/public.ts
|
|
@@ -21561,6 +21596,35 @@ function registerPublicTools(server) {
|
|
|
21561
21596
|
}
|
|
21562
21597
|
}
|
|
21563
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
|
+
);
|
|
21564
21628
|
}
|
|
21565
21629
|
|
|
21566
21630
|
// src/tools/account.ts
|
|
@@ -22365,17 +22429,208 @@ function registerOutcomesTools(server) {
|
|
|
22365
22429
|
);
|
|
22366
22430
|
}
|
|
22367
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
|
+
|
|
22368
22621
|
// src/index.ts
|
|
22369
22622
|
async function main() {
|
|
22370
|
-
const server = new McpServer({ name: "hvip", version: "0.1.
|
|
22623
|
+
const server = new McpServer({ name: "hvip", version: "0.1.5" });
|
|
22371
22624
|
const auth = getAuth();
|
|
22372
22625
|
registerMarketTools(server);
|
|
22373
22626
|
registerPublicTools(server);
|
|
22374
22627
|
registerStatsTools(server);
|
|
22628
|
+
registerSpreadTools(server);
|
|
22375
22629
|
registerOutcomesTools(server);
|
|
22376
22630
|
registerAccountTools(server, auth);
|
|
22377
22631
|
registerTradingTools(server, auth);
|
|
22378
22632
|
registerAlgoTools(server, auth);
|
|
22633
|
+
registerBotTools(server, auth);
|
|
22379
22634
|
registerFundingTools(server, auth);
|
|
22380
22635
|
registerSubAccountTools(server, auth);
|
|
22381
22636
|
registerFinanceTools(server, auth);
|