hvip-mcp-server 0.2.19 → 0.2.21

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.
Files changed (2) hide show
  1. package/dist/index.js +96 -0
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -23289,10 +23289,106 @@ function registerStatsTools(server) {
23289
23289
  }
23290
23290
  }
23291
23291
  );
23292
+ server.tool(
23293
+ "okx_get_long_short_ratio_all",
23294
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5168\u90E8\u5408\u7EA6\u7684\u591A\u7A7A\u6301\u4ED3\u6BD4\u4F8B\u6C47\u603B\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5224\u65AD\u6574\u4F53\u5408\u7EA6\u5E02\u573A\u7684\u591A\u7A7A\u60C5\u7EEA\u3001\u53D1\u73B0\u6781\u7AEF\u6BD4\u4F8B\u65F6\u7684\u53CD\u8F6C\u4FE1\u53F7\n## \u5173\u952E\u8BCD\uFF1A\u5168\u90E8\u5408\u7EA6\u591A\u7A7A\u6BD4, long short ratio all, \u5168\u5E02\u573A\u591A\u7A7A, \u591A\u7A7A\u60C5\u7EEA\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 BTC\u3001ETH\u3002\u53EF\u9009\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\n## - begin: \u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09\n## - end: \u7ED3\u675F\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09\n## \u9274\u6743\uFF1APUBLIC \u2014 \u516C\u5F00\u63A5\u53E3\uFF0C\u4E0D\u9700\u8981 API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u770B\u5168\u5E02\u573A\u591A\u7A7A\u6BD4 \u2192 okx_get_long_short_ratio \u770B\u5206\u5408\u7EA6 \u2192 \u5BF9\u6BD4\u5206\u6790",
23295
+ {
23296
+ ccy: external_exports.string().optional().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3001ETH\u3002\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
23297
+ begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09"),
23298
+ end: external_exports.string().optional().describe("\u7ED3\u675F\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09")
23299
+ },
23300
+ async ({ ccy, begin, end }) => {
23301
+ try {
23302
+ const data = await publicApi.getContractsLongShortRatio(ccy, begin, end);
23303
+ const enriched = data.map((item) => ({
23304
+ ...item,
23305
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
23306
+ }));
23307
+ return toResult(enriched);
23308
+ } catch (e) {
23309
+ return toError(e);
23310
+ }
23311
+ }
23312
+ );
23313
+ server.tool(
23314
+ "okx_get_taker_flow_contract",
23315
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5408\u7EA6\u4E3B\u52A8\u4E70\u5356\u6D41\u5411\uFF08Taker\u6D41\u91CF\uFF09\uFF0C\u7EDF\u8BA1\u4E70\u5165\u548C\u5356\u51FATaker\u6210\u4EA4\u91CF\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5224\u65AD\u5408\u7EA6\u5E02\u573A\u7684\u4E3B\u52A8\u4E70\u5356\u529B\u91CF\u5BF9\u6BD4\u3001\u8FFD\u8E2A\u806A\u660E\u94B1\u6D41\u5411\n## \u5173\u952E\u8BCD\uFF1A\u4E3B\u52A8\u6D41\u5411, taker flow contract, \u5408\u7EA6\u4E3B\u52A8\u4E70\u5356, Taker\u6D41\u91CF\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 BTC\u3002\u5FC5\u586B\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SWAP/FUTURES\u3002\u53EF\u9009\n## - begin: \u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09\u3002\u53EF\u9009\n## - end: \u7ED3\u675F\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09\u3002\u53EF\u9009\n## \u9274\u6743\uFF1APUBLIC \u2014 \u516C\u5F00\u63A5\u53E3\uFF0C\u4E0D\u9700\u8981 API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1Aokx_get_taker_volume \u770B\u6210\u4EA4\u91CF \u2192 \u672C\u5DE5\u5177\u770B\u4E70\u5356\u65B9\u5411 \u2192 \u5224\u65AD\u591A\u7A7A\u529B\u5EA6",
23316
+ {
23317
+ ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3002\u5FC5\u586B"),
23318
+ instType: external_exports.enum(INST_TYPE_SWAP_FUT).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u3002SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272"),
23319
+ begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09"),
23320
+ end: external_exports.string().optional().describe("\u7ED3\u675F\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09")
23321
+ },
23322
+ async ({ ccy, instType, begin, end }) => {
23323
+ try {
23324
+ const data = await publicApi.getTakerFlow(ccy, instType, begin, end);
23325
+ const enriched = data.map((item) => ({
23326
+ ...item,
23327
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
23328
+ }));
23329
+ return toResult(enriched);
23330
+ } catch (e) {
23331
+ return toError(e);
23332
+ }
23333
+ }
23334
+ );
23335
+ server.tool(
23336
+ "okx_get_open_interest_history_rubik",
23337
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5408\u7EA6\u6301\u4ED3\u91CF\u5386\u53F2\u8D70\u52BF\uFF08\u4EA4\u6613\u5927\u6570\u636E\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u6301\u4ED3\u91CF\u8D8B\u52BF\u3001\u5224\u65AD\u8D44\u91D1\u6D41\u5165\u6D41\u51FA\u3001\u91CF\u4EF7\u914D\u5408\u5206\u6790\n## \u5173\u952E\u8BCD\uFF1A\u6301\u4ED3\u91CF\u5386\u53F2, OI\u5386\u53F2, open interest history, rubik, \u6301\u4ED3\u8D70\u52BF\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B\n## - period: \u65F6\u95F4\u7C92\u5EA6\u30025m/15m/30m/1H/2H/4H/6H/12H/1D/1W\u3002\u9ED8\u8BA45m\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\uFF0C\u6700\u592714400\n## \u9274\u6743\uFF1APUBLIC \u2014 \u516C\u5F00\u63A5\u53E3\uFF0C\u4E0D\u9700\u8981 API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u5355\u4EA7\u54C1 ~5KB \u2014 \u5FAE\u5C0F\n## \u5173\u8054\uFF1A\u5148\u8C03 okx_get_instruments \u83B7\u53D6\u5408\u7EA6\u4EA7\u54C1 \u2192 \u672C\u5DE5\u5177\u67E5\u6301\u4ED3\u8D8B\u52BF \u2192 \u7ED3\u5408 okx_get_ticker \u5224\u65AD\u91CF\u4EF7\u5173\u7CFB",
23338
+ {
23339
+ instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B"),
23340
+ period: external_exports.enum(["5m", "15m", "30m", "1H", "2H", "4H", "6H", "12H", "1D", "1W"]).optional().describe("\u65F6\u95F4\u7C92\u5EA6\uFF0C\u9ED8\u8BA45m"),
23341
+ limit: external_exports.string().optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\uFF0C\u6700\u592714400")
23342
+ },
23343
+ async ({ instId, period, limit }) => {
23344
+ try {
23345
+ const data = await publicApi.getOpenInterestHistory(instId, period, limit);
23346
+ const enriched = data.map((row) => ({
23347
+ ts: row[0],
23348
+ tsIso: row[0] ? new Date(parseInt(row[0])).toISOString() : void 0,
23349
+ oi: row[1],
23350
+ oiCcy: row[2],
23351
+ vol: row[3]
23352
+ }));
23353
+ return toResult(enriched);
23354
+ } catch (e) {
23355
+ return toError(e);
23356
+ }
23357
+ }
23358
+ );
23359
+ server.tool(
23360
+ "okx_get_savings_lending_rate",
23361
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6D3B\u671F\u501F\u5E01\u5F53\u524D\u5E02\u573A\u5229\u7387\u6C47\u603B\uFF08\u516C\u5F00\u6570\u636E\uFF0C\u65E0\u9700API Key\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5224\u65AD\u501F\u8D37\u6210\u672C\u3001\u5BFB\u627E\u95F2\u7F6E\u8D44\u91D1\u6700\u4F18\u51FA\u501F\u5229\u7387\u3001\u6BD4\u8F83\u5404\u5E01\u79CD\u501F\u8D37\u5229\u7387\n## \u5173\u952E\u8BCD\uFF1A\u501F\u5E01\u5229\u7387, lending rate, \u501F\u8D37\u6210\u672C, \u51FA\u501F\u5229\u7387, \u5E02\u573A\u5229\u7387\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 BTC\u3001USDT\u3002\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\n## \u9274\u6743\uFF1APUBLIC \u2014 \u516C\u5F00\u63A5\u53E3\uFF0C\u4E0D\u9700\u8981 API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~2KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u770B\u5E02\u573A\u5229\u7387 \u2192 \u5224\u65AD\u6760\u6746\u6210\u672C \u2192 okx_get_margin_lending_ratio \u770B\u501F\u5E01\u91CF\u8D8B\u52BF",
23362
+ { ccy: external_exports.string().optional().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3001USDT\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8") },
23363
+ async ({ ccy }) => {
23364
+ try {
23365
+ const data = await publicApi.getLendingRateSummary(ccy);
23366
+ return toResult(data);
23367
+ } catch (e) {
23368
+ return toError(e);
23369
+ }
23370
+ }
23371
+ );
23292
23372
  }
23293
23373
 
23294
23374
  // src/tools/subaccount.ts
23295
23375
  function registerSubAccountTools(server, auth) {
23376
+ server.tool(
23377
+ "okx_get_subaccount_list",
23378
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6240\u6709\u5B50\u8D26\u6237\u5217\u8868\u53CA\u5176\u72B6\u6001\n## \u573A\u666F\uFF1A\u7528\u4E8E\u591A\u7B56\u7565\u8D26\u6237\u7BA1\u7406\u3001\u67E5\u770B\u5404\u5B50\u8D26\u6237\u7684\u542F\u7528\u72B6\u6001\n## \u5173\u952E\u8BCD\uFF1A\u5B50\u8D26\u6237\u5217\u8868, subaccount list, \u5B50\u8D26\u53F7\u5217\u8868, \u5B50\u8D26\u6237\u72B6\u6001\n## \u53C2\u6570\uFF1A\n## - enable: \u7B5B\u9009\u542F\u7528\u72B6\u6001\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u90E8\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981\u4E3B\u8D26\u6237 API Key\uFF08\u53EA\u8BFB\uFF09\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~1KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u83B7\u53D6\u5B50\u8D26\u6237\u5217\u8868 \u2192 okx_get_subaccount_balance \u67E5\u4F59\u989D \u2192 okx_transfer_subaccount \u5212\u8F6C",
23379
+ {
23380
+ enable: external_exports.boolean().optional().describe("\u7B5B\u9009\u542F\u7528\u72B6\u6001\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u90E8")
23381
+ },
23382
+ async ({ enable }) => {
23383
+ if (!auth) return toError(AUTH_REQUIRED);
23384
+ try {
23385
+ const data = await privateApi.listSubAccounts(auth, enable);
23386
+ return toResult(data);
23387
+ } catch (e) {
23388
+ return toError(e);
23389
+ }
23390
+ }
23391
+ );
23296
23392
  server.tool(
23297
23393
  "okx_list_subaccounts",
23298
23394
  "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6240\u6709\u5B50\u8D26\u6237\u5217\u8868\u53CA\u5176\u72B6\u6001\n## \u573A\u666F\uFF1A\u7528\u4E8E\u591A\u7B56\u7565\u8D26\u6237\u7BA1\u7406\u3001\u67E5\u770B\u5404\u5B50\u8D26\u6237\u7684\u542F\u7528\u72B6\u6001\n## \u5173\u952E\u8BCD\uFF1A\u5B50\u8D26\u6237, subaccounts, \u591A\u8D26\u6237, \u5B50\u8D26\u53F7, \u8D26\u6237\u7BA1\u7406\n## \u53C2\u6570\uFF1A\n## - enable: \u7B5B\u9009\u542F\u7528\u72B6\u6001\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u90E8\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981\u4E3B\u8D26\u6237 API Key\uFF08\u53EA\u8BFB\uFF09\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~1KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u83B7\u53D6\u5B50\u8D26\u6237\u5217\u8868 \u2192 okx_get_subaccount_balance \u67E5\u4F59\u989D \u2192 okx_transfer_subaccount \u5212\u8F6C",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hvip-mcp-server",
3
- "version": "0.2.19",
3
+ "version": "0.2.21",
4
4
  "description": "OKX ecosystem MCP server - full API coverage for AI agents",
5
5
  "homepage": "https://hvip.one",
6
6
  "license": "MIT",