hvip-mcp-server 0.2.14 → 0.2.16

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 +216 -210
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -21347,6 +21347,7 @@ var INST_TYPE_PUBLIC = ["MARGIN", "SWAP", "FUTURES", "OPTION"];
21347
21347
  var INST_TYPE_CONTRACTS = ["SWAP", "FUTURES", "OPTION"];
21348
21348
  var INST_TYPE_SWAP_FUT = ["SWAP", "FUTURES"];
21349
21349
  var INST_TYPE_MARGIN_PUB = ["MARGIN", "SWAP", "FUTURES", "OPTION"];
21350
+ var INST_TYPE_RUBIK = ["SPOT", "CONTRACTS"];
21350
21351
  function toResult(data) {
21351
21352
  return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
21352
21353
  }
@@ -21384,7 +21385,7 @@ function toError(e) {
21384
21385
  function registerMarketTools(server) {
21385
21386
  server.tool(
21386
21387
  "okx_get_ticker",
21387
- "\u83B7\u53D6\u5355\u4E2A\u6216\u591A\u4E2A\u4EA7\u54C1\u7684\u5B9E\u65F6\u884C\u60C5Ticker\uFF0C\u5305\u542B\u6700\u65B0\u4EF7\u3001\u4E70\u4E00\u4EF7\u3001\u5356\u4E00\u4EF7\u300124h\u6210\u4EA4\u91CF\u7B49\u3002\u652F\u6301\u9017\u53F7\u5206\u9694\u591A\u4EA7\u54C1\u6279\u91CF\u67E5\u8BE2\uFF08\u5982 BTC-USDT,ETH-USDT,SOL-USDT\uFF09\u3002",
21388
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5355\u4E2A\u6216\u591A\u4E2A\u4EA7\u54C1\u7684\u5B9E\u65F6\u884C\u60C5Ticker\uFF0C\u5305\u542B\u6700\u65B0\u4EF7\u3001\u4E70\u4E00\u4EF7\u3001\u5356\u4E00\u4EF7\u300124h\u6210\u4EA4\u91CF\u7B49\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5B9E\u65F6\u4EF7\u683C\u3001\u6279\u91CF\u76D1\u63A7\u884C\u60C5\u3001\u5224\u65AD\u4E70\u5356\u4EF7\u5DEE\u3001\u8BA1\u7B97\u4EA4\u6613\u6210\u672C\n## \u5173\u952E\u8BCD\uFF1A\u884C\u60C5, \u4EF7\u683C, ticker, \u6700\u65B0\u4EF7, \u4E70\u5356\u4EF7, 24h\u6DA8\u8DCC, \u5B9E\u65F6\u4EF7\u683C\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3001ETH-USDT-SWAP\u3002\u652F\u6301\u9017\u53F7\u5206\u9694\u6279\u91CF\u67E5\u8BE2\uFF0C\u5982 BTC-USDT,ETH-USDT,SOL-USDT\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 ~1KB\uFF0C\u6279\u91CF ~5KB \u2014 \u5FAE\u5C0F\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\uFF08\u51E0\u4E4E\u6240\u6709\u67E5\u8BE2\u7684\u5165\u53E3\uFF09\u2192 \u7ED3\u5408 okx_get_candles \u5206\u6790\u8D70\u52BF \u2192 okx_place_order \u4E0B\u5355",
21388
21389
  { instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3001ETH-USDT-SWAP\u3002\u652F\u6301\u9017\u53F7\u5206\u9694\u6279\u91CF\u67E5\u8BE2\uFF0C\u5982 BTC-USDT,ETH-USDT,SOL-USDT") },
21389
21390
  async ({ instId }) => {
21390
21391
  try {
@@ -21406,7 +21407,7 @@ function registerMarketTools(server) {
21406
21407
  );
21407
21408
  server.tool(
21408
21409
  "okx_get_tickers",
21409
- "\u83B7\u53D6\u67D0\u7C7B\u4EA7\u54C1\u7684\u5168\u91CF\u884C\u60C5\u5217\u8868\u3002\u7528\u4E8E\u6279\u91CF\u626B\u63CF\u5E02\u573A\u3001\u5BFB\u627E\u5F02\u5E38\u4EF7\u683C\u6216\u9AD8\u6210\u4EA4\u91CF\u54C1\u79CD\u3002\u8FD4\u56DE\u5168\u91CF\u6570\u636E(~77KB)\uFF0C\u5DF2\u81EA\u52A8\u622A\u65ADtop20\u3002",
21410
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u67D0\u7C7B\u4EA7\u54C1\u7684\u5168\u91CF\u884C\u60C5\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u6279\u91CF\u626B\u63CF\u5E02\u573A\u3001\u5BFB\u627E\u5F02\u5E38\u4EF7\u683C\u6216\u9AD8\u6210\u4EA4\u91CF\u54C1\u79CD\u3001\u5168\u5E02\u573A\u6982\u89C8\n## \u5173\u952E\u8BCD\uFF1A\u5168\u91CF\u884C\u60C5, tickers, \u6279\u91CF\u4EF7\u683C, \u5E02\u573A\u626B\u63CF, \u9AD8\u6210\u4EA4\u91CF, \u5168\u5E02\u573A\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\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\u5168\u91CF ~77KB\uFF08\u5DF2\u81EA\u52A8\u622A\u65AD top 20\uFF0C\u8FD4\u56DE {total, returned, data}\uFF09\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u626B\u63CF\u5E02\u573A \u2192 okx_get_ticker \u67E5\u5355\u4E2A\u8BE6\u60C5 \u2192 \u53D1\u73B0\u5F02\u5E38\u540E\u6DF1\u5165\u5206\u6790",
21410
21411
  { instType: external_exports.enum(INST_TYPE_MARKET).describe("\u4EA7\u54C1\u7C7B\u578B") },
21411
21412
  async ({ instType }) => {
21412
21413
  try {
@@ -21424,7 +21425,7 @@ function registerMarketTools(server) {
21424
21425
  );
21425
21426
  server.tool(
21426
21427
  "okx_get_orderbook",
21427
- "\u83B7\u53D6\u4EA7\u54C1\u7684\u8BA2\u5355\u7C3F\u6DF1\u5EA6\uFF0C\u542B\u4E70\u5356\u53CC\u65B9\u6302\u5355\u4EF7\u683C\u548C\u6570\u91CF\u3002\u7528\u4E8E\u5206\u6790\u6D41\u52A8\u6027\u3001\u5224\u65AD\u652F\u6491/\u538B\u529B\u4F4D\u3002",
21428
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4EA7\u54C1\u7684\u8BA2\u5355\u7C3F\u6DF1\u5EA6\uFF0C\u542B\u4E70\u5356\u53CC\u65B9\u6302\u5355\u4EF7\u683C\u548C\u6570\u91CF\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u6D41\u52A8\u6027\u3001\u5224\u65AD\u652F\u6491/\u538B\u529B\u4F4D\u3001\u8BC4\u4F30\u5927\u5355\u5BF9\u5E02\u573A\u7684\u6F5C\u5728\u51B2\u51FB\n## \u5173\u952E\u8BCD\uFF1A\u8BA2\u5355\u7C3F, \u6DF1\u5EA6, orderbook, \u4E70\u5356\u76D8, \u6302\u5355, \u6D41\u52A8\u6027, \u652F\u6491\u538B\u529B\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\n## - depth: \u6DF1\u5EA6\u6863\u4F4D\uFF0C\u9ED8\u8BA420\uFF0C\u6700\u5927400\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\u53EF\u4EA4\u6613\u4EA7\u54C1 \u2192 \u672C\u5DE5\u5177\u67E5\u6DF1\u5EA6 \u2192 \u7ED3\u5408 okx_get_ticker \u5224\u65AD\u4E70\u5356\u529B\u91CF",
21428
21429
  {
21429
21430
  instId: external_exports.string().describe("\u4EA7\u54C1ID"),
21430
21431
  depth: external_exports.number().int().min(1).max(400).optional().describe("\u6DF1\u5EA6\u6863\u4F4D\uFF0C\u9ED8\u8BA420\uFF0C\u6700\u5927400")
@@ -21432,6 +21433,20 @@ function registerMarketTools(server) {
21432
21433
  async ({ instId, depth }) => {
21433
21434
  try {
21434
21435
  const data = await publicApi.getOrderbook(instId, depth);
21436
+ const enriched = data.data || data;
21437
+ if (Array.isArray(enriched)) {
21438
+ const withTsIso = enriched.map((item) => ({
21439
+ ...item,
21440
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
21441
+ }));
21442
+ return toResult(withTsIso);
21443
+ }
21444
+ if (enriched && typeof enriched === "object") {
21445
+ return toResult({
21446
+ ...enriched,
21447
+ tsIso: enriched.ts ? new Date(parseInt(enriched.ts)).toISOString() : void 0
21448
+ });
21449
+ }
21435
21450
  return toResult(data);
21436
21451
  } catch (e) {
21437
21452
  return toError(e);
@@ -21440,7 +21455,7 @@ function registerMarketTools(server) {
21440
21455
  );
21441
21456
  server.tool(
21442
21457
  "okx_get_candles",
21443
- "\u83B7\u53D6\u4EA7\u54C1K\u7EBF\u6570\u636E\uFF08OHLCV\uFF09\u3002\u7528\u4E8E\u6280\u672F\u5206\u6790\u3001\u8D8B\u52BF\u5224\u65AD\u3001\u56DE\u6D4B\u6570\u636E\u51C6\u5907\u3002",
21458
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4EA7\u54C1K\u7EBF\u6570\u636E\uFF08OHLCV\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u6280\u672F\u5206\u6790\u753B\u56FE\u3001\u5224\u65AD\u8D8B\u52BF\u65B9\u5411\u3001\u8BA1\u7B97\u6280\u672F\u6307\u6807\uFF08MA/RSI/MACD\uFF09\u3001\u51C6\u5907\u56DE\u6D4B\u6570\u636E\n## \u5173\u952E\u8BCD\uFF1AK\u7EBF, candles, OHLCV, \u6280\u672F\u5206\u6790, \u8D8B\u52BF, K\u7EBF\u56FE, \u8721\u70DB\u56FE\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\n## - bar: K\u7EBF\u5468\u671F\u30021m/3m/5m/15m/30m=\u5206\u949F, 1H=1\u5C0F\u65F6, 4H=4\u5C0F\u65F6, 1D=\u65E5\u7EBF, 1W=\u5468\u7EBF\u3002\u9ED8\u8BA41H\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\uFF0C\u6700\u5927300\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\uFF1A100\u6761 ~5KB \u2014 \u5FAE\u5C0F\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u83B7\u53D6K\u7EBF \u2192 \u6280\u672F\u5206\u6790\u540E \u2192 okx_place_order \u4E0B\u5355",
21444
21459
  {
21445
21460
  instId: external_exports.string().describe("\u4EA7\u54C1ID"),
21446
21461
  bar: external_exports.enum(["1m", "3m", "5m", "15m", "30m", "1H", "4H", "1D", "1W"]).optional().describe("K\u7EBF\u5468\u671F\uFF0C\u9ED8\u8BA41H"),
@@ -21467,7 +21482,7 @@ function registerMarketTools(server) {
21467
21482
  );
21468
21483
  server.tool(
21469
21484
  "okx_get_trades",
21470
- "\u83B7\u53D6\u4EA7\u54C1\u6700\u65B0\u6210\u4EA4\u8BB0\u5F55\u3002\u7528\u4E8E\u5206\u6790\u77ED\u671F\u4E70\u5356\u538B\u529B\u3001\u5224\u65AD\u4E3B\u52A8\u4E70\u5356\u65B9\u5411\u3002",
21485
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4EA7\u54C1\u6700\u65B0\u6210\u4EA4\u8BB0\u5F55\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u77ED\u671F\u4E70\u5356\u538B\u529B\u3001\u5224\u65AD\u4E3B\u52A8\u4E70\u5356\u65B9\u5411\u3001\u8DDF\u8E2A\u5927\u5355\u52A8\u5411\n## \u5173\u952E\u8BCD\uFF1A\u6210\u4EA4\u8BB0\u5F55, trades, \u6700\u65B0\u6210\u4EA4, \u4E3B\u52A8\u4E70\u5356, \u6210\u4EA4\u660E\u7EC6, \u6210\u4EA4\u4EF7\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420\uFF0C\u6700\u5927100\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\uFF1A20\u6761 ~2KB \u2014 \u5FAE\u5C0F\n## \u5173\u8054\uFF1Aokx_get_ticker \u770B\u6700\u65B0\u4EF7 \u2192 \u672C\u5DE5\u5177\u770B\u9010\u7B14\u6210\u4EA4 \u2192 okx_get_candles \u5224\u65AD\u8D8B\u52BF",
21471
21486
  {
21472
21487
  instId: external_exports.string().describe("\u4EA7\u54C1ID"),
21473
21488
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420")
@@ -21487,7 +21502,7 @@ function registerMarketTools(server) {
21487
21502
  );
21488
21503
  server.tool(
21489
21504
  "okx_get_history_candles",
21490
- "\u83B7\u53D6\u4EA7\u54C1\u5386\u53F2K\u7EBF\u6570\u636E\uFF08\u6700\u8FD13\u4E2A\u6708\u4EE5\u524D\u7684\u6570\u636E\uFF09\u3002\u7528\u4E8E\u56DE\u6D4B\u3001\u957F\u5468\u671F\u6280\u672F\u5206\u6790\u3002\u4E0Eokx_get_candles\u4E92\u8865\uFF0Ccandles\u53EA\u63D0\u4F9B\u6700\u8FD1\u6570\u636E\u3002",
21505
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4EA7\u54C1\u5386\u53F2K\u7EBF\u6570\u636E\uFF08\u6700\u8FD13\u4E2A\u6708\u4EE5\u524D\u7684\u6570\u636E\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u56DE\u6D4B\u7B56\u7565\u3001\u957F\u5468\u671F\u6280\u672F\u5206\u6790\u3001\u5386\u53F2\u884C\u60C5\u7814\u7A76\n## \u5173\u952E\u8BCD\uFF1A\u5386\u53F2K\u7EBF, history candles, \u56DE\u6D4B, \u957F\u5468\u671F, \u5386\u53F2\u884C\u60C5, \u5386\u53F2\u6570\u636E\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\n## - bar: K\u7EBF\u5468\u671F\u30021m/3m/5m/15m/30m=\u5206\u949F, 1H=1\u5C0F\u65F6, 4H=4\u5C0F\u65F6, 1D=\u65E5\u7EBF, 1W=\u5468\u7EBF\u3002\u9ED8\u8BA41H\n## - after: \u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u524D\u7684\u6570\u636E\uFF08\u6BEB\u79D2Unix\u65F6\u95F4\u6233\uFF0C\u7528\u4E8E\u7FFB\u9875\uFF09\n## - before: \u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u540E\u7684\u6570\u636E\uFF08\u6BEB\u79D2Unix\u65F6\u95F4\u6233\uFF09\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\uFF0C\u6700\u5927100\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\uFF1A100\u6761 ~5KB \u2014 \u5FAE\u5C0F\n## \u5173\u8054\uFF1Aokx_get_candles \u83B7\u53D6\u6700\u8FD1\u6570\u636E \u2192 \u672C\u5DE5\u5177\u83B7\u53D6\u66F4\u65E9\u6570\u636E \u2192 \u62FC\u63A5\u5B8C\u6574\u65F6\u95F4\u5E8F\u5217\u56DE\u6D4B",
21491
21506
  {
21492
21507
  instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT"),
21493
21508
  bar: external_exports.enum(["1m", "3m", "5m", "15m", "30m", "1H", "4H", "1D", "1W"]).optional().describe("K\u7EBF\u5468\u671F\uFF0C\u9ED8\u8BA41H"),
@@ -21516,7 +21531,7 @@ function registerMarketTools(server) {
21516
21531
  );
21517
21532
  server.tool(
21518
21533
  "okx_get_history_trades",
21519
- "\u83B7\u53D6\u4EA7\u54C1\u5386\u53F2\u6210\u4EA4\u8BB0\u5F55\uFF08\u6700\u8FD13\u4E2A\u6708\uFF09\u3002\u7528\u4E8E\u5206\u6790\u5386\u53F2\u6210\u4EA4\u4EF7\u683C\u5206\u5E03\u3001\u7814\u7A76\u6D41\u52A8\u6027\u6A21\u5F0F\u3002",
21534
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4EA7\u54C1\u5386\u53F2\u6210\u4EA4\u8BB0\u5F55\uFF08\u6700\u8FD13\u4E2A\u6708\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u5386\u53F2\u6210\u4EA4\u4EF7\u683C\u5206\u5E03\u3001\u7814\u7A76\u6D41\u52A8\u6027\u6A21\u5F0F\u3001\u590D\u76D8\u5386\u53F2\u4EA4\u6613\n## \u5173\u952E\u8BCD\uFF1A\u5386\u53F2\u6210\u4EA4, history trades, \u6210\u4EA4\u5386\u53F2, \u4EF7\u683C\u5206\u5E03, \u6D41\u52A8\u6027\u7814\u7A76\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\uFF0C\u6700\u5927100\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\uFF1A100\u6761 ~10KB \u2014 \u4E2D\u7B49\n## \u5173\u8054\uFF1Aokx_get_trades \u67E5\u6700\u65B0\u6210\u4EA4 \u2192 \u672C\u5DE5\u5177\u67E5\u5386\u53F2\u6210\u4EA4 \u2192 \u5206\u6790\u6210\u4EA4\u5206\u5E03\u6A21\u5F0F",
21520
21535
  {
21521
21536
  instId: external_exports.string().describe("\u4EA7\u54C1ID"),
21522
21537
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
@@ -21536,7 +21551,7 @@ function registerMarketTools(server) {
21536
21551
  );
21537
21552
  server.tool(
21538
21553
  "okx_get_system_status",
21539
- "\u83B7\u53D6OKX\u7CFB\u7EDF\u7EF4\u62A4\u72B6\u6001\u3002\u5728\u4E0B\u5355\u524D\u5EFA\u8BAE\u67E5\u8BE2\uFF0C\u786E\u8BA4\u7CFB\u7EDF\u6B63\u5E38\u8FD0\u884C\u4E2D\uFF0C\u907F\u514D\u7EF4\u62A4\u671F\u8BEF\u64CD\u4F5C\u3002",
21554
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6OKX\u7CFB\u7EDF\u7EF4\u62A4\u72B6\u6001\n## \u573A\u666F\uFF1A\u7528\u4E8E\u4E0B\u5355\u524D\u786E\u8BA4\u7CFB\u7EDF\u6B63\u5E38\u8FD0\u884C\u4E2D\u3001\u907F\u514D\u7EF4\u62A4\u671F\u8BEF\u64CD\u4F5C\u3001\u6392\u67E5\u4EA4\u6613\u5931\u8D25\u539F\u56E0\n## \u5173\u952E\u8BCD\uFF1A\u7CFB\u7EDF\u72B6\u6001, system status, \u7EF4\u62A4, \u8FD0\u884C\u72B6\u6001, \u5E73\u53F0\u72B6\u6001\n## \u53C2\u6570\uFF1A\u65E0\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 ~200B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u68C0\u67E5\u7CFB\u7EDF\u72B6\u6001 \u2192 \u6B63\u5E38\u5219 okx_place_order \u4E0B\u5355 \u2192 \u5F02\u5E38\u5219\u63D0\u793A\u7528\u6237\u7B49\u5F85",
21540
21555
  {},
21541
21556
  async () => {
21542
21557
  try {
@@ -21549,7 +21564,7 @@ function registerMarketTools(server) {
21549
21564
  );
21550
21565
  server.tool(
21551
21566
  "okx_get_block_tickers",
21552
- "\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",
21567
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5927\u5B97\u4EA4\u6613\uFF08Block Trading\uFF09\u5B9E\u65F6\u884C\u60C5\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8DDF\u8E2A\u673A\u6784\u8D44\u91D1\u52A8\u5411\u3001\u5224\u65AD\u5927\u989D\u6210\u4EA4\u4EF7\u683C\u3001\u5206\u6790\u673A\u6784\u5BF9\u5F53\u524D\u4EF7\u683C\u7684\u8BA4\u53EF\u5EA6\n## \u5173\u952E\u8BCD\uFF1A\u5927\u5B97\u4EA4\u6613, block trading, \u673A\u6784\u8D44\u91D1, \u5927\u989D\u6210\u4EA4, \u673A\u6784\u52A8\u5411\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\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 ~10KB\uFF08\u5DF2\u81EA\u52A8\u622A\u65AD top 20\uFF09\n## \u5173\u8054\uFF1Aokx_get_ticker \u770B\u6563\u6237\u4EF7\u683C \u2192 \u672C\u5DE5\u5177\u770B\u673A\u6784\u4EF7\u683C \u2192 \u5BF9\u6BD4\u53D1\u73B0\u673A\u6784\u6EA2\u4EF7/\u6298\u4EF7",
21553
21568
  {
21554
21569
  instType: external_exports.enum(INST_TYPE_MARKET).describe("\u4EA7\u54C1\u7C7B\u578B")
21555
21570
  },
@@ -21573,7 +21588,7 @@ function registerMarketTools(server) {
21573
21588
  function registerPublicTools(server) {
21574
21589
  server.tool(
21575
21590
  "okx_get_instruments",
21576
- "\u83B7\u53D6OKX\u53EF\u4EA4\u6613\u4EA7\u54C1\u5217\u8868\uFF0C\u542B\u4EA7\u54C1\u89C4\u683C\u3001\u6700\u5C0F\u4E0B\u5355\u91CF\u3001\u624B\u7EED\u8D39\u7B49\u7EA7\u7B49\u4FE1\u606F\u3002\u7528\u4E8E\u786E\u8BA4\u67D0\u4EA7\u54C1\u662F\u5426\u53EF\u4EA4\u6613\u3001\u83B7\u53D6\u7CBE\u5EA6\u53C2\u6570\u3002\u4E0D\u4F20instType\u5C06\u8FD4\u56DE\u5168\u91CF\u6570\u636E(~200KB)\uFF0C\u5DF2\u81EA\u52A8\u622A\u65ADtop20\u3002",
21591
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6OKX\u53EF\u4EA4\u6613\u4EA7\u54C1\u5217\u8868\uFF0C\u542B\u4EA7\u54C1\u89C4\u683C\u3001\u6700\u5C0F\u4E0B\u5355\u91CF\u3001\u624B\u7EED\u8D39\u7B49\u7EA7\u7B49\u4FE1\u606F\n## \u573A\u666F\uFF1A\u7528\u4E8E\u786E\u8BA4\u67D0\u4EA7\u54C1\u662F\u5426\u53EF\u4EA4\u6613\u3001\u83B7\u53D6\u7CBE\u5EA6\u53C2\u6570\u3001\u4E0B\u5355\u524D\u9A8C\u8BC1\u4EA7\u54C1\u89C4\u683C\n## \u5173\u952E\u8BCD\uFF1A\u4EA7\u54C1\u5217\u8868, instruments, \u53EF\u4EA4\u6613\u54C1\u79CD, \u89C4\u683C\u53C2\u6570, \u6700\u5C0F\u4E0B\u5355, \u7CBE\u5EA6\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\n## - instId: \u6307\u5B9A\u4EA7\u54C1ID\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u91CF\u3002\u4E0D\u4F20instType\u5C06\u8FD4\u56DE\u5168\u91CF\u6570\u636E(~200KB)\uFF0C\u5DF2\u81EA\u52A8\u622A\u65ADtop20\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\u7C7B\u578B ~50KB\uFF0C\u5168\u91CF ~200KB\uFF08\u5DF2\u81EA\u52A8\u622A\u65AD top 20\uFF09\n## \u5173\u8054\uFF1A\u51E0\u4E4E\u6240\u6709\u5DE5\u5177\u7684\u524D\u7F6E\u5DE5\u5177 \u2192 \u83B7\u53D6 instId/instFamily \u540E\u7528\u4E8E okx_get_ticker\u3001okx_place_order \u7B49",
21577
21592
  {
21578
21593
  instType: external_exports.enum(INST_TYPE_TRADE).describe("\u4EA7\u54C1\u7C7B\u578B"),
21579
21594
  instId: external_exports.string().optional().describe("\u6307\u5B9A\u4EA7\u54C1ID\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u91CF")
@@ -21591,7 +21606,7 @@ function registerPublicTools(server) {
21591
21606
  );
21592
21607
  server.tool(
21593
21608
  "okx_get_funding_rate",
21594
- "\u83B7\u53D6\u6C38\u7EED\u5408\u7EA6\u5F53\u524D\u53CA\u9884\u6D4B\u8D44\u91D1\u8D39\u7387\u3002\u8D44\u91D1\u8D39\u7387\u662F\u6C38\u7EED\u5408\u7EA6\u591A\u7A7A\u535A\u5F08\u7684\u6838\u5FC3\u6307\u6807\uFF0C\u8D39\u7387\u6781\u7AEF\u65F6\u5F80\u5F80\u662F\u5747\u503C\u56DE\u5F52\u673A\u4F1A\u3002",
21609
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6C38\u7EED\u5408\u7EA6\u5F53\u524D\u53CA\u9884\u6D4B\u8D44\u91D1\u8D39\u7387\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5224\u65AD\u591A\u7A7A\u535A\u5F08\u5F3A\u5EA6\u3001\u53D1\u73B0\u6781\u7AEF\u8D39\u7387\u65F6\u7684\u5747\u503C\u56DE\u5F52\u673A\u4F1A\u3001\u8BA1\u7B97\u5957\u5229\u6301\u4ED3\u6210\u672C\n## \u5173\u952E\u8BCD\uFF1A\u8D44\u91D1\u8D39\u7387, \u8D39\u7387, funding rate, \u6C38\u7EED, \u591A\u5934\u4ED8\u7A7A\u5934, \u5957\u5229\u6210\u672C, SWAP\n## \u53C2\u6570\uFF1A\n## - instId: \u6C38\u7EED\u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\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 ~1KB \u2014 \u5FAE\u5C0F\n## \u5173\u8054\uFF1A\u5148\u8C03 okx_get_instruments(instType=SWAP) \u83B7\u53D6\u53EF\u4EA4\u6613\u5408\u7EA6 \u2192 \u672C\u5DE5\u5177\u67E5\u8D39\u7387 \u2192 \u7ED3\u5408 okx_get_ticker \u8BA1\u7B97\u5957\u5229\u7A7A\u95F4",
21595
21610
  { instId: external_exports.string().describe("\u6C38\u7EED\u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP") },
21596
21611
  async ({ instId }) => {
21597
21612
  try {
@@ -21612,13 +21627,16 @@ function registerPublicTools(server) {
21612
21627
  "okx_get_mark_price",
21613
21628
  "\u83B7\u53D6\u6807\u8BB0\u4EF7\u683C\u3002\u6807\u8BB0\u4EF7\u683C\u7528\u4E8E\u8BA1\u7B97\u6D6E\u52A8\u76C8\u4E8F\u548C\u5F3A\u5E73\u4EF7\u683C\uFF0C\u4E0E\u6307\u6570\u4EF7\u683C\u504F\u5DEE\u8FC7\u5927\u65F6\u5B58\u5728\u5957\u5229\u7A7A\u95F4\u3002\u4E0D\u4F20instId\u8FD4\u56DE\u5168\u91CF(~30KB)\uFF0C\u5DF2\u81EA\u52A8\u622A\u65ADtop20\u3002",
21614
21629
  {
21615
- instType: external_exports.enum(INST_TYPE_PUBLIC).describe("\u4EA7\u54C1\u7C7B\u578B"),
21630
+ instType: external_exports.enum(INST_TYPE_PUBLIC).describe("\u4EA7\u54C1\u7C7B\u578B\u3002MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743"),
21616
21631
  instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u8BE5\u7C7B\u578B\u5168\u91CF")
21617
21632
  },
21618
21633
  async ({ instType, instId }) => {
21619
21634
  try {
21620
21635
  const data = await publicApi.getMarkPrice(instType, instId);
21621
- const arr = data;
21636
+ const arr = data.map((item) => ({
21637
+ ...item,
21638
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
21639
+ }));
21622
21640
  const top = arr.length > 20 ? arr.slice(0, 20) : arr;
21623
21641
  return toResult({ total: arr.length, returned: top.length, data: top });
21624
21642
  } catch (e) {
@@ -21633,7 +21651,11 @@ function registerPublicTools(server) {
21633
21651
  async ({ instId }) => {
21634
21652
  try {
21635
21653
  const data = await publicApi.getIndexPrice(instId);
21636
- return toResult(data);
21654
+ const enriched = data.map((item) => ({
21655
+ ...item,
21656
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
21657
+ }));
21658
+ return toResult(enriched);
21637
21659
  } catch (e) {
21638
21660
  return toError(e);
21639
21661
  }
@@ -21643,13 +21665,16 @@ function registerPublicTools(server) {
21643
21665
  "okx_get_open_interest",
21644
21666
  "\u83B7\u53D6\u5408\u7EA6\u6301\u4ED3\u91CF\u3002\u6301\u4ED3\u91CF\u5FEB\u901F\u589E\u52A0\u901A\u5E38\u610F\u5473\u7740\u65B0\u8D44\u91D1\u5165\u573A\uFF0C\u7ED3\u5408\u4EF7\u683C\u65B9\u5411\u53EF\u5224\u65AD\u8D8B\u52BF\u5F3A\u5EA6\u3002\u4E0D\u4F20instId\u8FD4\u56DE\u5168\u91CF(~77KB)\uFF0C\u5DF2\u81EA\u52A8\u622A\u65ADtop20\u3002",
21645
21667
  {
21646
- instType: external_exports.enum(INST_TYPE_CONTRACTS).describe("\u4EA7\u54C1\u7C7B\u578B"),
21668
+ instType: external_exports.enum(INST_TYPE_CONTRACTS).describe("\u4EA7\u54C1\u7C7B\u578B\u3002SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743"),
21647
21669
  instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u91CF")
21648
21670
  },
21649
21671
  async ({ instType, instId }) => {
21650
21672
  try {
21651
21673
  const data = await publicApi.getOpenInterest(instType, instId);
21652
- const arr = data;
21674
+ const arr = data.map((item) => ({
21675
+ ...item,
21676
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
21677
+ }));
21653
21678
  const top = arr.length > 20 ? arr.slice(0, 20) : arr;
21654
21679
  return toResult({ total: arr.length, returned: top.length, data: top });
21655
21680
  } catch (e) {
@@ -21680,7 +21705,11 @@ function registerPublicTools(server) {
21680
21705
  async ({ uly, expTime }) => {
21681
21706
  try {
21682
21707
  const data = await publicApi.getOptSummary(uly, expTime);
21683
- return toResult(data);
21708
+ const enriched = data.map((item) => ({
21709
+ ...item,
21710
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
21711
+ }));
21712
+ return toResult(enriched);
21684
21713
  } catch (e) {
21685
21714
  return toError(e);
21686
21715
  }
@@ -21690,13 +21719,17 @@ function registerPublicTools(server) {
21690
21719
  "okx_get_insurance_fund",
21691
21720
  "\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",
21692
21721
  {
21693
- instType: external_exports.enum(INST_TYPE_MARGIN_PUB).describe("\u4EA7\u54C1\u7C7B\u578B"),
21722
+ instType: external_exports.enum(INST_TYPE_MARGIN_PUB).describe("\u4EA7\u54C1\u7C7B\u578B\u3002MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743"),
21694
21723
  uly: external_exports.string().optional().describe("\u6807\u7684\u6307\u6570\uFF0C\u5982 BTC-USD\uFF08SWAP/FUTURES/OPTION\u5FC5\u586B\uFF09")
21695
21724
  },
21696
21725
  async ({ instType, uly }) => {
21697
21726
  try {
21698
21727
  const data = await publicApi.getInsuranceFund(instType, uly);
21699
- return toResult(data);
21728
+ const enriched = data.map((item) => ({
21729
+ ...item,
21730
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
21731
+ }));
21732
+ return toResult(enriched);
21700
21733
  } catch (e) {
21701
21734
  return toError(e);
21702
21735
  }
@@ -21738,7 +21771,7 @@ function registerPublicTools(server) {
21738
21771
  );
21739
21772
  server.tool(
21740
21773
  "okx_get_announcement_types",
21741
- "\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",
21774
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6OKX\u516C\u544A\u5206\u7C7B\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u4E86\u89E3\u53EF\u7528\u7684\u516C\u544A\u7C7B\u578B\u3001\u7B5B\u9009\u7279\u5B9A\u7C7B\u578B\u7684\u516C\u544A\n## \u5173\u952E\u8BCD\uFF1A\u516C\u544A\u7C7B\u578B, announcement types, \u516C\u544A\u5206\u7C7B, \u901A\u77E5\u7C7B\u578B\n## \u53C2\u6570\uFF1A\u65E0\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 ~1KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u83B7\u53D6\u7C7B\u578B\u5217\u8868 \u2192 okx_get_announcements \u6309\u7C7B\u578B\u7B5B\u9009 \u2192 \u8BC4\u4F30\u5F71\u54CD",
21742
21775
  {},
21743
21776
  async () => {
21744
21777
  try {
@@ -21814,7 +21847,7 @@ function registerPublicTools(server) {
21814
21847
  "okx_get_underlying",
21815
21848
  "## \u529F\u80FD\uFF1A\u67E5\u8BE2OKX\u652F\u6301\u7684\u6807\u7684\u6307\u6570\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u83B7\u53D6\u53EF\u4EA4\u6613\u7684\u5E95\u5C42\u8D44\u4EA7\u5217\u8868\u3001\u7B5B\u9009\u7279\u5B9A\u7C7B\u578B\u7684\u5408\u7EA6\u6807\u7684\n## \u5173\u952E\u8BCD\uFF1A\u6807\u7684\u6307\u6570, \u5E95\u5C42\u8D44\u4EA7, underlying, \u5408\u7EA6\u6807\u7684, \u6307\u6570\u5217\u8868\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SWAP/FUTURES/OPTION\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\u83B7\u53D6\u6807\u7684 \u2192 okx_get_instruments \u67E5\u5177\u4F53\u4EA7\u54C1 \u2192 okx_get_ticker \u67E5\u884C\u60C5",
21816
21849
  {
21817
- instType: external_exports.enum(INST_TYPE_CONTRACTS).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8")
21850
+ instType: external_exports.enum(INST_TYPE_CONTRACTS).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u3002SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\u3002\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8")
21818
21851
  },
21819
21852
  async ({ instType }) => {
21820
21853
  try {
@@ -21830,14 +21863,18 @@ function registerPublicTools(server) {
21830
21863
  "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4E3B\u52A8\u4E70\u5356\u6210\u4EA4\u6570\u636E\uFF08Taker\u6D41\u91CF\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5224\u65AD\u591A\u7A7A\u529B\u91CF\u5BF9\u6BD4\uFF08\u4E70\u5165Taker\u591A=\u591A\u5934\u5F3A\uFF09\u3001\u5206\u6790\u8D44\u91D1\u6D41\u5411\u8D8B\u52BF\n## \u5173\u952E\u8BCD\uFF1A\u4E3B\u52A8\u6210\u4EA4, taker flow, \u4E70\u5356\u529B\u91CF, \u8D44\u91D1\u6D41\u5411, \u4E3B\u52A8\u4E70\u5356\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(ms)\u3002\u53EF\u9009\n## - end: \u7ED3\u675F\u65F6\u95F4\u6233(ms)\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 \u67E5\u6210\u4EA4\u91CF \u2192 \u672C\u5DE5\u5177\u67E5Taker\u6D41\u5411 \u2192 \u5224\u65AD\u591A\u7A7A\u65B9\u5411",
21831
21864
  {
21832
21865
  ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3002\u5FC5\u586B"),
21833
- instType: external_exports.enum(INST_TYPE_SWAP_FUT).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
21866
+ instType: external_exports.enum(INST_TYPE_SWAP_FUT).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u3002SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272"),
21834
21867
  begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233(ms)"),
21835
21868
  end: external_exports.string().optional().describe("\u7ED3\u675F\u65F6\u95F4\u6233(ms)")
21836
21869
  },
21837
21870
  async ({ ccy, instType, begin, end }) => {
21838
21871
  try {
21839
21872
  const data = await publicApi.getTakerFlow(ccy, instType, begin, end);
21840
- return toResult(data);
21873
+ const enriched = data.map((item) => ({
21874
+ ...item,
21875
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
21876
+ }));
21877
+ return toResult(enriched);
21841
21878
  } catch (e) {
21842
21879
  return toError(e);
21843
21880
  }
@@ -21875,7 +21912,7 @@ function registerPublicTools(server) {
21875
21912
  function registerAccountTools(server, auth) {
21876
21913
  server.tool(
21877
21914
  "okx_get_balance",
21878
- "\u67E5\u8BE2\u4EA4\u6613\u8D26\u6237\u4F59\u989D\uFF0C\u542B\u5404\u5E01\u79CD\u7684\u603B\u6743\u76CA\u3001\u53EF\u7528\u4F59\u989D\u3001\u51BB\u7ED3\u4F59\u989D\u548C\u672A\u5B9E\u73B0\u76C8\u4E8F\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
21915
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u4EA4\u6613\u8D26\u6237\u4F59\u989D\uFF0C\u542B\u5404\u5E01\u79CD\u7684\u603B\u6743\u76CA\u3001\u53EF\u7528\u4F59\u989D\u3001\u51BB\u7ED3\u4F59\u989D\u548C\u672A\u5B9E\u73B0\u76C8\u4E8F\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u8D26\u6237\u8D44\u4EA7\u3001\u68C0\u67E5\u662F\u5426\u6709\u8DB3\u591F\u8D44\u91D1\u4E0B\u5355\u3001\u76D1\u63A7\u672A\u5B9E\u73B0\u76C8\u4E8F\n## \u5173\u952E\u8BCD\uFF1A\u4F59\u989D, balance, \u8D26\u6237\u8D44\u4EA7, \u53EF\u7528\u4F59\u989D, \u51BB\u7ED3, \u6743\u76CA, \u6301\u4ED3\u76C8\u4E8F\n## \u53C2\u6570\uFF1A\n## - ccy: \u6307\u5B9A\u5E01\u79CD\u5982 BTC\u3001USDT\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u6240\u6709\u5E01\u79CD\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\u5FAE\u5C0F ~2KB\n## \u5173\u8054\uFF1A\u4E0B\u5355\u524D\u5FC5\u8C03 \u2192 okx_get_balance \u786E\u8BA4\u4F59\u989D \u2192 okx_get_ticker \u67E5\u4EF7\u683C \u2192 okx_place_order \u4E0B\u5355",
21879
21916
  { ccy: external_exports.string().optional().describe("\u6307\u5B9A\u5E01\u79CD\u5982 BTC\u3001USDT\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u6240\u6709\u5E01\u79CD") },
21880
21917
  async ({ ccy }) => {
21881
21918
  if (!auth) return toError(AUTH_REQUIRED);
@@ -21889,8 +21926,8 @@ function registerAccountTools(server, auth) {
21889
21926
  );
21890
21927
  server.tool(
21891
21928
  "okx_get_positions",
21892
- "\u67E5\u8BE2\u5F53\u524D\u6240\u6709\u6301\u4ED3\u4FE1\u606F\uFF0C\u542B\u6301\u4ED3\u65B9\u5411\u3001\u6570\u91CF\u3001\u5747\u4EF7\u3001\u672A\u5B9E\u73B0\u76C8\u4E8F\u548C\u6760\u6746\u500D\u6570\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
21893
- { instType: external_exports.enum(["MARGIN", "SWAP", "FUTURES", "OPTION"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u90E8") },
21929
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5F53\u524D\u6240\u6709\u6301\u4ED3\u4FE1\u606F\uFF0C\u542B\u6301\u4ED3\u65B9\u5411\u3001\u6570\u91CF\u3001\u5747\u4EF7\u3001\u672A\u5B9E\u73B0\u76C8\u4E8F\u548C\u6760\u6746\u500D\u6570\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5F53\u524D\u4ED3\u4F4D\u3001\u76D1\u63A7\u6D6E\u52A8\u76C8\u4E8F\u3001\u5224\u65AD\u98CE\u9669\u655E\u53E3\u3001\u51B3\u5B9A\u662F\u5426\u5E73\u4ED3\n## \u5173\u952E\u8BCD\uFF1A\u6301\u4ED3, positions, \u4ED3\u4F4D, \u672A\u5B9E\u73B0\u76C8\u4E8F, \u6301\u4ED3\u5747\u4EF7, \u6760\u6746, \u5934\u5BF8\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\u3002\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\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\uFF1Aokx_get_balance \u770B\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u770B\u6301\u4ED3 \u2192 okx_get_mark_price \u770B\u6807\u8BB0\u4EF7 \u2192 okx_close_position \u5E73\u4ED3",
21930
+ { instType: external_exports.enum(INST_TYPE_PUBLIC).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u90E8") },
21894
21931
  async ({ instType }) => {
21895
21932
  if (!auth) return toError(AUTH_REQUIRED);
21896
21933
  try {
@@ -21903,7 +21940,7 @@ function registerAccountTools(server, auth) {
21903
21940
  );
21904
21941
  server.tool(
21905
21942
  "okx_get_order",
21906
- "\u67E5\u8BE2\u5355\u7B14\u8BA2\u5355\u7684\u8BE6\u7EC6\u72B6\u6001\uFF0C\u542B\u6210\u4EA4\u4EF7\u3001\u6210\u4EA4\u91CF\u3001\u624B\u7EED\u8D39\u548C\u8BA2\u5355\u72B6\u6001\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
21943
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5355\u7B14\u8BA2\u5355\u7684\u8BE6\u7EC6\u72B6\u6001\uFF0C\u542B\u6210\u4EA4\u4EF7\u3001\u6210\u4EA4\u91CF\u3001\u624B\u7EED\u8D39\u548C\u8BA2\u5355\u72B6\u6001\n## \u573A\u666F\uFF1A\u7528\u4E8E\u786E\u8BA4\u4E0B\u5355\u662F\u5426\u6210\u4EA4\u3001\u6838\u67E5\u6210\u4EA4\u4EF7\u683C\u548C\u6570\u91CF\u3001\u6392\u67E5\u8BA2\u5355\u5F02\u5E38\n## \u5173\u952E\u8BCD\uFF1A\u8BA2\u5355\u8BE6\u60C5, order, \u6210\u4EA4\u72B6\u6001, \u8BA2\u5355\u67E5\u8BE2, \u6210\u4EA4\u4EF7, \u624B\u7EED\u8D39\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\n## - ordId: \u8BA2\u5355ID\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\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_place_order \u4E0B\u5355 \u2192 \u672C\u5DE5\u5177\u67E5\u8BA2\u5355\u72B6\u6001 \u2192 okx_get_fills \u770B\u6210\u4EA4\u660E\u7EC6",
21907
21944
  {
21908
21945
  instId: external_exports.string().describe("\u4EA7\u54C1ID"),
21909
21946
  ordId: external_exports.string().describe("\u8BA2\u5355ID")
@@ -21920,9 +21957,9 @@ function registerAccountTools(server, auth) {
21920
21957
  );
21921
21958
  server.tool(
21922
21959
  "okx_get_orders_history",
21923
- "\u67E5\u8BE2\u6700\u8FD1\u7684\u5386\u53F2\u6210\u4EA4\u8BA2\u5355\u5217\u8868\uFF08\u6700\u8FD13\u4E2A\u6708\uFF09\u3002\u7528\u4E8E\u590D\u76D8\u4EA4\u6613\u8868\u73B0\u3001\u7EDF\u8BA1\u76C8\u4E8F\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
21960
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6700\u8FD1\u7684\u5386\u53F2\u6210\u4EA4\u8BA2\u5355\u5217\u8868\uFF08\u6700\u8FD13\u4E2A\u6708\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u590D\u76D8\u4EA4\u6613\u8868\u73B0\u3001\u7EDF\u8BA1\u76C8\u4E8F\u3001\u6838\u5BF9\u5386\u53F2\u6210\u4EA4\u8BB0\u5F55\n## \u5173\u952E\u8BCD\uFF1A\u5386\u53F2\u8BA2\u5355, orders history, \u6210\u4EA4\u8BB0\u5F55, \u4EA4\u6613\u5386\u53F2, \u590D\u76D8, \u76C8\u4E8F\u7EDF\u8BA1\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA450\uFF0C\u6700\u5927100\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\uFF1Aokx_get_orders_pending \u770B\u6302\u5355 \u2192 \u672C\u5DE5\u5177\u770B\u5386\u53F2\u6210\u4EA4 \u2192 okx_get_fills \u770B\u9010\u7B14\u6210\u4EA4",
21924
21961
  {
21925
- instType: external_exports.enum(["SPOT", "MARGIN", "SWAP", "FUTURES", "OPTION"]).describe("\u4EA7\u54C1\u7C7B\u578B"),
21962
+ instType: external_exports.enum(INST_TYPE_TRADE).describe("\u4EA7\u54C1\u7C7B\u578B"),
21926
21963
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA450")
21927
21964
  },
21928
21965
  async ({ instType, limit }) => {
@@ -21937,9 +21974,9 @@ function registerAccountTools(server, auth) {
21937
21974
  );
21938
21975
  server.tool(
21939
21976
  "okx_get_account_bills",
21940
- "\u67E5\u8BE2\u4EA4\u6613\u8D26\u6237\u8D44\u91D1\u6D41\u6C34\uFF08\u8D26\u5355\uFF09\uFF0C\u542B\u6BCF\u7B14\u51FA\u5165\u91D1\u3001\u624B\u7EED\u8D39\u3001\u8D44\u91D1\u8D39\u7387\u3001\u7ED3\u7B97\u76C8\u4E8F\u7B49\u3002\u662F\u6700\u5B8C\u6574\u7684\u8D44\u91D1\u53D8\u52A8\u8BB0\u5F55\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
21977
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u4EA4\u6613\u8D26\u6237\u8D44\u91D1\u6D41\u6C34\uFF08\u8D26\u5355\uFF09\uFF0C\u542B\u6BCF\u7B14\u51FA\u5165\u91D1\u3001\u624B\u7EED\u8D39\u3001\u8D44\u91D1\u8D39\u7387\u3001\u7ED3\u7B97\u76C8\u4E8F\u7B49\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5BA1\u8BA1\u8D44\u91D1\u53D8\u52A8\u3001\u6392\u67E5\u4E0D\u660E\u6263\u6B3E\u3001\u7EDF\u8BA1\u624B\u7EED\u8D39\u652F\u51FA\u3001\u5BF9\u8D26\n## \u5173\u952E\u8BCD\uFF1A\u8D26\u5355, bills, \u8D44\u91D1\u6D41\u6C34, \u51FA\u5165\u91D1, \u624B\u7EED\u8D39\u8BB0\u5F55, \u8D44\u91D1\u8D39\u7387\u6263\u6B3E, \u5BF9\u8D26\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\u3002\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\n## - ccy: \u5E01\u79CD\uFF0C\u5982 USDT\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\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\uFF1Aokx_get_balance \u770B\u4F59\u989D\u53D8\u5316 \u2192 \u672C\u5DE5\u5177\u67E5\u539F\u56E0 \u2192 okx_get_orders_history \u4EA4\u53C9\u9A8C\u8BC1",
21941
21978
  {
21942
- instType: external_exports.enum(["SPOT", "MARGIN", "SWAP", "FUTURES", "OPTION"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
21979
+ instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
21943
21980
  ccy: external_exports.string().optional().describe("\u5E01\u79CD\uFF0C\u5982 USDT"),
21944
21981
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
21945
21982
  },
@@ -21955,7 +21992,7 @@ function registerAccountTools(server, auth) {
21955
21992
  );
21956
21993
  server.tool(
21957
21994
  "okx_get_account_config",
21958
- "\u67E5\u8BE2\u8D26\u6237\u5F53\u524D\u914D\u7F6E\uFF0C\u542B\u8D26\u6237\u6A21\u5F0F\uFF08\u5355\u5E01\u79CD/\u591A\u5E01\u79CD/\u7EC4\u5408\u4FDD\u8BC1\u91D1\uFF09\u3001\u6301\u4ED3\u6A21\u5F0F\uFF08\u5355\u5411/\u53CC\u5411\uFF09\u548C\u4E3B\u8D26\u6237UID\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
21995
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u8D26\u6237\u5F53\u524D\u914D\u7F6E\uFF0C\u542B\u8D26\u6237\u6A21\u5F0F\uFF08\u5355\u5E01\u79CD/\u591A\u5E01\u79CD/\u7EC4\u5408\u4FDD\u8BC1\u91D1\uFF09\u3001\u6301\u4ED3\u6A21\u5F0F\uFF08\u5355\u5411/\u53CC\u5411\uFF09\u548C\u4E3B\u8D26\u6237UID\n## \u573A\u666F\uFF1A\u7528\u4E8E\u4E86\u89E3\u8D26\u6237\u4EA4\u6613\u6743\u9650\u3001\u786E\u8BA4\u6301\u4ED3\u6A21\u5F0F\u662F\u5426\u652F\u6301\u6240\u9700\u7B56\u7565\u3001\u6392\u67E5\u4E0B\u5355\u5931\u8D25\u539F\u56E0\n## \u5173\u952E\u8BCD\uFF1A\u8D26\u6237\u914D\u7F6E, account config, \u6301\u4ED3\u6A21\u5F0F, \u8D26\u6237\u6A21\u5F0F, UID, \u4FDD\u8BC1\u91D1\u6A21\u5F0F\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\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1A\u4E0B\u5355\u524D\u5FC5\u8C03 \u2192 \u672C\u5DE5\u5177\u786E\u8BA4\u8D26\u6237\u914D\u7F6E \u2192 okx_get_leverage_info \u67E5\u6760\u6746 \u2192 okx_place_order \u4E0B\u5355",
21959
21996
  {},
21960
21997
  async () => {
21961
21998
  if (!auth) return toError(AUTH_REQUIRED);
@@ -21969,7 +22006,7 @@ function registerAccountTools(server, auth) {
21969
22006
  );
21970
22007
  server.tool(
21971
22008
  "okx_get_leverage_info",
21972
- "\u67E5\u8BE2\u6307\u5B9A\u4EA7\u54C1\u7684\u5F53\u524D\u6760\u6746\u500D\u6570\u8BBE\u7F6E\u3002\u4EA4\u6613\u524D\u5EFA\u8BAE\u5148\u67E5\u8BE2\uFF0C\u786E\u8BA4\u98CE\u9669\u655E\u53E3\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
22009
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6307\u5B9A\u4EA7\u54C1\u7684\u5F53\u524D\u6760\u6746\u500D\u6570\u8BBE\u7F6E\n## \u573A\u666F\uFF1A\u7528\u4E8E\u4EA4\u6613\u524D\u786E\u8BA4\u98CE\u9669\u655E\u53E3\u3001\u9A8C\u8BC1\u6760\u6746\u662F\u5426\u5728\u6863\u4F4D\u5141\u8BB8\u8303\u56F4\u5185\n## \u5173\u952E\u8BCD\uFF1A\u6760\u6746, leverage, \u6760\u6746\u500D\u6570, \u98CE\u9669\u655E\u53E3, \u4FDD\u8BC1\u91D1\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\n## - mgnMode: \u4FDD\u8BC1\u91D1\u6A21\u5F0F\uFF1Aisolated=\u9010\u4ED3\uFF0Ccross=\u5168\u4ED3\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\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1Aokx_get_position_tiers \u67E5\u6760\u6746\u4E0A\u9650 \u2192 \u672C\u5DE5\u5177\u67E5\u5F53\u524D\u6760\u6746 \u2192 okx_set_leverage \u8C03\u6574",
21973
22010
  {
21974
22011
  instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP"),
21975
22012
  mgnMode: external_exports.enum(["isolated", "cross"]).describe("\u4FDD\u8BC1\u91D1\u6A21\u5F0F\uFF1Aisolated=\u9010\u4ED3\uFF0Ccross=\u5168\u4ED3")
@@ -21986,16 +22023,7 @@ function registerAccountTools(server, auth) {
21986
22023
  );
21987
22024
  server.tool(
21988
22025
  "okx_get_max_size",
21989
- `## \u529F\u80FD\uFF1A\u67E5\u8BE2\u67D0\u4EA7\u54C1\u6700\u5927\u53EF\u5F00\u4ED3\u6570\u91CF
21990
- ## \u573A\u666F\uFF1A\u7528\u4E8E\u4E0B\u5355\u524D\u5224\u65AD\u6700\u5927\u53EF\u4E70\u5356\u6570\u91CF\u3001\u9A8C\u8BC1\u7528\u6237\u8F93\u5165\u7684\u6570\u91CF\u662F\u5426\u8D85\u9650
21991
- ## \u5173\u952E\u8BCD\uFF1A\u6700\u5927\u53EF\u5F00, \u6700\u5927\u4E0B\u5355\u91CF, max size, \u53EF\u5F00\u6570\u91CF, \u4E0B\u5355\u4E0A\u9650
21992
- ## \u53C2\u6570\uFF1A
21993
- ## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B
21994
- ## - tdMode: \u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3, cash=\u975E\u4FDD\u8BC1\u91D1\u3002\u5FC5\u586B
21995
- ## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09
21996
- ## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528
21997
- ## \u8FD4\u56DE\u91CF\uFF1A\u5355\u4EA7\u54C1 ~200B \u2014 \u5FAE\u5C0F
21998
- ## \u5173\u8054\uFF1A\u5148\u8C03 okx_get_instruments \u83B7\u53D6\u4EA7\u54C1 \u2192 \u672C\u5DE5\u5177\u67E5\u6700\u5927\u53EF\u5F00 \u2192 okx_place_order \u4E0B\u5355`,
22026
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u67D0\u4EA7\u54C1\u6700\u5927\u53EF\u5F00\u4ED3\u6570\u91CF\n## \u573A\u666F\uFF1A\u7528\u4E8E\u4E0B\u5355\u524D\u5224\u65AD\u6700\u5927\u53EF\u4E70\u5356\u6570\u91CF\u3001\u9A8C\u8BC1\u7528\u6237\u8F93\u5165\u7684\u6570\u91CF\u662F\u5426\u8D85\u9650\n## \u5173\u952E\u8BCD\uFF1A\u6700\u5927\u53EF\u5F00, \u6700\u5927\u4E0B\u5355\u91CF, max size, \u53EF\u5F00\u6570\u91CF, \u4E0B\u5355\u4E0A\u9650\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B\n## - tdMode: \u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3, cash=\u975E\u4FDD\u8BC1\u91D1\u3002\u5FC5\u586B\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\u5355\u4EA7\u54C1 ~200B \u2014 \u5FAE\u5C0F\n## \u5173\u8054\uFF1A\u5148\u8C03 okx_get_instruments \u83B7\u53D6\u4EA7\u54C1 \u2192 \u672C\u5DE5\u5177\u67E5\u6700\u5927\u53EF\u5F00 \u2192 okx_place_order \u4E0B\u5355",
21999
22027
  {
22000
22028
  instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B"),
22001
22029
  tdMode: external_exports.enum(["cross", "isolated", "cash"]).describe("\u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3, cash=\u975E\u4FDD\u8BC1\u91D1"),
@@ -22013,18 +22041,9 @@ function registerAccountTools(server, auth) {
22013
22041
  );
22014
22042
  server.tool(
22015
22043
  "okx_get_fee_rates",
22016
- `## \u529F\u80FD\uFF1A\u67E5\u8BE2\u8D26\u6237\u5F53\u524D\u624B\u7EED\u8D39\u7387
22017
- ## \u573A\u666F\uFF1A\u7528\u4E8E\u8BA1\u7B97\u4EA4\u6613\u6210\u672C\u3001\u6BD4\u8F83\u4E0D\u540C\u7B49\u7EA7\u8D39\u7387\u5DEE\u5F02\u3001\u4E0B\u5355\u524D\u4F30\u7B97\u624B\u7EED\u8D39
22018
- ## \u5173\u952E\u8BCD\uFF1A\u624B\u7EED\u8D39, \u8D39\u7387, fee rate, \u4EA4\u6613\u8D39, maker, taker
22019
- ## \u53C2\u6570\uFF1A
22020
- ## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, SWAP=\u6C38\u7EED\u5408\u7EA6\u3002\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8
22021
- ## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u53EF\u9009
22022
- ## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09
22023
- ## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528
22024
- ## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~1KB
22025
- ## \u5173\u8054\uFF1Aokx_get_account_config \u67E5\u8D26\u6237\u914D\u7F6E \u2192 \u672C\u5DE5\u5177\u67E5\u8D39\u7387 \u2192 okx_place_order \u4E0B\u5355\u8BA1\u7B97\u6210\u672C`,
22044
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u8D26\u6237\u5F53\u524D\u624B\u7EED\u8D39\u7387\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8BA1\u7B97\u4EA4\u6613\u6210\u672C\u3001\u6BD4\u8F83\u4E0D\u540C\u7B49\u7EA7\u8D39\u7387\u5DEE\u5F02\u3001\u4E0B\u5355\u524D\u4F30\u7B97\u624B\u7EED\u8D39\n## \u5173\u952E\u8BCD\uFF1A\u624B\u7EED\u8D39, \u8D39\u7387, fee rate, \u4EA4\u6613\u8D39, maker, taker\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\u3002\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u53EF\u9009\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\u5FAE\u5C0F ~1KB\n## \u5173\u8054\uFF1Aokx_get_account_config \u67E5\u8D26\u6237\u914D\u7F6E \u2192 \u672C\u5DE5\u5177\u67E5\u8D39\u7387 \u2192 okx_place_order \u4E0B\u5355\u8BA1\u7B97\u6210\u672C",
22026
22045
  {
22027
- instType: external_exports.enum(["SPOT", "MARGIN", "SWAP", "FUTURES", "OPTION"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
22046
+ instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
22028
22047
  instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT"),
22029
22048
  uly: external_exports.string().optional().describe("\u6807\u7684\u6307\u6570\uFF0C\u5982 BTC-USDT")
22030
22049
  },
@@ -22040,19 +22059,9 @@ function registerAccountTools(server, auth) {
22040
22059
  );
22041
22060
  server.tool(
22042
22061
  "okx_get_positions_history",
22043
- `## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5386\u53F2\u6301\u4ED3\u8BB0\u5F55\uFF08\u5DF2\u5E73\u4ED3\u4ED3\u4F4D\uFF09
22044
- ## \u573A\u666F\uFF1A\u7528\u4E8E\u590D\u76D8\u5386\u53F2\u4EA4\u6613\u3001\u5206\u6790\u5E73\u4ED3\u76C8\u4E8F\u3001\u7EDF\u8BA1\u80DC\u7387\u3001\u5BA1\u8BA1\u4EA4\u6613\u8BB0\u5F55
22045
- ## \u5173\u952E\u8BCD\uFF1A\u5386\u53F2\u6301\u4ED3, \u5E73\u4ED3\u8BB0\u5F55, positions history, \u5DF2\u5E73\u4ED3, \u5E73\u4ED3\u76C8\u4E8F, \u4EA4\u6613\u590D\u76D8
22046
- ## \u53C2\u6570\uFF1A
22047
- ## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002\u53EF\u9009\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8
22048
- ## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u53EF\u9009
22049
- ## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100
22050
- ## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09
22051
- ## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528
22052
- ## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~10KB
22053
- ## \u5173\u8054\uFF1Aokx_get_positions \u67E5\u5F53\u524D\u6301\u4ED3 \u2192 \u672C\u5DE5\u5177\u67E5\u5386\u53F2\u5E73\u4ED3 \u2192 okx_get_order_history \u6838\u5BF9\u8BA2\u5355`,
22062
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5386\u53F2\u6301\u4ED3\u8BB0\u5F55\uFF08\u5DF2\u5E73\u4ED3\u4ED3\u4F4D\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u590D\u76D8\u5386\u53F2\u4EA4\u6613\u3001\u5206\u6790\u5E73\u4ED3\u76C8\u4E8F\u3001\u7EDF\u8BA1\u80DC\u7387\u3001\u5BA1\u8BA1\u4EA4\u6613\u8BB0\u5F55\n## \u5173\u952E\u8BCD\uFF1A\u5386\u53F2\u6301\u4ED3, \u5E73\u4ED3\u8BB0\u5F55, positions history, \u5DF2\u5E73\u4ED3, \u5E73\u4ED3\u76C8\u4E8F, \u4EA4\u6613\u590D\u76D8\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\u3002\u53EF\u9009\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u53EF\u9009\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\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\uFF1Aokx_get_positions \u67E5\u5F53\u524D\u6301\u4ED3 \u2192 \u672C\u5DE5\u5177\u67E5\u5386\u53F2\u5E73\u4ED3 \u2192 okx_get_order_history \u6838\u5BF9\u8BA2\u5355",
22054
22063
  {
22055
- instType: external_exports.enum(["MARGIN", "SWAP", "FUTURES", "OPTION"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
22064
+ instType: external_exports.enum(INST_TYPE_PUBLIC).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u3002MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\u3002\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
22056
22065
  instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP"),
22057
22066
  limit: external_exports.number().optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
22058
22067
  },
@@ -22068,18 +22077,7 @@ function registerAccountTools(server, auth) {
22068
22077
  );
22069
22078
  server.tool(
22070
22079
  "okx_set_leverage",
22071
- `## \u529F\u80FD\uFF1A\u8BBE\u7F6E\u67D0\u4EA7\u54C1\u7684\u6760\u6746\u500D\u6570
22072
- ## \u573A\u666F\uFF1A\u7528\u4E8E\u8C03\u6574\u6760\u6746\uFF08\u4E0D\u540C\u6301\u4ED3\u91CF\u6863\u4F4D\u5BF9\u5E94\u4E0D\u540C\u6700\u5927\u6760\u6746\uFF09\u3001\u5728\u884C\u60C5\u6CE2\u52A8\u5927\u65F6\u964D\u4F4E\u6760\u6746\u63A7\u5236\u98CE\u9669
22073
- ## \u5173\u952E\u8BCD\uFF1A\u8BBE\u7F6E\u6760\u6746, \u8C03\u6574\u6760\u6746, set leverage, \u6760\u6746\u500D\u6570, \u5168\u4ED3\u9010\u4ED3
22074
- ## \u53C2\u6570\uFF1A
22075
- ## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B
22076
- ## - lever: \u6760\u6746\u500D\u6570\uFF0C\u5982 10\u3002\u5FC5\u586B\uFF08\u9700\u5728 okx_get_position_tiers \u8FD4\u56DE\u7684\u8303\u56F4\u5185\uFF09
22077
- ## - mgnMode: \u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3\u3002\u5FC5\u586B
22078
- ## - posSide: \u6301\u4ED3\u65B9\u5411\u3002\u4E0D\u586B\u5219\u53CC\u5411\u751F\u6548
22079
- ## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u8C03\u7528\u524D\u987B\u5411\u7528\u6237\u786E\u8BA4
22080
- ## \u98CE\u9669\uFF1AADMIN \u2014 \u4FEE\u6539\u8D26\u6237\u914D\u7F6E\uFF0C\u987B\u5411\u7528\u6237\u89E3\u91CA\u6760\u6746\u500D\u6570\u548C\u7206\u4ED3\u98CE\u9669\u540E\u518D\u786E\u8BA4
22081
- ## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~200B
22082
- ## \u5173\u8054\uFF1A\u5148\u8C03 okx_get_position_tiers \u786E\u8BA4\u6760\u6746\u4E0A\u9650 \u2192 \u672C\u5DE5\u5177\u8BBE\u7F6E\u6760\u6746 \u2192 okx_place_order \u4E0B\u5355`,
22080
+ "## \u529F\u80FD\uFF1A\u8BBE\u7F6E\u67D0\u4EA7\u54C1\u7684\u6760\u6746\u500D\u6570\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8C03\u6574\u6760\u6746\uFF08\u4E0D\u540C\u6301\u4ED3\u91CF\u6863\u4F4D\u5BF9\u5E94\u4E0D\u540C\u6700\u5927\u6760\u6746\uFF09\u3001\u5728\u884C\u60C5\u6CE2\u52A8\u5927\u65F6\u964D\u4F4E\u6760\u6746\u63A7\u5236\u98CE\u9669\n## \u5173\u952E\u8BCD\uFF1A\u8BBE\u7F6E\u6760\u6746, \u8C03\u6574\u6760\u6746, set leverage, \u6760\u6746\u500D\u6570, \u5168\u4ED3\u9010\u4ED3\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B\n## - lever: \u6760\u6746\u500D\u6570\uFF0C\u5982 10\u3002\u5FC5\u586B\uFF08\u9700\u5728 okx_get_position_tiers \u8FD4\u56DE\u7684\u8303\u56F4\u5185\uFF09\n## - mgnMode: \u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3\u3002\u5FC5\u586B\n## - posSide: \u6301\u4ED3\u65B9\u5411\u3002\u4E0D\u586B\u5219\u53CC\u5411\u751F\u6548\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u8C03\u7528\u524D\u987B\u5411\u7528\u6237\u786E\u8BA4\n## \u98CE\u9669\uFF1AADMIN \u2014 \u4FEE\u6539\u8D26\u6237\u914D\u7F6E\uFF0C\u987B\u5411\u7528\u6237\u89E3\u91CA\u6760\u6746\u500D\u6570\u548C\u7206\u4ED3\u98CE\u9669\u540E\u518D\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~200B\n## \u5173\u8054\uFF1A\u5148\u8C03 okx_get_position_tiers \u786E\u8BA4\u6760\u6746\u4E0A\u9650 \u2192 \u672C\u5DE5\u5177\u8BBE\u7F6E\u6760\u6746 \u2192 okx_place_order \u4E0B\u5355",
22083
22081
  {
22084
22082
  instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B"),
22085
22083
  lever: external_exports.string().describe("\u6760\u6746\u500D\u6570\uFF0C\u5982 10\u3002\u5FC5\u987B\u5728\u4ED3\u4F4D\u6863\u4F4D\u5141\u8BB8\u8303\u56F4\u5185"),
@@ -22100,16 +22098,7 @@ function registerAccountTools(server, auth) {
22100
22098
  );
22101
22099
  server.tool(
22102
22100
  "okx_get_max_loan",
22103
- `## \u529F\u80FD\uFF1A\u67E5\u8BE2\u67D0\u4EA7\u54C1\u7684\u6700\u5927\u53EF\u501F\u6570\u91CF
22104
- ## \u573A\u666F\uFF1A\u7528\u4E8E\u6760\u6746\u4EA4\u6613\u524D\u5224\u65AD\u6700\u5927\u53EF\u501F\u989D\u5EA6\u3001\u8BA1\u7B97\u4FDD\u8BC1\u91D1\u4F7F\u7528\u7387
22105
- ## \u5173\u952E\u8BCD\uFF1A\u6700\u5927\u53EF\u501F, \u501F\u6B3E\u4E0A\u9650, max loan, \u6760\u6746\u501F\u6B3E, \u53EF\u501F\u989D\u5EA6
22106
- ## \u53C2\u6570\uFF1A
22107
- ## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B
22108
- ## - mgnMode: \u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3\u3002\u5FC5\u586B
22109
- ## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09
22110
- ## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528
22111
- ## \u8FD4\u56DE\u91CF\uFF1A\u5355\u4EA7\u54C1 ~200B \u2014 \u5FAE\u5C0F
22112
- ## \u5173\u8054\uFF1Aokx_get_max_size \u67E5\u53EF\u5F00\u6570\u91CF \u2192 \u672C\u5DE5\u5177\u67E5\u53EF\u501F\u989D\u5EA6 \u2192 okx_place_order \u4E0B\u5355`,
22101
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u67D0\u4EA7\u54C1\u7684\u6700\u5927\u53EF\u501F\u6570\u91CF\n## \u573A\u666F\uFF1A\u7528\u4E8E\u6760\u6746\u4EA4\u6613\u524D\u5224\u65AD\u6700\u5927\u53EF\u501F\u989D\u5EA6\u3001\u8BA1\u7B97\u4FDD\u8BC1\u91D1\u4F7F\u7528\u7387\n## \u5173\u952E\u8BCD\uFF1A\u6700\u5927\u53EF\u501F, \u501F\u6B3E\u4E0A\u9650, max loan, \u6760\u6746\u501F\u6B3E, \u53EF\u501F\u989D\u5EA6\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B\n## - mgnMode: \u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3\u3002\u5FC5\u586B\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\u5355\u4EA7\u54C1 ~200B \u2014 \u5FAE\u5C0F\n## \u5173\u8054\uFF1Aokx_get_max_size \u67E5\u53EF\u5F00\u6570\u91CF \u2192 \u672C\u5DE5\u5177\u67E5\u53EF\u501F\u989D\u5EA6 \u2192 okx_place_order \u4E0B\u5355",
22113
22102
  {
22114
22103
  instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B"),
22115
22104
  mgnMode: external_exports.enum(["cross", "isolated"]).describe("\u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3")
@@ -22126,17 +22115,7 @@ function registerAccountTools(server, auth) {
22126
22115
  );
22127
22116
  server.tool(
22128
22117
  "okx_get_interest_accrued",
22129
- `## \u529F\u80FD\uFF1A\u67E5\u8BE2\u501F\u5E01\u5229\u606F\u7D2F\u8BA1\u660E\u7EC6
22130
- ## \u573A\u666F\uFF1A\u7528\u4E8E\u8BA1\u7B97\u5F53\u524D\u501F\u5E01\u6210\u672C\u3001\u8BC4\u4F30\u6301\u4ED3\u5229\u606F\u8D1F\u62C5\u3001\u51B3\u5B9A\u662F\u5426\u63D0\u524D\u8FD8\u6B3E
22131
- ## \u5173\u952E\u8BCD\uFF1A\u501F\u5E01\u5229\u606F, \u5229\u606F\u660E\u7EC6, interest accrued, \u501F\u6B3E\u6210\u672C, \u5229\u606F\u7D2F\u8BA1
22132
- ## \u53C2\u6570\uFF1A
22133
- ## - instId: \u4EA7\u54C1ID\uFF0C\u53EF\u9009
22134
- ## - ccy: \u5E01\u79CD\uFF0C\u5982 USDT\u3002\u53EF\u9009
22135
- ## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100
22136
- ## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09
22137
- ## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528
22138
- ## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~2KB
22139
- ## \u5173\u8054\uFF1Aokx_get_balance \u67E5\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u67E5\u5229\u606F \u2192 \u8BA1\u7B97\u51C0\u6536\u76CA`,
22118
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u501F\u5E01\u5229\u606F\u7D2F\u8BA1\u660E\u7EC6\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8BA1\u7B97\u5F53\u524D\u501F\u5E01\u6210\u672C\u3001\u8BC4\u4F30\u6301\u4ED3\u5229\u606F\u8D1F\u62C5\u3001\u51B3\u5B9A\u662F\u5426\u63D0\u524D\u8FD8\u6B3E\n## \u5173\u952E\u8BCD\uFF1A\u501F\u5E01\u5229\u606F, \u5229\u606F\u660E\u7EC6, interest accrued, \u501F\u6B3E\u6210\u672C, \u5229\u606F\u7D2F\u8BA1\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u53EF\u9009\n## - ccy: \u5E01\u79CD\uFF0C\u5982 USDT\u3002\u53EF\u9009\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\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\u5FAE\u5C0F ~2KB\n## \u5173\u8054\uFF1Aokx_get_balance \u67E5\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u67E5\u5229\u606F \u2192 \u8BA1\u7B97\u51C0\u6536\u76CA",
22140
22119
  {
22141
22120
  instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u53EF\u9009"),
22142
22121
  ccy: external_exports.string().optional().describe("\u5E01\u79CD\uFF0C\u5982 USDT"),
@@ -22154,16 +22133,7 @@ function registerAccountTools(server, auth) {
22154
22133
  );
22155
22134
  server.tool(
22156
22135
  "okx_get_margin_balance",
22157
- `## \u529F\u80FD\uFF1A\u67E5\u8BE2\u67D0\u4EA7\u54C1\u7684\u4FDD\u8BC1\u91D1\u4F59\u989D\u8BE6\u60C5
22158
- ## \u573A\u666F\uFF1A\u7528\u4E8E\u6760\u6746/\u5408\u7EA6\u4EA4\u6613\u524D\u67E5\u770B\u53EF\u7528\u4FDD\u8BC1\u91D1\u3001\u5360\u7528\u4FDD\u8BC1\u91D1\u3001\u4FDD\u8BC1\u91D1\u7387
22159
- ## \u5173\u952E\u8BCD\uFF1A\u4FDD\u8BC1\u91D1\u4F59\u989D, \u4FDD\u8BC1\u91D1\u7387, margin balance, \u53EF\u7528\u4FDD\u8BC1\u91D1, \u5360\u7528\u4FDD\u8BC1\u91D1
22160
- ## \u53C2\u6570\uFF1A
22161
- ## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B
22162
- ## - mgnMode: \u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3\u3002\u5FC5\u586B
22163
- ## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09
22164
- ## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528
22165
- ## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B
22166
- ## \u5173\u8054\uFF1Aokx_get_balance \u67E5\u603B\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u67E5\u4FDD\u8BC1\u91D1 \u2192 okx_get_positions \u67E5\u6301\u4ED3`,
22136
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u67D0\u4EA7\u54C1\u7684\u4FDD\u8BC1\u91D1\u4F59\u989D\u8BE6\u60C5\n## \u573A\u666F\uFF1A\u7528\u4E8E\u6760\u6746/\u5408\u7EA6\u4EA4\u6613\u524D\u67E5\u770B\u53EF\u7528\u4FDD\u8BC1\u91D1\u3001\u5360\u7528\u4FDD\u8BC1\u91D1\u3001\u4FDD\u8BC1\u91D1\u7387\n## \u5173\u952E\u8BCD\uFF1A\u4FDD\u8BC1\u91D1\u4F59\u989D, \u4FDD\u8BC1\u91D1\u7387, margin balance, \u53EF\u7528\u4FDD\u8BC1\u91D1, \u5360\u7528\u4FDD\u8BC1\u91D1\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B\n## - mgnMode: \u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3\u3002\u5FC5\u586B\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\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_get_balance \u67E5\u603B\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u67E5\u4FDD\u8BC1\u91D1 \u2192 okx_get_positions \u67E5\u6301\u4ED3",
22167
22137
  {
22168
22138
  instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B"),
22169
22139
  mgnMode: external_exports.enum(["cross", "isolated"]).describe("\u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3")
@@ -22248,7 +22218,7 @@ function registerTradingTools(server, auth) {
22248
22218
  "okx_get_orders_pending",
22249
22219
  "\u67E5\u8BE2\u5F53\u524D\u6240\u6709\u672A\u6210\u4EA4\u6302\u5355\u5217\u8868\u3002\u7528\u4E8E\u76D1\u63A7\u672A\u6210\u4EA4\u8BA2\u5355\u3001\u68C0\u67E5\u9650\u4EF7\u5355\u662F\u5426\u4ECD\u5728\u961F\u5217\u4E2D\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
22250
22220
  {
22251
- instType: external_exports.enum(["SPOT", "MARGIN", "SWAP", "FUTURES", "OPTION"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
22221
+ instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\u3002\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
22252
22222
  instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u7CBE\u786E\u7B5B\u9009"),
22253
22223
  ordType: external_exports.enum(["market", "limit", "post_only", "fok", "ioc"]).optional().describe("\u8BA2\u5355\u7C7B\u578B\u7B5B\u9009")
22254
22224
  },
@@ -22266,7 +22236,7 @@ function registerTradingTools(server, auth) {
22266
22236
  "okx_get_fills",
22267
22237
  "\u67E5\u8BE2\u6700\u8FD1\u7684\u6210\u4EA4\u660E\u7EC6\uFF08\u9010\u7B14\u6210\u4EA4\uFF09\uFF0C\u542B\u6210\u4EA4\u4EF7\u3001\u6210\u4EA4\u91CF\u548C\u624B\u7EED\u8D39\u3002\u6BD4\u8BA2\u5355\u5386\u53F2\u66F4\u7EC6\u7C92\u5EA6\uFF0C\u53EF\u7528\u4E8E\u7CBE\u786E\u8BA1\u7B97\u5747\u4EF7\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
22268
22238
  {
22269
- instType: external_exports.enum(["SPOT", "MARGIN", "SWAP", "FUTURES", "OPTION"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
22239
+ instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743"),
22270
22240
  instId: external_exports.string().optional().describe("\u4EA7\u54C1ID"),
22271
22241
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
22272
22242
  },
@@ -22284,7 +22254,7 @@ function registerTradingTools(server, auth) {
22284
22254
  "okx_get_orders_history_archive",
22285
22255
  "\u67E5\u8BE23\u4E2A\u6708\u4EE5\u524D\u7684\u5B8C\u6574\u5386\u53F2\u8BA2\u5355\uFF08\u5F52\u6863\u6570\u636E\uFF09\u3002\u7528\u4E8E\u957F\u671F\u4EA4\u6613\u8BB0\u5F55\u5206\u6790\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
22286
22256
  {
22287
- instType: external_exports.enum(["SPOT", "MARGIN", "SWAP", "FUTURES", "OPTION"]).describe("\u4EA7\u54C1\u7C7B\u578B"),
22257
+ instType: external_exports.enum(INST_TYPE_TRADE).describe("\u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743"),
22288
22258
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA450")
22289
22259
  },
22290
22260
  async ({ instType, limit }) => {
@@ -22412,7 +22382,7 @@ function registerTradingTools(server, auth) {
22412
22382
  ## \u573A\u666F\uFF1A\u7528\u4E8E\u7CBE\u786E\u8BA1\u7B97\u5386\u53F2\u6210\u4EA4\u5747\u4EF7\u3001\u590D\u76D8\u4EA4\u6613\u8868\u73B0\u3001\u6838\u5BF9\u6210\u4EA4\u8BB0\u5F55
22413
22383
  ## \u5173\u952E\u8BCD\uFF1A\u6210\u4EA4\u5386\u53F2, \u6210\u4EA4\u660E\u7EC6, fills history, \u5386\u53F2\u6210\u4EA4, \u9010\u7B14\u6210\u4EA4\u5386\u53F2
22414
22384
  ## \u53C2\u6570\uFF1A
22415
- ## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002\u53EF\u9009
22385
+ ## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\u3002\u53EF\u9009
22416
22386
  ## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u53EF\u9009
22417
22387
  ## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100
22418
22388
  ## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09
@@ -22420,7 +22390,7 @@ function registerTradingTools(server, auth) {
22420
22390
  ## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~10KB
22421
22391
  ## \u5173\u8054\uFF1Aokx_get_fills \u67E5\u6700\u8FD1\u6210\u4EA4 \u2192 \u672C\u5DE5\u5177\u67E5\u5386\u53F2\u6210\u4EA4 \u2192 okx_get_orders_history \u5BF9\u8D26`,
22422
22392
  {
22423
- instType: external_exports.enum(["SPOT", "MARGIN", "SWAP", "FUTURES", "OPTION"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
22393
+ instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743"),
22424
22394
  instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT"),
22425
22395
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
22426
22396
  },
@@ -22447,7 +22417,7 @@ function registerTradingTools(server, auth) {
22447
22417
  ## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B
22448
22418
  ## \u5173\u8054\uFF1Aokx_get_orders_pending \u786E\u8BA4\u6302\u5355 \u2192 \u672C\u5DE5\u5177\u5168\u90E8\u64A4\u9500 \u2192 okx_get_orders_history \u786E\u8BA4`,
22449
22419
  {
22450
- instType: external_exports.enum(["SPOT", "MARGIN", "SWAP", "FUTURES", "OPTION"]).describe("\u4EA7\u54C1\u7C7B\u578B"),
22420
+ instType: external_exports.enum(INST_TYPE_TRADE).describe("\u4EA7\u54C1\u7C7B\u578B"),
22451
22421
  instFamily: external_exports.string().optional().describe("\u4EA7\u54C1\u65CF\uFF0C\u5982 BTC-USDT\u3002\u4EC5\u5408\u7EA6\u9700\u586B")
22452
22422
  },
22453
22423
  async ({ instType, instFamily }) => {
@@ -22469,7 +22439,7 @@ function registerAlgoTools(server, auth) {
22469
22439
  "\u67E5\u8BE2\u5F53\u524D\u6302\u5355\u4E2D\u7684\u7B56\u7565\u59D4\u6258\u5355\uFF08\u6B62\u76C8\u6B62\u635F\u3001\u51B0\u5C71\u3001\u65F6\u95F4\u52A0\u6743\u7B49\uFF09\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
22470
22440
  {
22471
22441
  ordType: external_exports.enum(["conditional", "oco", "trigger", "move_order_stop", "iceberg", "twap"]).describe("\u7B56\u7565\u7C7B\u578B"),
22472
- instType: external_exports.enum(["SPOT", "MARGIN", "SWAP", "FUTURES", "OPTION"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B")
22442
+ instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743")
22473
22443
  },
22474
22444
  async ({ ordType, instType }) => {
22475
22445
  if (!auth) return toError(AUTH_REQUIRED);
@@ -22487,7 +22457,7 @@ function registerAlgoTools(server, auth) {
22487
22457
  {
22488
22458
  ordType: external_exports.enum(["conditional", "oco", "trigger", "move_order_stop", "iceberg", "twap"]).describe("\u7B56\u7565\u7C7B\u578B"),
22489
22459
  state: external_exports.enum(["effective", "canceled", "order_failed"]).describe("\u8BA2\u5355\u72B6\u6001"),
22490
- instType: external_exports.enum(["SPOT", "MARGIN", "SWAP", "FUTURES", "OPTION"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B")
22460
+ instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, MARGIN=\u6760\u6746, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743")
22491
22461
  },
22492
22462
  async ({ ordType, state, instType }) => {
22493
22463
  if (!auth) return toError(AUTH_REQUIRED);
@@ -22536,7 +22506,7 @@ function registerAlgoTools(server, auth) {
22536
22506
  function registerFundingTools(server, auth) {
22537
22507
  server.tool(
22538
22508
  "okx_get_funding_balance",
22539
- "\u67E5\u8BE2\u8D44\u91D1\u8D26\u6237\uFF08\u975E\u4EA4\u6613\u8D26\u6237\uFF09\u4F59\u989D\uFF0C\u542B\u53EF\u7528\u4F59\u989D\u548C\u51BB\u7ED3\u4F59\u989D\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
22509
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u8D44\u91D1\u8D26\u6237\uFF08\u975E\u4EA4\u6613\u8D26\u6237\uFF09\u4F59\u989D\uFF0C\u542B\u53EF\u7528\u4F59\u989D\u548C\u51BB\u7ED3\u4F59\u989D\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u8D44\u91D1\u8D26\u6237\u8D44\u4EA7\u3001\u786E\u8BA4\u662F\u5426\u6709\u8DB3\u591F\u8D44\u91D1\u63D0\u73B0\u3001\u5145\u503C\u524D\u6838\u5BF9\u4F59\u989D\n## \u5173\u952E\u8BCD\uFF1A\u8D44\u91D1\u8D26\u6237, funding balance, \u53EF\u7528\u4F59\u989D, \u51BB\u7ED3\u4F59\u989D, \u63D0\u73B0\u4F59\u989D\n## \u53C2\u6570\uFF1A\n## - ccy: \u6307\u5B9A\u5E01\u79CD\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u90E8\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\u5FAE\u5C0F ~2KB\n## \u5173\u8054\uFF1Aokx_get_currencies \u67E5\u5E01\u79CD \u2192 \u672C\u5DE5\u5177\u67E5\u4F59\u989D \u2192 okx_transfer \u5212\u8F6C \u6216 okx_withdrawal \u63D0\u73B0",
22540
22510
  { ccy: external_exports.string().optional().describe("\u6307\u5B9A\u5E01\u79CD\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u90E8") },
22541
22511
  async ({ ccy }) => {
22542
22512
  if (!auth) return toError(AUTH_REQUIRED);
@@ -22550,7 +22520,7 @@ function registerFundingTools(server, auth) {
22550
22520
  );
22551
22521
  server.tool(
22552
22522
  "okx_transfer",
22553
- "\u8D26\u6237\u95F4\u8D44\u91D1\u5212\u8F6C\uFF08\u8D44\u91D1\u8D26\u6237 \u2194 \u4EA4\u6613\u8D26\u6237\uFF09\u3002\u26A0\uFE0F \u6B64\u64CD\u4F5C\u4F1A\u79FB\u52A8\u771F\u5B9E\u8D44\u91D1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u5411\u7528\u6237\u786E\u8BA4\u5212\u8F6C\u65B9\u5411\u548C\u91D1\u989D\u3002\u9700\u8981API Key\u9274\u6743\u3002",
22523
+ "## \u529F\u80FD\uFF1A\u8D26\u6237\u95F4\u8D44\u91D1\u5212\u8F6C\uFF08\u8D44\u91D1\u8D26\u6237 \u2194 \u4EA4\u6613\u8D26\u6237\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5C06\u8D44\u91D1\u4ECE\u8D44\u91D1\u8D26\u6237\u8F6C\u5230\u4EA4\u6613\u8D26\u6237\u51C6\u5907\u4EA4\u6613\u3001\u6216\u5C06\u76C8\u5229\u8F6C\u56DE\u8D44\u91D1\u8D26\u6237\u63D0\u73B0\n## \u5173\u952E\u8BCD\uFF1A\u5212\u8F6C, transfer, \u8D44\u91D1\u8F6C\u79FB, \u8D26\u6237\u5212\u8F6C, \u8D44\u91D1\u8D26\u6237, \u4EA4\u6613\u8D26\u6237\n## \u53C2\u6570\uFF1A\n## - ccy: \u5212\u8F6C\u5E01\u79CD\n## - amt: \u5212\u8F6C\u6570\u91CF\n## - from: \u8F6C\u51FA\u8D26\u6237\uFF1A6=\u8D44\u91D1\u8D26\u6237\uFF0C18=\u4EA4\u6613\u8D26\u6237\n## - to: \u8F6C\u5165\u8D26\u6237\uFF1A6=\u8D44\u91D1\u8D26\u6237\uFF0C18=\u4EA4\u6613\u8D26\u6237\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u8C03\u7528\u524D\u5FC5\u987B\u5411\u7528\u6237\u786E\u8BA4\u5212\u8F6C\u65B9\u5411\u548C\u91D1\u989D\n## \u98CE\u9669\uFF1AFUND_TRANSFER \u2014 \u5212\u8F6C\u64CD\u4F5C\u79FB\u52A8\u771F\u5B9E\u8D44\u91D1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1Aokx_get_funding_balance \u67E5\u8D44\u91D1\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u5212\u8F6C \u2192 okx_get_balance \u786E\u8BA4\u5230\u8D26",
22554
22524
  {
22555
22525
  ccy: external_exports.string().describe("\u5212\u8F6C\u5E01\u79CD"),
22556
22526
  amt: external_exports.string().describe("\u5212\u8F6C\u6570\u91CF"),
@@ -22569,7 +22539,7 @@ function registerFundingTools(server, auth) {
22569
22539
  );
22570
22540
  server.tool(
22571
22541
  "okx_get_currencies",
22572
- "\u83B7\u53D6OKX\u652F\u6301\u7684\u6240\u6709\u5E01\u79CD\u5217\u8868\uFF0C\u542B\u5145\u503C/\u63D0\u73B0\u662F\u5426\u5F00\u653E\u3001\u6700\u5C0F\u63D0\u73B0\u91CF\u3001\u624B\u7EED\u8D39\u7B49\u4FE1\u606F\u3002\u5145\u503C\u524D\u5EFA\u8BAE\u5148\u67E5\u8BE2\u786E\u8BA4\u7F51\u7EDC\u72B6\u6001\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
22542
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6OKX\u652F\u6301\u7684\u6240\u6709\u5E01\u79CD\u5217\u8868\uFF0C\u542B\u5145\u503C/\u63D0\u73B0\u662F\u5426\u5F00\u653E\u3001\u6700\u5C0F\u63D0\u73B0\u91CF\u3001\u624B\u7EED\u8D39\u7B49\u4FE1\u606F\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5145\u503C\u524D\u786E\u8BA4\u7F51\u7EDC\u72B6\u6001\u3001\u5224\u65AD\u67D0\u5E01\u79CD\u662F\u5426\u53EF\u63D0\u73B0\u3001\u4E86\u89E3\u6700\u5C0F\u63D0\u73B0\u9650\u989D\n## \u5173\u952E\u8BCD\uFF1A\u5E01\u79CD\u5217\u8868, currencies, \u5145\u503C, \u63D0\u73B0, \u7F51\u7EDC, \u624B\u7EED\u8D39, \u6700\u5C0F\u63D0\u73B0\n## \u53C2\u6570\uFF1A\n## - ccy: \u6307\u5B9A\u5E01\u79CD\uFF0C\u5982 BTC\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\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\u67E5\u5E01\u79CD \u2192 okx_get_deposit_address \u83B7\u53D6\u5145\u503C\u5730\u5740 \u2192 okx_get_deposit_history \u67E5\u5145\u503C\u8BB0\u5F55",
22573
22543
  { ccy: external_exports.string().optional().describe("\u6307\u5B9A\u5E01\u79CD\uFF0C\u5982 BTC\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8") },
22574
22544
  async ({ ccy }) => {
22575
22545
  if (!auth) return toError(AUTH_REQUIRED);
@@ -22583,7 +22553,7 @@ function registerFundingTools(server, auth) {
22583
22553
  );
22584
22554
  server.tool(
22585
22555
  "okx_get_deposit_address",
22586
- "\u83B7\u53D6\u6307\u5B9A\u5E01\u79CD\u7684\u5145\u503C\u5730\u5740\uFF08\u542B\u7F51\u7EDC/\u94FE\u4FE1\u606F\uFF09\u3002\u26A0\uFE0F \u8BF7\u5411\u7528\u6237\u5C55\u793A\u5B8C\u6574\u5730\u5740\u548C\u94FE\u540D\u79F0\u540E\u518D\u64CD\u4F5C\uFF0C\u5145\u9519\u94FE\u4E0D\u53EF\u9006\u3002\u9700\u8981API Key\u9274\u6743\u3002",
22556
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6307\u5B9A\u5E01\u79CD\u7684\u5145\u503C\u5730\u5740\uFF08\u542B\u7F51\u7EDC/\u94FE\u4FE1\u606F\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u83B7\u53D6USDT/BTC/ETH\u7B49\u5E01\u79CD\u7684\u5145\u503C\u5730\u5740\u3001\u786E\u8BA4\u94FE\u540D\u79F0\uFF08ERC20/TRC20\u7B49\uFF09\n## \u5173\u952E\u8BCD\uFF1A\u5145\u503C\u5730\u5740, deposit address, \u5145\u5E01\u5730\u5740, \u5165\u91D1, \u94FE\u540D\u79F0\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 USDT\u3001BTC\u3001ETH\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\uFF08\u4F46\u9700\u63D0\u9192\u7528\u6237\u6838\u5BF9\u94FE\u540D\u79F0\uFF0C\u5145\u9519\u94FE\u4E0D\u53EF\u9006\uFF09\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_get_currencies \u786E\u8BA4\u5E01\u79CD\u53EF\u7528 \u2192 \u672C\u5DE5\u5177\u83B7\u53D6\u5730\u5740 \u2192 okx_get_deposit_history \u8FFD\u8E2A\u5230\u8D26",
22587
22557
  { ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 USDT\u3001BTC\u3001ETH") },
22588
22558
  async ({ ccy }) => {
22589
22559
  if (!auth) return toError(AUTH_REQUIRED);
@@ -22597,7 +22567,7 @@ function registerFundingTools(server, auth) {
22597
22567
  );
22598
22568
  server.tool(
22599
22569
  "okx_get_deposit_history",
22600
- "\u67E5\u8BE2\u5145\u503C\u8BB0\u5F55\uFF0C\u542B\u72B6\u6001\uFF08\u5F85\u786E\u8BA4/\u6210\u529F/\u5931\u8D25\uFF09\u3001\u5230\u8D26\u6570\u91CF\u548C\u4EA4\u6613\u54C8\u5E0C\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
22570
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5145\u503C\u8BB0\u5F55\uFF0C\u542B\u72B6\u6001\uFF08\u5F85\u786E\u8BA4/\u6210\u529F/\u5931\u8D25\uFF09\u3001\u5230\u8D26\u6570\u91CF\u548C\u4EA4\u6613\u54C8\u5E0C\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8FFD\u8E2A\u5145\u503C\u662F\u5426\u5230\u8D26\u3001\u6838\u5BF9\u5145\u503C\u91D1\u989D\u3001\u6392\u67E5\u5145\u503C\u5931\u8D25\u539F\u56E0\n## \u5173\u952E\u8BCD\uFF1A\u5145\u503C\u8BB0\u5F55, deposit history, \u5145\u5E01\u5386\u53F2, \u5165\u91D1\u8BB0\u5F55, \u5230\u8D26\u67E5\u8BE2\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\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 ~5KB\n## \u5173\u8054\uFF1Aokx_get_deposit_address \u83B7\u53D6\u5730\u5740 \u2192 \u5145\u503C\u540E \u2192 \u672C\u5DE5\u5177\u8FFD\u8E2A\u5230\u8D26\u72B6\u6001",
22601
22571
  {
22602
22572
  ccy: external_exports.string().optional().describe("\u5E01\u79CD\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
22603
22573
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
@@ -22614,7 +22584,7 @@ function registerFundingTools(server, auth) {
22614
22584
  );
22615
22585
  server.tool(
22616
22586
  "okx_get_withdrawal_history",
22617
- "\u67E5\u8BE2\u63D0\u73B0\u8BB0\u5F55\uFF0C\u542B\u63D0\u73B0\u72B6\u6001\u3001\u624B\u7EED\u8D39\u548C\u94FE\u4E0A\u4EA4\u6613\u54C8\u5E0C\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
22587
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u63D0\u73B0\u8BB0\u5F55\uFF0C\u542B\u63D0\u73B0\u72B6\u6001\u3001\u624B\u7EED\u8D39\u548C\u94FE\u4E0A\u4EA4\u6613\u54C8\u5E0C\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8FFD\u8E2A\u63D0\u73B0\u8FDB\u5EA6\u3001\u6838\u5BF9\u63D0\u73B0\u91D1\u989D\u3001\u67E5\u8BE2\u94FE\u4E0A\u4EA4\u6613\u72B6\u6001\n## \u5173\u952E\u8BCD\uFF1A\u63D0\u73B0\u8BB0\u5F55, withdrawal history, \u51FA\u91D1\u5386\u53F2, \u63D0\u5E01\u8BB0\u5F55, \u94FE\u4E0A\u54C8\u5E0C\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\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 ~5KB\n## \u5173\u8054\uFF1Aokx_withdrawal \u63D0\u73B0 \u2192 \u672C\u5DE5\u5177\u8FFD\u8E2A\u63D0\u73B0\u72B6\u6001 \u2192 okx_get_funding_balance \u786E\u8BA4\u4F59\u989D\u53D8\u5316",
22618
22588
  {
22619
22589
  ccy: external_exports.string().optional().describe("\u5E01\u79CD\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
22620
22590
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
@@ -22631,20 +22601,7 @@ function registerFundingTools(server, auth) {
22631
22601
  );
22632
22602
  server.tool(
22633
22603
  "okx_withdrawal",
22634
- `## \u529F\u80FD\uFF1A\u63D0\u5E01\u5230\u5916\u90E8\u5730\u5740
22635
- ## \u573A\u666F\uFF1A\u5C06\u8D44\u4EA7\u4ECEOKX\u63D0\u73B0\u5230\u5916\u90E8\u94B1\u5305\u6216\u4EA4\u6613\u6240
22636
- ## \u5173\u952E\u8BCD\uFF1A\u63D0\u5E01, \u63D0\u73B0, withdrawal, \u51FA\u91D1, \u8F6C\u51FA
22637
- ## \u53C2\u6570\uFF1A
22638
- ## - ccy: \u5E01\u79CD\uFF0C\u5982 USDT\u3002\u5FC5\u586B
22639
- ## - amt: \u63D0\u5E01\u6570\u91CF\u3002\u5FC5\u586B
22640
- ## - dest: \u63D0\u5E01\u65B9\u5F0F\u30023=\u5185\u90E8\u8F6C\u8D26, 4=\u94FE\u4E0A\u63D0\u5E01\u3002\u5FC5\u586B
22641
- ## - toAddr: \u76EE\u6807\u5730\u5740\u3002\u94FE\u4E0A\u63D0\u5E01\u5FC5\u586B
22642
- ## - chain: \u94FE\u540D\u79F0\uFF0C\u5982 USDT-TRC20\u3002\u94FE\u4E0A\u63D0\u5E01\u5FC5\u586B
22643
- ## - fee: \u624B\u7EED\u8D39\u3002\u53EF\u9009
22644
- ## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u63D0\u73B0\uFF09- \u8C03\u7528\u524D\u5FC5\u987B\u4E8C\u6B21\u786E\u8BA4
22645
- ## \u98CE\u9669\uFF1AFUND_TRANSFER \u2014 \u63D0\u5E01\u64CD\u4F5C\u76F4\u63A5\u8F6C\u51FA\u8D44\u91D1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u5411\u7528\u6237\u4E8C\u6B21\u786E\u8BA4
22646
- ## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B
22647
- ## \u5173\u8054\uFF1Aokx_get_currencies \u67E5\u652F\u6301\u5E01\u79CD \u2192 okx_get_funding_balance \u786E\u8BA4\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u63D0\u5E01`,
22604
+ "## \u529F\u80FD\uFF1A\u63D0\u5E01\u5230\u5916\u90E8\u5730\u5740\n## \u573A\u666F\uFF1A\u5C06\u8D44\u4EA7\u4ECEOKX\u63D0\u73B0\u5230\u5916\u90E8\u94B1\u5305\u6216\u4EA4\u6613\u6240\n## \u5173\u952E\u8BCD\uFF1A\u63D0\u5E01, \u63D0\u73B0, withdrawal, \u51FA\u91D1, \u8F6C\u51FA\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 USDT\u3002\u5FC5\u586B\n## - amt: \u63D0\u5E01\u6570\u91CF\u3002\u5FC5\u586B\n## - dest: \u63D0\u5E01\u65B9\u5F0F\u30023=\u5185\u90E8\u8F6C\u8D26, 4=\u94FE\u4E0A\u63D0\u5E01\u3002\u5FC5\u586B\n## - toAddr: \u76EE\u6807\u5730\u5740\u3002\u94FE\u4E0A\u63D0\u5E01\u5FC5\u586B\n## - chain: \u94FE\u540D\u79F0\uFF0C\u5982 USDT-TRC20\u3002\u94FE\u4E0A\u63D0\u5E01\u5FC5\u586B\n## - fee: \u624B\u7EED\u8D39\u3002\u53EF\u9009\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u63D0\u73B0\uFF09- \u8C03\u7528\u524D\u5FC5\u987B\u4E8C\u6B21\u786E\u8BA4\n## \u98CE\u9669\uFF1AFUND_TRANSFER \u2014 \u63D0\u5E01\u64CD\u4F5C\u76F4\u63A5\u8F6C\u51FA\u8D44\u91D1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u5411\u7528\u6237\u4E8C\u6B21\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_get_currencies \u67E5\u652F\u6301\u5E01\u79CD \u2192 okx_get_funding_balance \u786E\u8BA4\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u63D0\u5E01",
22648
22605
  {
22649
22606
  ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 USDT\u3002\u5FC5\u586B"),
22650
22607
  amt: external_exports.string().describe("\u63D0\u5E01\u6570\u91CF\u3002\u5FC5\u586B"),
@@ -22673,7 +22630,7 @@ function registerFundingTools(server, auth) {
22673
22630
  function registerStatsTools(server) {
22674
22631
  server.tool(
22675
22632
  "okx_get_long_short_ratio",
22676
- "\u83B7\u53D6\u5408\u7EA6\u591A\u7A7A\u8D26\u6237\u6BD4\u4F8B\u3002\u6BD4\u503C > 1 \u8BF4\u660E\u591A\u5934\u8D26\u6237\u66F4\u591A\uFF0C\u6781\u7AEF\u503C\uFF08> 3 \u6216 < 0.3\uFF09\u5F80\u5F80\u662F\u5E02\u573A\u60C5\u7EEA\u8FC7\u70ED\u7684\u4FE1\u53F7\uFF0C\u53EF\u80FD\u5373\u5C06\u53CD\u8F6C\u3002",
22633
+ "## \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\uFF08\u6BD4\u503C>1\u591A\u5934\u591A\uFF0C>3\u6216<0.3\u5F80\u5F80\u662F\u53CD\u8F6C\u4FE1\u53F7\uFF09\u3001\u7ED3\u5408\u4EF7\u683C\u65B9\u5411\u505A\u51B3\u7B56\n## \u5173\u952E\u8BCD\uFF1A\u591A\u7A7A\u6BD4, long short ratio, \u5E02\u573A\u60C5\u7EEA, \u6563\u6237\u60C5\u7EEA, \u591A\u7A7A\u8D26\u6237\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\uFF1Aokx_get_top_trader_long_short_ratio \u770B\u5927\u6237 \u2192 \u672C\u5DE5\u5177\u770B\u6563\u6237 \u2192 \u5BF9\u6BD4\u80CC\u79BB\u4FE1\u53F7",
22677
22634
  {
22678
22635
  ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3001ETH"),
22679
22636
  begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09"),
@@ -22682,7 +22639,11 @@ function registerStatsTools(server) {
22682
22639
  async ({ ccy, begin, end }) => {
22683
22640
  try {
22684
22641
  const data = await publicApi.getLongShortRatio(ccy, begin, end);
22685
- return toResult(data);
22642
+ const enriched = data.map((item) => ({
22643
+ ...item,
22644
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
22645
+ }));
22646
+ return toResult(enriched);
22686
22647
  } catch (e) {
22687
22648
  return toError(e);
22688
22649
  }
@@ -22690,17 +22651,21 @@ function registerStatsTools(server) {
22690
22651
  );
22691
22652
  server.tool(
22692
22653
  "okx_get_taker_volume",
22693
- "\u83B7\u53D6\u4E3B\u52A8\u4E70\u5356\u91CF\u7EDF\u8BA1\u3002\u4E3B\u52A8\u4E70\u91CF\u6301\u7EED\u5927\u4E8E\u4E3B\u52A8\u5356\u91CF\u8BF4\u660E\u5E02\u573A\u60C5\u7EEA\u504F\u591A\uFF1B\u7528\u4E8E\u5224\u65AD\u8D44\u91D1\u6D41\u5411\u548C\u8D8B\u52BF\u5F3A\u5EA6\u3002",
22654
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4E3B\u52A8\u4E70\u5356\u91CF\u7EDF\u8BA1\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5224\u65AD\u8D44\u91D1\u6D41\u5411\uFF08\u4E3B\u52A8\u4E70\u91CF>\u5356\u91CF=\u591A\u5934\uFF09\u3001\u5206\u6790\u8D8B\u52BF\u5F3A\u5EA6\n## \u5173\u952E\u8BCD\uFF1A\u4E3B\u52A8\u4E70\u5356\u91CF, taker volume, \u8D44\u91D1\u6D41\u5411, \u4E70\u5356\u529B\u91CF, \u4E3B\u52A8\u6027\u4E70\u76D8\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 BTC\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, CONTRACTS=\u5408\u7EA6\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\uFF1Aokx_get_taker_flow \u770BTaker\u6D41\u5411 \u2192 \u672C\u5DE5\u5177\u770B\u6210\u4EA4\u91CF \u2192 \u7ED3\u5408 okx_get_ticker \u5224\u65AD\u8D8B\u52BF",
22694
22655
  {
22695
22656
  ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC"),
22696
- instType: external_exports.enum(["SPOT", "CONTRACTS"]).describe("\u4EA7\u54C1\u7C7B\u578B"),
22657
+ instType: external_exports.enum(INST_TYPE_RUBIK).describe("\u4EA7\u54C1\u7C7B\u578B"),
22697
22658
  begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09"),
22698
22659
  end: external_exports.string().optional().describe("\u7ED3\u675F\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09")
22699
22660
  },
22700
22661
  async ({ ccy, instType, begin, end }) => {
22701
22662
  try {
22702
22663
  const data = await publicApi.getTakerVolume(ccy, instType, begin, end);
22703
- return toResult(data);
22664
+ const enriched = data.map((item) => ({
22665
+ ...item,
22666
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
22667
+ }));
22668
+ return toResult(enriched);
22704
22669
  } catch (e) {
22705
22670
  return toError(e);
22706
22671
  }
@@ -22708,7 +22673,7 @@ function registerStatsTools(server) {
22708
22673
  );
22709
22674
  server.tool(
22710
22675
  "okx_get_open_interest_volume",
22711
- "\u83B7\u53D6\u6301\u4ED3\u91CF\u4E0E\u6210\u4EA4\u91CF\u7EDF\u8BA1\u3002\u6301\u4ED3\u91CF/\u6210\u4EA4\u91CF\u6BD4\u503C\u4E0A\u5347\u8BF4\u660E\u6295\u673A\u6027\u589E\u52A0\uFF1B\u7ED3\u5408\u4EF7\u683C\u65B9\u5411\u53EF\u5224\u65AD\u8D8B\u52BF\u662F\u5426\u53EF\u6301\u7EED\u3002",
22676
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6301\u4ED3\u91CF\u4E0E\u6210\u4EA4\u91CF\u7EDF\u8BA1\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5224\u65AD\u6295\u673A\u6D3B\u8DC3\u5EA6\uFF08\u6301\u4ED3\u91CF/\u6210\u4EA4\u91CF\u6BD4\u503C\u4E0A\u5347=\u6295\u673A\u589E\u52A0\uFF09\u3001\u9A8C\u8BC1\u8D8B\u52BF\u53EF\u6301\u7EED\u6027\n## \u5173\u952E\u8BCD\uFF1A\u6301\u4ED3\u6210\u4EA4\u6BD4, open interest volume, \u6295\u673A\u5EA6, \u91CF\u4ED3\u5173\u7CFB, OI\u6BD4\u7387\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 BTC\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\uFF1Aokx_get_open_interest \u67E5\u5F53\u524D\u6301\u4ED3 \u2192 \u672C\u5DE5\u5177\u770B\u5386\u53F2\u91CF\u4ED3\u5173\u7CFB \u2192 \u5224\u65AD\u8D8B\u52BF\u662F\u5426\u5065\u5EB7",
22712
22677
  {
22713
22678
  ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC"),
22714
22679
  begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09"),
@@ -22717,7 +22682,11 @@ function registerStatsTools(server) {
22717
22682
  async ({ ccy, begin, end }) => {
22718
22683
  try {
22719
22684
  const data = await publicApi.getOpenInterestVolume(ccy, begin, end);
22720
- return toResult(data);
22685
+ const enriched = data.map((item) => ({
22686
+ ...item,
22687
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
22688
+ }));
22689
+ return toResult(enriched);
22721
22690
  } catch (e) {
22722
22691
  return toError(e);
22723
22692
  }
@@ -22725,12 +22694,16 @@ function registerStatsTools(server) {
22725
22694
  );
22726
22695
  server.tool(
22727
22696
  "okx_get_margin_lending_ratio",
22728
- "\u83B7\u53D6\u6760\u6746\u501F\u5E01\u5229\u7387\u53CA\u501F\u5E01\u91CF\u3002\u501F\u5E01\u91CF\u5FEB\u901F\u589E\u52A0\u8BF4\u660E\u6295\u673A\u6027\u6760\u6746\u5728\u79EF\u7D2F\uFF0C\u662F\u77ED\u671F\u884C\u60C5\u52A0\u901F\u7684\u5148\u884C\u6307\u6807\u3002",
22697
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6760\u6746\u501F\u5E01\u5229\u7387\u53CA\u501F\u5E01\u91CF\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5224\u65AD\u6760\u6746\u6295\u673A\u70ED\u5EA6\uFF08\u501F\u5E01\u91CF\u589E\u52A0=\u6760\u6746\u5728\u79EF\u7D2F\uFF09\u3001\u77ED\u671F\u884C\u60C5\u52A0\u901F\u7684\u5148\u884C\u6307\u6807\n## \u5173\u952E\u8BCD\uFF1A\u6760\u6746\u501F\u5E01, margin lending, \u501F\u5E01\u5229\u7387, \u6760\u6746\u7387, \u4FDD\u8BC1\u91D1\u501F\u8D37\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 BTC\u3001USDT\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\uFF1Aokx_get_lending_rate_summary \u770B\u5E02\u573A\u5229\u7387 \u2192 \u672C\u5DE5\u5177\u770B\u501F\u5E01\u91CF\u8D8B\u52BF \u2192 \u5224\u65AD\u6760\u6746\u6C34\u5E73",
22729
22698
  { ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3001USDT") },
22730
22699
  async ({ ccy }) => {
22731
22700
  try {
22732
22701
  const data = await publicApi.getLendingRateHistory(ccy);
22733
- return toResult(data);
22702
+ const enriched = data.map((item) => ({
22703
+ ...item,
22704
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
22705
+ }));
22706
+ return toResult(enriched);
22734
22707
  } catch (e) {
22735
22708
  return toError(e);
22736
22709
  }
@@ -22738,7 +22711,7 @@ function registerStatsTools(server) {
22738
22711
  );
22739
22712
  server.tool(
22740
22713
  "okx_get_stats_support_coin",
22741
- "\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",
22714
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4EA4\u6613\u5927\u6570\u636E\u6A21\u5757\u652F\u6301\u67E5\u8BE2\u7684\u6240\u6709\u5E01\u79CD\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5728\u8C03\u7528\u5176\u4ED6\u4EA4\u6613\u5927\u6570\u636E\u63A5\u53E3\u524D\u786E\u8BA4\u5E01\u79CD\u53EF\u7528\u3001\u907F\u514D\u67E5\u8BE2\u4E0D\u652F\u6301\u7684\u5E01\u79CD\n## \u5173\u952E\u8BCD\uFF1A\u652F\u6301\u5E01\u79CD, support coin, \u6570\u636E\u53EF\u7528\u5E01\u79CD, \u7EDF\u8BA1\u5E01\u79CD\u5217\u8868\n## \u53C2\u6570\uFF1A\u65E0\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\u83B7\u53D6\u53EF\u7528\u5E01\u79CD \u2192 okx_get_long_short_ratio \u7B49\u591A\u7A7A\u6BD4\u7C7B\u5DE5\u5177",
22742
22715
  {},
22743
22716
  async () => {
22744
22717
  try {
@@ -22751,7 +22724,7 @@ function registerStatsTools(server) {
22751
22724
  );
22752
22725
  server.tool(
22753
22726
  "okx_get_top_trader_long_short_ratio",
22754
- "\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",
22727
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u7CBE\u82F1\u4EA4\u6613\u5458\u591A\u7A7A\u6301\u4ED3\u6BD4\u4F8B\uFF08\u4EC5\u7EDF\u8BA1\u524D5%\u5927\u6237\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5224\u65AD\u5927\u6237\u6301\u4ED3\u65B9\u5411\uFF08\u6BD4\u6563\u6237\u6570\u636E\u66F4\u5177\u9884\u6D4B\u4EF7\u503C\uFF09\u3001\u6563\u6237\u4E0E\u5927\u6237\u80CC\u79BB\u65F6\u5F80\u5F80\u662F\u9006\u52BF\u4FE1\u53F7\n## \u5173\u952E\u8BCD\uFF1A\u5927\u6237\u591A\u7A7A\u6BD4, top trader ratio, \u7CBE\u82F1\u4EA4\u6613\u5458, \u806A\u660E\u94B1, \u5927\u6237\u6301\u4ED3\n## \u53C2\u6570\uFF1A\n## - instId: \u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3001ETH-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\uFF1Aokx_get_long_short_ratio \u770B\u6563\u6237 \u2192 \u672C\u5DE5\u5177\u770B\u5927\u6237 \u2192 \u5BF9\u6BD4\u627E\u5230\u80CC\u79BB \u2192 \u9006\u52BF\u4EA4\u6613\u4FE1\u53F7",
22755
22728
  {
22756
22729
  instId: external_exports.string().describe("\u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3001ETH-USDT-SWAP"),
22757
22730
  begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09"),
@@ -22760,7 +22733,11 @@ function registerStatsTools(server) {
22760
22733
  async ({ instId, begin, end }) => {
22761
22734
  try {
22762
22735
  const data = await publicApi.getTopTraderLongShortRatio(instId, begin, end);
22763
- return toResult(data);
22736
+ const enriched = data.map((item) => ({
22737
+ ...item,
22738
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
22739
+ }));
22740
+ return toResult(enriched);
22764
22741
  } catch (e) {
22765
22742
  return toError(e);
22766
22743
  }
@@ -22768,7 +22745,7 @@ function registerStatsTools(server) {
22768
22745
  );
22769
22746
  server.tool(
22770
22747
  "okx_get_put_call_ratio",
22771
- "\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",
22748
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u671F\u6743Put/Call\u6BD4\uFF08\u672A\u5E73\u4ED3\u91CF\u548C\u6210\u4EA4\u91CF\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8861\u91CF\u671F\u6743\u5E02\u573A\u60C5\u7EEA\uFF08Put/Call>1=\u770B\u8DCC\uFF09\u3001\u5224\u65AD\u5E02\u573A\u98CE\u9669\u504F\u597D\n## \u5173\u952E\u8BCD\uFF1APut/Call\u6BD4, put call ratio, \u671F\u6743\u60C5\u7EEA, \u770B\u8DCC\u770B\u6DA8\u6BD4, PCR\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\uFF1Aokx_get_opt_summary \u770B\u671F\u6743\u6982\u89C8 \u2192 \u672C\u5DE5\u5177\u770BPut/Call\u6BD4 \u2192 \u5224\u65AD\u5E02\u573A\u591A\u7A7A\u60C5\u7EEA",
22772
22749
  {
22773
22750
  ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3001ETH"),
22774
22751
  begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09"),
@@ -22777,7 +22754,11 @@ function registerStatsTools(server) {
22777
22754
  async ({ ccy, begin, end }) => {
22778
22755
  try {
22779
22756
  const data = await publicApi.getOptionPutCallRatio(ccy, begin, end);
22780
- return toResult(data);
22757
+ const enriched = data.map((item) => ({
22758
+ ...item,
22759
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
22760
+ }));
22761
+ return toResult(enriched);
22781
22762
  } catch (e) {
22782
22763
  return toError(e);
22783
22764
  }
@@ -22785,7 +22766,7 @@ function registerStatsTools(server) {
22785
22766
  );
22786
22767
  server.tool(
22787
22768
  "okx_get_lending_rate_summary",
22788
- "\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",
22769
+ "## \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\u7684\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 okx_get_margin_lending_ratio \u770B\u501F\u5E01\u91CF \u2192 \u5224\u65AD\u6760\u6746\u70ED\u5EA6",
22789
22770
  { ccy: external_exports.string().optional().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3001USDT\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8") },
22790
22771
  async ({ ccy }) => {
22791
22772
  try {
@@ -22802,7 +22783,7 @@ function registerStatsTools(server) {
22802
22783
  function registerSubAccountTools(server, auth) {
22803
22784
  server.tool(
22804
22785
  "okx_list_subaccounts",
22805
- "\u83B7\u53D6\u6240\u6709\u5B50\u8D26\u6237\u5217\u8868\u53CA\u5176\u72B6\u6001\u3002\u7528\u4E8E\u591A\u7B56\u7565\u8D26\u6237\u7BA1\u7406\uFF0C\u67E5\u770B\u5404\u5B50\u8D26\u6237\u7684\u542F\u7528\u72B6\u6001\u3002\u26A0\uFE0F \u9700\u8981\u4E3B\u8D26\u6237API Key\u9274\u6743\u3002",
22786
+ "## \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",
22806
22787
  {
22807
22788
  enable: external_exports.boolean().optional().describe("\u7B5B\u9009\u542F\u7528\u72B6\u6001\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u90E8")
22808
22789
  },
@@ -22818,7 +22799,7 @@ function registerSubAccountTools(server, auth) {
22818
22799
  );
22819
22800
  server.tool(
22820
22801
  "okx_get_subaccount_balance",
22821
- "\u67E5\u8BE2\u6307\u5B9A\u5B50\u8D26\u6237\u7684\u4EA4\u6613\u8D26\u6237\u4F59\u989D\u3002\u7528\u4E8E\u76D1\u63A7\u5404\u7B56\u7565\u8D26\u6237\u7684\u8D44\u91D1\u72B6\u51B5\u3002\u26A0\uFE0F \u9700\u8981\u4E3B\u8D26\u6237API Key\u9274\u6743\u3002",
22802
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6307\u5B9A\u5B50\u8D26\u6237\u7684\u4EA4\u6613\u8D26\u6237\u4F59\u989D\n## \u573A\u666F\uFF1A\u7528\u4E8E\u76D1\u63A7\u5404\u7B56\u7565\u8D26\u6237\u7684\u8D44\u91D1\u72B6\u51B5\u3001\u6838\u5BF9\u5B50\u8D26\u6237\u8D44\u4EA7\n## \u5173\u952E\u8BCD\uFF1A\u5B50\u8D26\u6237\u4F59\u989D, subaccount balance, \u5B50\u8D26\u53F7\u8D44\u4EA7, \u7B56\u7565\u8D26\u6237\n## \u53C2\u6570\uFF1A\n## - subAcct: \u5B50\u8D26\u6237\u540D\u79F0\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\uFF1Aokx_list_subaccounts \u83B7\u53D6\u5B50\u8D26\u6237\u5217\u8868 \u2192 \u672C\u5DE5\u5177\u67E5\u4F59\u989D \u2192 okx_transfer_subaccount \u5212\u8F6C",
22822
22803
  {
22823
22804
  subAcct: external_exports.string().describe("\u5B50\u8D26\u6237\u540D\u79F0")
22824
22805
  },
@@ -22834,7 +22815,7 @@ function registerSubAccountTools(server, auth) {
22834
22815
  );
22835
22816
  server.tool(
22836
22817
  "okx_transfer_subaccount",
22837
- "\u4E3B\u5B50\u8D26\u6237\u95F4\u8D44\u91D1\u5212\u8F6C\u3002\u26A0\uFE0F \u6B64\u64CD\u4F5C\u4F1A\u79FB\u52A8\u771F\u5B9E\u8D44\u91D1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u5411\u7528\u6237\u786E\u8BA4\u5212\u8F6C\u65B9\u5411\u548C\u91D1\u989D\u3002\u9700\u8981\u4E3B\u8D26\u6237API Key\u9274\u6743\u3002",
22818
+ "## \u529F\u80FD\uFF1A\u4E3B\u5B50\u8D26\u6237\u95F4\u8D44\u91D1\u5212\u8F6C\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5C06\u8D44\u91D1\u4ECE\u4E3B\u8D26\u6237\u5206\u914D\u5230\u5404\u7B56\u7565\u5B50\u8D26\u6237\u3001\u6216\u5C06\u76C8\u5229\u4ECE\u5B50\u8D26\u6237\u8F6C\u56DE\u4E3B\u8D26\u6237\n## \u5173\u952E\u8BCD\uFF1A\u5B50\u8D26\u6237\u5212\u8F6C, transfer subaccount, \u5B50\u8D26\u6237\u8F6C\u8D26, \u8D26\u6237\u95F4\u8F6C\u8D26\n## \u53C2\u6570\uFF1A\n## - ccy: \u5212\u8F6C\u5E01\u79CD\n## - amt: \u5212\u8F6C\u6570\u91CF\n## - from: \u8F6C\u51FA\u8D26\u6237\u7C7B\u578B\uFF1A6=\u8D44\u91D1\u8D26\u6237\uFF0C18=\u4EA4\u6613\u8D26\u6237\n## - to: \u8F6C\u5165\u8D26\u6237\u7C7B\u578B\uFF1A6=\u8D44\u91D1\u8D26\u6237\uFF0C18=\u4EA4\u6613\u8D26\u6237\n## - fromSubAccount: \u8F6C\u51FA\u5B50\u8D26\u6237\u540D\uFF0C\u4E0D\u586B\u5219\u4E3A\u4E3B\u8D26\u6237\n## - toSubAccount: \u8F6C\u5165\u5B50\u8D26\u6237\u540D\uFF0C\u4E0D\u586B\u5219\u4E3A\u4E3B\u8D26\u6237\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981\u4E3B\u8D26\u6237 API Key\uFF08\u4EA4\u6613\uFF09- \u8C03\u7528\u524D\u5FC5\u987B\u5411\u7528\u6237\u786E\u8BA4\u5212\u8F6C\u65B9\u5411\u548C\u91D1\u989D\n## \u98CE\u9669\uFF1AFUND_TRANSFER \u2014 \u5212\u8F6C\u64CD\u4F5C\u79FB\u52A8\u771F\u5B9E\u8D44\u91D1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1Aokx_list_subaccounts \u83B7\u53D6\u5B50\u8D26\u6237 \u2192 okx_get_subaccount_balance \u786E\u8BA4\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u5212\u8F6C",
22838
22819
  {
22839
22820
  ccy: external_exports.string().describe("\u5212\u8F6C\u5E01\u79CD"),
22840
22821
  amt: external_exports.string().describe("\u5212\u8F6C\u6570\u91CF"),
@@ -22862,7 +22843,7 @@ function registerSubAccountTools(server, auth) {
22862
22843
  function registerFinanceTools(server, auth) {
22863
22844
  server.tool(
22864
22845
  "okx_get_savings_balance",
22865
- "\u67E5\u8BE2\u6D3B\u671F\u8D5A\u5E01\uFF08\u7B80\u5355\u8D5A\u5E01\uFF09\u7684\u6301\u4ED3\u4F59\u989D\uFF0C\u542B\u5F53\u524D\u5E74\u5316\u5229\u7387\u3002\u7528\u4E8E\u4E86\u89E3\u8D44\u91D1\u5229\u7528\u6548\u7387\uFF0C\u5224\u65AD\u662F\u5426\u503C\u5F97\u628A\u95F2\u7F6EUSDT\u653E\u5165\u8D5A\u5E01\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
22846
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6D3B\u671F\u8D5A\u5E01\uFF08\u7B80\u5355\u8D5A\u5E01\uFF09\u7684\u6301\u4ED3\u4F59\u989D\uFF0C\u542B\u5F53\u524D\u5E74\u5316\u5229\u7387\n## \u573A\u666F\uFF1A\u7528\u4E8E\u4E86\u89E3\u8D44\u91D1\u5229\u7528\u6548\u7387\u3001\u5224\u65AD\u662F\u5426\u503C\u5F97\u628A\u95F2\u7F6EUSDT\u653E\u5165\u8D5A\u5E01\u3001\u76D1\u63A7\u6D3B\u671F\u6536\u76CA\n## \u5173\u952E\u8BCD\uFF1A\u6D3B\u671F\u8D5A\u5E01, savings, \u7406\u8D22\u4F59\u989D, \u5E74\u5316\u5229\u7387, \u7075\u6D3B\u7406\u8D22, \u8D5A\u5E01\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 USDT\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u90E8\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\u5FAE\u5C0F ~2KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u770B\u8D5A\u5E01\u4F59\u989D \u2192 okx_get_savings_history \u770B\u6536\u76CA \u2192 \u51B3\u5B9A\u662F\u5426\u8D4E\u56DE",
22866
22847
  {
22867
22848
  ccy: external_exports.string().optional().describe("\u5E01\u79CD\uFF0C\u5982 USDT\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u90E8")
22868
22849
  },
@@ -22878,7 +22859,7 @@ function registerFinanceTools(server, auth) {
22878
22859
  );
22879
22860
  server.tool(
22880
22861
  "okx_get_savings_history",
22881
- "\u67E5\u8BE2\u6D3B\u671F\u8D5A\u5E01\u7684\u5386\u53F2\u6536\u76CA\u8BB0\u5F55\u3002\u7528\u4E8E\u590D\u76D8\u5229\u606F\u6536\u5165\u3001\u8BA1\u7B97\u5B9E\u9645\u5E74\u5316\u6536\u76CA\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
22862
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6D3B\u671F\u8D5A\u5E01\u7684\u5386\u53F2\u6536\u76CA\u8BB0\u5F55\n## \u573A\u666F\uFF1A\u7528\u4E8E\u590D\u76D8\u5229\u606F\u6536\u5165\u3001\u8BA1\u7B97\u5B9E\u9645\u5E74\u5316\u6536\u76CA\u3001\u5BF9\u8D26\n## \u5173\u952E\u8BCD\uFF1A\u8D5A\u5E01\u6536\u76CA, savings history, \u5229\u606F\u8BB0\u5F55, \u6D3B\u671F\u6536\u76CA, \u7406\u8D22\u6536\u76CA\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\uFF0C\u5982 USDT\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 ~5KB\n## \u5173\u8054\uFF1Aokx_get_savings_balance \u770B\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u770B\u6536\u76CA \u2192 \u8BA1\u7B97\u5B9E\u9645\u5E74\u5316",
22882
22863
  {
22883
22864
  ccy: external_exports.string().optional().describe("\u5E01\u79CD\uFF0C\u5982 USDT")
22884
22865
  },
@@ -22894,7 +22875,7 @@ function registerFinanceTools(server, auth) {
22894
22875
  );
22895
22876
  server.tool(
22896
22877
  "okx_get_staking_offers",
22897
- "\u83B7\u53D6\u94FE\u4E0A\u8D28\u62BC\uFF08ETH/SOL/\u7B49\uFF09\u7684\u4EA7\u54C1\u5217\u8868\uFF0C\u542B\u5F53\u524D\u5E74\u5316\u5229\u7387\u548C\u6700\u5C0F\u8D28\u62BC\u91CF\u3002\u7528\u4E8E\u6BD4\u8F83\u4E0D\u540C\u8D28\u62BC\u4EA7\u54C1\u7684\u6536\u76CA\u7387\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
22878
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u94FE\u4E0A\u8D28\u62BC\uFF08ETH/SOL/\u7B49\uFF09\u7684\u4EA7\u54C1\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u6BD4\u8F83\u4E0D\u540C\u8D28\u62BC\u4EA7\u54C1\u7684\u6536\u76CA\u7387\u3001\u9009\u62E9\u6700\u4F18\u8D28\u62BC\u65B9\u6848\n## \u5173\u952E\u8BCD\uFF1A\u8D28\u62BC\u4EA7\u54C1, staking offers, ETH\u8D28\u62BC, SOL\u8D28\u62BC, \u94FE\u4E0A\u8D28\u62BC, \u5E74\u5316\n## \u53C2\u6570\uFF1A\n## - productId: \u6307\u5B9A\u4EA7\u54C1ID\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u90E8\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\u5FAE\u5C0F ~3KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u6BD4\u8F83\u8D28\u62BC\u4EA7\u54C1 \u2192 okx_get_eth_staking_balance \u6216 okx_get_sol_staking_balance \u770B\u6301\u4ED3",
22898
22879
  {
22899
22880
  productId: external_exports.string().optional().describe("\u6307\u5B9A\u4EA7\u54C1ID\uFF0C\u4E0D\u586B\u5219\u8FD4\u56DE\u5168\u90E8")
22900
22881
  },
@@ -22910,7 +22891,7 @@ function registerFinanceTools(server, auth) {
22910
22891
  );
22911
22892
  server.tool(
22912
22893
  "okx_get_eth_staking_balance",
22913
- "\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",
22894
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2ETH\u8D28\u62BC\uFF08BETH\uFF09\u6301\u4ED3\u4F59\u989D\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770BETH\u8D28\u62BC\u603B\u91CF\u3001BETH\u6570\u91CF\u548C\u5F53\u524D\u5E74\u5316\u6536\u76CA\n## \u5173\u952E\u8BCD\uFF1AETH\u8D28\u62BC, ETH staking, BETH, \u8D28\u62BC\u4F59\u989D, \u8D28\u62BC\u6536\u76CA\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\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_get_staking_offers \u770B\u4EA7\u54C1 \u2192 \u672C\u5DE5\u5177\u770B\u6301\u4ED3 \u2192 okx_get_eth_staking_history \u770B\u64CD\u4F5C\u8BB0\u5F55",
22914
22895
  {},
22915
22896
  async () => {
22916
22897
  if (!auth) return toError(AUTH_REQUIRED);
@@ -22924,7 +22905,7 @@ function registerFinanceTools(server, auth) {
22924
22905
  );
22925
22906
  server.tool(
22926
22907
  "okx_get_eth_staking_history",
22927
- "\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",
22908
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2ETH\u8D28\u62BC/\u8D4E\u56DE\u5386\u53F2\u8BB0\u5F55\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8FFD\u8E2AETH\u8D28\u62BC\u548C\u8D4E\u56DE\u64CD\u4F5C\u3001\u6838\u5BF9\u64CD\u4F5C\u65F6\u95F4\u548C\u6570\u91CF\n## \u5173\u952E\u8BCD\uFF1AETH\u8D28\u62BC\u5386\u53F2, staking history, \u8D28\u62BC\u8BB0\u5F55, \u8D4E\u56DE\u8BB0\u5F55\n## \u53C2\u6570\uFF1A\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\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 ~5KB\n## \u5173\u8054\uFF1Aokx_get_eth_staking_balance \u770B\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u770B\u64CD\u4F5C\u8BB0\u5F55 \u2192 \u8BA1\u7B97\u6536\u76CA",
22928
22909
  {
22929
22910
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
22930
22911
  },
@@ -22940,7 +22921,7 @@ function registerFinanceTools(server, auth) {
22940
22921
  );
22941
22922
  server.tool(
22942
22923
  "okx_get_sol_staking_balance",
22943
- "\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",
22924
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2SOL\u8D28\u62BC\u6301\u4ED3\u4F59\u989D\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770BSOL\u8D28\u62BC\u603B\u91CF\u548C\u5F53\u524D\u5E74\u5316\u6536\u76CA\n## \u5173\u952E\u8BCD\uFF1ASOL\u8D28\u62BC, SOL staking, \u8D28\u62BC\u4F59\u989D, \u8D28\u62BC\u6536\u76CA\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\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1Aokx_get_staking_offers \u770B\u4EA7\u54C1 \u2192 \u672C\u5DE5\u5177\u770BSOL\u6301\u4ED3 \u2192 \u51B3\u5B9A\u662F\u5426\u8D4E\u56DE",
22944
22925
  {},
22945
22926
  async () => {
22946
22927
  if (!auth) return toError(AUTH_REQUIRED);
@@ -22958,7 +22939,7 @@ function registerFinanceTools(server, auth) {
22958
22939
  function registerOutcomesTools(server) {
22959
22940
  server.tool(
22960
22941
  "outcomes_list_events",
22961
- "\u5217\u51FAOKX\u9884\u6D4B\u5E02\u573A\u6240\u6709\u4E8B\u4EF6\uFF08\u4E16\u754C\u676F\u3001\u9009\u4E3E\u7B49\uFF09\u3002\u6BCF\u4E2A\u4E8B\u4EF6\u5305\u542B\u6807\u9898\u3001\u72B6\u6001\u3001\u603B\u6210\u4EA4\u91CF\u548C\u5E02\u573A\u6570\u91CF\u3002",
22942
+ "## \u529F\u80FD\uFF1A\u5217\u51FAOKX\u9884\u6D4B\u5E02\u573A\u6240\u6709\u4E8B\u4EF6\uFF08\u4E16\u754C\u676F\u3001\u9009\u4E3E\u7B49\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u6D4F\u89C8\u53EF\u4EA4\u6613\u7684\u9884\u6D4B\u5E02\u573A\u3001\u6309\u5173\u952E\u8BCD\u641C\u7D22\u4E8B\u4EF6\u3001\u4E86\u89E3\u5404\u4E8B\u4EF6\u6210\u4EA4\u91CF\u548C\u6D3B\u8DC3\u5EA6\n## \u5173\u952E\u8BCD\uFF1A\u9884\u6D4B\u5E02\u573A, \u4E8B\u4EF6\u5217\u8868, outcomes, \u4E16\u754C\u676F, \u9009\u4E3E, \u6982\u7387\u4EA4\u6613\n## \u53C2\u6570\uFF1A\n## - pageSize: \u6BCF\u9875\u6570\u91CF\uFF0C\u9ED8\u8BA420\n## - search: \u5173\u952E\u8BCD\u641C\u7D22\u4E8B\u4EF6\u6807\u9898\n## - includeMarkets: \u662F\u5426\u9644\u5E26\u6BCF\u4E2A\u4E8B\u4EF6\u7684\u5E02\u573A\u5217\u8868\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 HRAILS API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~3KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u6D4F\u89C8\u4E8B\u4EF6 \u2192 outcomes_get_event \u67E5\u770B\u5355\u4E2A\u4E8B\u4EF6\u8BE6\u60C5 \u2192 outcomes_get_market \u67E5\u770B\u5E02\u573A",
22962
22943
  {
22963
22944
  pageSize: external_exports.number().int().min(1).max(100).optional().describe("\u6BCF\u9875\u6570\u91CF\uFF0C\u9ED8\u8BA420"),
22964
22945
  search: external_exports.string().optional().describe("\u5173\u952E\u8BCD\u641C\u7D22\u4E8B\u4EF6\u6807\u9898"),
@@ -22981,7 +22962,7 @@ function registerOutcomesTools(server) {
22981
22962
  );
22982
22963
  server.tool(
22983
22964
  "outcomes_get_event",
22984
- "\u83B7\u53D6\u5355\u4E2A\u9884\u6D4B\u5E02\u573A\u4E8B\u4EF6\u7684\u5B8C\u6574\u4FE1\u606F\uFF0C\u542B\u6240\u6709\u5E02\u573A\u5217\u8868\u53CA\u5F53\u524D\u6982\u7387\u3002",
22965
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5355\u4E2A\u9884\u6D4B\u5E02\u573A\u4E8B\u4EF6\u7684\u5B8C\u6574\u4FE1\u606F\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u4E8B\u4EF6\u7684\u6240\u6709\u5173\u8054\u5E02\u573A\u5217\u8868\u3001\u5404\u5E02\u573A\u5F53\u524D\u6982\u7387\u3001\u5224\u65AD\u54EA\u4E9B\u5E02\u573A\u503C\u5F97\u4EA4\u6613\n## \u5173\u952E\u8BCD\uFF1A\u4E8B\u4EF6\u8BE6\u60C5, event, \u9884\u6D4B\u4E8B\u4EF6, \u5173\u8054\u5E02\u573A, \u6982\u7387\n## \u53C2\u6570\uFF1A\n## - eventId: \u4E8B\u4EF6ID\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 HRAILS 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\uFF1Aoutcomes_list_events \u83B7\u53D6\u4E8B\u4EF6\u5217\u8868 \u2192 \u672C\u5DE5\u5177\u67E5\u770B\u8BE6\u60C5 \u2192 outcomes_get_market \u67E5\u770B\u5177\u4F53\u5E02\u573A",
22985
22966
  { eventId: external_exports.string().describe("\u4E8B\u4EF6ID") },
22986
22967
  async ({ eventId }) => {
22987
22968
  const client = getHRailsClient();
@@ -22996,7 +22977,7 @@ function registerOutcomesTools(server) {
22996
22977
  );
22997
22978
  server.tool(
22998
22979
  "outcomes_get_market",
22999
- "\u83B7\u53D6\u5355\u4E2A\u9884\u6D4B\u5E02\u573A\u8BE6\u60C5\uFF0C\u542B\u95EE\u9898\u63CF\u8FF0\u3001\u5F53\u524D\u6982\u7387\u3001\u6210\u4EA4\u91CF\u548C\u7ED3\u675F\u65F6\u95F4\u3002",
22980
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5355\u4E2A\u9884\u6D4B\u5E02\u573A\u8BE6\u60C5\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5177\u4F53\u9884\u6D4B\u95EE\u9898\u7684\u63CF\u8FF0\u3001\u5F53\u524D\u6982\u7387\u3001\u6210\u4EA4\u91CF\u3001\u7ED3\u675F\u65F6\u95F4\u3001\u5224\u65AD\u662F\u5426\u503C\u5F97\u53C2\u4E0E\n## \u5173\u952E\u8BCD\uFF1A\u9884\u6D4B\u5E02\u573A, market, \u6982\u7387, \u6210\u4EA4\u91CF, \u9884\u6D4B\u95EE\u9898\n## \u53C2\u6570\uFF1A\n## - marketId: \u5E02\u573AID\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 HRAILS API Key\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\uFF1Aoutcomes_get_event \u67E5\u770B\u4E8B\u4EF6 \u2192 \u672C\u5DE5\u5177\u67E5\u770B\u5177\u4F53\u5E02\u573A \u2192 outcomes_get_ticker \u770B\u62A5\u4EF7 \u2192 outcomes_check_arbitrage \u627E\u5957\u5229",
23000
22981
  { marketId: external_exports.string().describe("\u5E02\u573AID") },
23001
22982
  async ({ marketId }) => {
23002
22983
  const client = getHRailsClient();
@@ -23011,7 +22992,7 @@ function registerOutcomesTools(server) {
23011
22992
  );
23012
22993
  server.tool(
23013
22994
  "outcomes_get_ticker",
23014
- "\u83B7\u53D6\u9884\u6D4B\u5E02\u573A\u5355\u8FB9\uFF08YES\u6216NO\uFF09\u7684\u5B9E\u65F6\u62A5\u4EF7\uFF0C\u542B\u6700\u4F18\u4E70\u5356\u4EF7\u3002YES\u4EF7\u683C\u4EE3\u8868\u8BE5\u7ED3\u679C\u53D1\u751F\u7684\u6982\u7387\u3002",
22995
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u9884\u6D4B\u5E02\u573A\u5355\u8FB9\uFF08YES\u6216NO\uFF09\u7684\u5B9E\u65F6\u62A5\u4EF7\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770BYES/NO\u5F53\u524D\u6700\u4F18\u4E70\u5356\u4EF7\u3001YES\u4EF7\u683C\u4EE3\u8868\u8BE5\u7ED3\u679C\u53D1\u751F\u7684\u6982\u7387\u3001\u5224\u65AD\u4E70\u5356\u65F6\u673A\n## \u5173\u952E\u8BCD\uFF1A\u9884\u6D4B\u62A5\u4EF7, ticker, YES, NO, \u6982\u7387\u4EF7\u683C, \u4E70\u5356\u4EF7\n## \u53C2\u6570\uFF1A\n## - marketId: \u5E02\u573AID\n## - outcome: \u7ED3\u679C\u65B9\u5411\u3002YES=\u770B\u6DA8, NO=\u770B\u8DCC\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 HRAILS API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aoutcomes_get_market \u67E5\u770B\u5E02\u573A \u2192 \u672C\u5DE5\u5177\u770B\u62A5\u4EF7 \u2192 outcomes_get_orderbook \u770B\u6DF1\u5EA6 \u2192 outcomes_check_arbitrage \u627E\u5957\u5229",
23015
22996
  {
23016
22997
  marketId: external_exports.string().describe("\u5E02\u573AID"),
23017
22998
  outcome: external_exports.enum(["YES", "NO"]).describe("\u7ED3\u679C\u65B9\u5411")
@@ -23029,7 +23010,7 @@ function registerOutcomesTools(server) {
23029
23010
  );
23030
23011
  server.tool(
23031
23012
  "outcomes_get_orderbook",
23032
- "\u83B7\u53D6\u9884\u6D4B\u5E02\u573A\u8BA2\u5355\u7C3F\u6DF1\u5EA6\u3002YES_ask + NO_ask < 1.0 \u65F6\u5B58\u5728\u65E0\u98CE\u9669\u5957\u5229\u673A\u4F1A\uFF08\u4E70\u53CC\u8FB9\uFF09\u3002",
23013
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u9884\u6D4B\u5E02\u573A\u8BA2\u5355\u7C3F\u6DF1\u5EA6\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790YES/NO\u6302\u5355\u5206\u5E03\u3001\u5224\u65AD\u6D41\u52A8\u6027\u3001YES_ask + NO_ask < 1.0 \u65F6\u5B58\u5728\u65E0\u98CE\u9669\u5957\u5229\u673A\u4F1A\n## \u5173\u952E\u8BCD\uFF1A\u9884\u6D4B\u6DF1\u5EA6, orderbook, \u6302\u5355, \u5957\u5229, YES+NO, \u53CC\u8FB9\n## \u53C2\u6570\uFF1A\n## - marketId: \u5E02\u573AID\n## - outcome: \u7ED3\u679C\u65B9\u5411\n## - size: \u6DF1\u5EA6\u6863\u4F4D\uFF0C\u9ED8\u8BA420\uFF0C\u6700\u592750\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 HRAILS API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~3KB\n## \u5173\u8054\uFF1Aoutcomes_get_ticker \u770B\u62A5\u4EF7 \u2192 \u672C\u5DE5\u5177\u770B\u6DF1\u5EA6 \u2192 outcomes_check_arbitrage \u68C0\u6D4B\u5957\u5229",
23033
23014
  {
23034
23015
  marketId: external_exports.string().describe("\u5E02\u573AID"),
23035
23016
  outcome: external_exports.enum(["YES", "NO"]).describe("\u7ED3\u679C\u65B9\u5411"),
@@ -23048,7 +23029,7 @@ function registerOutcomesTools(server) {
23048
23029
  );
23049
23030
  server.tool(
23050
23031
  "outcomes_get_candles",
23051
- "\u83B7\u53D6\u9884\u6D4B\u5E02\u573AK\u7EBF\u6570\u636E\uFF0C\u7528\u4E8E\u5206\u6790\u6982\u7387\u8D70\u52BF\u548C\u4EA4\u6613\u91CF\u53D8\u5316\u3002",
23032
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u9884\u6D4B\u5E02\u573AK\u7EBF\u6570\u636E\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u6982\u7387\u8D70\u52BF\u3001\u7814\u7A76\u4EA4\u6613\u91CF\u53D8\u5316\u89C4\u5F8B\u3001\u5224\u65AD\u8D8B\u52BF\u65B9\u5411\n## \u5173\u952E\u8BCD\uFF1A\u9884\u6D4BK\u7EBF, candles, \u6982\u7387\u8D70\u52BF, \u6210\u4EA4\u91CF, \u8D8B\u52BF\u5206\u6790\n## \u53C2\u6570\uFF1A\n## - marketId: \u5E02\u573AID\n## - outcome: \u7ED3\u679C\u65B9\u5411\n## - bar: K\u7EBF\u5468\u671F\u30021m/5m/15m=\u5206\u949F, 1H=1\u5C0F\u65F6, 4H=4\u5C0F\u65F6, 1D=\u65E5\u7EBF\u3002\u9ED8\u8BA41H\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA448\uFF0C\u6700\u5927200\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 HRAILS API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A48\u6761 ~3KB \u2014 \u5FAE\u5C0F\n## \u5173\u8054\uFF1Aoutcomes_get_ticker \u770B\u5F53\u524D\u6982\u7387 \u2192 \u672C\u5DE5\u5177\u770B\u5386\u53F2\u8D70\u52BF \u2192 \u5224\u65AD\u6982\u7387\u8D8B\u52BF",
23052
23033
  {
23053
23034
  marketId: external_exports.string().describe("\u5E02\u573AID"),
23054
23035
  outcome: external_exports.enum(["YES", "NO"]).describe("\u7ED3\u679C\u65B9\u5411"),
@@ -23111,7 +23092,7 @@ function registerOutcomesTools(server) {
23111
23092
  function registerBotTools(server, auth) {
23112
23093
  server.tool(
23113
23094
  "okx_get_grid_ai_param",
23114
- "\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",
23095
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6OKX\u667A\u80FD\u7F51\u683C\u63A8\u8350\u53C2\u6570\uFF08\u65E0\u9700API Key\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5F00\u7F51\u683C\u524D\u5FEB\u901F\u8BC4\u4F30\u53C2\u6570\u5408\u7406\u6027\u3001\u6BD4\u8F83AI\u5EFA\u8BAE\u4E0E\u624B\u52A8\u8BBE\u7F6E\u7684\u4F18\u52A3\n## \u5173\u952E\u8BCD\uFF1A\u7F51\u683CAI, grid ai, \u7F51\u683C\u63A8\u8350, \u667A\u80FD\u53C2\u6570, \u7F51\u683C\u7B56\u7565\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3001BTC-USDT-SWAP\n## - algoOrdType: \u7F51\u683C\u7C7B\u578B\u3002grid=\u73B0\u8D27\u7F51\u683C, contract_grid=\u5408\u7EA6\u7F51\u683C, moon_grid=\u5929\u5730\u7F51\u683C\n## - direction: \u5408\u7EA6\u7F51\u683C\u65B9\u5411\uFF08\u4EC5contract_grid\u9700\u8981\uFF09\u3002long=\u591A\u5934, short=\u7A7A\u5934, neutral=\u4E2D\u6027\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\u83B7\u53D6AI\u53C2\u6570 \u2192 \u53C2\u8003\u540E\u5F00\u7F51\u683C \u2192 okx_get_grid_orders_pending \u67E5\u770B\u8FD0\u884C\u72B6\u6001",
23115
23096
  {
23116
23097
  instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3001BTC-USDT-SWAP"),
23117
23098
  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"),
@@ -23128,11 +23109,11 @@ function registerBotTools(server, auth) {
23128
23109
  );
23129
23110
  server.tool(
23130
23111
  "okx_get_grid_orders_pending",
23131
- "\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",
23112
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5F53\u524D\u8FD0\u884C\u4E2D\u7684\u7F51\u683C\u7B56\u7565\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u76D1\u63A7\u7F51\u683C\u76C8\u4E8F\u3001\u67E5\u770B\u6210\u4EA4\u6B21\u6570\u548C\u8D44\u91D1\u5360\u7528\u3001\u5224\u65AD\u662F\u5426\u9700\u8981\u8C03\u6574\n## \u5173\u952E\u8BCD\uFF1A\u8FD0\u884C\u4E2D\u7F51\u683C, grid pending, \u7F51\u683C\u7B56\u7565, \u7F51\u683C\u76C8\u4E8F, \u7F51\u683C\u72B6\u6001\n## \u53C2\u6570\uFF1A\n## - algoOrdType: \u7F51\u683C\u7C7B\u578B\n## - instId: \u4EA7\u54C1ID\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u7B5B\u9009\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 ~5KB\n## \u5173\u8054\uFF1Aokx_get_grid_ai_param \u83B7\u53D6\u53C2\u6570 \u2192 \u5F00\u7F51\u683C \u2192 \u672C\u5DE5\u5177\u76D1\u63A7\u8FD0\u884C \u2192 okx_get_grid_sub_orders \u770B\u6210\u4EA4",
23132
23113
  {
23133
23114
  algoOrdType: external_exports.enum(["grid", "contract_grid", "moon_grid"]).describe("\u7F51\u683C\u7C7B\u578B"),
23134
23115
  instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
23135
- instType: external_exports.enum(["SPOT", "MARGIN", "FUTURES", "SWAP"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u7B5B\u9009")
23116
+ instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u7B5B\u9009")
23136
23117
  },
23137
23118
  async ({ algoOrdType, instId, instType }) => {
23138
23119
  if (!auth) return toError(AUTH_REQUIRED);
@@ -23146,11 +23127,11 @@ function registerBotTools(server, auth) {
23146
23127
  );
23147
23128
  server.tool(
23148
23129
  "okx_get_grid_orders_history",
23149
- "\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",
23130
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5DF2\u505C\u6B62\u7684\u5386\u53F2\u7F51\u683C\u7B56\u7565\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8BC4\u4F30\u5386\u53F2\u7B56\u7565\u6548\u679C\u3001\u5206\u6790\u7F51\u683C\u76C8\u4E8F\u3001\u4F18\u5316\u4E0B\u6B21\u53C2\u6570\n## \u5173\u952E\u8BCD\uFF1A\u5386\u53F2\u7F51\u683C, grid history, \u7F51\u683C\u8BB0\u5F55, \u7B56\u7565\u590D\u76D8, \u7F51\u683C\u6536\u76CA\n## \u53C2\u6570\uFF1A\n## - algoOrdType: \u7F51\u683C\u7C7B\u578B\n## - instId: \u4EA7\u54C1ID\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u7B5B\u9009\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 ~5KB\n## \u5173\u8054\uFF1Aokx_get_grid_orders_pending \u770B\u8FD0\u884C\u4E2D \u2192 \u505C\u6B62\u540E \u2192 \u672C\u5DE5\u5177\u67E5\u770B\u6700\u7EC8\u76C8\u4E8F",
23150
23131
  {
23151
23132
  algoOrdType: external_exports.enum(["grid", "contract_grid", "moon_grid"]).describe("\u7F51\u683C\u7C7B\u578B"),
23152
23133
  instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
23153
- instType: external_exports.enum(["SPOT", "MARGIN", "FUTURES", "SWAP"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u7B5B\u9009")
23134
+ instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B\u7B5B\u9009")
23154
23135
  },
23155
23136
  async ({ algoOrdType, instId, instType }) => {
23156
23137
  if (!auth) return toError(AUTH_REQUIRED);
@@ -23164,7 +23145,7 @@ function registerBotTools(server, auth) {
23164
23145
  );
23165
23146
  server.tool(
23166
23147
  "okx_get_grid_sub_orders",
23167
- "\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",
23148
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u67D0\u4E2A\u7F51\u683C\u7B56\u7565\u7684\u5B50\u8BA2\u5355\u5217\u8868\uFF08\u6BCF\u4E00\u683C\u7684\u4E70\u5356\u8BB0\u5F55\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u7F51\u683C\u6210\u4EA4\u60C5\u51B5\u3001\u9A8C\u8BC1\u7B56\u7565\u662F\u5426\u6309\u9884\u671F\u8FD0\u884C\u3001\u8BA1\u7B97\u5B9E\u9645\u6536\u76CA\n## \u5173\u952E\u8BCD\uFF1A\u7F51\u683C\u5B50\u5355, grid sub orders, \u7F51\u683C\u6210\u4EA4, \u7F51\u683C\u660E\u7EC6, \u9010\u683C\u8BB0\u5F55\n## \u53C2\u6570\uFF1A\n## - algoId: \u7F51\u683C\u7B56\u7565ID\n## - algoOrdType: \u7F51\u683C\u7C7B\u578B\n## - type: filled=\u5DF2\u6210\u4EA4, unfilled=\u672A\u6210\u4EA4\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\uFF1Aokx_get_grid_orders_pending \u83B7\u53D6\u7F51\u683CID \u2192 \u672C\u5DE5\u5177\u770B\u6BCF\u683C\u6210\u4EA4 \u2192 \u8BA1\u7B97\u5B9E\u9645\u6536\u76CA",
23168
23149
  {
23169
23150
  algoId: external_exports.string().describe("\u7F51\u683C\u7B56\u7565ID"),
23170
23151
  algoOrdType: external_exports.enum(["grid", "contract_grid", "moon_grid"]).describe("\u7F51\u683C\u7C7B\u578B"),
@@ -23182,7 +23163,7 @@ function registerBotTools(server, auth) {
23182
23163
  );
23183
23164
  server.tool(
23184
23165
  "okx_get_recurring_orders_pending",
23185
- "\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",
23166
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5F53\u524D\u8FD0\u884C\u4E2D\u7684\u5B9A\u6295\u8BA1\u5212\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5B9A\u6295\u5468\u671F\u3001\u5DF2\u6295\u603B\u989D\u3001\u5F53\u524D\u76C8\u4E8F\u3001\u5224\u65AD\u662F\u5426\u8C03\u6574\u5B9A\u6295\u7B56\u7565\n## \u5173\u952E\u8BCD\uFF1A\u5B9A\u6295, recurring, \u5B9A\u671F\u6295\u8D44, DCA, \u5B9A\u6295\u8BA1\u5212, \u5B9A\u6295\u76C8\u4E8F\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\u5FAE\u5C0F ~2KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u770B\u5B9A\u6295\u72B6\u6001 \u2192 okx_get_recurring_orders_history \u770B\u5386\u53F2 \u2192 \u8BC4\u4F30\u5B9A\u6295\u6548\u679C",
23186
23167
  {},
23187
23168
  async () => {
23188
23169
  if (!auth) return toError(AUTH_REQUIRED);
@@ -23196,7 +23177,7 @@ function registerBotTools(server, auth) {
23196
23177
  );
23197
23178
  server.tool(
23198
23179
  "okx_get_recurring_orders_history",
23199
- "\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",
23180
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5DF2\u7ED3\u675F\u7684\u5386\u53F2\u5B9A\u6295\u8BA1\u5212\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8BC4\u4F30\u5B9A\u6295\u7B56\u7565\u957F\u671F\u6548\u679C\u3001\u5206\u6790\u603B\u6536\u76CA\u548C\u5E74\u5316\u6536\u76CA\u7387\n## \u5173\u952E\u8BCD\uFF1A\u5B9A\u6295\u5386\u53F2, recurring history, \u5B9A\u6295\u8BB0\u5F55, \u5B9A\u6295\u6536\u76CA, DCA\u6536\u76CA\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\u5FAE\u5C0F ~2KB\n## \u5173\u8054\uFF1Aokx_get_recurring_orders_pending \u770B\u8FD0\u884C\u4E2D \u2192 \u672C\u5DE5\u5177\u770B\u5386\u53F2 \u2192 \u8BA1\u7B97\u957F\u671F\u5E74\u5316",
23200
23181
  {},
23201
23182
  async () => {
23202
23183
  if (!auth) return toError(AUTH_REQUIRED);
@@ -23214,7 +23195,7 @@ function registerBotTools(server, auth) {
23214
23195
  function registerSpreadTools(server) {
23215
23196
  server.tool(
23216
23197
  "okx_get_spreads",
23217
- "\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",
23198
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4EF7\u5DEE\u5408\u7EA6\u4EA7\u54C1\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8DE8\u671F\u5957\u5229\u7B56\u7565\u8BBE\u8BA1\u3001\u53D1\u73B0\u53EF\u4EA4\u6613\u4EF7\u5DEE\u5408\u7EA6\u3001\u7B5B\u9009\u7279\u5B9A\u671F\u9650\u7684\u4EF7\u5DEE\u54C1\u79CD\n## \u5173\u952E\u8BCD\uFF1A\u4EF7\u5DEE\u5408\u7EA6, spreads, \u8DE8\u671F\u5957\u5229, \u4EF7\u5DEE\u5217\u8868, \u671F\u9650\u5957\u5229\n## \u53C2\u6570\uFF1A\n## - sprdId: \u4EF7\u5DEE\u5408\u7EA6ID\uFF0C\u5982 BTC-USDT_BTC-USDT-SWAP\n## - baseCcy: \u6807\u7684\u5E01\u79CD\uFF0C\u5982 BTC\n## - instId: \u817F\u5408\u7EA6\u4EA7\u54C1ID\uFF0C\u7CBE\u786E\u7B5B\u9009\n## - state: \u5408\u7EA6\u72B6\u6001\u3002live=\u6D3B\u8DC3, expired=\u5DF2\u5230\u671F, suspend=\u6682\u505C\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 ~3KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u83B7\u53D6\u4EF7\u5DEE\u5408\u7EA6\u5217\u8868 \u2192 okx_get_spread_ticker \u67E5\u884C\u60C5 \u2192 okx_get_spread_candles \u5206\u6790\u8D70\u52BF",
23218
23199
  {
23219
23200
  sprdId: external_exports.string().optional().describe("\u4EF7\u5DEE\u5408\u7EA6ID\uFF0C\u5982 BTC-USDT_BTC-USDT-SWAP"),
23220
23201
  baseCcy: external_exports.string().optional().describe("\u6807\u7684\u5E01\u79CD\uFF0C\u5982 BTC"),
@@ -23232,14 +23213,18 @@ function registerSpreadTools(server) {
23232
23213
  );
23233
23214
  server.tool(
23234
23215
  "okx_get_spread_ticker",
23235
- "\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",
23216
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5355\u4E2A\u4EF7\u5DEE\u5408\u7EA6\u5B9E\u65F6\u884C\u60C5\uFF0C\u542B\u6700\u65B0\u4EF7\u3001\u4E70\u5356\u4EF7\u5DEE\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8DE8\u671F\u5957\u5229\u76D1\u63A7\u3001\u4EF7\u5DEE\u8D8B\u52BF\u5224\u65AD\u3001\u53D1\u73B0\u4EF7\u5DEE\u56DE\u5F52\u673A\u4F1A\n## \u5173\u952E\u8BCD\uFF1A\u4EF7\u5DEE\u884C\u60C5, spread ticker, \u8DE8\u671F\u5957\u5229, \u4EF7\u5DEE\u4EF7\u683C, \u4E70\u5356\u4EF7\u5DEE\n## \u53C2\u6570\uFF1A\n## - sprdId: \u4EF7\u5DEE\u5408\u7EA6ID\uFF0C\u5982 BTC-USD-SWAP_BTC-USD-260925\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 ~1KB\n## \u5173\u8054\uFF1A\u5148\u8C03 okx_get_spreads \u83B7\u53D6\u53EF\u7528\u4EF7\u5DEE\u5408\u7EA6ID \u2192 \u672C\u5DE5\u5177\u67E5\u884C\u60C5 \u2192 okx_get_spread_candles \u5206\u6790\u8D70\u52BF",
23236
23217
  {
23237
23218
  sprdId: external_exports.string().describe("\u4EF7\u5DEE\u5408\u7EA6ID\uFF0C\u5982 BTC-USD-SWAP_BTC-USD-260925")
23238
23219
  },
23239
23220
  async ({ sprdId }) => {
23240
23221
  try {
23241
23222
  const data = await publicApi.getSpreadTicker(sprdId);
23242
- return toResult(data);
23223
+ const enriched = data.map((item) => ({
23224
+ ...item,
23225
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
23226
+ }));
23227
+ return toResult(enriched);
23243
23228
  } catch (e) {
23244
23229
  return toError(e);
23245
23230
  }
@@ -23247,14 +23232,21 @@ function registerSpreadTools(server) {
23247
23232
  );
23248
23233
  server.tool(
23249
23234
  "okx_get_spread_orderbook",
23250
- "\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",
23235
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4EF7\u5DEE\u5408\u7EA6\u8BA2\u5355\u7C3F\u6DF1\u5EA6\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u4E70\u5356\u53CC\u65B9\u6302\u5355\u5206\u5E03\u3001\u5224\u65AD\u4EF7\u5DEE\u5E02\u573A\u7684\u6D41\u52A8\u6027\u8D28\u91CF\u3001\u8BC4\u4F30\u8DE8\u671F\u5957\u5229\u6ED1\u70B9\n## \u5173\u952E\u8BCD\uFF1A\u4EF7\u5DEE\u6DF1\u5EA6, spread orderbook, \u4EF7\u5DEE\u6302\u5355, \u6D41\u52A8\u6027, \u5957\u5229\u6DF1\u5EA6\n## \u53C2\u6570\uFF1A\n## - sprdId: \u4EF7\u5DEE\u5408\u7EA6ID\n## - depth: \u6DF1\u5EA6\u6863\u4F4D\uFF0C\u9ED8\u8BA420\uFF0C\u6700\u5927400\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 ~3KB\n## \u5173\u8054\uFF1A\u5148\u8C03 okx_get_spreads \u83B7\u53D6\u4EF7\u5DEE\u5408\u7EA6\u5217\u8868 \u2192 \u672C\u5DE5\u5177\u67E5\u6DF1\u5EA6 \u2192 okx_get_spread_ticker \u5224\u65AD\u5957\u5229\u673A\u4F1A",
23251
23236
  {
23252
23237
  sprdId: external_exports.string().describe("\u4EF7\u5DEE\u5408\u7EA6ID"),
23253
- sz: external_exports.number().int().min(1).max(400).optional().describe("\u6DF1\u5EA6\u6863\u4F4D\uFF0C\u9ED8\u8BA420")
23238
+ depth: external_exports.number().int().min(1).max(400).optional().describe("\u6DF1\u5EA6\u6863\u4F4D\uFF0C\u9ED8\u8BA420\uFF0C\u6700\u5927400")
23254
23239
  },
23255
- async ({ sprdId, sz }) => {
23240
+ async ({ sprdId, depth }) => {
23256
23241
  try {
23257
- const data = await publicApi.getSpreadOrderbook(sprdId, sz);
23242
+ const data = await publicApi.getSpreadOrderbook(sprdId, depth);
23243
+ const enriched = data.data || data;
23244
+ if (enriched && typeof enriched === "object" && !Array.isArray(enriched)) {
23245
+ return toResult({
23246
+ ...enriched,
23247
+ tsIso: enriched.ts ? new Date(parseInt(enriched.ts)).toISOString() : void 0
23248
+ });
23249
+ }
23258
23250
  return toResult(data);
23259
23251
  } catch (e) {
23260
23252
  return toError(e);
@@ -23263,7 +23255,7 @@ function registerSpreadTools(server) {
23263
23255
  );
23264
23256
  server.tool(
23265
23257
  "okx_get_spread_trades",
23266
- "\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",
23258
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4EF7\u5DEE\u5408\u7EA6\u6700\u65B0\u6210\u4EA4\u8BB0\u5F55\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u5E02\u573A\u53C2\u4E0E\u8005\u5BF9\u5F53\u524D\u4EF7\u5DEE\u6C34\u5E73\u7684\u8BA4\u53EF\u5EA6\u3001\u5224\u65AD\u5957\u5229\u7B56\u7565\u6709\u6548\u6027\n## \u5173\u952E\u8BCD\uFF1A\u4EF7\u5DEE\u6210\u4EA4, spread trades, \u5957\u5229\u6210\u4EA4, \u4EF7\u5DEE\u4EA4\u6613, \u6210\u4EA4\u8BB0\u5F55\n## \u53C2\u6570\uFF1A\n## - sprdId: \u4EF7\u5DEE\u5408\u7EA6ID\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420\uFF0C\u6700\u5927100\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\uFF1Aokx_get_spread_ticker \u67E5\u884C\u60C5 \u2192 \u672C\u5DE5\u5177\u770B\u6700\u65B0\u6210\u4EA4 \u2192 okx_get_spread_candles \u770B\u8D70\u52BF",
23267
23259
  {
23268
23260
  sprdId: external_exports.string().describe("\u4EF7\u5DEE\u5408\u7EA6ID"),
23269
23261
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420")
@@ -23271,7 +23263,11 @@ function registerSpreadTools(server) {
23271
23263
  async ({ sprdId, limit }) => {
23272
23264
  try {
23273
23265
  const data = await publicApi.getSpreadTrades(sprdId, limit);
23274
- return toResult(data);
23266
+ const enriched = data.map((item) => ({
23267
+ ...item,
23268
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
23269
+ }));
23270
+ return toResult(enriched);
23275
23271
  } catch (e) {
23276
23272
  return toError(e);
23277
23273
  }
@@ -23279,7 +23275,7 @@ function registerSpreadTools(server) {
23279
23275
  );
23280
23276
  server.tool(
23281
23277
  "okx_get_spread_candles",
23282
- "\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",
23278
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4EF7\u5DEE\u5408\u7EA6K\u7EBF\u6570\u636E\n## \u573A\u666F\uFF1A\u7528\u4E8E\u7814\u7A76\u4EF7\u5DEE\u5386\u53F2\u8D70\u52BF\u3001\u8BC6\u522B\u5747\u503C\u56DE\u5F52\u673A\u4F1A\u3001\u8BA1\u7B97\u4EF7\u5DEE\u6CE2\u52A8\u7387\n## \u5173\u952E\u8BCD\uFF1A\u4EF7\u5DEEK\u7EBF, spread candles, \u4EF7\u5DEE\u8D70\u52BF, \u5747\u503C\u56DE\u5F52, \u8DE8\u671F\u5957\u5229\u5206\u6790\n## \u53C2\u6570\uFF1A\n## - sprdId: \u4EF7\u5DEE\u5408\u7EA6ID\n## - bar: K\u7EBF\u5468\u671F\u30021m/5m/15m/30m=\u5206\u949F, 1H=1\u5C0F\u65F6, 4H=4\u5C0F\u65F6, 1D=\u65E5\u7EBF\u3002\u9ED8\u8BA41H\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\uFF0C\u6700\u5927300\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\uFF1A100\u6761 ~5KB \u2014 \u5FAE\u5C0F\n## \u5173\u8054\uFF1Aokx_get_spread_ticker \u67E5\u5F53\u524D\u4EF7\u5DEE \u2192 \u672C\u5DE5\u5177\u770B\u5386\u53F2\u8D70\u52BF \u2192 \u5224\u65AD\u662F\u5426\u5904\u4E8E\u5747\u503C\u56DE\u5F52\u533A\u95F4",
23283
23279
  {
23284
23280
  sprdId: external_exports.string().describe("\u4EF7\u5DEE\u5408\u7EA6ID"),
23285
23281
  bar: external_exports.enum(["1m", "5m", "15m", "30m", "1H", "4H", "1D"]).optional().describe("K\u7EBF\u5468\u671F\uFF0C\u9ED8\u8BA41H"),
@@ -23288,7 +23284,17 @@ function registerSpreadTools(server) {
23288
23284
  async ({ sprdId, bar, limit }) => {
23289
23285
  try {
23290
23286
  const data = await publicApi.getSpreadCandles(sprdId, bar, limit);
23291
- return toResult(data);
23287
+ const enriched = data.map((row) => ({
23288
+ ts: row[0],
23289
+ tsIso: row[0] ? new Date(parseInt(row[0])).toISOString() : void 0,
23290
+ open: row[1],
23291
+ high: row[2],
23292
+ low: row[3],
23293
+ close: row[4],
23294
+ vol: row[5],
23295
+ volCcy: row[6]
23296
+ }));
23297
+ return toResult(enriched);
23292
23298
  } catch (e) {
23293
23299
  return toError(e);
23294
23300
  }
@@ -23300,10 +23306,10 @@ function registerSpreadTools(server) {
23300
23306
  function registerCopyTools(server, auth) {
23301
23307
  server.tool(
23302
23308
  "okx_get_lead_trader_positions",
23303
- "\u67E5\u8BE2\u6307\u5B9A\u5E26\u5355\u5458\u5F53\u524D\u6301\u4ED3\u5217\u8868\uFF0C\u542B\u54C1\u79CD\u3001\u65B9\u5411\u3001\u6301\u4ED3\u91CF\u548C\u5F00\u4ED3\u5747\u4EF7\u3002\u65E0\u9700API Key\u3002uniqueCode \u53EF\u4ECEOKX\u8DDF\u5355\u5E7F\u573A\u83B7\u53D6\u3002",
23309
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6307\u5B9A\u5E26\u5355\u5458\u5F53\u524D\u6301\u4ED3\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8DDF\u5355\u524D\u8BC4\u4F30\u5E26\u5355\u5458\u5F53\u524D\u4ED3\u4F4D\u3001\u5224\u65AD\u662F\u5426\u503C\u5F97\u8DDF\u5355\n## \u5173\u952E\u8BCD\uFF1A\u5E26\u5355\u5458\u6301\u4ED3, lead trader positions, \u8DDF\u5355, \u4EA4\u6613\u5458\u4ED3\u4F4D, \u5E26\u5355\n## \u53C2\u6570\uFF1A\n## - uniqueCode: \u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801\uFF0C\u4ECEOKX App\u300C\u8DDF\u5355\u300D\u9875\u9762\u83B7\u53D6\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272\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\u5E26\u5355\u5458\u6301\u4ED3 \u2192 okx_get_lead_trader_stats \u770B\u7EE9\u6548 \u2192 \u51B3\u5B9A\u662F\u5426\u8DDF\u5355",
23304
23310
  {
23305
23311
  uniqueCode: external_exports.string().describe("\u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801\uFF0C\u4ECEOKX App\u300C\u8DDF\u5355\u300D\u9875\u9762\u83B7\u53D6"),
23306
- instType: external_exports.enum(["SWAP", "FUTURES"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8")
23312
+ instType: external_exports.enum(INST_TYPE_SWAP_FUT).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8")
23307
23313
  },
23308
23314
  async ({ uniqueCode, instType }) => {
23309
23315
  try {
@@ -23316,10 +23322,10 @@ function registerCopyTools(server, auth) {
23316
23322
  );
23317
23323
  server.tool(
23318
23324
  "okx_get_lead_trader_history",
23319
- "\u67E5\u8BE2\u6307\u5B9A\u5E26\u5355\u5458\u5386\u53F2\u6301\u4ED3\u8BB0\u5F55\uFF0C\u542B\u6BCF\u7B14\u4EA4\u6613\u7684\u76C8\u4E8F\u548C\u6301\u4ED3\u65F6\u957F\u3002\u65E0\u9700API Key\u3002\u9002\u5408\u8BC4\u4F30\u5E26\u5355\u5458\u5386\u53F2\u8868\u73B0\u540E\u518D\u51B3\u5B9A\u662F\u5426\u8DDF\u5355\u3002",
23325
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6307\u5B9A\u5E26\u5355\u5458\u5386\u53F2\u6301\u4ED3\u8BB0\u5F55\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8BC4\u4F30\u5E26\u5355\u5458\u5386\u53F2\u8868\u73B0\u3001\u5206\u6790\u4EA4\u6613\u98CE\u683C\u548C\u76C8\u4E8F\u5206\u5E03\n## \u5173\u952E\u8BCD\uFF1A\u5E26\u5355\u5458\u5386\u53F2, trader history, \u4EA4\u6613\u8BB0\u5F55, \u8DDF\u5355\u5386\u53F2, \u5E26\u5355\u76C8\u4E8F\n## \u53C2\u6570\uFF1A\n## - uniqueCode: \u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801\n## - instType: \u4EA7\u54C1\u7C7B\u578B\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420\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_lead_trader_positions \u770B\u5F53\u524D \u2192 \u672C\u5DE5\u5177\u770B\u5386\u53F2 \u2192 okx_get_lead_trader_stats \u770B\u7EDF\u8BA1",
23320
23326
  {
23321
23327
  uniqueCode: external_exports.string().describe("\u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801"),
23322
- instType: external_exports.enum(["SWAP", "FUTURES"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
23328
+ instType: external_exports.enum(INST_TYPE_SWAP_FUT).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
23323
23329
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420")
23324
23330
  },
23325
23331
  async ({ uniqueCode, instType, limit }) => {
@@ -23333,10 +23339,10 @@ function registerCopyTools(server, auth) {
23333
23339
  );
23334
23340
  server.tool(
23335
23341
  "okx_get_lead_trader_stats",
23336
- "\u67E5\u8BE2\u6307\u5B9A\u5E26\u5355\u5458\u7684\u7EE9\u6548\u7EDF\u8BA1\uFF0C\u542B\u603B\u6536\u76CA\u7387\u3001\u6700\u5927\u56DE\u64A4\u3001\u8DDF\u5355\u4EBA\u6570\u548C\u80DC\u7387\u3002\u65E0\u9700API Key\u3002\u662F\u8BC4\u4F30\u5E26\u5355\u5458\u6700\u6838\u5FC3\u7684\u6307\u6807\u3002",
23342
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6307\u5B9A\u5E26\u5355\u5458\u7684\u7EE9\u6548\u7EDF\u8BA1\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8BC4\u4F30\u5E26\u5355\u5458\u7684\u6838\u5FC3\u6307\u6807\uFF08\u6536\u76CA\u7387\u3001\u6700\u5927\u56DE\u64A4\u3001\u80DC\u7387\u3001\u8DDF\u5355\u4EBA\u6570\uFF09\n## \u5173\u952E\u8BCD\uFF1A\u5E26\u5355\u5458\u7EDF\u8BA1, trader stats, \u6536\u76CA\u7387, \u6700\u5927\u56DE\u64A4, \u80DC\u7387, \u8DDF\u5355\u4EBA\u6570\n## \u53C2\u6570\uFF1A\n## - uniqueCode: \u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801\n## - instType: \u4EA7\u54C1\u7C7B\u578B\n## - lastDays: \u7EDF\u8BA1\u5468\u671F\uFF08\u5929\uFF09\uFF1A7/30/90/180\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 ~1KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u770B\u7EE9\u6548\u6C47\u603B \u2192 okx_get_lead_trader_history \u770B\u8BE6\u7EC6\u4EA4\u6613 \u2192 \u51B3\u5B9A\u662F\u5426\u8DDF\u5355",
23337
23343
  {
23338
23344
  uniqueCode: external_exports.string().describe("\u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801"),
23339
- instType: external_exports.enum(["SWAP", "FUTURES"]).describe("\u4EA7\u54C1\u7C7B\u578B"),
23345
+ instType: external_exports.enum(INST_TYPE_SWAP_FUT).describe("\u4EA7\u54C1\u7C7B\u578B"),
23340
23346
  lastDays: external_exports.enum(["7", "30", "90", "180"]).describe("\u7EDF\u8BA1\u5468\u671F\uFF08\u5929\uFF09\uFF1A7/30/90/180")
23341
23347
  },
23342
23348
  async ({ uniqueCode, instType, lastDays }) => {
@@ -23350,9 +23356,9 @@ function registerCopyTools(server, auth) {
23350
23356
  );
23351
23357
  server.tool(
23352
23358
  "okx_get_my_lead_positions",
23353
- "\u67E5\u8BE2\u6211\u5F53\u524D\u4F5C\u4E3A\u5E26\u5355\u5458\u7684\u6301\u4ED3\u5217\u8868\uFF08\u4EC5\u5E26\u5355\u5458\u8D26\u6237\u6709\u6570\u636E\uFF09\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
23359
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6211\u5F53\u524D\u4F5C\u4E3A\u5E26\u5355\u5458\u7684\u6301\u4ED3\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5E26\u5355\u5458\u67E5\u770B\u81EA\u5DF1\u7684\u5E26\u5355\u4ED3\u4F4D\u3001\u7BA1\u7406\u5E26\u5355\u7B56\u7565\n## \u5173\u952E\u8BCD\uFF1A\u6211\u7684\u5E26\u5355, my lead positions, \u5E26\u5355\u6301\u4ED3, \u8DDF\u5355\u8D26\u6237\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\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\u5FAE\u5C0F ~2KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u770B\u6301\u4ED3 \u2192 okx_get_my_lead_history \u770B\u5386\u53F2\u5E26\u5355 \u2192 okx_get_profit_sharing_total \u770B\u5206\u6210",
23354
23360
  {
23355
- instType: external_exports.enum(["SWAP", "FUTURES"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8")
23361
+ instType: external_exports.enum(INST_TYPE_SWAP_FUT).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8")
23356
23362
  },
23357
23363
  async ({ instType }) => {
23358
23364
  if (!auth) return toError(AUTH_REQUIRED);
@@ -23366,9 +23372,9 @@ function registerCopyTools(server, auth) {
23366
23372
  );
23367
23373
  server.tool(
23368
23374
  "okx_get_my_lead_history",
23369
- "\u67E5\u8BE2\u6211\u7684\u5386\u53F2\u5E26\u5355\u8BB0\u5F55\uFF0C\u542B\u6BCF\u7B14\u7684\u76C8\u4E8F\u548C\u8DDF\u5355\u91CF\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
23375
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6211\u7684\u5386\u53F2\u5E26\u5355\u8BB0\u5F55\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5E26\u5355\u5458\u590D\u76D8\u81EA\u5DF1\u7684\u5E26\u5355\u8868\u73B0\u3001\u7EDF\u8BA1\u76C8\u4E8F\n## \u5173\u952E\u8BCD\uFF1A\u6211\u7684\u5E26\u5355\u5386\u53F2, my lead history, \u5E26\u5355\u8BB0\u5F55, \u5206\u6210\u8BB0\u5F55\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420\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 ~5KB\n## \u5173\u8054\uFF1Aokx_get_my_lead_positions \u770B\u5F53\u524D \u2192 \u672C\u5DE5\u5177\u770B\u5386\u53F2 \u2192 okx_get_profit_sharing_details \u770B\u5206\u6210\u660E\u7EC6",
23370
23376
  {
23371
- instType: external_exports.enum(["SWAP", "FUTURES"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
23377
+ instType: external_exports.enum(INST_TYPE_SWAP_FUT).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
23372
23378
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420")
23373
23379
  },
23374
23380
  async ({ instType, limit }) => {
@@ -23383,9 +23389,9 @@ function registerCopyTools(server, auth) {
23383
23389
  );
23384
23390
  server.tool(
23385
23391
  "okx_get_copy_instruments",
23386
- "\u67E5\u8BE2\u6211\u5F53\u524D\u4F5C\u4E3A\u5E26\u5355\u5458\u5141\u8BB8\u8DDF\u5355\u7684\u54C1\u79CD\u5217\u8868\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
23392
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6211\u5F53\u524D\u4F5C\u4E3A\u5E26\u5355\u5458\u5141\u8BB8\u8DDF\u5355\u7684\u54C1\u79CD\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5E26\u5355\u5458\u7BA1\u7406\u5141\u8BB8\u8DDF\u5355\u7684\u4EA4\u6613\u54C1\u79CD\n## \u5173\u952E\u8BCD\uFF1A\u8DDF\u5355\u54C1\u79CD, copy instruments, \u5141\u8BB8\u8DDF\u5355, \u54C1\u79CD\u8BBE\u7F6E\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\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\u5FAE\u5C0F ~1KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u770B\u5141\u8BB8\u8DDF\u5355\u7684\u54C1\u79CD \u2192 \u8C03\u6574\u5E26\u5355\u8BBE\u7F6E",
23387
23393
  {
23388
- instType: external_exports.enum(["SWAP", "FUTURES"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B")
23394
+ instType: external_exports.enum(INST_TYPE_SWAP_FUT).optional().describe("\u4EA7\u54C1\u7C7B\u578B")
23389
23395
  },
23390
23396
  async ({ instType }) => {
23391
23397
  if (!auth) return toError(AUTH_REQUIRED);
@@ -23399,9 +23405,9 @@ function registerCopyTools(server, auth) {
23399
23405
  );
23400
23406
  server.tool(
23401
23407
  "okx_get_profit_sharing_total",
23402
- "\u67E5\u8BE2\u6211\u7684\u5E26\u5355\u7D2F\u8BA1\u6536\u53D6\u7684\u5206\u6210\u91D1\u989D\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
23408
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6211\u7684\u5E26\u5355\u7D2F\u8BA1\u6536\u53D6\u7684\u5206\u6210\u91D1\u989D\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5E26\u5355\u5458\u67E5\u770B\u7D2F\u8BA1\u5206\u6210\u6536\u5165\n## \u5173\u952E\u8BCD\uFF1A\u5E26\u5355\u5206\u6210, profit sharing, \u5206\u6210\u6536\u5165, \u7D2F\u8BA1\u5206\u6210\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\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\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u770B\u603B\u5206\u6210 \u2192 okx_get_profit_sharing_details \u770B\u9010\u7B14\u660E\u7EC6",
23403
23409
  {
23404
- instType: external_exports.enum(["SWAP", "FUTURES"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B")
23410
+ instType: external_exports.enum(INST_TYPE_SWAP_FUT).optional().describe("\u4EA7\u54C1\u7C7B\u578B")
23405
23411
  },
23406
23412
  async ({ instType }) => {
23407
23413
  if (!auth) return toError(AUTH_REQUIRED);
@@ -23415,9 +23421,9 @@ function registerCopyTools(server, auth) {
23415
23421
  );
23416
23422
  server.tool(
23417
23423
  "okx_get_profit_sharing_details",
23418
- "\u67E5\u8BE2\u5E26\u5355\u76C8\u5229\u5206\u6210\u7684\u9010\u7B14\u660E\u7EC6\uFF0C\u542B\u6BCF\u6B21\u5206\u6210\u7684\u91D1\u989D\u3001\u6765\u6E90\u8DDF\u5355\u8005\u548C\u65F6\u95F4\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
23424
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5E26\u5355\u76C8\u5229\u5206\u6210\u7684\u9010\u7B14\u660E\u7EC6\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5E26\u5355\u5458\u6838\u5BF9\u6BCF\u7B14\u5206\u6210\u91D1\u989D\u3001\u6765\u6E90\u8DDF\u5355\u8005\u548C\u65F6\u95F4\n## \u5173\u952E\u8BCD\uFF1A\u5206\u6210\u660E\u7EC6, profit details, \u5206\u7B14\u5206\u6210, \u8DDF\u5355\u5206\u6210\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420\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 ~5KB\n## \u5173\u8054\uFF1Aokx_get_profit_sharing_total \u770B\u603B\u5206\u6210 \u2192 \u672C\u5DE5\u5177\u770B\u9010\u7B14\u660E\u7EC6",
23419
23425
  {
23420
- instType: external_exports.enum(["SWAP", "FUTURES"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
23426
+ instType: external_exports.enum(INST_TYPE_SWAP_FUT).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
23421
23427
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420")
23422
23428
  },
23423
23429
  async ({ instType, limit }) => {
@@ -23436,10 +23442,10 @@ function registerCopyTools(server, auth) {
23436
23442
  function registerSignalTools(server, auth) {
23437
23443
  server.tool(
23438
23444
  "okx_get_signal_bots_pending",
23439
- "\u67E5\u8BE2\u5F53\u524D\u8FD0\u884C\u4E2D\u7684\u4FE1\u53F7\u4EA4\u6613\u673A\u5668\u4EBA\u5217\u8868\uFF0C\u542B\u54C1\u79CD\u3001\u65B9\u5411\u3001\u4ED3\u4F4D\u548C\u4FE1\u53F7\u6765\u6E90\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
23445
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5F53\u524D\u8FD0\u884C\u4E2D\u7684\u4FE1\u53F7\u4EA4\u6613\u673A\u5668\u4EBA\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u76D1\u63A7\u4FE1\u53F7\u673A\u5668\u4EBA\u8FD0\u884C\u72B6\u6001\u3001\u67E5\u770B\u54C1\u79CD\u548C\u4ED3\u4F4D\u3001\u5224\u65AD\u662F\u5426\u9700\u8981\u505C\u6B62\n## \u5173\u952E\u8BCD\uFF1A\u4FE1\u53F7\u673A\u5668\u4EBA, signal bot, \u4FE1\u53F7\u4EA4\u6613, \u81EA\u52A8\u8DDF\u5355, \u673A\u5668\u4EBA\u72B6\u6001\n## \u53C2\u6570\uFF1A\n## - algoId: \u6307\u5B9A\u673A\u5668\u4EBAID\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SPOT=\u73B0\u8D27, SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, MARGIN=\u6760\u6746\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\u5FAE\u5C0F ~2KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u770B\u8FD0\u884C\u4E2D\u7684\u673A\u5668\u4EBA \u2192 okx_get_signal_positions \u770B\u6301\u4ED3 \u2192 okx_get_signal_sub_orders \u770B\u5B50\u5355",
23440
23446
  {
23441
23447
  algoId: external_exports.string().optional().describe("\u6307\u5B9A\u673A\u5668\u4EBAID\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8"),
23442
- instType: external_exports.enum(["SPOT", "SWAP", "FUTURES", "MARGIN"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B")
23448
+ instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B")
23443
23449
  },
23444
23450
  async ({ algoId, instType }) => {
23445
23451
  if (!auth) return toError(AUTH_REQUIRED);
@@ -23453,10 +23459,10 @@ function registerSignalTools(server, auth) {
23453
23459
  );
23454
23460
  server.tool(
23455
23461
  "okx_get_signal_bots_history",
23456
- "\u67E5\u8BE2\u5DF2\u505C\u6B62\u7684\u4FE1\u53F7\u4EA4\u6613\u673A\u5668\u4EBA\u5386\u53F2\u8BB0\u5F55\uFF0C\u542B\u6BCF\u4E2A\u673A\u5668\u4EBA\u7684\u7D2F\u8BA1\u76C8\u4E8F\u548C\u8FD0\u884C\u65F6\u957F\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
23462
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5DF2\u505C\u6B62\u7684\u4FE1\u53F7\u4EA4\u6613\u673A\u5668\u4EBA\u5386\u53F2\u8BB0\u5F55\n## \u573A\u666F\uFF1A\u7528\u4E8E\u590D\u76D8\u4FE1\u53F7\u4EA4\u6613\u6548\u679C\u3001\u8BC4\u4F30\u673A\u5668\u4EBA\u76C8\u4E8F\u3001\u4F18\u5316\u4FE1\u53F7\u7B56\u7565\n## \u5173\u952E\u8BCD\uFF1A\u4FE1\u53F7\u5386\u53F2, signal history, \u673A\u5668\u4EBA\u8BB0\u5F55, \u4FE1\u53F7\u76C8\u4E8F, \u4FE1\u53F7\u590D\u76D8\n## \u53C2\u6570\uFF1A\n## - algoId: \u6307\u5B9A\u673A\u5668\u4EBAID\n## - instType: \u4EA7\u54C1\u7C7B\u578B\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420\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 ~5KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u770B\u5386\u53F2\u673A\u5668\u4EBA \u2192 okx_get_signal_positions_history \u770B\u6301\u4ED3 \u2192 okx_get_signal_event_history \u770B\u4FE1\u53F7",
23457
23463
  {
23458
23464
  algoId: external_exports.string().optional().describe("\u6307\u5B9A\u673A\u5668\u4EBAID"),
23459
- instType: external_exports.enum(["SPOT", "SWAP", "FUTURES", "MARGIN"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
23465
+ instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
23460
23466
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420")
23461
23467
  },
23462
23468
  async ({ algoId, instType, limit }) => {
@@ -23471,7 +23477,7 @@ function registerSignalTools(server, auth) {
23471
23477
  );
23472
23478
  server.tool(
23473
23479
  "okx_get_signal_positions",
23474
- "\u67E5\u8BE2\u6307\u5B9A\u4FE1\u53F7\u673A\u5668\u4EBA\u7684\u5F53\u524D\u6301\u4ED3\uFF0C\u542B\u672A\u5B9E\u73B0\u76C8\u4E8F\u548C\u5F00\u4ED3\u5747\u4EF7\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
23480
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6307\u5B9A\u4FE1\u53F7\u673A\u5668\u4EBA\u7684\u5F53\u524D\u6301\u4ED3\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u4FE1\u53F7\u8DDF\u5355\u4ED3\u4F4D\u3001\u76D1\u63A7\u672A\u5B9E\u73B0\u76C8\u4E8F\n## \u5173\u952E\u8BCD\uFF1A\u4FE1\u53F7\u6301\u4ED3, signal positions, \u8DDF\u5355\u4ED3\u4F4D, \u4FE1\u53F7\u4ED3\u4F4D\n## \u53C2\u6570\uFF1A\n## - algoId: \u4FE1\u53F7\u673A\u5668\u4EBAID\uFF08\u4ECE okx_get_signal_bots_pending \u83B7\u53D6\uFF09\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\u5FAE\u5C0F ~1KB\n## \u5173\u8054\uFF1Aokx_get_signal_bots_pending \u83B7\u53D6\u673A\u5668\u4EBAID \u2192 \u672C\u5DE5\u5177\u770B\u6301\u4ED3 \u2192 \u51B3\u5B9A\u662F\u5426\u505C\u6B62",
23475
23481
  {
23476
23482
  algoId: external_exports.string().describe("\u4FE1\u53F7\u673A\u5668\u4EBAID\uFF08\u4ECE okx_get_signal_bots_pending \u83B7\u53D6\uFF09")
23477
23483
  },
@@ -23487,7 +23493,7 @@ function registerSignalTools(server, auth) {
23487
23493
  );
23488
23494
  server.tool(
23489
23495
  "okx_get_signal_positions_history",
23490
- "\u67E5\u8BE2\u6307\u5B9A\u4FE1\u53F7\u673A\u5668\u4EBA\u7684\u5386\u53F2\u6301\u4ED3\u8BB0\u5F55\uFF0C\u542B\u6BCF\u7B14\u7684\u5B9E\u73B0\u76C8\u4E8F\u548C\u6301\u4ED3\u65F6\u957F\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
23496
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6307\u5B9A\u4FE1\u53F7\u673A\u5668\u4EBA\u7684\u5386\u53F2\u6301\u4ED3\u8BB0\u5F55\n## \u573A\u666F\uFF1A\u7528\u4E8E\u590D\u76D8\u4FE1\u53F7\u8DDF\u5355\u7684\u4EA4\u6613\u8868\u73B0\u3001\u7EDF\u8BA1\u76C8\u4E8F\n## \u5173\u952E\u8BCD\uFF1A\u4FE1\u53F7\u6301\u4ED3\u5386\u53F2, signal positions history, \u8DDF\u5355\u76C8\u4E8F, \u4FE1\u53F7\u4EA4\u6613\u8BB0\u5F55\n## \u53C2\u6570\uFF1A\n## - algoId: \u4FE1\u53F7\u673A\u5668\u4EBAID\uFF08\u4ECE okx_get_signal_bots_history \u83B7\u53D6\uFF09\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420\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 ~5KB\n## \u5173\u8054\uFF1Aokx_get_signal_bots_history \u83B7\u53D6\u673A\u5668\u4EBAID \u2192 \u672C\u5DE5\u5177\u770B\u5386\u53F2\u6301\u4ED3 \u2192 \u7EDF\u8BA1\u76C8\u4E8F",
23491
23497
  {
23492
23498
  algoId: external_exports.string().describe("\u4FE1\u53F7\u673A\u5668\u4EBAID\uFF08\u4ECE okx_get_signal_bots_history \u83B7\u53D6\uFF09"),
23493
23499
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420")
@@ -23504,7 +23510,7 @@ function registerSignalTools(server, auth) {
23504
23510
  );
23505
23511
  server.tool(
23506
23512
  "okx_get_signal_sub_orders",
23507
- "\u67E5\u8BE2\u4FE1\u53F7\u673A\u5668\u4EBA\u89E6\u53D1\u7684\u5B50\u8BA2\u5355\u5217\u8868\uFF0C\u53EF\u8FFD\u8E2A\u6BCF\u4E2A\u4FE1\u53F7\u5BF9\u5E94\u7684\u5B9E\u9645\u4E0B\u5355\u60C5\u51B5\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
23513
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u4FE1\u53F7\u673A\u5668\u4EBA\u89E6\u53D1\u7684\u5B50\u8BA2\u5355\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8FFD\u8E2A\u6BCF\u4E2A\u4FE1\u53F7\u5BF9\u5E94\u7684\u5B9E\u9645\u4E0B\u5355\u60C5\u51B5\u3001\u9A8C\u8BC1\u4FE1\u53F7\u6267\u884C\u6548\u679C\n## \u5173\u952E\u8BCD\uFF1A\u4FE1\u53F7\u5B50\u5355, signal sub orders, \u4FE1\u53F7\u6210\u4EA4, \u89E6\u53D1\u8BA2\u5355\n## \u53C2\u6570\uFF1A\n## - algoId: \u4FE1\u53F7\u673A\u5668\u4EBAID\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420\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 ~5KB\n## \u5173\u8054\uFF1Aokx_get_signal_positions \u770B\u6301\u4ED3 \u2192 \u672C\u5DE5\u5177\u770B\u5B50\u5355 \u2192 okx_get_signal_event_history \u770B\u4FE1\u53F7\u6E90",
23508
23514
  {
23509
23515
  algoId: external_exports.string().describe("\u4FE1\u53F7\u673A\u5668\u4EBAID"),
23510
23516
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420")
@@ -23521,7 +23527,7 @@ function registerSignalTools(server, auth) {
23521
23527
  );
23522
23528
  server.tool(
23523
23529
  "okx_get_signal_event_history",
23524
- "\u67E5\u8BE2\u4FE1\u53F7\u673A\u5668\u4EBA\u6536\u5230\u7684\u4FE1\u53F7\u4E8B\u4EF6\u5386\u53F2\uFF0C\u542B\u6BCF\u6761\u4FE1\u53F7\u7684\u5185\u5BB9\u3001\u89E6\u53D1\u65F6\u95F4\u548C\u6267\u884C\u7ED3\u679C\u3002\u26A0\uFE0F \u9700\u8981API Key\u9274\u6743\u3002",
23530
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u4FE1\u53F7\u673A\u5668\u4EBA\u6536\u5230\u7684\u4FE1\u53F7\u4E8B\u4EF6\u5386\u53F2\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u4FE1\u53F7\u6765\u6E90\u3001\u89E6\u53D1\u9891\u7387\u3001\u6267\u884C\u6210\u529F\u7387\n## \u5173\u952E\u8BCD\uFF1A\u4FE1\u53F7\u4E8B\u4EF6, signal events, \u4FE1\u53F7\u6765\u6E90, \u89E6\u53D1\u8BB0\u5F55, \u4FE1\u53F7\u6267\u884C\n## \u53C2\u6570\uFF1A\n## - algoId: \u4FE1\u53F7\u673A\u5668\u4EBAID\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420\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 ~5KB\n## \u5173\u8054\uFF1Aokx_get_signal_sub_orders \u770B\u5B50\u5355 \u2192 \u672C\u5DE5\u5177\u770B\u4FE1\u53F7\u6E90 \u2192 \u8BC4\u4F30\u4FE1\u53F7\u8D28\u91CF",
23525
23531
  {
23526
23532
  algoId: external_exports.string().describe("\u4FE1\u53F7\u673A\u5668\u4EBAID"),
23527
23533
  limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA420")