hvip-mcp-server 0.2.30 → 0.2.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +282 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -21456,7 +21456,27 @@ var privateApi = {
|
|
|
21456
21456
|
getStakingActiveOrders: (auth) => request("GET", "/api/v5/finance/staking-defi/orders-active", { auth }),
|
|
21457
21457
|
cancelRedeemEthStaking: (auth, body) => request("POST", "/api/v5/finance/staking-defi/eth/cancel-redeem", { body, auth }),
|
|
21458
21458
|
purchaseSolStaking: (auth, body) => request("POST", "/api/v5/finance/staking-defi/sol/purchase", { body, auth }),
|
|
21459
|
-
redeemSolStaking: (auth, body) => request("POST", "/api/v5/finance/staking-defi/sol/redeem", { body, auth })
|
|
21459
|
+
redeemSolStaking: (auth, body) => request("POST", "/api/v5/finance/staking-defi/sol/redeem", { body, auth }),
|
|
21460
|
+
// ── 最终批 ────────────────────────────────────────────────────────────
|
|
21461
|
+
getRiskState: (auth) => request("GET", "/api/v5/account/risk-state", { auth }),
|
|
21462
|
+
borrowRepay: (auth, body) => request("POST", "/api/v5/account/borrow-repay", { body, auth }),
|
|
21463
|
+
getBorrowRepayHistory: (auth) => request("GET", "/api/v5/account/borrow-repay-history", { auth }),
|
|
21464
|
+
getFlexibleLoanCollateralAssets: (auth) => request("GET", "/api/v5/finance/flexible-loan/collateral-assets", { auth }),
|
|
21465
|
+
getFlexibleLoanInfo: (auth) => request("GET", "/api/v5/finance/flexible-loan/loan-info", { auth }),
|
|
21466
|
+
getFlexibleLoanHistory: (auth) => request("GET", "/api/v5/finance/flexible-loan/loan-history", { auth }),
|
|
21467
|
+
getStableRewardsProductInfo: (auth) => request("GET", "/api/v5/finance/stable-rewards/product-info", { auth }),
|
|
21468
|
+
getStableRewardsQuote: (auth, body) => request("POST", "/api/v5/finance/stable-rewards/quote", { body, auth }),
|
|
21469
|
+
getEasyConvertCurrencyList: (auth) => request("GET", "/api/v5/trade/easy-convert-currency-list", { auth }),
|
|
21470
|
+
// ── v0.2.31 最后批 ────────────────────────────────────────────────────
|
|
21471
|
+
getLendingRateHistoryDetail: () => request("GET", "/api/v5/finance/savings/lending-rate-history"),
|
|
21472
|
+
setLendingRate: (auth, body) => request("POST", "/api/v5/finance/savings/set-lending-rate", { body, auth }),
|
|
21473
|
+
getStableRewardsApyHistory: (auth) => request("GET", "/api/v5/finance/stable-rewards/apy-history", { auth }),
|
|
21474
|
+
getStableRewardsHistory: (auth) => request("GET", "/api/v5/finance/stable-rewards/subscribe-redeem-history", { auth }),
|
|
21475
|
+
getSfpOrderHistory: (auth) => request("GET", "/api/v5/finance/sfp/dcd/order-history", { auth }),
|
|
21476
|
+
getAccountBillsArchive: (auth) => request("GET", "/api/v5/account/bills-archive", { auth }),
|
|
21477
|
+
setAutoLoan: (auth, body) => request("POST", "/api/v5/account/set-auto-loan", { body, auth }),
|
|
21478
|
+
setTradingConfig: (auth, body) => request("POST", "/api/v5/account/set-trading-config", { body, auth }),
|
|
21479
|
+
movePositions: (auth, body) => request("POST", "/api/v5/account/move-positions", { body, auth })
|
|
21460
21480
|
};
|
|
21461
21481
|
|
|
21462
21482
|
// src/adapters/hrails.ts
|
|
@@ -23223,6 +23243,121 @@ function registerAccountTools(server, auth) {
|
|
|
23223
23243
|
}
|
|
23224
23244
|
}
|
|
23225
23245
|
);
|
|
23246
|
+
server.tool(
|
|
23247
|
+
"okx_get_risk_state",
|
|
23248
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u8D26\u6237\u98CE\u63A7\u72B6\u6001\n## \u573A\u666F\uFF1A\u7528\u4E8E\u4E86\u89E3\u8D26\u6237\u662F\u5426\u5B58\u5728\u98CE\u9669\u8B66\u544A\n## \u5173\u952E\u8BCD\uFF1A\u98CE\u63A7\u72B6\u6001, risk state, \u8D26\u6237\u98CE\u9669, \u5F3A\u5E73\u98CE\u9669\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\u98CE\u9669 \u2192 \u5F3A\u5E73\u9884\u8B66 \u2192 \u8C03\u6574\u4FDD\u8BC1\u91D1",
|
|
23249
|
+
{},
|
|
23250
|
+
async () => {
|
|
23251
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23252
|
+
try {
|
|
23253
|
+
const data = await privateApi.getRiskState(auth);
|
|
23254
|
+
return toResult(data);
|
|
23255
|
+
} catch (e) {
|
|
23256
|
+
return toError(e);
|
|
23257
|
+
}
|
|
23258
|
+
}
|
|
23259
|
+
);
|
|
23260
|
+
server.tool(
|
|
23261
|
+
"okx_borrow_repay",
|
|
23262
|
+
"## \u529F\u80FD\uFF1A\u501F\u5E01\u6216\u8FD8\u6B3E\n## \u573A\u666F\uFF1A\u7528\u4E8E\u589E\u52A0\u501F\u6B3E\u6216\u507F\u8FD8\u503A\u52A1\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\u3002\u5FC5\u586B\n## - side: \u65B9\u5411\u3002borrow=\u501F\u5E01, repay=\u8FD8\u6B3E\u3002\u5FC5\u586B\n## - amt: \u6570\u91CF\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u64CD\u4F5C\u501F\u8D37\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AFUND_TRANSFER \u2014 \u501F\u5165/\u507F\u8FD8\u8D44\u91D1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u64CD\u4F5C \u2192 okx_get_borrow_repay_history \u770B\u8BB0\u5F55",
|
|
23263
|
+
{
|
|
23264
|
+
ccy: external_exports.string().describe("\u5E01\u79CD\u3002\u5FC5\u586B"),
|
|
23265
|
+
side: external_exports.enum(["borrow", "repay"]).describe("\u65B9\u5411\u3002borrow=\u501F\u5E01, repay=\u8FD8\u6B3E"),
|
|
23266
|
+
amt: external_exports.string().describe("\u6570\u91CF\u3002\u5FC5\u586B")
|
|
23267
|
+
},
|
|
23268
|
+
async ({ ccy, side, amt }) => {
|
|
23269
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23270
|
+
try {
|
|
23271
|
+
const data = await privateApi.borrowRepay(auth, { ccy, side, amt });
|
|
23272
|
+
return toResult(data);
|
|
23273
|
+
} catch (e) {
|
|
23274
|
+
return toError(e);
|
|
23275
|
+
}
|
|
23276
|
+
}
|
|
23277
|
+
);
|
|
23278
|
+
server.tool(
|
|
23279
|
+
"okx_get_borrow_repay_history",
|
|
23280
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u501F\u5E01\u8FD8\u6B3E\u5386\u53F2\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8FFD\u8E2A\u501F\u8D37\u64CD\u4F5C\u8BB0\u5F55\n## \u5173\u952E\u8BCD\uFF1A\u501F\u8D37\u5386\u53F2, borrow repay history, \u501F\u6B3E\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_borrow_repay \u64CD\u4F5C \u2192 \u672C\u5DE5\u5177\u67E5\u8BB0\u5F55",
|
|
23281
|
+
{},
|
|
23282
|
+
async () => {
|
|
23283
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23284
|
+
try {
|
|
23285
|
+
const data = await privateApi.getBorrowRepayHistory(auth);
|
|
23286
|
+
const enriched = data.map((item) => ({
|
|
23287
|
+
...item,
|
|
23288
|
+
tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
|
|
23289
|
+
}));
|
|
23290
|
+
return toResult(enriched);
|
|
23291
|
+
} catch (e) {
|
|
23292
|
+
return toError(e);
|
|
23293
|
+
}
|
|
23294
|
+
}
|
|
23295
|
+
);
|
|
23296
|
+
server.tool(
|
|
23297
|
+
"okx_get_account_bills_archive",
|
|
23298
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5F52\u6863\u8D26\u5355\u6D41\u6C34\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B3\u4E2A\u6708\u524D\u7684\u5386\u53F2\u8D26\u5355\n## \u5173\u952E\u8BCD\uFF1A\u5F52\u6863\u8D26\u5355, bills archive, \u5386\u53F2\u8D26\u5355\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\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~10KB",
|
|
23299
|
+
{},
|
|
23300
|
+
async () => {
|
|
23301
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23302
|
+
try {
|
|
23303
|
+
const data = await privateApi.getAccountBillsArchive(auth);
|
|
23304
|
+
return toResult(data);
|
|
23305
|
+
} catch (e) {
|
|
23306
|
+
return toError(e);
|
|
23307
|
+
}
|
|
23308
|
+
}
|
|
23309
|
+
);
|
|
23310
|
+
server.tool(
|
|
23311
|
+
"okx_set_auto_loan",
|
|
23312
|
+
"## \u529F\u80FD\uFF1A\u8BBE\u7F6E\u81EA\u52A8\u501F\u8D37\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5F00\u542F\u6216\u5173\u95ED\u6760\u6746\u4EA4\u6613\u7684\u81EA\u52A8\u501F\u5E01\u529F\u80FD\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\u3002\u5FC5\u586B\n## - side: \u65B9\u5411\u3002on=\u5F00\u542F, off=\u5173\u95ED\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u4FEE\u6539\u81EA\u52A8\u501F\u8D37\u8BBE\u7F6E\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u5F71\u54CD\u6760\u6746\u4EA4\u6613\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B",
|
|
23313
|
+
{
|
|
23314
|
+
ccy: external_exports.string().describe("\u5E01\u79CD\u3002\u5FC5\u586B"),
|
|
23315
|
+
side: external_exports.enum(["on", "off"]).describe("\u65B9\u5411\u3002on=\u5F00\u542F, off=\u5173\u95ED")
|
|
23316
|
+
},
|
|
23317
|
+
async ({ ccy, side }) => {
|
|
23318
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23319
|
+
try {
|
|
23320
|
+
const data = await privateApi.setAutoLoan(auth, { ccy, autoLoan: side === "on" });
|
|
23321
|
+
return toResult(data);
|
|
23322
|
+
} catch (e) {
|
|
23323
|
+
return toError(e);
|
|
23324
|
+
}
|
|
23325
|
+
}
|
|
23326
|
+
);
|
|
23327
|
+
server.tool(
|
|
23328
|
+
"okx_set_trading_config",
|
|
23329
|
+
"## \u529F\u80FD\uFF1A\u8BBE\u7F6E\u4EA4\u6613\u914D\u7F6E\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8C03\u6574\u8D26\u6237\u7684\u4EA4\u6613\u53C2\u6570\u8BBE\u7F6E\n## \u53C2\u6570\uFF1A\n## - jsonString: \u914D\u7F6E\u53C2\u6570JSON\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u4FEE\u6539\u4EA4\u6613\u914D\u7F6E\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u5F71\u54CD\u4EA4\u6613\u884C\u4E3A\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B",
|
|
23330
|
+
{
|
|
23331
|
+
jsonString: external_exports.string().describe("\u914D\u7F6E\u53C2\u6570JSON\u5B57\u7B26\u4E32\u3002\u5FC5\u586B")
|
|
23332
|
+
},
|
|
23333
|
+
async ({ jsonString }) => {
|
|
23334
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23335
|
+
try {
|
|
23336
|
+
const parsed = JSON.parse(jsonString);
|
|
23337
|
+
const data = await privateApi.setTradingConfig(auth, parsed);
|
|
23338
|
+
return toResult(data);
|
|
23339
|
+
} catch (e) {
|
|
23340
|
+
return toError(e);
|
|
23341
|
+
}
|
|
23342
|
+
}
|
|
23343
|
+
);
|
|
23344
|
+
server.tool(
|
|
23345
|
+
"okx_move_positions",
|
|
23346
|
+
"## \u529F\u80FD\uFF1A\u8FC1\u79FB\u6301\u4ED3\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5C06\u6301\u4ED3\u5728\u4E0D\u540C\u8D26\u6237\u95F4\u8FC1\u79FB\n## \u53C2\u6570\uFF1A\n## - body: \u8FC1\u79FB\u53C2\u6570JSON\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u8FC1\u79FB\u6301\u4ED3\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u5F71\u54CD\u6301\u4ED3\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~2KB",
|
|
23347
|
+
{
|
|
23348
|
+
body: external_exports.string().describe("\u8FC1\u79FB\u53C2\u6570JSON\u5B57\u7B26\u4E32\u3002\u5FC5\u586B")
|
|
23349
|
+
},
|
|
23350
|
+
async ({ body }) => {
|
|
23351
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23352
|
+
try {
|
|
23353
|
+
const parsed = JSON.parse(body);
|
|
23354
|
+
const data = await privateApi.movePositions(auth, parsed);
|
|
23355
|
+
return toResult(data);
|
|
23356
|
+
} catch (e) {
|
|
23357
|
+
return toError(e);
|
|
23358
|
+
}
|
|
23359
|
+
}
|
|
23360
|
+
);
|
|
23226
23361
|
}
|
|
23227
23362
|
|
|
23228
23363
|
// src/tools/trading.ts
|
|
@@ -23740,6 +23875,20 @@ function registerTradingTools(server, auth) {
|
|
|
23740
23875
|
}
|
|
23741
23876
|
}
|
|
23742
23877
|
);
|
|
23878
|
+
server.tool(
|
|
23879
|
+
"okx_get_easy_convert_currency_list",
|
|
23880
|
+
"## \u529F\u80FD\uFF1A\u83B7\u53D6\u95EA\u5151\u652F\u6301\u7684\u5E01\u79CD\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u54EA\u4E9B\u5E01\u79CD\u652F\u6301\u95EA\u5151\n## \u5173\u952E\u8BCD\uFF1A\u95EA\u5151\u5217\u8868, easy convert list, \u95EA\u5151\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\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB",
|
|
23881
|
+
{},
|
|
23882
|
+
async () => {
|
|
23883
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23884
|
+
try {
|
|
23885
|
+
const data = await privateApi.getEasyConvertCurrencyList(auth);
|
|
23886
|
+
return toResult(data);
|
|
23887
|
+
} catch (e) {
|
|
23888
|
+
return toError(e);
|
|
23889
|
+
}
|
|
23890
|
+
}
|
|
23891
|
+
);
|
|
23743
23892
|
}
|
|
23744
23893
|
|
|
23745
23894
|
// src/tools/algo.ts
|
|
@@ -25149,6 +25298,138 @@ function registerFinanceTools(server, auth) {
|
|
|
25149
25298
|
}
|
|
25150
25299
|
}
|
|
25151
25300
|
);
|
|
25301
|
+
server.tool(
|
|
25302
|
+
"okx_get_flexible_loan_collateral",
|
|
25303
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u7075\u6D3B\u501F\u8D37\u652F\u6301\u7684\u62B5\u62BC\u8D44\u4EA7\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u53EF\u62B5\u62BC\u7684\u5E01\u79CD\u548C\u62B5\u62BC\u7387\n## \u5173\u952E\u8BCD\uFF1A\u62B5\u62BC\u8D44\u4EA7, collateral assets, \u7075\u6D3B\u501F\u8D37\u62B5\u62BC\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\u62B5\u62BC\u8D44\u4EA7 \u2192 \u8C03\u6574\u62B5\u62BC \u2192 \u7BA1\u7406\u501F\u8D37",
|
|
25304
|
+
{},
|
|
25305
|
+
async () => {
|
|
25306
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25307
|
+
try {
|
|
25308
|
+
const data = await privateApi.getFlexibleLoanCollateralAssets(auth);
|
|
25309
|
+
return toResult(data);
|
|
25310
|
+
} catch (e) {
|
|
25311
|
+
return toError(e);
|
|
25312
|
+
}
|
|
25313
|
+
}
|
|
25314
|
+
);
|
|
25315
|
+
server.tool(
|
|
25316
|
+
"okx_get_flexible_loan_info",
|
|
25317
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u7075\u6D3B\u501F\u8D37\u4FE1\u606F\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5F53\u524D\u501F\u8D37\u8BE6\u60C5\n## \u5173\u952E\u8BCD\uFF1A\u7075\u6D3B\u501F\u8D37, loan info, \u501F\u8D37\u4FE1\u606F\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\u501F\u8D37 \u2192 \u7BA1\u7406\u98CE\u9669",
|
|
25318
|
+
{},
|
|
25319
|
+
async () => {
|
|
25320
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25321
|
+
try {
|
|
25322
|
+
const data = await privateApi.getFlexibleLoanInfo(auth);
|
|
25323
|
+
return toResult(data);
|
|
25324
|
+
} catch (e) {
|
|
25325
|
+
return toError(e);
|
|
25326
|
+
}
|
|
25327
|
+
}
|
|
25328
|
+
);
|
|
25329
|
+
server.tool(
|
|
25330
|
+
"okx_get_flexible_loan_history",
|
|
25331
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u7075\u6D3B\u501F\u8D37\u5386\u53F2\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8FFD\u8E2A\u501F\u8D37\u64CD\u4F5C\u8BB0\u5F55\n## \u5173\u952E\u8BCD\uFF1A\u501F\u8D37\u5386\u53F2, loan history, \u7075\u6D3B\u501F\u8D37\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\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB",
|
|
25332
|
+
{},
|
|
25333
|
+
async () => {
|
|
25334
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25335
|
+
try {
|
|
25336
|
+
const data = await privateApi.getFlexibleLoanHistory(auth);
|
|
25337
|
+
return toResult(data);
|
|
25338
|
+
} catch (e) {
|
|
25339
|
+
return toError(e);
|
|
25340
|
+
}
|
|
25341
|
+
}
|
|
25342
|
+
);
|
|
25343
|
+
server.tool(
|
|
25344
|
+
"okx_get_stable_rewards_product",
|
|
25345
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u7A33\u5B9A\u5E01\u5956\u52B1\u4EA7\u54C1\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u7A33\u5B9A\u5E01\u7406\u8D22\u4EA7\u54C1\u7684\u6536\u76CA\u7387\n## \u5173\u952E\u8BCD\uFF1A\u7A33\u5B9A\u5E01\u5956\u52B1, stable rewards, \u7A33\u5B9A\u5E01\u7406\u8D22\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\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB",
|
|
25346
|
+
{},
|
|
25347
|
+
async () => {
|
|
25348
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25349
|
+
try {
|
|
25350
|
+
const data = await privateApi.getStableRewardsProductInfo(auth);
|
|
25351
|
+
return toResult(data);
|
|
25352
|
+
} catch (e) {
|
|
25353
|
+
return toError(e);
|
|
25354
|
+
}
|
|
25355
|
+
}
|
|
25356
|
+
);
|
|
25357
|
+
server.tool(
|
|
25358
|
+
"okx_get_lending_rate_history",
|
|
25359
|
+
"## \u529F\u80FD\uFF1A\u83B7\u53D6\u6D3B\u671F\u501F\u5E01\u5229\u7387\u5386\u53F2\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5206\u6790\u501F\u5E01\u5229\u7387\u8D70\u52BF\n## \u5173\u952E\u8BCD\uFF1A\u5229\u7387\u5386\u53F2, lending rate history, \u501F\u5E01\u5229\u7387\u8D70\u52BF\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\u770B\u5229\u7387\u5386\u53F2 \u2192 okx_get_savings_balance \u770B\u4F59\u989D",
|
|
25360
|
+
{},
|
|
25361
|
+
async () => {
|
|
25362
|
+
try {
|
|
25363
|
+
const data = await privateApi.getLendingRateHistoryDetail();
|
|
25364
|
+
const enriched = data.map((item) => ({
|
|
25365
|
+
...item,
|
|
25366
|
+
tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
|
|
25367
|
+
}));
|
|
25368
|
+
return toResult(enriched);
|
|
25369
|
+
} catch (e) {
|
|
25370
|
+
return toError(e);
|
|
25371
|
+
}
|
|
25372
|
+
}
|
|
25373
|
+
);
|
|
25374
|
+
server.tool(
|
|
25375
|
+
"okx_set_lending_rate",
|
|
25376
|
+
"## \u529F\u80FD\uFF1A\u8BBE\u7F6E\u6D3B\u671F\u8D5A\u5E01\u51FA\u501F\u5229\u7387\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8C03\u6574\u6D3B\u671F\u8D5A\u5E01\u7684\u671F\u671B\u51FA\u501F\u5229\u7387\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\u3002\u5FC5\u586B\n## - rate: \u51FA\u501F\u5229\u7387\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u4FEE\u6539\u5229\u7387\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u4FEE\u6539\u5229\u7387\u5F71\u54CD\u6536\u76CA\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u8BBE\u5229\u7387 \u2192 okx_get_savings_balance \u786E\u8BA4\u751F\u6548",
|
|
25377
|
+
{
|
|
25378
|
+
ccy: external_exports.string().describe("\u5E01\u79CD\u3002\u5FC5\u586B"),
|
|
25379
|
+
rate: external_exports.string().describe("\u51FA\u501F\u5229\u7387\u3002\u5FC5\u586B")
|
|
25380
|
+
},
|
|
25381
|
+
async ({ ccy, rate }) => {
|
|
25382
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25383
|
+
try {
|
|
25384
|
+
const data = await privateApi.setLendingRate(auth, { ccy, rate });
|
|
25385
|
+
return toResult(data);
|
|
25386
|
+
} catch (e) {
|
|
25387
|
+
return toError(e);
|
|
25388
|
+
}
|
|
25389
|
+
}
|
|
25390
|
+
);
|
|
25391
|
+
server.tool(
|
|
25392
|
+
"okx_get_stable_rewards_apy",
|
|
25393
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u7A33\u5B9A\u5E01\u5956\u52B1APY\u5386\u53F2\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u7A33\u5B9A\u5E01\u7406\u8D22\u7684\u5E74\u5316\u6536\u76CA\u7387\u5386\u53F2\n## \u5173\u952E\u8BCD\uFF1A\u7A33\u5B9A\u5E01APY, stable apy, \u5E74\u5316\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\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB",
|
|
25394
|
+
{},
|
|
25395
|
+
async () => {
|
|
25396
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25397
|
+
try {
|
|
25398
|
+
const data = await privateApi.getStableRewardsApyHistory(auth);
|
|
25399
|
+
return toResult(data);
|
|
25400
|
+
} catch (e) {
|
|
25401
|
+
return toError(e);
|
|
25402
|
+
}
|
|
25403
|
+
}
|
|
25404
|
+
);
|
|
25405
|
+
server.tool(
|
|
25406
|
+
"okx_get_stable_rewards_history",
|
|
25407
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u7A33\u5B9A\u5E01\u5956\u52B1\u7533\u8D2D\u8D4E\u56DE\u5386\u53F2\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u7A33\u5B9A\u5E01\u7406\u8D22\u7684\u64CD\u4F5C\u8BB0\u5F55\n## \u5173\u952E\u8BCD\uFF1A\u7A33\u5B9A\u5E01\u8BB0\u5F55, stable history, \u7533\u8D2D\u8D4E\u56DE\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\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB",
|
|
25408
|
+
{},
|
|
25409
|
+
async () => {
|
|
25410
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25411
|
+
try {
|
|
25412
|
+
const data = await privateApi.getStableRewardsHistory(auth);
|
|
25413
|
+
return toResult(data);
|
|
25414
|
+
} catch (e) {
|
|
25415
|
+
return toError(e);
|
|
25416
|
+
}
|
|
25417
|
+
}
|
|
25418
|
+
);
|
|
25419
|
+
server.tool(
|
|
25420
|
+
"okx_get_sfp_order_history",
|
|
25421
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u9CA8\u9C7C\u9CCD\u4EA7\u54C1\u8BA2\u5355\u5386\u53F2\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u9CA8\u9C7C\u9CCD\u4EA7\u54C1\u7684\u7533\u8D2D\u8D4E\u56DE\u8BB0\u5F55\n## \u5173\u952E\u8BCD\uFF1A\u9CA8\u9C7C\u9CCD\u5386\u53F2, sfp history, \u7ED3\u6784\u4EA7\u54C1\u8BA2\u5355\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\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB",
|
|
25422
|
+
{},
|
|
25423
|
+
async () => {
|
|
25424
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25425
|
+
try {
|
|
25426
|
+
const data = await privateApi.getSfpOrderHistory(auth);
|
|
25427
|
+
return toResult(data);
|
|
25428
|
+
} catch (e) {
|
|
25429
|
+
return toError(e);
|
|
25430
|
+
}
|
|
25431
|
+
}
|
|
25432
|
+
);
|
|
25152
25433
|
}
|
|
25153
25434
|
|
|
25154
25435
|
// src/tools/outcomes.ts
|