hvip-mcp-server 0.2.29 → 0.2.31
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 +535 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -21428,7 +21428,46 @@ var privateApi = {
|
|
|
21428
21428
|
getUnrealizedProfitSharing: (auth) => request("GET", "/api/v5/copytrading/unrealized-profit-sharing-details", { auth }),
|
|
21429
21429
|
getTotalUnrealizedProfitSharing: (auth) => request("GET", "/api/v5/copytrading/total-unrealized-profit-sharing", { auth }),
|
|
21430
21430
|
amendProfitSharingRatio: (auth, body) => request("POST", "/api/v5/copytrading/amend-profit-sharing-ratio", { body, auth }),
|
|
21431
|
-
amendCopySettings: (auth, body) => request("POST", "/api/v5/copytrading/amend-copy-settings", { body, auth })
|
|
21431
|
+
amendCopySettings: (auth, body) => request("POST", "/api/v5/copytrading/amend-copy-settings", { body, auth }),
|
|
21432
|
+
// ── 第一批快收尾 ──────────────────────────────────────────────────────
|
|
21433
|
+
resetRfqMmp: (auth) => request("POST", "/api/v5/rfq/mmp-reset", { auth }),
|
|
21434
|
+
stopCopyTrading: (auth, body) => request("POST", "/api/v5/copytrading/stop-copy-trading", { body, auth }),
|
|
21435
|
+
getPublicPreferenceCurrency: (uniqueCode) => request("GET", "/api/v5/copytrading/public-preference-currency", { params: { uniqueCode } }),
|
|
21436
|
+
getPublicLeadPositions: (uniqueCode, instType) => request("GET", "/api/v5/copytrading/public-current-subpositions", { params: { uniqueCode, instType } }),
|
|
21437
|
+
// ── 第二批 account ────────────────────────────────────────────────────
|
|
21438
|
+
getAccountPositionRisk: (auth) => request("GET", "/api/v5/account/account-position-risk", { auth }),
|
|
21439
|
+
getInterestLimits: (auth) => request("GET", "/api/v5/account/interest-limits", { auth }),
|
|
21440
|
+
getTradeFee: (auth, instType, instId, uly) => request("GET", "/api/v5/account/trade-fee", { params: { instType, instId, uly }, auth }),
|
|
21441
|
+
getAccountSubtypes: (auth) => request("GET", "/api/v5/account/subtypes", { auth }),
|
|
21442
|
+
getSubAccountTradingBalance: (auth, subAcct) => request("GET", "/api/v5/account/subaccount/balances", { params: { subAcct }, auth }),
|
|
21443
|
+
presetAccountSwitch: (auth, body) => request("POST", "/api/v5/account/account-level-switch-preset", { body, auth }),
|
|
21444
|
+
activateOption: (auth, body) => request("POST", "/api/v5/account/activate-option", { body, auth }),
|
|
21445
|
+
positionBuilder: (auth, body) => request("POST", "/api/v5/account/position-builder", { body, auth }),
|
|
21446
|
+
setAutoEarn: (auth, body) => request("POST", "/api/v5/account/set-auto-earn", { body, auth }),
|
|
21447
|
+
setFeeType: (auth, body) => request("POST", "/api/v5/account/set-fee-type", { body, auth }),
|
|
21448
|
+
setSettleCurrency: (auth, body) => request("POST", "/api/v5/account/set-settle-currency", { body, auth }),
|
|
21449
|
+
getPositionBuilderGraph: (auth) => request("GET", "/api/v5/account/position-builder-graph", { auth }),
|
|
21450
|
+
precheckDeltaNeutral: (auth, body) => request("POST", "/api/v5/account/precheck-set-delta-neutral", { body, auth }),
|
|
21451
|
+
// ── 第三批 finance ────────────────────────────────────────────────────
|
|
21452
|
+
adjustFlexibleLoanCollateral: (auth, body) => request("POST", "/api/v5/finance/flexible-loan/adjust-collateral", { body, auth }),
|
|
21453
|
+
purchaseSavings: (auth, body) => request("POST", "/api/v5/finance/savings/purchase-redempt", { body, auth }),
|
|
21454
|
+
getSfpDcdProducts: (auth) => request("GET", "/api/v5/finance/sfp/dcd/products", { auth }),
|
|
21455
|
+
redeemSfpDcd: (auth, body) => request("POST", "/api/v5/finance/sfp/dcd/redeem", { body, auth }),
|
|
21456
|
+
getStakingActiveOrders: (auth) => request("GET", "/api/v5/finance/staking-defi/orders-active", { auth }),
|
|
21457
|
+
cancelRedeemEthStaking: (auth, body) => request("POST", "/api/v5/finance/staking-defi/eth/cancel-redeem", { body, auth }),
|
|
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 }),
|
|
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
|
+
getOneClickRepayCurrencyList: (auth) => request("GET", "/api/v5/trade/one-click-repay-currency-list", { auth })
|
|
21432
21471
|
};
|
|
21433
21472
|
|
|
21434
21473
|
// src/adapters/hrails.ts
|
|
@@ -22995,6 +23034,256 @@ function registerAccountTools(server, auth) {
|
|
|
22995
23034
|
}
|
|
22996
23035
|
}
|
|
22997
23036
|
);
|
|
23037
|
+
server.tool(
|
|
23038
|
+
"okx_get_account_position_risk",
|
|
23039
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u8D26\u6237\u6301\u4ED3\u98CE\u9669\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8BC4\u4F30\u8D26\u6237\u6574\u4F53\u98CE\u9669\u655E\u53E3\u3001\u67E5\u770B\u5404\u4EA7\u54C1\u7684\u98CE\u9669\u7387\n## \u5173\u952E\u8BCD\uFF1A\u6301\u4ED3\u98CE\u9669, position risk, \u98CE\u9669\u655E\u53E3, \u8D26\u6237\u98CE\u63A7\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~10KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u98CE\u9669 \u2192 okx_get_positions \u67E5\u6301\u4ED3 \u2192 \u8C03\u6574\u98CE\u9669\u7BA1\u7406",
|
|
23040
|
+
{},
|
|
23041
|
+
async () => {
|
|
23042
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23043
|
+
try {
|
|
23044
|
+
const data = await privateApi.getAccountPositionRisk(auth);
|
|
23045
|
+
return toResult(data);
|
|
23046
|
+
} catch (e) {
|
|
23047
|
+
return toError(e);
|
|
23048
|
+
}
|
|
23049
|
+
}
|
|
23050
|
+
);
|
|
23051
|
+
server.tool(
|
|
23052
|
+
"okx_get_interest_limits",
|
|
23053
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5404\u5E01\u79CD\u7684\u5229\u606F\u9650\u989D\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5404\u5E01\u79CD\u7684\u514D\u606F\u989D\u5EA6\u548C\u5229\u606F\u4E0A\u9650\n## \u5173\u952E\u8BCD\uFF1A\u5229\u606F\u9650\u989D, interest limits, \u514D\u606F\u989D\u5EA6, \u5229\u606F\u4E0A\u9650\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\u9650\u989D \u2192 okx_get_interest_accrued \u770B\u5DF2\u8BA1\u606F \u2192 \u7BA1\u7406\u501F\u8D37",
|
|
23054
|
+
{},
|
|
23055
|
+
async () => {
|
|
23056
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23057
|
+
try {
|
|
23058
|
+
const data = await privateApi.getInterestLimits(auth);
|
|
23059
|
+
return toResult(data);
|
|
23060
|
+
} catch (e) {
|
|
23061
|
+
return toError(e);
|
|
23062
|
+
}
|
|
23063
|
+
}
|
|
23064
|
+
);
|
|
23065
|
+
server.tool(
|
|
23066
|
+
"okx_get_account_subtypes",
|
|
23067
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u8D26\u6237\u5B50\u7C7B\u578B\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u8D26\u6237\u7684\u5B50\u7C7B\u578B\u5206\u7C7B\u548C\u914D\u7F6E\n## \u5173\u952E\u8BCD\uFF1A\u8D26\u6237\u5B50\u7C7B\u578B, account subtypes, \u8D26\u6237\u5206\u7C7B\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\u8D26\u6237\u7C7B\u578B \u2192 \u4E86\u89E3\u4EA4\u6613\u6743\u9650",
|
|
23068
|
+
{},
|
|
23069
|
+
async () => {
|
|
23070
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23071
|
+
try {
|
|
23072
|
+
const data = await privateApi.getAccountSubtypes(auth);
|
|
23073
|
+
return toResult(data);
|
|
23074
|
+
} catch (e) {
|
|
23075
|
+
return toError(e);
|
|
23076
|
+
}
|
|
23077
|
+
}
|
|
23078
|
+
);
|
|
23079
|
+
server.tool(
|
|
23080
|
+
"okx_get_subaccount_trading_balance",
|
|
23081
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5B50\u8D26\u6237\u7684\u4EA4\u6613\u8D26\u6237\u4F59\u989D\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5B50\u8D26\u6237\u7684\u4EA4\u6613\u8D44\u91D1\n## \u5173\u952E\u8BCD\uFF1A\u5B50\u8D26\u6237\u4EA4\u6613\u4F59\u989D, subaccount trading, \u5B50\u8D26\u6237\u8D44\u91D1\n## \u53C2\u6570\uFF1A\n## - subAcct: \u5B50\u8D26\u6237\u540D\u79F0\u3002\u5FC5\u586B\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 ~2KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u5B50\u8D26\u6237\u4EA4\u6613\u4F59\u989D \u2192 okx_get_subaccount_assets \u67E5\u8D44\u91D1\u4F59\u989D",
|
|
23082
|
+
{
|
|
23083
|
+
subAcct: external_exports.string().describe("\u5B50\u8D26\u6237\u540D\u79F0\u3002\u5FC5\u586B")
|
|
23084
|
+
},
|
|
23085
|
+
async ({ subAcct }) => {
|
|
23086
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23087
|
+
try {
|
|
23088
|
+
const data = await privateApi.getSubAccountTradingBalance(auth, subAcct);
|
|
23089
|
+
return toResult(data);
|
|
23090
|
+
} catch (e) {
|
|
23091
|
+
return toError(e);
|
|
23092
|
+
}
|
|
23093
|
+
}
|
|
23094
|
+
);
|
|
23095
|
+
server.tool(
|
|
23096
|
+
"okx_preset_account_switch",
|
|
23097
|
+
"## \u529F\u80FD\uFF1A\u9884\u8BBE\u8D26\u6237\u6A21\u5F0F\u5207\u6362\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5728\u5207\u6362\u8D26\u6237\u6A21\u5F0F\u524D\u9884\u8BBE\u53C2\u6570\n## \u53C2\u6570\uFF1A\n## - acctLv: \u76EE\u6807\u8D26\u6237\u5C42\u7EA7\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u9884\u8BBE\u8D26\u6237\u6A21\u5F0F\u5207\u6362\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AADMIN \u2014 \u5F71\u54CD\u8D26\u6237\u914D\u7F6E\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u9884\u8BBE \u2192 okx_set_account_mode \u6267\u884C\u5207\u6362",
|
|
23098
|
+
{
|
|
23099
|
+
acctLv: external_exports.string().describe("\u76EE\u6807\u8D26\u6237\u5C42\u7EA7\u3002\u5FC5\u586B")
|
|
23100
|
+
},
|
|
23101
|
+
async ({ acctLv }) => {
|
|
23102
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23103
|
+
try {
|
|
23104
|
+
const data = await privateApi.presetAccountSwitch(auth, { acctLv });
|
|
23105
|
+
return toResult(data);
|
|
23106
|
+
} catch (e) {
|
|
23107
|
+
return toError(e);
|
|
23108
|
+
}
|
|
23109
|
+
}
|
|
23110
|
+
);
|
|
23111
|
+
server.tool(
|
|
23112
|
+
"okx_activate_option",
|
|
23113
|
+
"## \u529F\u80FD\uFF1A\u6FC0\u6D3B\u671F\u6743\u4EA4\u6613\u6743\u9650\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5F00\u901A\u671F\u6743\u4EA4\u6613\u529F\u80FD\n## \u5173\u952E\u8BCD\uFF1A\u671F\u6743\u6FC0\u6D3B, activate option, \u671F\u6743\u6743\u9650, \u5F00\u901A\u671F\u6743\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u6FC0\u6D3B\u671F\u6743\u4EA4\u6613\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AADMIN \u2014 \u5F00\u901A\u671F\u6743\u540E\u6D89\u53CA\u590D\u6742\u4EA4\u6613\u54C1\u79CD\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u6FC0\u6D3B \u2192 okx_get_instruments \u67E5\u770B\u671F\u6743\u4EA7\u54C1 \u2192 \u4EA4\u6613\u671F\u6743",
|
|
23114
|
+
{},
|
|
23115
|
+
async () => {
|
|
23116
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23117
|
+
try {
|
|
23118
|
+
const data = await privateApi.activateOption(auth, {});
|
|
23119
|
+
return toResult(data);
|
|
23120
|
+
} catch (e) {
|
|
23121
|
+
return toError(e);
|
|
23122
|
+
}
|
|
23123
|
+
}
|
|
23124
|
+
);
|
|
23125
|
+
server.tool(
|
|
23126
|
+
"okx_position_builder",
|
|
23127
|
+
"## \u529F\u80FD\uFF1A\u7EC4\u5408\u4FDD\u8BC1\u91D1\u8BD5\u7B97\n## \u573A\u666F\uFF1A\u7528\u4E8E\u6D4B\u8BD5\u4E0D\u540C\u6301\u4ED3\u7EC4\u5408\u4E0B\u7684\u4FDD\u8BC1\u91D1\u9700\u6C42\n## \u5173\u952E\u8BCD\uFF1A\u6301\u4ED3\u8BD5\u7B97, position builder, \u7EC4\u5408\u4FDD\u8BC1\u91D1, \u4FDD\u8BC1\u91D1\u4F30\u7B97\n## \u53C2\u6570\uFF1A\n## - body: \u8BD5\u7B97\u53C2\u6570JSON\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u8FDB\u884C\u4FDD\u8BC1\u91D1\u8BD5\u7B97\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u8BD5\u7B97\u64CD\u4F5C\u5F71\u54CD\u8D26\u6237\u72B6\u6001\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u8BD5\u7B97 \u2192 \u4F18\u5316\u6301\u4ED3\u7EC4\u5408 \u2192 \u964D\u4F4E\u4FDD\u8BC1\u91D1\u5360\u7528",
|
|
23128
|
+
{
|
|
23129
|
+
body: external_exports.string().describe("\u8BD5\u7B97\u53C2\u6570JSON\u5B57\u7B26\u4E32\u3002\u5FC5\u586B")
|
|
23130
|
+
},
|
|
23131
|
+
async ({ body }) => {
|
|
23132
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23133
|
+
try {
|
|
23134
|
+
const parsed = JSON.parse(body);
|
|
23135
|
+
const data = await privateApi.positionBuilder(auth, parsed);
|
|
23136
|
+
return toResult(data);
|
|
23137
|
+
} catch (e) {
|
|
23138
|
+
return toError(e);
|
|
23139
|
+
}
|
|
23140
|
+
}
|
|
23141
|
+
);
|
|
23142
|
+
server.tool(
|
|
23143
|
+
"okx_set_auto_earn",
|
|
23144
|
+
"## \u529F\u80FD\uFF1A\u8BBE\u7F6E\u81EA\u52A8\u7406\u8D22\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5F00\u542F\u6216\u5173\u95ED\u95F2\u7F6E\u8D44\u91D1\u7684\u81EA\u52A8\u7406\u8D22\u529F\u80FD\n## \u5173\u952E\u8BCD\uFF1A\u81EA\u52A8\u7406\u8D22, auto earn, \u81EA\u52A8\u8D5A\u5E01, \u95F2\u7F6E\u8D44\u91D1\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\u3002\u5FC5\u586B\n## - autoEarn: \u662F\u5426\u5F00\u542F\u81EA\u52A8\u7406\u8D22\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u4FEE\u6539\u7406\u8D22\u8BBE\u7F6E\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u4FEE\u6539\u81EA\u52A8\u7406\u8D22\u8BBE\u7F6E\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u8BBE\u7F6E \u2192 okx_get_savings_balance \u67E5\u770B\u7406\u8D22\u4F59\u989D",
|
|
23145
|
+
{
|
|
23146
|
+
ccy: external_exports.string().describe("\u5E01\u79CD\u3002\u5FC5\u586B"),
|
|
23147
|
+
autoEarn: external_exports.boolean().describe("\u662F\u5426\u5F00\u542F\u81EA\u52A8\u7406\u8D22\u3002true=\u5F00\u542F, false=\u5173\u95ED")
|
|
23148
|
+
},
|
|
23149
|
+
async ({ ccy, autoEarn }) => {
|
|
23150
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23151
|
+
try {
|
|
23152
|
+
const data = await privateApi.setAutoEarn(auth, { ccy, autoEarn });
|
|
23153
|
+
return toResult(data);
|
|
23154
|
+
} catch (e) {
|
|
23155
|
+
return toError(e);
|
|
23156
|
+
}
|
|
23157
|
+
}
|
|
23158
|
+
);
|
|
23159
|
+
server.tool(
|
|
23160
|
+
"okx_set_fee_type",
|
|
23161
|
+
"## \u529F\u80FD\uFF1A\u8BBE\u7F6E\u624B\u7EED\u8D39\u7C7B\u578B\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5207\u6362\u8BA1\u8D39\u6A21\u5F0F\uFF08\u6309\u5F20/\u6309\u5E01\uFF09\n## \u5173\u952E\u8BCD\uFF1A\u624B\u7EED\u8D39\u7C7B\u578B, fee type, \u8BA1\u8D39\u6A21\u5F0F, \u8D39\u7387\u8BBE\u7F6E\n## \u53C2\u6570\uFF1A\n## - feeType: \u624B\u7EED\u8D39\u7C7B\u578B\u30020=\u6309\u5E01, 1=\u6309USDT\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u4FEE\u6539\u624B\u7EED\u8D39\u7C7B\u578B\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u4FEE\u6539\u8BA1\u8D39\u65B9\u5F0F\u5F71\u54CD\u4EA4\u6613\u6210\u672C\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1Aokx_get_fee_rates \u770B\u5F53\u524D\u8D39\u7387 \u2192 \u672C\u5DE5\u5177\u5207\u7C7B\u578B \u2192 \u4F18\u5316\u6210\u672C",
|
|
23162
|
+
{
|
|
23163
|
+
feeType: external_exports.enum(["0", "1"]).describe("\u624B\u7EED\u8D39\u7C7B\u578B\u30020=\u6309\u5E01, 1=\u6309USDT")
|
|
23164
|
+
},
|
|
23165
|
+
async ({ feeType }) => {
|
|
23166
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23167
|
+
try {
|
|
23168
|
+
const data = await privateApi.setFeeType(auth, { feeType });
|
|
23169
|
+
return toResult(data);
|
|
23170
|
+
} catch (e) {
|
|
23171
|
+
return toError(e);
|
|
23172
|
+
}
|
|
23173
|
+
}
|
|
23174
|
+
);
|
|
23175
|
+
server.tool(
|
|
23176
|
+
"okx_set_settle_currency",
|
|
23177
|
+
"## \u529F\u80FD\uFF1A\u8BBE\u7F6E\u8D26\u6237\u7ED3\u7B97\u5E01\u79CD\n## \u573A\u666F\uFF1A\u7528\u4E8E\u66F4\u6539\u8D26\u6237\u7684\u9ED8\u8BA4\u7ED3\u7B97\u8D27\u5E01\n## \u5173\u952E\u8BCD\uFF1A\u7ED3\u7B97\u5E01\u79CD, settle currency, \u9ED8\u8BA4\u7ED3\u7B97, \u8BA1\u4EF7\u5E01\u79CD\n## \u53C2\u6570\uFF1A\n## - ccy: \u7ED3\u7B97\u5E01\u79CD\uFF0C\u5982 USDT\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u4FEE\u6539\u7ED3\u7B97\u5E01\u79CD\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AADMIN \u2014 \u4FEE\u6539\u7ED3\u7B97\u5E01\u79CD\u5F71\u54CD\u8D26\u6237\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u8BBE\u7F6E \u2192 okx_get_account_config \u786E\u8BA4\u53D8\u66F4\u751F\u6548",
|
|
23178
|
+
{
|
|
23179
|
+
ccy: external_exports.string().describe("\u7ED3\u7B97\u5E01\u79CD\uFF0C\u5982 USDT\u3002\u5FC5\u586B")
|
|
23180
|
+
},
|
|
23181
|
+
async ({ ccy }) => {
|
|
23182
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23183
|
+
try {
|
|
23184
|
+
const data = await privateApi.setSettleCurrency(auth, { ccy });
|
|
23185
|
+
return toResult(data);
|
|
23186
|
+
} catch (e) {
|
|
23187
|
+
return toError(e);
|
|
23188
|
+
}
|
|
23189
|
+
}
|
|
23190
|
+
);
|
|
23191
|
+
server.tool(
|
|
23192
|
+
"okx_get_position_builder_graph",
|
|
23193
|
+
"## \u529F\u80FD\uFF1A\u83B7\u53D6\u7EC4\u5408\u4FDD\u8BC1\u91D1\u8BD5\u7B97\u7ED3\u679C\u56FE\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u7EC4\u5408\u4FDD\u8BC1\u91D1\u6A21\u62DF\u7ED3\u679C\u7684\u56FE\u5F62\u6570\u636E\n## \u5173\u952E\u8BCD\uFF1A\u8BD5\u7B97\u56FE\u8868, position builder graph, \u4FDD\u8BC1\u91D1\u6A21\u62DF\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_position_builder \u8BD5\u7B97 \u2192 \u672C\u5DE5\u5177\u770B\u56FE\u8868 \u2192 \u4F18\u5316\u7EC4\u5408",
|
|
23194
|
+
{},
|
|
23195
|
+
async () => {
|
|
23196
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23197
|
+
try {
|
|
23198
|
+
const data = await privateApi.getPositionBuilderGraph(auth);
|
|
23199
|
+
return toResult(data);
|
|
23200
|
+
} catch (e) {
|
|
23201
|
+
return toError(e);
|
|
23202
|
+
}
|
|
23203
|
+
}
|
|
23204
|
+
);
|
|
23205
|
+
server.tool(
|
|
23206
|
+
"okx_precheck_delta_neutral",
|
|
23207
|
+
"## \u529F\u80FD\uFF1A\u9884\u68C0Delta\u4E2D\u6027\u8BBE\u7F6E\n## \u573A\u666F\uFF1A\u7528\u4E8E\u68C0\u67E5\u671F\u6743\u6301\u4ED3\u7684Delta\u4E2D\u6027\u6761\u4EF6\n## \u5173\u952E\u8BCD\uFF1ADelta\u4E2D\u6027, delta neutral, \u671F\u6743\u5BF9\u51B2, \u65B9\u5411\u4E2D\u6027\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u9884\u68C0Delta\u4E2D\u6027\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u9884\u68C0\u64CD\u4F5C\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u9884\u68C0 \u2192 \u8C03\u6574\u671F\u6743\u6301\u4ED3 \u2192 \u5B9E\u73B0Delta\u4E2D\u6027",
|
|
23208
|
+
{},
|
|
23209
|
+
async () => {
|
|
23210
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23211
|
+
try {
|
|
23212
|
+
const data = await privateApi.precheckDeltaNeutral(auth, {});
|
|
23213
|
+
return toResult(data);
|
|
23214
|
+
} catch (e) {
|
|
23215
|
+
return toError(e);
|
|
23216
|
+
}
|
|
23217
|
+
}
|
|
23218
|
+
);
|
|
23219
|
+
server.tool(
|
|
23220
|
+
"okx_get_trade_fee",
|
|
23221
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u4EA4\u6613\u624B\u7EED\u8D39\uFF08\u6309\u4EA7\u54C1\u7EF4\u5EA6\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5177\u4F53\u4EA7\u54C1\u7684Maker/Taker\u8D39\u7387\n## \u5173\u952E\u8BCD\uFF1A\u4EA4\u6613\u624B\u7EED\u8D39, trade fee, maker taker, \u8D39\u7387\u67E5\u8BE2\n## \u53C2\u6570\uFF1A\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002\u53EF\u9009\n## - instId: \u4EA7\u54C1ID\u3002\u53EF\u9009\n## - uly: \u6807\u7684\u6307\u6570\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\uFF1A\u672C\u5DE5\u5177\u67E5\u4EA7\u54C1\u8D39\u7387 \u2192 okx_get_fee_rates \u770B\u8D26\u6237\u8D39\u7387 \u2192 \u8BC4\u4F30\u4EA4\u6613\u6210\u672C",
|
|
23222
|
+
{
|
|
23223
|
+
instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
|
|
23224
|
+
instId: external_exports.string().optional().describe("\u4EA7\u54C1ID"),
|
|
23225
|
+
uly: external_exports.string().optional().describe("\u6807\u7684\u6307\u6570")
|
|
23226
|
+
},
|
|
23227
|
+
async ({ instType, instId, uly }) => {
|
|
23228
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23229
|
+
try {
|
|
23230
|
+
const data = await privateApi.getTradeFee(auth, instType, instId, uly);
|
|
23231
|
+
return toResult(data);
|
|
23232
|
+
} catch (e) {
|
|
23233
|
+
return toError(e);
|
|
23234
|
+
}
|
|
23235
|
+
}
|
|
23236
|
+
);
|
|
23237
|
+
server.tool(
|
|
23238
|
+
"okx_get_risk_state",
|
|
23239
|
+
"## \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",
|
|
23240
|
+
{},
|
|
23241
|
+
async () => {
|
|
23242
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23243
|
+
try {
|
|
23244
|
+
const data = await privateApi.getRiskState(auth);
|
|
23245
|
+
return toResult(data);
|
|
23246
|
+
} catch (e) {
|
|
23247
|
+
return toError(e);
|
|
23248
|
+
}
|
|
23249
|
+
}
|
|
23250
|
+
);
|
|
23251
|
+
server.tool(
|
|
23252
|
+
"okx_borrow_repay",
|
|
23253
|
+
"## \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",
|
|
23254
|
+
{
|
|
23255
|
+
ccy: external_exports.string().describe("\u5E01\u79CD\u3002\u5FC5\u586B"),
|
|
23256
|
+
side: external_exports.enum(["borrow", "repay"]).describe("\u65B9\u5411\u3002borrow=\u501F\u5E01, repay=\u8FD8\u6B3E"),
|
|
23257
|
+
amt: external_exports.string().describe("\u6570\u91CF\u3002\u5FC5\u586B")
|
|
23258
|
+
},
|
|
23259
|
+
async ({ ccy, side, amt }) => {
|
|
23260
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23261
|
+
try {
|
|
23262
|
+
const data = await privateApi.borrowRepay(auth, { ccy, side, amt });
|
|
23263
|
+
return toResult(data);
|
|
23264
|
+
} catch (e) {
|
|
23265
|
+
return toError(e);
|
|
23266
|
+
}
|
|
23267
|
+
}
|
|
23268
|
+
);
|
|
23269
|
+
server.tool(
|
|
23270
|
+
"okx_get_borrow_repay_history",
|
|
23271
|
+
"## \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",
|
|
23272
|
+
{},
|
|
23273
|
+
async () => {
|
|
23274
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23275
|
+
try {
|
|
23276
|
+
const data = await privateApi.getBorrowRepayHistory(auth);
|
|
23277
|
+
const enriched = data.map((item) => ({
|
|
23278
|
+
...item,
|
|
23279
|
+
tsIso: item.ts ? new Date(parseInt(item.ts)).toISOString() : void 0
|
|
23280
|
+
}));
|
|
23281
|
+
return toResult(enriched);
|
|
23282
|
+
} catch (e) {
|
|
23283
|
+
return toError(e);
|
|
23284
|
+
}
|
|
23285
|
+
}
|
|
23286
|
+
);
|
|
22998
23287
|
}
|
|
22999
23288
|
|
|
23000
23289
|
// src/tools/trading.ts
|
|
@@ -23512,6 +23801,20 @@ function registerTradingTools(server, auth) {
|
|
|
23512
23801
|
}
|
|
23513
23802
|
}
|
|
23514
23803
|
);
|
|
23804
|
+
server.tool(
|
|
23805
|
+
"okx_get_easy_convert_currency_list",
|
|
23806
|
+
"## \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",
|
|
23807
|
+
{},
|
|
23808
|
+
async () => {
|
|
23809
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23810
|
+
try {
|
|
23811
|
+
const data = await privateApi.getEasyConvertCurrencyList(auth);
|
|
23812
|
+
return toResult(data);
|
|
23813
|
+
} catch (e) {
|
|
23814
|
+
return toError(e);
|
|
23815
|
+
}
|
|
23816
|
+
}
|
|
23817
|
+
);
|
|
23515
23818
|
}
|
|
23516
23819
|
|
|
23517
23820
|
// src/tools/algo.ts
|
|
@@ -24789,6 +25092,194 @@ function registerFinanceTools(server, auth) {
|
|
|
24789
25092
|
}
|
|
24790
25093
|
}
|
|
24791
25094
|
);
|
|
25095
|
+
server.tool(
|
|
25096
|
+
"okx_purchase_savings",
|
|
25097
|
+
"## \u529F\u80FD\uFF1A\u7533\u8D2D\u6216\u8D4E\u56DE\u6D3B\u671F\u8D5A\u5E01\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5C06\u95F2\u7F6E\u8D44\u91D1\u5B58\u5165\u6D3B\u671F\u8D5A\u5E01\u83B7\u53D6\u6536\u76CA\u3001\u6216\u8D4E\u56DE\u8D5A\u5E01\n## \u53C2\u6570\uFF1A\n## - ccy: \u5E01\u79CD\u3002\u5FC5\u586B\n## - amt: \u7533\u8D2D\u6570\u91CF\u3002\u5FC5\u586B\n## - side: \u65B9\u5411\u3002purchase=\u7533\u8D2D, redempt=\u8D4E\u56DE\u3002\u5FC5\u586B\n## - rate: \u5229\u7387\u3002\u53EF\u9009\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u64CD\u4F5C\u6D3B\u671F\u8D5A\u5E01\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AFUND_TRANSFER \u2014 \u7533\u8D2D/\u8D4E\u56DE\u5F71\u54CD\u8D44\u91D1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_get_savings_balance \u770B\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u64CD\u4F5C \u2192 okx_get_savings_history \u786E\u8BA4",
|
|
25098
|
+
{
|
|
25099
|
+
ccy: external_exports.string().describe("\u5E01\u79CD\u3002\u5FC5\u586B"),
|
|
25100
|
+
amt: external_exports.string().describe("\u7533\u8D2D\u6570\u91CF\u3002\u5FC5\u586B"),
|
|
25101
|
+
side: external_exports.enum(["purchase", "redempt"]).describe("\u65B9\u5411\u3002purchase=\u7533\u8D2D, redempt=\u8D4E\u56DE"),
|
|
25102
|
+
rate: external_exports.string().optional().describe("\u5229\u7387")
|
|
25103
|
+
},
|
|
25104
|
+
async ({ ccy, amt, side, rate }) => {
|
|
25105
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25106
|
+
try {
|
|
25107
|
+
const body = { ccy, amt, side };
|
|
25108
|
+
if (rate) body.rate = rate;
|
|
25109
|
+
const data = await privateApi.purchaseSavings(auth, body);
|
|
25110
|
+
return toResult(data);
|
|
25111
|
+
} catch (e) {
|
|
25112
|
+
return toError(e);
|
|
25113
|
+
}
|
|
25114
|
+
}
|
|
25115
|
+
);
|
|
25116
|
+
server.tool(
|
|
25117
|
+
"okx_get_sfp_products",
|
|
25118
|
+
"## \u529F\u80FD\uFF1A\u83B7\u53D6\u9CA8\u9C7C\u9CCD\uFF08SFP\uFF09\u4EA7\u54C1\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u53EF\u8D2D\u4E70\u7684\u9CA8\u9C7C\u9CCD\u7ED3\u6784\u5316\u4EA7\u54C1\n## \u5173\u952E\u8BCD\uFF1A\u9CA8\u9C7C\u9CCD, SFP, sfp products, \u7ED3\u6784\u6027\u4EA7\u54C1\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~10KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u770B\u4EA7\u54C1 \u2192 \u9009\u62E9\u8D2D\u4E70 \u2192 \u7BA1\u7406\u6536\u76CA",
|
|
25119
|
+
{},
|
|
25120
|
+
async () => {
|
|
25121
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25122
|
+
try {
|
|
25123
|
+
const data = await privateApi.getSfpDcdProducts(auth);
|
|
25124
|
+
return toResult(data);
|
|
25125
|
+
} catch (e) {
|
|
25126
|
+
return toError(e);
|
|
25127
|
+
}
|
|
25128
|
+
}
|
|
25129
|
+
);
|
|
25130
|
+
server.tool(
|
|
25131
|
+
"okx_redeem_sfp",
|
|
25132
|
+
"## \u529F\u80FD\uFF1A\u8D4E\u56DE\u9CA8\u9C7C\u9CCD\uFF08SFP\uFF09\u4EA7\u54C1\n## \u573A\u666F\uFF1A\u7528\u4E8E\u63D0\u524D\u8D4E\u56DE\u9CA8\u9C7C\u9CCD\u7ED3\u6784\u6027\u4EA7\u54C1\n## \u5173\u952E\u8BCD\uFF1A\u8D4E\u56DESFP, redeem sfp, \u9CA8\u9C7C\u9CCD\u8D4E\u56DE\n## \u53C2\u6570\uFF1A\n## - productId: \u4EA7\u54C1ID\u3002\u5FC5\u586B\n## - amt: \u8D4E\u56DE\u6570\u91CF\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u8D4E\u56DE\u4EA7\u54C1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AFUND_TRANSFER \u2014 \u8D4E\u56DE\u5F71\u54CD\u8D44\u91D1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_get_sfp_products \u67E5\u770B\u4EA7\u54C1 \u2192 \u672C\u5DE5\u5177\u8D4E\u56DE \u2192 \u786E\u8BA4\u5230\u8D26",
|
|
25133
|
+
{
|
|
25134
|
+
productId: external_exports.string().describe("\u4EA7\u54C1ID\u3002\u5FC5\u586B"),
|
|
25135
|
+
amt: external_exports.string().describe("\u8D4E\u56DE\u6570\u91CF\u3002\u5FC5\u586B")
|
|
25136
|
+
},
|
|
25137
|
+
async ({ productId, amt }) => {
|
|
25138
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25139
|
+
try {
|
|
25140
|
+
const data = await privateApi.redeemSfpDcd(auth, { productId, amt });
|
|
25141
|
+
return toResult(data);
|
|
25142
|
+
} catch (e) {
|
|
25143
|
+
return toError(e);
|
|
25144
|
+
}
|
|
25145
|
+
}
|
|
25146
|
+
);
|
|
25147
|
+
server.tool(
|
|
25148
|
+
"okx_get_staking_active_orders",
|
|
25149
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5F53\u524D\u6D3B\u8DC3\u7684\u8D28\u62BC\u8BA2\u5355\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u6B63\u5728\u7533\u8D2D\u6216\u8D4E\u56DE\u4E2D\u7684\u8D28\u62BC\u8BA2\u5355\n## \u5173\u952E\u8BCD\uFF1A\u8D28\u62BC\u6D3B\u8DC3\u8BA2\u5355, active orders, \u8D28\u62BC\u8FDB\u884C\u4E2D\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\u770B\u6D3B\u8DC3\u8BA2\u5355 \u2192 okx_get_staking_orders \u770B\u5168\u90E8 \u2192 \u7BA1\u7406\u8D28\u62BC",
|
|
25150
|
+
{},
|
|
25151
|
+
async () => {
|
|
25152
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25153
|
+
try {
|
|
25154
|
+
const data = await privateApi.getStakingActiveOrders(auth);
|
|
25155
|
+
return toResult(data);
|
|
25156
|
+
} catch (e) {
|
|
25157
|
+
return toError(e);
|
|
25158
|
+
}
|
|
25159
|
+
}
|
|
25160
|
+
);
|
|
25161
|
+
server.tool(
|
|
25162
|
+
"okx_cancel_redeem_eth",
|
|
25163
|
+
"## \u529F\u80FD\uFF1A\u53D6\u6D88ETH\u8D28\u62BC\u7684\u8D4E\u56DE\u8BF7\u6C42\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5728\u8D4E\u56DE\u786E\u8BA4\u524D\u53D6\u6D88\u8D4E\u56DE\u64CD\u4F5C\n## \u5173\u952E\u8BCD\uFF1A\u53D6\u6D88\u8D4E\u56DE, cancel redeem, \u53D6\u6D88ETH\u8D4E\u56DE\n## \u53C2\u6570\uFF1A\n## - amt: \u53D6\u6D88\u8D4E\u56DE\u6570\u91CF\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u53D6\u6D88\u8D4E\u56DE\u8BF7\u6C42\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u53D6\u6D88\u8D4E\u56DE\u540EETH\u5C06\u7EE7\u7EED\u8D28\u62BC\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1Aokx_stake_eth \u8D28\u62BC \u2192 \u672C\u5DE5\u5177\u53D6\u6D88\u8D4E\u56DE \u2192 ETH\u7EE7\u7EED\u751F\u606F",
|
|
25164
|
+
{
|
|
25165
|
+
amt: external_exports.string().describe("\u53D6\u6D88\u8D4E\u56DE\u6570\u91CF\u3002\u5FC5\u586B")
|
|
25166
|
+
},
|
|
25167
|
+
async ({ amt }) => {
|
|
25168
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25169
|
+
try {
|
|
25170
|
+
const data = await privateApi.cancelRedeemEthStaking(auth, { amt });
|
|
25171
|
+
return toResult(data);
|
|
25172
|
+
} catch (e) {
|
|
25173
|
+
return toError(e);
|
|
25174
|
+
}
|
|
25175
|
+
}
|
|
25176
|
+
);
|
|
25177
|
+
server.tool(
|
|
25178
|
+
"okx_purchase_sol_staking",
|
|
25179
|
+
"## \u529F\u80FD\uFF1A\u7533\u8D2DSOL\u94FE\u4E0A\u8D28\u62BC\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5C06SOL\u5B58\u5165\u8D28\u62BC\u4EE5\u8D5A\u53D6\u6536\u76CA\n## \u5173\u952E\u8BCD\uFF1ASOL\u8D28\u62BC, stake sol, SOL\u7533\u8D2D, \u8D28\u62BCSOL\n## \u53C2\u6570\uFF1A\n## - amt: \u8D28\u62BC\u6570\u91CF\uFF08SOL\uFF09\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u7533\u8D2DSOL\u8D28\u62BC\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AFUND_TRANSFER \u2014 \u8D28\u62BCSOL\u540E\u9700\u7B49\u5F85\u8D4E\u56DE\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_get_sol_staking_balance \u770B\u6301\u4ED3 \u2192 \u672C\u5DE5\u5177\u7533\u8D2D \u2192 okx_get_staking_orders \u786E\u8BA4",
|
|
25180
|
+
{
|
|
25181
|
+
amt: external_exports.string().describe("\u8D28\u62BC\u6570\u91CF\uFF08SOL\uFF09\u3002\u5FC5\u586B")
|
|
25182
|
+
},
|
|
25183
|
+
async ({ amt }) => {
|
|
25184
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25185
|
+
try {
|
|
25186
|
+
const data = await privateApi.purchaseSolStaking(auth, { amt });
|
|
25187
|
+
return toResult(data);
|
|
25188
|
+
} catch (e) {
|
|
25189
|
+
return toError(e);
|
|
25190
|
+
}
|
|
25191
|
+
}
|
|
25192
|
+
);
|
|
25193
|
+
server.tool(
|
|
25194
|
+
"okx_redeem_sol_staking",
|
|
25195
|
+
"## \u529F\u80FD\uFF1A\u8D4E\u56DESOL\u94FE\u4E0A\u8D28\u62BC\n## \u573A\u666F\uFF1A\u7528\u4E8E\u5C06\u8D28\u62BC\u7684SOL\u8D4E\u56DE\n## \u5173\u952E\u8BCD\uFF1A\u8D4E\u56DESOL, redeem sol, SOL\u89E3\u8D28\u62BC\n## \u53C2\u6570\uFF1A\n## - amt: \u8D4E\u56DE\u6570\u91CF\uFF08SOL\uFF09\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u8D4E\u56DESOL\u8D28\u62BC\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AFUND_TRANSFER \u2014 \u8D4E\u56DESOL\u9700\u7B49\u5F85\u94FE\u4E0A\u786E\u8BA4\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_get_sol_staking_balance \u770B\u6301\u4ED3 \u2192 \u672C\u5DE5\u5177\u8D4E\u56DE \u2192 \u786E\u8BA4\u5230\u8D26",
|
|
25196
|
+
{
|
|
25197
|
+
amt: external_exports.string().describe("\u8D4E\u56DE\u6570\u91CF\uFF08SOL\uFF09\u3002\u5FC5\u586B")
|
|
25198
|
+
},
|
|
25199
|
+
async ({ amt }) => {
|
|
25200
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25201
|
+
try {
|
|
25202
|
+
const data = await privateApi.redeemSolStaking(auth, { amt });
|
|
25203
|
+
return toResult(data);
|
|
25204
|
+
} catch (e) {
|
|
25205
|
+
return toError(e);
|
|
25206
|
+
}
|
|
25207
|
+
}
|
|
25208
|
+
);
|
|
25209
|
+
server.tool(
|
|
25210
|
+
"okx_adjust_collateral",
|
|
25211
|
+
"## \u529F\u80FD\uFF1A\u8C03\u6574\u7075\u6D3B\u501F\u8D37\u7684\u62B5\u62BC\u54C1\n## \u573A\u666F\uFF1A\u7528\u4E8E\u589E\u52A0\u6216\u51CF\u5C11\u7075\u6D3B\u501F\u8D37\u7684\u62B5\u62BC\u8D44\u4EA7\n## \u5173\u952E\u8BCD\uFF1A\u62B5\u62BC\u8C03\u6574, adjust collateral, \u7075\u6D3B\u501F\u8D37, \u62B5\u62BC\u54C1\u7BA1\u7406\n## \u53C2\u6570\uFF1A\n## - ccy: \u62B5\u62BC\u5E01\u79CD\u3002\u5FC5\u586B\n## - amt: \u8C03\u6574\u6570\u91CF\u3002\u5FC5\u586B\n## - side: \u65B9\u5411\u3002add=\u589E\u52A0\u62B5\u62BC, reduce=\u51CF\u5C11\u62B5\u62BC\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u8C03\u6574\u62B5\u62BC\u54C1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AFUND_TRANSFER \u2014 \u8C03\u6574\u62B5\u62BC\u54C1\u5F71\u54CD\u501F\u8D37\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u8C03\u6574 \u2192 \u7BA1\u7406\u501F\u8D37\u98CE\u9669 \u2192 \u907F\u514D\u5F3A\u5E73",
|
|
25212
|
+
{
|
|
25213
|
+
ccy: external_exports.string().describe("\u62B5\u62BC\u5E01\u79CD\u3002\u5FC5\u586B"),
|
|
25214
|
+
amt: external_exports.string().describe("\u8C03\u6574\u6570\u91CF\u3002\u5FC5\u586B"),
|
|
25215
|
+
side: external_exports.enum(["add", "reduce"]).describe("\u65B9\u5411\u3002add=\u589E\u52A0\u62B5\u62BC, reduce=\u51CF\u5C11\u62B5\u62BC")
|
|
25216
|
+
},
|
|
25217
|
+
async ({ ccy, amt, side }) => {
|
|
25218
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25219
|
+
try {
|
|
25220
|
+
const data = await privateApi.adjustFlexibleLoanCollateral(auth, { ccy, amt, side });
|
|
25221
|
+
return toResult(data);
|
|
25222
|
+
} catch (e) {
|
|
25223
|
+
return toError(e);
|
|
25224
|
+
}
|
|
25225
|
+
}
|
|
25226
|
+
);
|
|
25227
|
+
server.tool(
|
|
25228
|
+
"okx_get_flexible_loan_collateral",
|
|
25229
|
+
"## \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",
|
|
25230
|
+
{},
|
|
25231
|
+
async () => {
|
|
25232
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25233
|
+
try {
|
|
25234
|
+
const data = await privateApi.getFlexibleLoanCollateralAssets(auth);
|
|
25235
|
+
return toResult(data);
|
|
25236
|
+
} catch (e) {
|
|
25237
|
+
return toError(e);
|
|
25238
|
+
}
|
|
25239
|
+
}
|
|
25240
|
+
);
|
|
25241
|
+
server.tool(
|
|
25242
|
+
"okx_get_flexible_loan_info",
|
|
25243
|
+
"## \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",
|
|
25244
|
+
{},
|
|
25245
|
+
async () => {
|
|
25246
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25247
|
+
try {
|
|
25248
|
+
const data = await privateApi.getFlexibleLoanInfo(auth);
|
|
25249
|
+
return toResult(data);
|
|
25250
|
+
} catch (e) {
|
|
25251
|
+
return toError(e);
|
|
25252
|
+
}
|
|
25253
|
+
}
|
|
25254
|
+
);
|
|
25255
|
+
server.tool(
|
|
25256
|
+
"okx_get_flexible_loan_history",
|
|
25257
|
+
"## \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",
|
|
25258
|
+
{},
|
|
25259
|
+
async () => {
|
|
25260
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25261
|
+
try {
|
|
25262
|
+
const data = await privateApi.getFlexibleLoanHistory(auth);
|
|
25263
|
+
return toResult(data);
|
|
25264
|
+
} catch (e) {
|
|
25265
|
+
return toError(e);
|
|
25266
|
+
}
|
|
25267
|
+
}
|
|
25268
|
+
);
|
|
25269
|
+
server.tool(
|
|
25270
|
+
"okx_get_stable_rewards_product",
|
|
25271
|
+
"## \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",
|
|
25272
|
+
{},
|
|
25273
|
+
async () => {
|
|
25274
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25275
|
+
try {
|
|
25276
|
+
const data = await privateApi.getStableRewardsProductInfo(auth);
|
|
25277
|
+
return toResult(data);
|
|
25278
|
+
} catch (e) {
|
|
25279
|
+
return toError(e);
|
|
25280
|
+
}
|
|
25281
|
+
}
|
|
25282
|
+
);
|
|
24792
25283
|
}
|
|
24793
25284
|
|
|
24794
25285
|
// src/tools/outcomes.ts
|
|
@@ -25884,6 +26375,35 @@ function registerCopyTools(server, auth) {
|
|
|
25884
26375
|
}
|
|
25885
26376
|
}
|
|
25886
26377
|
);
|
|
26378
|
+
server.tool(
|
|
26379
|
+
"okx_get_public_preference_currency",
|
|
26380
|
+
"## \u529F\u80FD\uFF1A\u516C\u5F00\u67E5\u8BE2\u5E26\u5355\u5458\u504F\u597D\u7684\u7ED3\u7B97\u5E01\u79CD\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5E26\u5355\u5458\u652F\u6301\u7684\u8DDF\u5355\u5E01\u79CD\n## \u5173\u952E\u8BCD\uFF1A\u5E26\u5355\u5E01\u79CD, preference currency, \u8DDF\u5355\u5E01\u79CD, \u7ED3\u7B97\u5E01\u79CD\n## \u53C2\u6570\uFF1A\n## - uniqueCode: \u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801\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\u5E01\u79CD\u504F\u597D \u2192 okx_get_lead_trader_stats \u67E5\u7EE9\u6548 \u2192 \u51B3\u5B9A\u8DDF\u5355",
|
|
26381
|
+
{
|
|
26382
|
+
uniqueCode: external_exports.string().describe("\u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801\u3002\u5FC5\u586B")
|
|
26383
|
+
},
|
|
26384
|
+
async ({ uniqueCode }) => {
|
|
26385
|
+
try {
|
|
26386
|
+
const data = await publicApi.getPublicPreferenceCurrency(uniqueCode);
|
|
26387
|
+
return toResult(data);
|
|
26388
|
+
} catch (e) {
|
|
26389
|
+
return toError(e);
|
|
26390
|
+
}
|
|
26391
|
+
}
|
|
26392
|
+
);
|
|
26393
|
+
server.tool(
|
|
26394
|
+
"okx_stop_copy_trading",
|
|
26395
|
+
"## \u529F\u80FD\uFF1A\u505C\u6B62\u8DDF\u5355/\u505C\u6B62\u5E26\u5355\n## \u573A\u666F\uFF1A\u7528\u4E8E\u505C\u6B62\u5F53\u524D\u7684\u8DDF\u5355\u5173\u7CFB\u6216\u7EC8\u6B62\u5E26\u5355\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u505C\u6B62\u8DDF\u5355\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u505C\u6B62\u8DDF\u5355\u5F71\u54CD\u6301\u4ED3\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1Aokx_get_copy_settings \u67E5\u770B\u8BBE\u7F6E \u2192 \u672C\u5DE5\u5177\u505C\u6B62",
|
|
26396
|
+
{},
|
|
26397
|
+
async () => {
|
|
26398
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26399
|
+
try {
|
|
26400
|
+
const data = await privateApi.stopCopyTrading(auth, {});
|
|
26401
|
+
return toResult(data);
|
|
26402
|
+
} catch (e) {
|
|
26403
|
+
return toError(e);
|
|
26404
|
+
}
|
|
26405
|
+
}
|
|
26406
|
+
);
|
|
25887
26407
|
}
|
|
25888
26408
|
|
|
25889
26409
|
// src/tools/signal.ts
|
|
@@ -26277,6 +26797,20 @@ function registerRfqTools(server, auth) {
|
|
|
26277
26797
|
}
|
|
26278
26798
|
}
|
|
26279
26799
|
);
|
|
26800
|
+
server.tool(
|
|
26801
|
+
"okx_reset_rfq_mmp",
|
|
26802
|
+
"## \u529F\u80FD\uFF1A\u91CD\u7F6ERFQ\u7684\u505A\u5E02\u5546\u4FDD\u62A4\uFF08MMP\uFF09\u72B6\u6001\n## \u573A\u666F\uFF1A\u7528\u4E8E\u89E6\u53D1MMP\u4FDD\u62A4\u540E\u624B\u52A8\u6062\u590D\u505A\u5E02\u62A5\u4EF7\n## \u5173\u952E\u8BCD\uFF1ARFQ-MMP, reset mmp, \u505A\u5E02\u4FDD\u62A4\u91CD\u7F6E\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u91CD\u7F6E\u505A\u5E02\u4FDD\u62A4\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u91CD\u7F6EMMP\u540E\u505A\u5E02\u5546\u53EF\u6062\u590D\u62A5\u4EF7\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u91CD\u7F6E \u2192 \u6062\u590D\u6B63\u5E38RFQ\u62A5\u4EF7",
|
|
26803
|
+
{},
|
|
26804
|
+
async () => {
|
|
26805
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26806
|
+
try {
|
|
26807
|
+
const data = await privateApi.resetRfqMmp(auth);
|
|
26808
|
+
return toResult(data);
|
|
26809
|
+
} catch (e) {
|
|
26810
|
+
return toError(e);
|
|
26811
|
+
}
|
|
26812
|
+
}
|
|
26813
|
+
);
|
|
26280
26814
|
}
|
|
26281
26815
|
|
|
26282
26816
|
// src/tools/affiliate.ts
|