hvip-mcp-server 0.2.26 → 0.2.27

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 +512 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -21369,7 +21369,40 @@ var privateApi = {
21369
21369
  getAffiliateLinkList: (auth) => request("GET", "/api/v5/affiliate/link/list", { auth }),
21370
21370
  getAffiliatePerformance: (auth) => request("GET", "/api/v5/affiliate/performance/summary", { auth }),
21371
21371
  getAffiliateCoInviterList: (auth) => request("GET", "/api/v5/affiliate/co-inviter/list", { auth }),
21372
- getAffiliateSubAffiliateList: (auth) => request("GET", "/api/v5/affiliate/sub-affiliate/list", { auth })
21372
+ getAffiliateSubAffiliateList: (auth) => request("GET", "/api/v5/affiliate/sub-affiliate/list", { auth }),
21373
+ // ── 新增批:market ────────────────────────────────────────────────────
21374
+ getBlockTicker: (instId) => request("GET", "/api/v5/market/block-ticker", { params: { instId } }),
21375
+ getHistoryIndexCandles: (instId, bar, after, before, limit) => request("GET", "/api/v5/market/history-index-candles", { params: { instId, bar, after, before, limit } }),
21376
+ getHistoryMarkPriceCandles: (instId, bar, after, before, limit) => request("GET", "/api/v5/market/history-mark-price-candles", { params: { instId, bar, after, before, limit } }),
21377
+ getMarkPriceCandles: (instId, bar, after, before, limit) => request("GET", "/api/v5/market/mark-price-candles", { params: { instId, bar, after, before, limit } }),
21378
+ getSpreadHistoryCandles: (sprdId, bar, after, before, limit) => request("GET", "/api/v5/sprd/history-candles", { params: { sprdId, bar, after, before, limit } }),
21379
+ // ── 新增批:trade ─────────────────────────────────────────────────────
21380
+ getOneClickRepayCurrencyList: (auth) => request("GET", "/api/v5/trade/one-click-repay-currency-list", { auth }),
21381
+ oneClickRepay: (auth, body) => request("POST", "/api/v5/trade/one-click-repay", { body, auth }),
21382
+ getOneClickRepayHistory: (auth) => request("GET", "/api/v5/trade/one-click-repay-history", { auth }),
21383
+ // ── 新增批:asset ─────────────────────────────────────────────────────
21384
+ getNonTradableAssets: (auth) => request("GET", "/api/v5/asset/non-tradable-assets", { auth }),
21385
+ getExchangeList: () => request("GET", "/api/v5/asset/exchange-list"),
21386
+ getDepositWithdrawStatus: (auth) => request("GET", "/api/v5/asset/deposit-withdraw-status", { auth }),
21387
+ getMonthlyStatement: (auth) => request("GET", "/api/v5/asset/monthly-statement", { auth }),
21388
+ getAssetBillsHistory: (auth, limit) => request("GET", "/api/v5/asset/bills-history", { params: { limit }, auth }),
21389
+ getConvertCurrencyPair: (auth) => request("GET", "/api/v5/asset/convert/currency-pair", { auth }),
21390
+ getConvertEstimateQuote: (auth, body) => request("POST", "/api/v5/asset/convert/estimate-quote", { body, auth }),
21391
+ // ── 新增批:public ────────────────────────────────────────────────────
21392
+ getPublicBlockTrades: (instId) => request("GET", "/api/v5/public/block-trades", { params: { instId } }),
21393
+ getDeliveryExerciseHistory: (instType, uly, instFamily) => request("GET", "/api/v5/public/delivery-exercise-history", { params: { instType, uly, instFamily } }),
21394
+ getFundingRateHistory: (instId, before, after, limit) => request("GET", "/api/v5/public/funding-rate-history", { params: { instId, before, after, limit } }),
21395
+ getInterestRateLoanQuota: () => request("GET", "/api/v5/public/interest-rate-loan-quota"),
21396
+ getPremiumHistory: (instId, period) => request("GET", "/api/v5/public/premium-history", { params: { instId, period } }),
21397
+ getSettlementHistory: (instType, instFamily, uly) => request("GET", "/api/v5/public/settlement-history", { params: { instType, instFamily, uly } }),
21398
+ getEventSeries: () => request("GET", "/api/v5/public/event-contract/series"),
21399
+ getEventMarkets: (seriesId) => request("GET", "/api/v5/public/event-contract/markets", { params: { seriesId } }),
21400
+ getEventEvents: (seriesId) => request("GET", "/api/v5/public/event-contract/events", { params: { seriesId } }),
21401
+ // ── 新增批:fiat ──────────────────────────────────────────────────────
21402
+ getFiatBuySellPair: (auth) => request("GET", "/api/v5/fiat/buy-sell/currency-pair", { auth }),
21403
+ getFiatDeposit: (auth) => request("GET", "/api/v5/fiat/deposit", { auth }),
21404
+ getFiatDepositOrderHistory: (auth) => request("GET", "/api/v5/fiat/deposit-order-history", { auth }),
21405
+ getFiatDepositPaymentMethods: (auth) => request("GET", "/api/v5/fiat/deposit-payment-methods", { auth })
21373
21406
  };
21374
21407
 
21375
21408
  // src/adapters/hrails.ts
@@ -21769,6 +21802,138 @@ function registerMarketTools(server) {
21769
21802
  }
21770
21803
  }
21771
21804
  );
21805
+ server.tool(
21806
+ "okx_get_block_ticker",
21807
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5927\u5B97\u4EA4\u6613\u5355\u4E2A\u4EA7\u54C1\u5B9E\u65F6\u884C\u60C5\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u8BE2\u5927\u5B97\u5E02\u573A\u7684\u6700\u65B0\u6210\u4EA4\u4EF7\u3001\u4E70\u5356\u62A5\u4EF7\n## \u5173\u952E\u8BCD\uFF1A\u5927\u5B97\u884C\u60C5, block ticker, \u5927\u5B97\u6700\u65B0\u4EF7, \u5927\u5B97\u4E70\u5356\u4EF7\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1APUBLIC \u2014 \u516C\u5F00\u63A5\u53E3\uFF0C\u4E0D\u9700\u8981 API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u5927\u5B97\u884C\u60C5 \u2192 okx_get_block_tickers \u770B\u5168\u91CF\u5927\u5B97 \u2192 \u8BC4\u4F30\u5927\u5B97\u5E02\u573A",
21808
+ {
21809
+ instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B")
21810
+ },
21811
+ async ({ instId }) => {
21812
+ try {
21813
+ const data = await publicApi.getBlockTicker(instId);
21814
+ const enriched = data.map((item) => ({
21815
+ ...item,
21816
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
21817
+ }));
21818
+ return toResult(enriched);
21819
+ } catch (e) {
21820
+ return toError(e);
21821
+ }
21822
+ }
21823
+ );
21824
+ server.tool(
21825
+ "okx_get_history_index_candles",
21826
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6307\u6570\u5386\u53F2K\u7EBF\uFF083\u4E2A\u6708\u4EE5\u524D\u7684\u6570\u636E\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u957F\u5468\u671F\u6307\u6570\u8D70\u52BF\u5206\u6790\u3001\u7B56\u7565\u56DE\u6D4B\n## \u5173\u952E\u8BCD\uFF1A\u6307\u6570\u5386\u53F2K\u7EBF, index history candles, \u5386\u53F2\u6307\u6570, \u56DE\u6D4B\u6570\u636E\n## \u53C2\u6570\uFF1A\n## - instId: \u6307\u6570\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B\n## - bar: K\u7EBF\u5468\u671F\u3002\u9ED8\u8BA41H\n## - after: \u6B64\u65F6\u95F4\u6233\u4E4B\u524D\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09\n## - before: \u6B64\u65F6\u95F4\u6233\u4E4B\u540E\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\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\n## \u5173\u8054\uFF1Aokx_get_index_candles \u67E5\u8FD1\u671F \u2192 \u672C\u5DE5\u5177\u67E5\u5386\u53F2 \u2192 \u957F\u5468\u671F\u5206\u6790",
21827
+ {
21828
+ instId: external_exports.string().describe("\u6307\u6570\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B"),
21829
+ bar: external_exports.enum(["1m", "3m", "5m", "15m", "30m", "1H", "4H", "1D", "1W"]).optional().describe("K\u7EBF\u5468\u671F\uFF0C\u9ED8\u8BA41H"),
21830
+ after: external_exports.string().optional().describe("\u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u524D\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09"),
21831
+ before: external_exports.string().optional().describe("\u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u540E\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09"),
21832
+ limit: external_exports.number().int().min(1).max(300).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
21833
+ },
21834
+ async ({ instId, bar, after, before, limit }) => {
21835
+ try {
21836
+ const data = await publicApi.getHistoryIndexCandles(instId, bar, after, before, limit);
21837
+ const enriched = data.map((row) => ({
21838
+ ts: row[0],
21839
+ tsIso: row[0] ? new Date(parseInt(row[0])).toISOString() : void 0,
21840
+ open: row[1],
21841
+ high: row[2],
21842
+ low: row[3],
21843
+ close: row[4],
21844
+ vol: row[5]
21845
+ }));
21846
+ return toResult(enriched);
21847
+ } catch (e) {
21848
+ return toError(e);
21849
+ }
21850
+ }
21851
+ );
21852
+ server.tool(
21853
+ "okx_get_history_mark_price_candles",
21854
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6807\u8BB0\u4EF7\u5386\u53F2K\u7EBF\uFF083\u4E2A\u6708\u4EE5\u524D\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5386\u53F2\u6807\u8BB0\u4EF7\u8D70\u52BF\u56DE\u6D4B\u3001\u5206\u6790\u5F3A\u5E73\u4EF7\u683C\u53D8\u5316\n## \u5173\u952E\u8BCD\uFF1A\u6807\u8BB0\u4EF7\u5386\u53F2K\u7EBF, mark price history candles, \u6807\u8BB0\u4EF7\u56DE\u6D4B\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B\n## - bar: K\u7EBF\u5468\u671F\u3002\u9ED8\u8BA41H\n## - after: \u6B64\u65F6\u95F4\u6233\u4E4B\u524D\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09\n## - before: \u6B64\u65F6\u95F4\u6233\u4E4B\u540E\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\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\n## \u5173\u8054\uFF1Aokx_get_mark_price_candles \u67E5\u8FD1\u671F \u2192 \u672C\u5DE5\u5177\u67E5\u5386\u53F2 \u2192 \u5BF9\u6BD4\u5206\u6790",
21855
+ {
21856
+ instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B"),
21857
+ bar: external_exports.enum(["1m", "3m", "5m", "15m", "30m", "1H", "4H", "1D", "1W"]).optional().describe("K\u7EBF\u5468\u671F\uFF0C\u9ED8\u8BA41H"),
21858
+ after: external_exports.string().optional().describe("\u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u524D\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09"),
21859
+ before: external_exports.string().optional().describe("\u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u540E\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09"),
21860
+ limit: external_exports.number().int().min(1).max(300).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
21861
+ },
21862
+ async ({ instId, bar, after, before, limit }) => {
21863
+ try {
21864
+ const data = await publicApi.getHistoryMarkPriceCandles(instId, bar, after, before, limit);
21865
+ const enriched = data.map((row) => ({
21866
+ ts: row[0],
21867
+ tsIso: row[0] ? new Date(parseInt(row[0])).toISOString() : void 0,
21868
+ open: row[1],
21869
+ high: row[2],
21870
+ low: row[3],
21871
+ close: row[4],
21872
+ vol: row[5]
21873
+ }));
21874
+ return toResult(enriched);
21875
+ } catch (e) {
21876
+ return toError(e);
21877
+ }
21878
+ }
21879
+ );
21880
+ server.tool(
21881
+ "okx_get_mark_price_candles",
21882
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6807\u8BB0\u4EF7K\u7EBF\u6570\u636E\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8BA1\u7B97\u5408\u7EA6\u8D44\u91D1\u8D39\u7387\u7528\u7684\u6807\u8BB0\u4EF7\u8D70\u52BF\u3001\u5224\u65AD\u5F3A\u5E73\u98CE\u9669\n## \u5173\u952E\u8BCD\uFF1A\u6807\u8BB0\u4EF7K\u7EBF, mark price candles, \u6807\u8BB0\u4EF7\u8D70\u52BF, \u5F3A\u5E73\u53C2\u8003\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B\n## - bar: K\u7EBF\u5468\u671F\u3002\u9ED8\u8BA41H\n## - after: \u6B64\u65F6\u95F4\u6233\u4E4B\u524D\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09\n## - before: \u6B64\u65F6\u95F4\u6233\u4E4B\u540E\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\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\n## \u5173\u8054\uFF1Aokx_get_index_candles \u770B\u6307\u6570K\u7EBF \u2192 \u672C\u5DE5\u5177\u770B\u6807\u8BB0\u4EF7 \u2192 \u5BF9\u6BD4\u57FA\u5DEE",
21883
+ {
21884
+ instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B"),
21885
+ bar: external_exports.enum(["1m", "3m", "5m", "15m", "30m", "1H", "4H", "1D", "1W"]).optional().describe("K\u7EBF\u5468\u671F\uFF0C\u9ED8\u8BA41H"),
21886
+ after: external_exports.string().optional().describe("\u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u524D\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09"),
21887
+ before: external_exports.string().optional().describe("\u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u540E\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09"),
21888
+ limit: external_exports.number().int().min(1).max(300).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
21889
+ },
21890
+ async ({ instId, bar, after, before, limit }) => {
21891
+ try {
21892
+ const data = await publicApi.getMarkPriceCandles(instId, bar, after, before, limit);
21893
+ const enriched = data.map((row) => ({
21894
+ ts: row[0],
21895
+ tsIso: row[0] ? new Date(parseInt(row[0])).toISOString() : void 0,
21896
+ open: row[1],
21897
+ high: row[2],
21898
+ low: row[3],
21899
+ close: row[4],
21900
+ vol: row[5]
21901
+ }));
21902
+ return toResult(enriched);
21903
+ } catch (e) {
21904
+ return toError(e);
21905
+ }
21906
+ }
21907
+ );
21908
+ server.tool(
21909
+ "okx_get_sprd_history_candles",
21910
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4EF7\u5DEE\u5408\u7EA6\u5386\u53F2K\u7EBF\uFF083\u4E2A\u6708\u4EE5\u524D\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u7814\u7A76\u4EF7\u5DEE\u5386\u53F2\u8D70\u52BF\u7684\u957F\u671F\u8D8B\u52BF\u3001\u8BA1\u7B97\u8DE8\u671F\u5957\u5229\u7684\u5B63\u8282\u6027\u6A21\u5F0F\n## \u5173\u952E\u8BCD\uFF1A\u4EF7\u5DEE\u5386\u53F2K\u7EBF, sprd history candles, \u4EF7\u5DEE\u56DE\u6D4B, \u8DE8\u671F\u5386\u53F2\n## \u53C2\u6570\uFF1A\n## - sprdId: \u4EF7\u5DEE\u5408\u7EA6ID\u3002\u5FC5\u586B\n## - bar: K\u7EBF\u5468\u671F\u3002\u9ED8\u8BA41H\n## - after: \u6B64\u65F6\u95F4\u6233\u4E4B\u524D\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09\n## - before: \u6B64\u65F6\u95F4\u6233\u4E4B\u540E\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\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\n## \u5173\u8054\uFF1Aokx_get_spread_candles \u67E5\u8FD1\u671F \u2192 \u672C\u5DE5\u5177\u67E5\u5386\u53F2 \u2192 \u957F\u5468\u671F\u5957\u5229\u5206\u6790",
21911
+ {
21912
+ sprdId: external_exports.string().describe("\u4EF7\u5DEE\u5408\u7EA6ID\u3002\u5FC5\u586B"),
21913
+ bar: external_exports.enum(["1m", "5m", "15m", "30m", "1H", "4H", "1D"]).optional().describe("K\u7EBF\u5468\u671F\uFF0C\u9ED8\u8BA41H"),
21914
+ after: external_exports.string().optional().describe("\u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u524D\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09"),
21915
+ before: external_exports.string().optional().describe("\u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u540E\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09"),
21916
+ limit: external_exports.number().int().min(1).max(300).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
21917
+ },
21918
+ async ({ sprdId, bar, after, before, limit }) => {
21919
+ try {
21920
+ const data = await publicApi.getSpreadHistoryCandles(sprdId, bar, after, before, limit);
21921
+ const enriched = data.map((row) => ({
21922
+ ts: row[0],
21923
+ tsIso: row[0] ? new Date(parseInt(row[0])).toISOString() : void 0,
21924
+ open: row[1],
21925
+ high: row[2],
21926
+ low: row[3],
21927
+ close: row[4],
21928
+ vol: row[5],
21929
+ volCcy: row[6]
21930
+ }));
21931
+ return toResult(enriched);
21932
+ } catch (e) {
21933
+ return toError(e);
21934
+ }
21935
+ }
21936
+ );
21772
21937
  }
21773
21938
 
21774
21939
  // src/tools/public.ts
@@ -22291,6 +22456,114 @@ function registerPublicTools(server, auth) {
22291
22456
  }
22292
22457
  }
22293
22458
  );
22459
+ server.tool(
22460
+ "okx_get_funding_rate_history",
22461
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u8D44\u91D1\u8D39\u7387\u5386\u53F2\u8BB0\u5F55\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u5386\u53F2\u8D44\u91D1\u8D39\u7387\u53D8\u5316\u8D8B\u52BF\u3001\u8BA1\u7B97\u5957\u5229\u6301\u4ED3\u6210\u672C\n## \u5173\u952E\u8BCD\uFF1A\u8D44\u91D1\u8D39\u7387\u5386\u53F2, funding rate history, \u8D39\u7387\u8D70\u52BF, \u5386\u53F2\u8D44\u91D1\u8D39\u7387\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B\n## - before: \u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u540E\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09\n## - after: \u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u524D\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09\n## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100\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_funding_rate \u770B\u5F53\u524D \u2192 \u672C\u5DE5\u5177\u770B\u5386\u53F2 \u2192 \u5224\u65AD\u5747\u503C\u56DE\u5F52\u65B9\u5411",
22462
+ {
22463
+ instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B"),
22464
+ before: external_exports.string().optional().describe("\u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u540E\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09"),
22465
+ after: external_exports.string().optional().describe("\u67E5\u8BE2\u6B64\u65F6\u95F4\u6233\u4E4B\u524D\u7684\u6570\u636E\uFF08\u6BEB\u79D2\uFF09"),
22466
+ limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
22467
+ },
22468
+ async ({ instId, before, after, limit }) => {
22469
+ try {
22470
+ const data = await publicApi.getFundingRateHistory(instId, before, after, limit);
22471
+ const enriched = data.map((item) => ({
22472
+ ...item,
22473
+ tsIso: item.fundingTime ? new Date(parseInt(item.fundingTime)).toISOString() : void 0
22474
+ }));
22475
+ return toResult(enriched);
22476
+ } catch (e) {
22477
+ return toError(e);
22478
+ }
22479
+ }
22480
+ );
22481
+ server.tool(
22482
+ "okx_get_interest_rate_loan_quota",
22483
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5404\u5E01\u79CD\u7684\u5229\u7387\u548C\u501F\u8D37\u914D\u989D\u4FE1\u606F\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5404\u5E01\u79CD\u7684\u501F\u8D37\u5229\u7387\u3001\u4E86\u89E3\u6700\u5927\u53EF\u501F\u9650\u989D\n## \u5173\u952E\u8BCD\uFF1A\u5229\u7387\u914D\u989D, interest rate quota, \u501F\u8D37\u5229\u7387, \u501F\u6B3E\u9650\u989D\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\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u5229\u7387\u914D\u989D \u2192 okx_get_interest_accrued \u770B\u5DF2\u8BA1\u5229\u606F \u2192 \u8BA1\u7B97\u501F\u8D37\u6210\u672C",
22484
+ {},
22485
+ async () => {
22486
+ try {
22487
+ const data = await publicApi.getInterestRateLoanQuota();
22488
+ return toResult(data);
22489
+ } catch (e) {
22490
+ return toError(e);
22491
+ }
22492
+ }
22493
+ );
22494
+ server.tool(
22495
+ "okx_get_premium_history",
22496
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5408\u7EA6\u6EA2\u4EF7/\u6298\u4EF7\u5386\u53F2\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u5408\u7EA6\u4E0E\u73B0\u8D27\u4EF7\u683C\u504F\u5DEE\u3001\u5224\u65AD\u5E02\u573A\u60C5\u7EEA\n## \u5173\u952E\u8BCD\uFF1A\u6EA2\u4EF7\u5386\u53F2, premium history, \u5408\u7EA6\u6EA2\u4EF7, \u57FA\u5DEE\u5386\u53F2\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B\n## - period: \u65F6\u95F4\u7C92\u5EA6\u30021D=\u65E5\u7EBF\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\uFF1A\u672C\u5DE5\u5177\u770B\u6EA2\u4EF7 \u2192 okx_get_ticker \u770B\u4EF7\u683C \u2192 \u5224\u65AD\u671F\u8D27\u60C5\u7EEA",
22497
+ {
22498
+ instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT-SWAP\u3002\u5FC5\u586B"),
22499
+ period: external_exports.string().optional().describe("\u65F6\u95F4\u7C92\u5EA6\uFF0C\u5982 1D")
22500
+ },
22501
+ async ({ instId, period }) => {
22502
+ try {
22503
+ const data = await publicApi.getPremiumHistory(instId, period);
22504
+ const enriched = data.map((item) => ({
22505
+ ...item,
22506
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
22507
+ }));
22508
+ return toResult(enriched);
22509
+ } catch (e) {
22510
+ return toError(e);
22511
+ }
22512
+ }
22513
+ );
22514
+ server.tool(
22515
+ "okx_get_delivery_exercise_history",
22516
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5408\u7EA6\u4EA4\u5272\u548C\u671F\u6743\u884C\u6743\u5386\u53F2\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5386\u53F2\u4EA4\u5272\u4EF7\u683C\u3001\u4E86\u89E3\u884C\u6743\u7ED3\u7B97\u60C5\u51B5\n## \u5173\u952E\u8BCD\uFF1A\u4EA4\u5272\u5386\u53F2, delivery history, \u884C\u6743\u5386\u53F2, \u5408\u7EA6\u4EA4\u5272, \u671F\u6743\u884C\u6743\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272, OPTION=\u671F\u6743\u3002\u5FC5\u586B\n## - uly: \u6807\u7684\u6307\u6570\u3002\u53EF\u9009\n## - instFamily: \u4EA7\u54C1\u65CF\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\uFF1A\u672C\u5DE5\u5177\u770B\u4EA4\u5272\u5386\u53F2 \u2192 okx_get_opt_summary \u770B\u671F\u6743\u6458\u8981 \u2192 \u4E86\u89E3\u884C\u6743\u7ED3\u7B97",
22517
+ {
22518
+ instType: external_exports.enum(INST_TYPE_CONTRACTS).describe("\u4EA7\u54C1\u7C7B\u578B\u3002SWAP/FUTURES/OPTION\u3002\u5FC5\u586B"),
22519
+ uly: external_exports.string().optional().describe("\u6807\u7684\u6307\u6570"),
22520
+ instFamily: external_exports.string().optional().describe("\u4EA7\u54C1\u65CF")
22521
+ },
22522
+ async ({ instType, uly, instFamily }) => {
22523
+ try {
22524
+ const data = await publicApi.getDeliveryExerciseHistory(instType, uly, instFamily);
22525
+ return toResult(data);
22526
+ } catch (e) {
22527
+ return toError(e);
22528
+ }
22529
+ }
22530
+ );
22531
+ server.tool(
22532
+ "okx_get_settlement_history",
22533
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5408\u7EA6\u7ED3\u7B97\u5386\u53F2\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5408\u7EA6\u7684\u6BCF\u65E5\u7ED3\u7B97\u4EF7\u683C\u548C\u7ED3\u7B97\u65F6\u95F4\n## \u5173\u952E\u8BCD\uFF1A\u7ED3\u7B97\u5386\u53F2, settlement history, \u5408\u7EA6\u7ED3\u7B97, \u6BCF\u65E5\u7ED3\u7B97\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SWAP/FUTURES/OPTION\u3002\u5FC5\u586B\n## - instFamily: \u4EA7\u54C1\u65CF\u3002\u53EF\u9009\n## - uly: \u6807\u7684\u6307\u6570\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\uFF1A\u672C\u5DE5\u5177\u770B\u7ED3\u7B97\u5386\u53F2 \u2192 \u4E86\u89E3\u7ED3\u7B97\u4EF7 \u2192 \u8BC4\u4F30\u6D6E\u52A8\u76C8\u4E8F",
22534
+ {
22535
+ instType: external_exports.enum(INST_TYPE_CONTRACTS).describe("\u4EA7\u54C1\u7C7B\u578B\u3002SWAP/FUTURES/OPTION\u3002\u5FC5\u586B"),
22536
+ instFamily: external_exports.string().optional().describe("\u4EA7\u54C1\u65CF"),
22537
+ uly: external_exports.string().optional().describe("\u6807\u7684\u6307\u6570")
22538
+ },
22539
+ async ({ instType, instFamily, uly }) => {
22540
+ try {
22541
+ const data = await publicApi.getSettlementHistory(instType, instFamily, uly);
22542
+ return toResult(data);
22543
+ } catch (e) {
22544
+ return toError(e);
22545
+ }
22546
+ }
22547
+ );
22548
+ server.tool(
22549
+ "okx_get_public_block_trades",
22550
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u5927\u5B97\u4EA4\u6613\u516C\u5F00\u6210\u4EA4\u8BB0\u5F55\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5927\u5B97\u5E02\u573A\u5386\u53F2\u6210\u4EA4\u3001\u5206\u6790\u5927\u5B97\u4EF7\u683C\u8D8B\u52BF\n## \u5173\u952E\u8BCD\uFF1A\u5927\u5B97\u6210\u4EA4, block trades, \u5927\u5B97\u516C\u5F00, \u5927\u5B97\u4EA4\u6613\u8BB0\u5F55\n## \u53C2\u6570\uFF1A\n## - instId: \u4EA7\u54C1ID\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1APUBLIC \u2014 \u516C\u5F00\u63A5\u53E3\uFF0C\u4E0D\u9700\u8981 API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u770B\u5927\u5B97\u6210\u4EA4 \u2192 \u5206\u6790\u5927\u5B97\u5E02\u573A \u2192 \u8BC4\u4F30\u673A\u6784\u52A8\u5411",
22551
+ {
22552
+ instId: external_exports.string().describe("\u4EA7\u54C1ID\u3002\u5FC5\u586B")
22553
+ },
22554
+ async ({ instId }) => {
22555
+ try {
22556
+ const data = await publicApi.getPublicBlockTrades(instId);
22557
+ const enriched = data.map((item) => ({
22558
+ ...item,
22559
+ tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
22560
+ }));
22561
+ return toResult(enriched);
22562
+ } catch (e) {
22563
+ return toError(e);
22564
+ }
22565
+ }
22566
+ );
22294
22567
  }
22295
22568
 
22296
22569
  // src/tools/account.ts
@@ -23168,6 +23441,51 @@ function registerTradingTools(server, auth) {
23168
23441
  }
23169
23442
  }
23170
23443
  );
23444
+ server.tool(
23445
+ "okx_get_one_click_repay_list",
23446
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u4E00\u952E\u8FD8\u6B3E\u652F\u6301\u7684\u5E01\u79CD\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u54EA\u4E9B\u5E01\u79CD\u652F\u6301\u4E00\u952E\u8FD8\u6B3E\u3001\u4E86\u89E3\u53EF\u8FD8\u6B3E\u7684\u503A\u52A1\u7C7B\u578B\n## \u5173\u952E\u8BCD\uFF1A\u4E00\u952E\u8FD8\u6B3E, one click repay, \u8FD8\u6B3E\u5E01\u79CD, \u503A\u52A1\u507F\u8FD8\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\u652F\u6301\u5E01\u79CD \u2192 okx_one_click_repay \u6267\u884C\u8FD8\u6B3E",
23447
+ {},
23448
+ async () => {
23449
+ if (!auth) return toError(AUTH_REQUIRED);
23450
+ try {
23451
+ const data = await privateApi.getOneClickRepayCurrencyList(auth);
23452
+ return toResult(data);
23453
+ } catch (e) {
23454
+ return toError(e);
23455
+ }
23456
+ }
23457
+ );
23458
+ server.tool(
23459
+ "okx_one_click_repay",
23460
+ "## \u529F\u80FD\uFF1A\u6267\u884C\u4E00\u952E\u8FD8\u6B3E\uFF08\u4F7F\u7528\u8D26\u6237\u8D44\u91D1\u81EA\u52A8\u507F\u8FD8\u501F\u5E01\u503A\u52A1\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5FEB\u901F\u507F\u8FD8\u6760\u6746\u501F\u8D37\u5229\u606F\u3001\u907F\u514D\u5229\u606F\u7D2F\u79EF\n## \u53C2\u6570\uFF1A\n## - ccy: \u8FD8\u6B3E\u4F7F\u7528\u7684\u5E01\u79CD\u3002\u5FC5\u586B\n## - repayCcy: \u8981\u507F\u8FD8\u7684\u503A\u52A1\u5E01\u79CD\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u4F7F\u7528\u8D26\u6237\u8D44\u91D1\u8FD8\u6B3E\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AFUND_TRANSFER \u2014 \u8FD8\u6B3E\u79FB\u52A8\u771F\u5B9E\u8D44\u91D1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_get_one_click_repay_list \u67E5\u652F\u6301\u5E01\u79CD \u2192 \u672C\u5DE5\u5177\u8FD8\u6B3E \u2192 okx_one_click_repay_history \u67E5\u8BB0\u5F55",
23461
+ {
23462
+ ccy: external_exports.string().describe("\u8FD8\u6B3E\u4F7F\u7528\u7684\u5E01\u79CD\u3002\u5FC5\u586B"),
23463
+ repayCcy: external_exports.string().describe("\u8981\u507F\u8FD8\u7684\u503A\u52A1\u5E01\u79CD\u3002\u5FC5\u586B")
23464
+ },
23465
+ async ({ ccy, repayCcy }) => {
23466
+ if (!auth) return toError(AUTH_REQUIRED);
23467
+ try {
23468
+ const data = await privateApi.oneClickRepay(auth, { ccy, repayCcy });
23469
+ return toResult(data);
23470
+ } catch (e) {
23471
+ return toError(e);
23472
+ }
23473
+ }
23474
+ );
23475
+ server.tool(
23476
+ "okx_get_one_click_repay_history",
23477
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u4E00\u952E\u8FD8\u6B3E\u5386\u53F2\u8BB0\u5F55\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u4EE5\u5F80\u7684\u8FD8\u6B3E\u64CD\u4F5C\u3001\u6838\u5BF9\u8FD8\u6B3E\u91D1\u989D\u548C\u5E01\u79CD\n## \u5173\u952E\u8BCD\uFF1A\u8FD8\u6B3E\u5386\u53F2, repay history, \u4E00\u952E\u8FD8\u6B3E\u8BB0\u5F55, \u503A\u52A1\u507F\u8FD8\u8BB0\u5F55\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1Aokx_one_click_repay \u8FD8\u6B3E \u2192 \u672C\u5DE5\u5177\u67E5\u8BB0\u5F55 \u2192 \u786E\u8BA4\u8FD8\u6B3E\u5B8C\u6210",
23478
+ {},
23479
+ async () => {
23480
+ if (!auth) return toError(AUTH_REQUIRED);
23481
+ try {
23482
+ const data = await privateApi.getOneClickRepayHistory(auth);
23483
+ return toResult(data);
23484
+ } catch (e) {
23485
+ return toError(e);
23486
+ }
23487
+ }
23488
+ );
23171
23489
  }
23172
23490
 
23173
23491
  // src/tools/algo.ts
@@ -23449,6 +23767,95 @@ function registerFundingTools(server, auth) {
23449
23767
  }
23450
23768
  }
23451
23769
  );
23770
+ server.tool(
23771
+ "okx_get_non_tradable_assets",
23772
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u4E0D\u53EF\u4EA4\u6613\u8D44\u4EA7\uFF08\u5982\u6CD5\u5E01\u3001\u975E\u6D41\u901A\u4EE3\u5E01\uFF09\u7684\u6301\u4ED3\u4F59\u989D\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u8D26\u6237\u4E2D\u4E0D\u80FD\u76F4\u63A5\u4EA4\u6613\u4F46\u53EF\u80FD\u5177\u6709\u4EF7\u503C\u7684\u8D44\u4EA7\n## \u5173\u952E\u8BCD\uFF1A\u4E0D\u53EF\u4EA4\u6613\u8D44\u4EA7, non tradable, \u6CD5\u5E01\u8D44\u4EA7, \u975E\u6D41\u901A\u8D44\u4EA7\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u4E0D\u53EF\u4EA4\u6613\u8D44\u4EA7 \u2192 okx_get_balance \u770B\u53EF\u4EA4\u6613\u8D44\u4EA7 \u2192 \u5168\u9762\u638C\u63E1\u6301\u4ED3",
23773
+ {},
23774
+ async () => {
23775
+ if (!auth) return toError(AUTH_REQUIRED);
23776
+ try {
23777
+ const data = await privateApi.getNonTradableAssets(auth);
23778
+ return toResult(data);
23779
+ } catch (e) {
23780
+ return toError(e);
23781
+ }
23782
+ }
23783
+ );
23784
+ server.tool(
23785
+ "okx_get_exchange_list",
23786
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6OKX\u652F\u6301\u7684\u4EA4\u6613\u6240/\u5E73\u53F0\u5217\u8868\uFF08\u63D0\u73B0\u5916\u90E8\u5730\u5740\u6821\u9A8C\u7528\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u63D0\u73B0\u65F6\u9009\u62E9\u76EE\u6807\u4EA4\u6613\u6240\u3001\u786E\u8BA4\u63D0\u73B0\u901A\u9053\u662F\u5426\u53EF\u7528\n## \u5173\u952E\u8BCD\uFF1A\u4EA4\u6613\u6240\u5217\u8868, exchange list, \u63D0\u73B0\u5E73\u53F0, \u5916\u90E8\u4EA4\u6613\u6240\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\u4E2D\u7B49 ~10KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u770B\u652F\u6301\u4EA4\u6613\u6240 \u2192 okx_withdrawal \u63D0\u73B0\u65F6\u9009\u62E9\u76EE\u6807",
23787
+ {},
23788
+ async () => {
23789
+ try {
23790
+ const data = await privateApi.getExchangeList();
23791
+ return toResult(data);
23792
+ } catch (e) {
23793
+ return toError(e);
23794
+ }
23795
+ }
23796
+ );
23797
+ server.tool(
23798
+ "okx_get_deposit_withdraw_status",
23799
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5145\u503C\u63D0\u73B0\u7684\u72B6\u6001\u4FE1\u606F\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5145\u503C\u6216\u63D0\u73B0\u662F\u5426\u5230\u8D26\u3001\u94FE\u4E0A\u786E\u8BA4\u8FDB\u5EA6\n## \u5173\u952E\u8BCD\uFF1A\u5145\u63D0\u72B6\u6001, deposit withdraw, \u5145\u503C\u72B6\u6001, \u63D0\u73B0\u72B6\u6001, \u5230\u8D26\u67E5\u8BE2\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1Aokx_get_deposit_address \u83B7\u53D6\u5730\u5740 \u2192 \u5145\u503C\u540E \u2192 \u672C\u5DE5\u5177\u67E5\u72B6\u6001",
23800
+ {},
23801
+ async () => {
23802
+ if (!auth) return toError(AUTH_REQUIRED);
23803
+ try {
23804
+ const data = await privateApi.getDepositWithdrawStatus(auth);
23805
+ return toResult(data);
23806
+ } catch (e) {
23807
+ return toError(e);
23808
+ }
23809
+ }
23810
+ );
23811
+ server.tool(
23812
+ "okx_get_asset_bills_history",
23813
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u8D44\u91D1\u8D26\u6237\u7684\u5386\u53F2\u8D26\u5355\u6D41\u6C34\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5BA1\u8BA1\u8D44\u91D1\u8D26\u6237\u7684\u8D44\u91D1\u53D8\u52A8\u3001\u6838\u5BF9\u51FA\u5165\u91D1\u8BB0\u5F55\n## \u5173\u952E\u8BCD\uFF1A\u8D44\u91D1\u8D26\u5355, asset bills, \u8D44\u91D1\u6D41\u6C34, \u8D44\u91D1\u8D26\u6237\u8D26\u5355\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 ~10KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u8D44\u91D1\u6D41\u6C34 \u2192 okx_get_balance \u6838\u5BF9\u4F59\u989D \u2192 \u5BF9\u8D26",
23814
+ {
23815
+ limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
23816
+ },
23817
+ async ({ limit }) => {
23818
+ if (!auth) return toError(AUTH_REQUIRED);
23819
+ try {
23820
+ const data = await privateApi.getAssetBillsHistory(auth, limit);
23821
+ return toResult(data);
23822
+ } catch (e) {
23823
+ return toError(e);
23824
+ }
23825
+ }
23826
+ );
23827
+ server.tool(
23828
+ "okx_get_convert_currency_pair",
23829
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u95EA\u5151\u652F\u6301\u7684\u5E01\u79CD\u5BF9\u8BE6\u60C5\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u95EA\u5151\u4EA4\u6613\u7684\u5151\u6362\u6BD4\u4F8B\u548C\u652F\u6301\u7684\u5151\u6362\u5BF9\n## \u5173\u952E\u8BCD\uFF1A\u5151\u6362\u5E01\u79CD\u5BF9, convert pair, \u95EA\u5151\u5BF9, \u5151\u6362\u8BE6\u60C5\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u5151\u6362\u5BF9 \u2192 okx_get_convert_estimate_quote \u83B7\u53D6\u9884\u4F30 \u2192 okx_convert_trade \u6267\u884C",
23830
+ {},
23831
+ async () => {
23832
+ if (!auth) return toError(AUTH_REQUIRED);
23833
+ try {
23834
+ const data = await privateApi.getConvertCurrencyPair(auth);
23835
+ return toResult(data);
23836
+ } catch (e) {
23837
+ return toError(e);
23838
+ }
23839
+ }
23840
+ );
23841
+ server.tool(
23842
+ "okx_get_convert_estimate_quote",
23843
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u95EA\u5151\u9884\u4F30\u62A5\u4EF7\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5151\u6362\u524D\u67E5\u770B\u9884\u4F30\u5151\u6362\u7387\u548C\u6570\u91CF\u3001\u6BD4\u8F83\u5404\u65B9\u6848\u4F18\u52A3\n## \u53C2\u6570\uFF1A\n## - fromCcy: \u5356\u51FA\u5E01\u79CD\u3002\u5FC5\u586B\n## - toCcy: \u4E70\u5165\u5E01\u79CD\u3002\u5FC5\u586B\n## - sz: \u5151\u6362\u6570\u91CF\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 ~1KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u83B7\u53D6\u9884\u4F30 \u2192 okx_get_convert_currency_pair \u770B\u8BE6\u60C5 \u2192 okx_convert_trade \u6267\u884C",
23844
+ {
23845
+ fromCcy: external_exports.string().describe("\u5356\u51FA\u5E01\u79CD\u3002\u5FC5\u586B"),
23846
+ toCcy: external_exports.string().describe("\u4E70\u5165\u5E01\u79CD\u3002\u5FC5\u586B"),
23847
+ sz: external_exports.string().describe("\u5151\u6362\u6570\u91CF\u3002\u5FC5\u586B")
23848
+ },
23849
+ async ({ fromCcy, toCcy, sz }) => {
23850
+ if (!auth) return toError(AUTH_REQUIRED);
23851
+ try {
23852
+ const data = await privateApi.getConvertEstimateQuote(auth, { fromCcy, toCcy, sz });
23853
+ return toResult(data);
23854
+ } catch (e) {
23855
+ return toError(e);
23856
+ }
23857
+ }
23858
+ );
23452
23859
  }
23453
23860
 
23454
23861
  // src/tools/stats.ts
@@ -24380,6 +24787,49 @@ function registerOutcomesTools(server) {
24380
24787
  }
24381
24788
  }
24382
24789
  );
24790
+ server.tool(
24791
+ "okx_get_event_series",
24792
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u9884\u6D4B\u5E02\u573A\u4E8B\u4EF6\u5408\u7EA6\u7CFB\u5217\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u6D4F\u89C8\u53EF\u4EA4\u6613\u7684\u4E8B\u4EF6\u5408\u7EA6\u7CFB\u5217\uFF08\u5982SOL\u4EF7\u683C\u533A\u95F4\u9884\u6D4B\uFF09\n## \u5173\u952E\u8BCD\uFF1A\u4E8B\u4EF6\u5408\u7EA6, event series, \u9884\u6D4B\u5E02\u573A, \u4E8B\u4EF6\u7CFB\u5217, \u4E8B\u4EF6\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\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u770B\u4E8B\u4EF6\u7CFB\u5217 \u2192 okx_get_event_markets \u67E5\u770B\u5177\u4F53\u5E02\u573A \u2192 \u9009\u62E9\u4EA4\u6613",
24793
+ {},
24794
+ async () => {
24795
+ try {
24796
+ const data = await publicApi.getEventSeries();
24797
+ return toResult(data);
24798
+ } catch (e) {
24799
+ return toError(e);
24800
+ }
24801
+ }
24802
+ );
24803
+ server.tool(
24804
+ "okx_get_event_markets",
24805
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u9884\u6D4B\u5E02\u573A\u6307\u5B9A\u7CFB\u5217\u4E0B\u7684\u6240\u6709\u5E02\u573A\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u67D0\u4E8B\u4EF6\u7CFB\u5217\u4E0B\u7684\u6240\u6709\u53EF\u4EA4\u6613\u5408\u7EA6\u54C1\u79CD\n## \u5173\u952E\u8BCD\uFF1A\u4E8B\u4EF6\u5E02\u573A, event markets, \u9884\u6D4B\u5E02\u573A, \u5408\u7EA6\u5E02\u573A\n## \u53C2\u6570\uFF1A\n## - seriesId: \u4E8B\u4EF6\u7CFB\u5217ID\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1APUBLIC \u2014 \u516C\u5F00\u63A5\u53E3\uFF0C\u4E0D\u9700\u8981 API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1Aokx_get_event_series \u67E5\u7CFB\u5217 \u2192 \u672C\u5DE5\u5177\u67E5\u770B\u5E02\u573A \u2192 \u8BC4\u4F30\u4EA4\u6613\u673A\u4F1A",
24806
+ {
24807
+ seriesId: external_exports.string().describe("\u4E8B\u4EF6\u7CFB\u5217ID\u3002\u5FC5\u586B")
24808
+ },
24809
+ async ({ seriesId }) => {
24810
+ try {
24811
+ const data = await publicApi.getEventMarkets(seriesId);
24812
+ return toResult(data);
24813
+ } catch (e) {
24814
+ return toError(e);
24815
+ }
24816
+ }
24817
+ );
24818
+ server.tool(
24819
+ "okx_get_event_events",
24820
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u9884\u6D4B\u5E02\u573A\u6307\u5B9A\u7CFB\u5217\u4E0B\u7684\u4E8B\u4EF6\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u4E8B\u4EF6\u5408\u7EA6\u7684\u5230\u671F\u65E5\u3001\u72B6\u6001\u548C\u6709\u5173\u4FE1\u606F\n## \u5173\u952E\u8BCD\uFF1A\u4E8B\u4EF6\u5217\u8868, event events, \u9884\u6D4B\u4E8B\u4EF6, \u4E8B\u4EF6\u72B6\u6001\n## \u53C2\u6570\uFF1A\n## - seriesId: \u4E8B\u4EF6\u7CFB\u5217ID\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1APUBLIC \u2014 \u516C\u5F00\u63A5\u53E3\uFF0C\u4E0D\u9700\u8981 API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1Aokx_get_event_series \u67E5\u7CFB\u5217 \u2192 \u672C\u5DE5\u5177\u67E5\u770B\u4E8B\u4EF6 \u2192 \u9009\u62E9\u5230\u671F\u65E5",
24821
+ {
24822
+ seriesId: external_exports.string().describe("\u4E8B\u4EF6\u7CFB\u5217ID\u3002\u5FC5\u586B")
24823
+ },
24824
+ async ({ seriesId }) => {
24825
+ try {
24826
+ const data = await publicApi.getEventEvents(seriesId);
24827
+ return toResult(data);
24828
+ } catch (e) {
24829
+ return toError(e);
24830
+ }
24831
+ }
24832
+ );
24383
24833
  }
24384
24834
 
24385
24835
  // src/tools/bot.ts
@@ -25512,6 +25962,66 @@ function registerAffiliateTools(server, auth) {
25512
25962
  );
25513
25963
  }
25514
25964
 
25965
+ // src/tools/fiat.ts
25966
+ function registerFiatTools(server, auth) {
25967
+ server.tool(
25968
+ "okx_get_fiat_buy_sell_pair",
25969
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6CD5\u5E01\u4E70\u5356\u652F\u6301\u7684\u5E01\u79CD\u5BF9\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u652F\u6301\u7684\u6CD5\u5E01\u4EA4\u6613\u5BF9\u3001\u4E86\u89E3\u53EF\u76F4\u63A5\u7528\u6CD5\u5E01\u4E70\u5356\u7684\u5E01\u79CD\n## \u5173\u952E\u8BCD\uFF1A\u6CD5\u5E01\u4EA4\u6613\u5BF9, fiat pair, \u6CD5\u5E01\u4E70\u5356, \u6CD5\u5E01\u5E01\u79CD\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u652F\u6301\u5BF9 \u2192 okx_get_fiat_deposit \u67E5\u770B\u5165\u91D1\u65B9\u5F0F",
25970
+ {},
25971
+ async () => {
25972
+ if (!auth) return toError(AUTH_REQUIRED);
25973
+ try {
25974
+ const data = await privateApi.getFiatBuySellPair(auth);
25975
+ return toResult(data);
25976
+ } catch (e) {
25977
+ return toError(e);
25978
+ }
25979
+ }
25980
+ );
25981
+ server.tool(
25982
+ "okx_get_fiat_deposit",
25983
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6CD5\u5E01\u5165\u91D1\u4FE1\u606F\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u6CD5\u5E01\u5145\u503C\u6E20\u9053\u3001\u5165\u91D1\u72B6\u6001\n## \u5173\u952E\u8BCD\uFF1A\u6CD5\u5E01\u5165\u91D1, fiat deposit, \u6CD5\u5E01\u5145\u503C, \u6CD5\u5E01\u5165\u91D1\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\u5165\u91D1 \u2192 okx_get_fiat_deposit_methods \u770B\u652F\u4ED8\u65B9\u5F0F",
25984
+ {},
25985
+ async () => {
25986
+ if (!auth) return toError(AUTH_REQUIRED);
25987
+ try {
25988
+ const data = await privateApi.getFiatDeposit(auth);
25989
+ return toResult(data);
25990
+ } catch (e) {
25991
+ return toError(e);
25992
+ }
25993
+ }
25994
+ );
25995
+ server.tool(
25996
+ "okx_get_fiat_deposit_orders",
25997
+ "## \u529F\u80FD\uFF1A\u67E5\u8BE2\u6CD5\u5E01\u5165\u91D1\u8BA2\u5355\u5386\u53F2\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8FFD\u8E2A\u6CD5\u5E01\u5145\u503C\u8BB0\u5F55\u3001\u6838\u5BF9\u5165\u91D1\u72B6\u6001\u548C\u91D1\u989D\n## \u5173\u952E\u8BCD\uFF1A\u6CD5\u5E01\u5165\u91D1\u8BA2\u5355, fiat deposit orders, \u5145\u503C\u8BB0\u5F55, \u5165\u91D1\u5386\u53F2\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u5165\u91D1\u5386\u53F2 \u2192 \u5230\u8D26\u786E\u8BA4 \u2192 \u4EA4\u6613\u51C6\u5907",
25998
+ {},
25999
+ async () => {
26000
+ if (!auth) return toError(AUTH_REQUIRED);
26001
+ try {
26002
+ const data = await privateApi.getFiatDepositOrderHistory(auth);
26003
+ return toResult(data);
26004
+ } catch (e) {
26005
+ return toError(e);
26006
+ }
26007
+ }
26008
+ );
26009
+ server.tool(
26010
+ "okx_get_fiat_deposit_methods",
26011
+ "## \u529F\u80FD\uFF1A\u83B7\u53D6\u6CD5\u5E01\u5165\u91D1\u652F\u6301\u7684\u652F\u4ED8\u65B9\u5F0F\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u53EF\u7528\u7684\u6CD5\u5E01\u5165\u91D1\u652F\u4ED8\u65B9\u5F0F\uFF08\u94F6\u884C\u8F6C\u8D26/\u7B2C\u4E09\u65B9\u652F\u4ED8\u7B49\uFF09\n## \u5173\u952E\u8BCD\uFF1A\u6CD5\u5E01\u652F\u4ED8\u65B9\u5F0F, fiat methods, \u5165\u91D1\u65B9\u5F0F, \u652F\u4ED8\u6E20\u9053\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u770B\u652F\u4ED8\u65B9\u5F0F \u2192 \u9009\u62E9\u5408\u9002\u65B9\u5F0F\u5165\u91D1",
26012
+ {},
26013
+ async () => {
26014
+ if (!auth) return toError(AUTH_REQUIRED);
26015
+ try {
26016
+ const data = await privateApi.getFiatDepositPaymentMethods(auth);
26017
+ return toResult(data);
26018
+ } catch (e) {
26019
+ return toError(e);
26020
+ }
26021
+ }
26022
+ );
26023
+ }
26024
+
25515
26025
  // src/index.ts
25516
26026
  async function main() {
25517
26027
  const server = new McpServer({ name: "hvip", version: "0.2.1" });
@@ -25531,6 +26041,7 @@ async function main() {
25531
26041
  registerSubAccountTools(server, auth);
25532
26042
  registerFinanceTools(server, auth);
25533
26043
  registerAffiliateTools(server, auth);
26044
+ registerFiatTools(server, auth);
25534
26045
  registerRfqTools(server, auth);
25535
26046
  const transport = new StdioServerTransport();
25536
26047
  await server.connect(transport);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hvip-mcp-server",
3
- "version": "0.2.26",
3
+ "version": "0.2.27",
4
4
  "description": "OKX ecosystem MCP server - full API coverage for AI agents",
5
5
  "homepage": "https://hvip.one",
6
6
  "license": "MIT",