hvip-mcp-server 0.2.27 → 0.2.28

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 +135 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -21402,7 +21402,12 @@ var privateApi = {
21402
21402
  getFiatBuySellPair: (auth) => request("GET", "/api/v5/fiat/buy-sell/currency-pair", { auth }),
21403
21403
  getFiatDeposit: (auth) => request("GET", "/api/v5/fiat/deposit", { auth }),
21404
21404
  getFiatDepositOrderHistory: (auth) => request("GET", "/api/v5/fiat/deposit-order-history", { auth }),
21405
- getFiatDepositPaymentMethods: (auth) => request("GET", "/api/v5/fiat/deposit-payment-methods", { auth })
21405
+ getFiatDepositPaymentMethods: (auth) => request("GET", "/api/v5/fiat/deposit-payment-methods", { auth }),
21406
+ // ── rubik 大数据(v0.2.26 第四批) ────────────────────────────────────
21407
+ getTakerVolumeContract: (ccy, instId) => request("GET", "/api/v5/rubik/stat/taker-volume-contract", { params: { ccy, instId } }),
21408
+ getOptionTakerBlockVolume: (ccy) => request("GET", "/api/v5/rubik/stat/option/taker-block-volume", { params: { ccy } }),
21409
+ getTopTraderPositionRatio: (instId) => request("GET", "/api/v5/rubik/stat/contracts/long-short-position-ratio-contract-top-trader", { params: { instId } }),
21410
+ applyMonthlyStatement: (auth) => request("POST", "/api/v5/asset/monthly-statement", { auth })
21406
21411
  };
21407
21412
 
21408
21413
  // src/adapters/hrails.ts
@@ -23856,6 +23861,20 @@ function registerFundingTools(server, auth) {
23856
23861
  }
23857
23862
  }
23858
23863
  );
23864
+ server.tool(
23865
+ "okx_get_monthly_statement",
23866
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u8D26\u6237\u6708\u5EA6\u8D26\u5355\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u6708\u5EA6\u4EA4\u6613\u6C47\u603B\u3001\u6536\u5165\u652F\u51FA\u660E\u7EC6\n## \u5173\u952E\u8BCD\uFF1A\u6708\u5EA6\u8D26\u5355, monthly statement, \u6708\u7ED3, \u6708\u5EA6\u62A5\u544A\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 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\u4E2D\u7B49 ~10KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u770B\u6708\u5EA6\u6C47\u603B \u2192 \u8BC4\u4F30\u6708\u5EA6\u76C8\u4E8F \u2192 \u8C03\u6574\u7B56\u7565",
23867
+ {},
23868
+ async () => {
23869
+ if (!auth) return toError(AUTH_REQUIRED);
23870
+ try {
23871
+ const data = await privateApi.applyMonthlyStatement(auth);
23872
+ return toResult(data);
23873
+ } catch (e) {
23874
+ return toError(e);
23875
+ }
23876
+ }
23877
+ );
23859
23878
  }
23860
23879
 
23861
23880
  // src/tools/stats.ts
@@ -24229,6 +24248,121 @@ function registerStatsTools(server) {
24229
24248
  }
24230
24249
  }
24231
24250
  );
24251
+ server.tool(
24252
+ "okx_get_long_short_account_ratio",
24253
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5408\u7EA6\u591A\u7A7A\u8D26\u6237\u6BD4\u4F8B\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5224\u65AD\u5E02\u573A\u60C5\u7EEA\uFF0C\u6BD4\u503C>1\u8868\u793A\u591A\u5934\u5360\u591A\u6570\n## \u5173\u952E\u8BCD\uFF1A\u591A\u7A7A\u8D26\u6237\u6BD4, long short account, \u5E02\u573A\u60C5\u7EEA\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 BTC\u3001ETH\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\u8D26\u6237\u591A\u7A7A\u6BD4 \u2192 okx_get_contract_trader_ls_ratio \u770B\u5927\u6237 \u2192 \u5BF9\u6BD4",
24254
+ {
24255
+ ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3001ETH"),
24256
+ begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09"),
24257
+ end: external_exports.string().optional().describe("\u7ED3\u675F\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09")
24258
+ },
24259
+ async ({ ccy, begin, end }) => {
24260
+ try {
24261
+ const data = await publicApi.getLongShortRatio(ccy, begin, end);
24262
+ const enriched = data.map((item) => ({
24263
+ ...item,
24264
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
24265
+ }));
24266
+ return toResult(enriched);
24267
+ } catch (e) {
24268
+ return toError(e);
24269
+ }
24270
+ }
24271
+ );
24272
+ server.tool(
24273
+ "okx_get_contract_trader_ls_ratio",
24274
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u7CBE\u82F1\u4EA4\u6613\u5458\u5408\u7EA6\u591A\u7A7A\u6BD4\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5224\u65AD\u5927\u6237\u5BF9\u5408\u7EA6\u5E02\u573A\u7684\u770B\u6CD5\n## \u5173\u952E\u8BCD\uFF1A\u7CBE\u82F1\u591A\u7A7A\u6BD4, top trader ls, \u5927\u6237\u5408\u7EA6\n## \u53C2\u6570\uFF1A\n## - instId: \u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\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\u5927\u6237\u591A\u7A7A \u2192 okx_get_long_short_account_ratio \u770B\u6563\u6237 \u2192 \u5BF9\u6BD4",
24275
+ {
24276
+ instId: external_exports.string().describe("\u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP"),
24277
+ begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09"),
24278
+ end: external_exports.string().optional().describe("\u7ED3\u675F\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09")
24279
+ },
24280
+ async ({ instId, begin, end }) => {
24281
+ try {
24282
+ const data = await publicApi.getTopTraderLongShortRatio(instId, begin, end);
24283
+ const enriched = data.map((item) => ({
24284
+ ...item,
24285
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
24286
+ }));
24287
+ return toResult(enriched);
24288
+ } catch (e) {
24289
+ return toError(e);
24290
+ }
24291
+ }
24292
+ );
24293
+ server.tool(
24294
+ "okx_get_contract_position_trader_ratio",
24295
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u7CBE\u82F1\u4EA4\u6613\u5458\u6301\u4ED3\u591A\u7A7A\u6BD4\u4F8B\uFF08\u6309\u4ED3\u4F4D\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u5927\u6237\u5B9E\u9645\u6301\u4ED3\u65B9\u5411\u3001\u6BD4\u8D26\u6237\u6BD4\u4F8B\u66F4\u7CBE\u786E\n## \u5173\u952E\u8BCD\uFF1A\u7CBE\u82F1\u6301\u4ED3\u6BD4, top trader position, \u5927\u6237\u4ED3\u4F4D\n## \u53C2\u6570\uFF1A\n## - instId: \u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B\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\u5927\u6237\u4ED3\u4F4D\u591A\u7A7A \u2192 \u7ED3\u5408\u4EF7\u683C\u5224\u65AD\u8D8B\u52BF",
24296
+ {
24297
+ instId: external_exports.string().describe("\u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B")
24298
+ },
24299
+ async ({ instId }) => {
24300
+ try {
24301
+ const data = await publicApi.getTopTraderPositionRatio(instId);
24302
+ const enriched = data.map((item) => ({
24303
+ ...item,
24304
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
24305
+ }));
24306
+ return toResult(enriched);
24307
+ } catch (e) {
24308
+ return toError(e);
24309
+ }
24310
+ }
24311
+ );
24312
+ server.tool(
24313
+ "okx_get_option_oi_ratio",
24314
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u671F\u6743\u672A\u5E73\u4ED3\u91CFCall/Put\u6BD4\u548C\u6210\u4EA4\u91CF\u6BD4\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8861\u91CF\u671F\u6743\u5E02\u573A\u6574\u4F53\u60C5\u7EEA\n## \u5173\u952E\u8BCD\uFF1A\u671F\u6743\u6301\u4ED3\u6BD4, option oi ratio, PCR, \u671F\u6743\u60C5\u7EEA\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 BTC\u3001ETH\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\u671F\u6743\u6BD4 \u2192 okx_get_option_open_interest \u770B\u6301\u4ED3\u603B\u91CF",
24315
+ {
24316
+ ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3001ETH"),
24317
+ begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09"),
24318
+ end: external_exports.string().optional().describe("\u7ED3\u675F\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09")
24319
+ },
24320
+ async ({ ccy, begin, end }) => {
24321
+ try {
24322
+ const data = await publicApi.getOptionPutCallRatio(ccy, begin, end);
24323
+ const enriched = data.map((item) => ({
24324
+ ...item,
24325
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
24326
+ }));
24327
+ return toResult(enriched);
24328
+ } catch (e) {
24329
+ return toError(e);
24330
+ }
24331
+ }
24332
+ );
24333
+ server.tool(
24334
+ "okx_get_option_taker_block_volume",
24335
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u671F\u6743\u4E3B\u52A8\u6210\u4EA4\u548C\u533A\u5757\u6210\u4EA4\u7684\u7EDF\u8BA1\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u671F\u6743\u5E02\u573A\u7684Taker\u6210\u4EA4\u91CF\u548C\u533A\u5757\u6210\u4EA4\u91CF\n## \u5173\u952E\u8BCD\uFF1A\u671F\u6743\u6210\u4EA4\u91CF, option taker block, \u671F\u6743\u4E3B\u52A8\u4E70\u5356, \u671F\u6743\u5927\u5355\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 BTC\u3001ETH\u3002\u5FC5\u586B\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\u671F\u6743\u6210\u4EA4\u91CF \u2192 okx_get_option_open_interest \u770B\u6301\u4ED3 \u2192 \u5206\u6790\u6D3B\u8DC3\u5EA6",
24336
+ { ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3001ETH\u3002\u5FC5\u586B") },
24337
+ async ({ ccy }) => {
24338
+ try {
24339
+ const data = await publicApi.getOptionTakerBlockVolume(ccy);
24340
+ return toResult(data);
24341
+ } catch (e) {
24342
+ return toError(e);
24343
+ }
24344
+ }
24345
+ );
24346
+ server.tool(
24347
+ "okx_get_taker_volume_contract",
24348
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5408\u7EA6\u4E3B\u52A8\u4E70\u5356\u91CF\u7EDF\u8BA1\uFF08\u6309\u5408\u7EA6\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5177\u4F53\u5408\u7EA6\u7684\u4E3B\u52A8\u4E70\u5356\u529B\u91CF\n## \u5173\u952E\u8BCD\uFF1A\u5408\u7EA6\u4E70\u5356\u91CF, taker volume contract, \u4E3B\u52A8\u6210\u4EA4\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 BTC\u3002\u5FC5\u586B\n## - instId: \u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B\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\u67E5\u5355\u5408\u7EA6\u4E70\u5356\u91CF \u2192 okx_get_contracts_taker_volume \u67E5\u6C47\u603B",
24349
+ {
24350
+ ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3002\u5FC5\u586B"),
24351
+ instId: external_exports.string().describe("\u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B")
24352
+ },
24353
+ async ({ ccy, instId }) => {
24354
+ try {
24355
+ const data = await publicApi.getTakerVolumeContract(ccy, instId);
24356
+ const enriched = data.map((item) => ({
24357
+ ...item,
24358
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
24359
+ }));
24360
+ return toResult(enriched);
24361
+ } catch (e) {
24362
+ return toError(e);
24363
+ }
24364
+ }
24365
+ );
24232
24366
  }
24233
24367
 
24234
24368
  // src/tools/subaccount.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hvip-mcp-server",
3
- "version": "0.2.27",
3
+ "version": "0.2.28",
4
4
  "description": "OKX ecosystem MCP server - full API coverage for AI agents",
5
5
  "homepage": "https://hvip.one",
6
6
  "license": "MIT",