hvip-mcp-server 0.2.28 → 0.2.30
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 +677 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -21407,7 +21407,56 @@ var privateApi = {
|
|
|
21407
21407
|
getTakerVolumeContract: (ccy, instId) => request("GET", "/api/v5/rubik/stat/taker-volume-contract", { params: { ccy, instId } }),
|
|
21408
21408
|
getOptionTakerBlockVolume: (ccy) => request("GET", "/api/v5/rubik/stat/option/taker-block-volume", { params: { ccy } }),
|
|
21409
21409
|
getTopTraderPositionRatio: (instId) => request("GET", "/api/v5/rubik/stat/contracts/long-short-position-ratio-contract-top-trader", { params: { instId } }),
|
|
21410
|
-
applyMonthlyStatement: (auth) => request("POST", "/api/v5/asset/monthly-statement", { auth })
|
|
21410
|
+
applyMonthlyStatement: (auth) => request("POST", "/api/v5/asset/monthly-statement", { auth }),
|
|
21411
|
+
// ── RFQ 收尾(第八批新增) ────────────────────────────────────────────
|
|
21412
|
+
getRfqCounterparties: (auth) => request("GET", "/api/v5/rfq/counterparties", { auth }),
|
|
21413
|
+
cancelRfq: (auth, body) => request("POST", "/api/v5/rfq/cancel-rfq", { body, auth }),
|
|
21414
|
+
cancelBatchRfqs: (auth, body) => request("POST", "/api/v5/rfq/cancel-batch-rfqs", { body, auth }),
|
|
21415
|
+
cancelAllRfqs: (auth) => request("POST", "/api/v5/rfq/cancel-all-rfqs", { auth }),
|
|
21416
|
+
createRfqQuote: (auth, body) => request("POST", "/api/v5/rfq/create-quote", { body, auth }),
|
|
21417
|
+
cancelRfqQuote: (auth, body) => request("POST", "/api/v5/rfq/cancel-quote", { body, auth }),
|
|
21418
|
+
cancelBatchQuotes: (auth, body) => request("POST", "/api/v5/rfq/cancel-batch-quotes", { body, auth }),
|
|
21419
|
+
cancelAllQuotes: (auth) => request("POST", "/api/v5/rfq/cancel-all-quotes", { auth }),
|
|
21420
|
+
getRfqTrades: (auth) => request("GET", "/api/v5/rfq/trades", { auth }),
|
|
21421
|
+
// ── Copytrading 收尾(第九批新增) ────────────────────────────────────
|
|
21422
|
+
getPublicLeadTraders: () => request("GET", "/api/v5/copytrading/public-lead-traders"),
|
|
21423
|
+
getPublicCopyConfig: () => request("GET", "/api/v5/copytrading/public-config"),
|
|
21424
|
+
getPublicLeadTraderPnl: (uniqueCode, lastDays) => request("GET", "/api/v5/copytrading/public-pnl", { params: { uniqueCode, lastDays } }),
|
|
21425
|
+
getPublicLeadTraderStats: (uniqueCode, instType, lastDays) => request("GET", "/api/v5/copytrading/public-stats", { params: { uniqueCode, instType, lastDays } }),
|
|
21426
|
+
getCopyTraders: (auth) => request("GET", "/api/v5/copytrading/copy-traders", { auth }),
|
|
21427
|
+
firstCopySettings: (auth, body) => request("POST", "/api/v5/copytrading/first-copy-settings", { body, auth }),
|
|
21428
|
+
getUnrealizedProfitSharing: (auth) => request("GET", "/api/v5/copytrading/unrealized-profit-sharing-details", { auth }),
|
|
21429
|
+
getTotalUnrealizedProfitSharing: (auth) => request("GET", "/api/v5/copytrading/total-unrealized-profit-sharing", { auth }),
|
|
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 }),
|
|
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 })
|
|
21411
21460
|
};
|
|
21412
21461
|
|
|
21413
21462
|
// src/adapters/hrails.ts
|
|
@@ -22974,6 +23023,206 @@ function registerAccountTools(server, auth) {
|
|
|
22974
23023
|
}
|
|
22975
23024
|
}
|
|
22976
23025
|
);
|
|
23026
|
+
server.tool(
|
|
23027
|
+
"okx_get_account_position_risk",
|
|
23028
|
+
"## \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",
|
|
23029
|
+
{},
|
|
23030
|
+
async () => {
|
|
23031
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23032
|
+
try {
|
|
23033
|
+
const data = await privateApi.getAccountPositionRisk(auth);
|
|
23034
|
+
return toResult(data);
|
|
23035
|
+
} catch (e) {
|
|
23036
|
+
return toError(e);
|
|
23037
|
+
}
|
|
23038
|
+
}
|
|
23039
|
+
);
|
|
23040
|
+
server.tool(
|
|
23041
|
+
"okx_get_interest_limits",
|
|
23042
|
+
"## \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",
|
|
23043
|
+
{},
|
|
23044
|
+
async () => {
|
|
23045
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23046
|
+
try {
|
|
23047
|
+
const data = await privateApi.getInterestLimits(auth);
|
|
23048
|
+
return toResult(data);
|
|
23049
|
+
} catch (e) {
|
|
23050
|
+
return toError(e);
|
|
23051
|
+
}
|
|
23052
|
+
}
|
|
23053
|
+
);
|
|
23054
|
+
server.tool(
|
|
23055
|
+
"okx_get_account_subtypes",
|
|
23056
|
+
"## \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",
|
|
23057
|
+
{},
|
|
23058
|
+
async () => {
|
|
23059
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23060
|
+
try {
|
|
23061
|
+
const data = await privateApi.getAccountSubtypes(auth);
|
|
23062
|
+
return toResult(data);
|
|
23063
|
+
} catch (e) {
|
|
23064
|
+
return toError(e);
|
|
23065
|
+
}
|
|
23066
|
+
}
|
|
23067
|
+
);
|
|
23068
|
+
server.tool(
|
|
23069
|
+
"okx_get_subaccount_trading_balance",
|
|
23070
|
+
"## \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",
|
|
23071
|
+
{
|
|
23072
|
+
subAcct: external_exports.string().describe("\u5B50\u8D26\u6237\u540D\u79F0\u3002\u5FC5\u586B")
|
|
23073
|
+
},
|
|
23074
|
+
async ({ subAcct }) => {
|
|
23075
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23076
|
+
try {
|
|
23077
|
+
const data = await privateApi.getSubAccountTradingBalance(auth, subAcct);
|
|
23078
|
+
return toResult(data);
|
|
23079
|
+
} catch (e) {
|
|
23080
|
+
return toError(e);
|
|
23081
|
+
}
|
|
23082
|
+
}
|
|
23083
|
+
);
|
|
23084
|
+
server.tool(
|
|
23085
|
+
"okx_preset_account_switch",
|
|
23086
|
+
"## \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",
|
|
23087
|
+
{
|
|
23088
|
+
acctLv: external_exports.string().describe("\u76EE\u6807\u8D26\u6237\u5C42\u7EA7\u3002\u5FC5\u586B")
|
|
23089
|
+
},
|
|
23090
|
+
async ({ acctLv }) => {
|
|
23091
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23092
|
+
try {
|
|
23093
|
+
const data = await privateApi.presetAccountSwitch(auth, { acctLv });
|
|
23094
|
+
return toResult(data);
|
|
23095
|
+
} catch (e) {
|
|
23096
|
+
return toError(e);
|
|
23097
|
+
}
|
|
23098
|
+
}
|
|
23099
|
+
);
|
|
23100
|
+
server.tool(
|
|
23101
|
+
"okx_activate_option",
|
|
23102
|
+
"## \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",
|
|
23103
|
+
{},
|
|
23104
|
+
async () => {
|
|
23105
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23106
|
+
try {
|
|
23107
|
+
const data = await privateApi.activateOption(auth, {});
|
|
23108
|
+
return toResult(data);
|
|
23109
|
+
} catch (e) {
|
|
23110
|
+
return toError(e);
|
|
23111
|
+
}
|
|
23112
|
+
}
|
|
23113
|
+
);
|
|
23114
|
+
server.tool(
|
|
23115
|
+
"okx_position_builder",
|
|
23116
|
+
"## \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",
|
|
23117
|
+
{
|
|
23118
|
+
body: external_exports.string().describe("\u8BD5\u7B97\u53C2\u6570JSON\u5B57\u7B26\u4E32\u3002\u5FC5\u586B")
|
|
23119
|
+
},
|
|
23120
|
+
async ({ body }) => {
|
|
23121
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23122
|
+
try {
|
|
23123
|
+
const parsed = JSON.parse(body);
|
|
23124
|
+
const data = await privateApi.positionBuilder(auth, parsed);
|
|
23125
|
+
return toResult(data);
|
|
23126
|
+
} catch (e) {
|
|
23127
|
+
return toError(e);
|
|
23128
|
+
}
|
|
23129
|
+
}
|
|
23130
|
+
);
|
|
23131
|
+
server.tool(
|
|
23132
|
+
"okx_set_auto_earn",
|
|
23133
|
+
"## \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",
|
|
23134
|
+
{
|
|
23135
|
+
ccy: external_exports.string().describe("\u5E01\u79CD\u3002\u5FC5\u586B"),
|
|
23136
|
+
autoEarn: external_exports.boolean().describe("\u662F\u5426\u5F00\u542F\u81EA\u52A8\u7406\u8D22\u3002true=\u5F00\u542F, false=\u5173\u95ED")
|
|
23137
|
+
},
|
|
23138
|
+
async ({ ccy, autoEarn }) => {
|
|
23139
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23140
|
+
try {
|
|
23141
|
+
const data = await privateApi.setAutoEarn(auth, { ccy, autoEarn });
|
|
23142
|
+
return toResult(data);
|
|
23143
|
+
} catch (e) {
|
|
23144
|
+
return toError(e);
|
|
23145
|
+
}
|
|
23146
|
+
}
|
|
23147
|
+
);
|
|
23148
|
+
server.tool(
|
|
23149
|
+
"okx_set_fee_type",
|
|
23150
|
+
"## \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",
|
|
23151
|
+
{
|
|
23152
|
+
feeType: external_exports.enum(["0", "1"]).describe("\u624B\u7EED\u8D39\u7C7B\u578B\u30020=\u6309\u5E01, 1=\u6309USDT")
|
|
23153
|
+
},
|
|
23154
|
+
async ({ feeType }) => {
|
|
23155
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23156
|
+
try {
|
|
23157
|
+
const data = await privateApi.setFeeType(auth, { feeType });
|
|
23158
|
+
return toResult(data);
|
|
23159
|
+
} catch (e) {
|
|
23160
|
+
return toError(e);
|
|
23161
|
+
}
|
|
23162
|
+
}
|
|
23163
|
+
);
|
|
23164
|
+
server.tool(
|
|
23165
|
+
"okx_set_settle_currency",
|
|
23166
|
+
"## \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",
|
|
23167
|
+
{
|
|
23168
|
+
ccy: external_exports.string().describe("\u7ED3\u7B97\u5E01\u79CD\uFF0C\u5982 USDT\u3002\u5FC5\u586B")
|
|
23169
|
+
},
|
|
23170
|
+
async ({ ccy }) => {
|
|
23171
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23172
|
+
try {
|
|
23173
|
+
const data = await privateApi.setSettleCurrency(auth, { ccy });
|
|
23174
|
+
return toResult(data);
|
|
23175
|
+
} catch (e) {
|
|
23176
|
+
return toError(e);
|
|
23177
|
+
}
|
|
23178
|
+
}
|
|
23179
|
+
);
|
|
23180
|
+
server.tool(
|
|
23181
|
+
"okx_get_position_builder_graph",
|
|
23182
|
+
"## \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",
|
|
23183
|
+
{},
|
|
23184
|
+
async () => {
|
|
23185
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23186
|
+
try {
|
|
23187
|
+
const data = await privateApi.getPositionBuilderGraph(auth);
|
|
23188
|
+
return toResult(data);
|
|
23189
|
+
} catch (e) {
|
|
23190
|
+
return toError(e);
|
|
23191
|
+
}
|
|
23192
|
+
}
|
|
23193
|
+
);
|
|
23194
|
+
server.tool(
|
|
23195
|
+
"okx_precheck_delta_neutral",
|
|
23196
|
+
"## \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",
|
|
23197
|
+
{},
|
|
23198
|
+
async () => {
|
|
23199
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23200
|
+
try {
|
|
23201
|
+
const data = await privateApi.precheckDeltaNeutral(auth, {});
|
|
23202
|
+
return toResult(data);
|
|
23203
|
+
} catch (e) {
|
|
23204
|
+
return toError(e);
|
|
23205
|
+
}
|
|
23206
|
+
}
|
|
23207
|
+
);
|
|
23208
|
+
server.tool(
|
|
23209
|
+
"okx_get_trade_fee",
|
|
23210
|
+
"## \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",
|
|
23211
|
+
{
|
|
23212
|
+
instType: external_exports.enum(INST_TYPE_TRADE).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
|
|
23213
|
+
instId: external_exports.string().optional().describe("\u4EA7\u54C1ID"),
|
|
23214
|
+
uly: external_exports.string().optional().describe("\u6807\u7684\u6307\u6570")
|
|
23215
|
+
},
|
|
23216
|
+
async ({ instType, instId, uly }) => {
|
|
23217
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
23218
|
+
try {
|
|
23219
|
+
const data = await privateApi.getTradeFee(auth, instType, instId, uly);
|
|
23220
|
+
return toResult(data);
|
|
23221
|
+
} catch (e) {
|
|
23222
|
+
return toError(e);
|
|
23223
|
+
}
|
|
23224
|
+
}
|
|
23225
|
+
);
|
|
22977
23226
|
}
|
|
22978
23227
|
|
|
22979
23228
|
// src/tools/trading.ts
|
|
@@ -24768,6 +25017,138 @@ function registerFinanceTools(server, auth) {
|
|
|
24768
25017
|
}
|
|
24769
25018
|
}
|
|
24770
25019
|
);
|
|
25020
|
+
server.tool(
|
|
25021
|
+
"okx_purchase_savings",
|
|
25022
|
+
"## \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",
|
|
25023
|
+
{
|
|
25024
|
+
ccy: external_exports.string().describe("\u5E01\u79CD\u3002\u5FC5\u586B"),
|
|
25025
|
+
amt: external_exports.string().describe("\u7533\u8D2D\u6570\u91CF\u3002\u5FC5\u586B"),
|
|
25026
|
+
side: external_exports.enum(["purchase", "redempt"]).describe("\u65B9\u5411\u3002purchase=\u7533\u8D2D, redempt=\u8D4E\u56DE"),
|
|
25027
|
+
rate: external_exports.string().optional().describe("\u5229\u7387")
|
|
25028
|
+
},
|
|
25029
|
+
async ({ ccy, amt, side, rate }) => {
|
|
25030
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25031
|
+
try {
|
|
25032
|
+
const body = { ccy, amt, side };
|
|
25033
|
+
if (rate) body.rate = rate;
|
|
25034
|
+
const data = await privateApi.purchaseSavings(auth, body);
|
|
25035
|
+
return toResult(data);
|
|
25036
|
+
} catch (e) {
|
|
25037
|
+
return toError(e);
|
|
25038
|
+
}
|
|
25039
|
+
}
|
|
25040
|
+
);
|
|
25041
|
+
server.tool(
|
|
25042
|
+
"okx_get_sfp_products",
|
|
25043
|
+
"## \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",
|
|
25044
|
+
{},
|
|
25045
|
+
async () => {
|
|
25046
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25047
|
+
try {
|
|
25048
|
+
const data = await privateApi.getSfpDcdProducts(auth);
|
|
25049
|
+
return toResult(data);
|
|
25050
|
+
} catch (e) {
|
|
25051
|
+
return toError(e);
|
|
25052
|
+
}
|
|
25053
|
+
}
|
|
25054
|
+
);
|
|
25055
|
+
server.tool(
|
|
25056
|
+
"okx_redeem_sfp",
|
|
25057
|
+
"## \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",
|
|
25058
|
+
{
|
|
25059
|
+
productId: external_exports.string().describe("\u4EA7\u54C1ID\u3002\u5FC5\u586B"),
|
|
25060
|
+
amt: external_exports.string().describe("\u8D4E\u56DE\u6570\u91CF\u3002\u5FC5\u586B")
|
|
25061
|
+
},
|
|
25062
|
+
async ({ productId, amt }) => {
|
|
25063
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25064
|
+
try {
|
|
25065
|
+
const data = await privateApi.redeemSfpDcd(auth, { productId, amt });
|
|
25066
|
+
return toResult(data);
|
|
25067
|
+
} catch (e) {
|
|
25068
|
+
return toError(e);
|
|
25069
|
+
}
|
|
25070
|
+
}
|
|
25071
|
+
);
|
|
25072
|
+
server.tool(
|
|
25073
|
+
"okx_get_staking_active_orders",
|
|
25074
|
+
"## \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",
|
|
25075
|
+
{},
|
|
25076
|
+
async () => {
|
|
25077
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25078
|
+
try {
|
|
25079
|
+
const data = await privateApi.getStakingActiveOrders(auth);
|
|
25080
|
+
return toResult(data);
|
|
25081
|
+
} catch (e) {
|
|
25082
|
+
return toError(e);
|
|
25083
|
+
}
|
|
25084
|
+
}
|
|
25085
|
+
);
|
|
25086
|
+
server.tool(
|
|
25087
|
+
"okx_cancel_redeem_eth",
|
|
25088
|
+
"## \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",
|
|
25089
|
+
{
|
|
25090
|
+
amt: external_exports.string().describe("\u53D6\u6D88\u8D4E\u56DE\u6570\u91CF\u3002\u5FC5\u586B")
|
|
25091
|
+
},
|
|
25092
|
+
async ({ amt }) => {
|
|
25093
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25094
|
+
try {
|
|
25095
|
+
const data = await privateApi.cancelRedeemEthStaking(auth, { amt });
|
|
25096
|
+
return toResult(data);
|
|
25097
|
+
} catch (e) {
|
|
25098
|
+
return toError(e);
|
|
25099
|
+
}
|
|
25100
|
+
}
|
|
25101
|
+
);
|
|
25102
|
+
server.tool(
|
|
25103
|
+
"okx_purchase_sol_staking",
|
|
25104
|
+
"## \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",
|
|
25105
|
+
{
|
|
25106
|
+
amt: external_exports.string().describe("\u8D28\u62BC\u6570\u91CF\uFF08SOL\uFF09\u3002\u5FC5\u586B")
|
|
25107
|
+
},
|
|
25108
|
+
async ({ amt }) => {
|
|
25109
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25110
|
+
try {
|
|
25111
|
+
const data = await privateApi.purchaseSolStaking(auth, { amt });
|
|
25112
|
+
return toResult(data);
|
|
25113
|
+
} catch (e) {
|
|
25114
|
+
return toError(e);
|
|
25115
|
+
}
|
|
25116
|
+
}
|
|
25117
|
+
);
|
|
25118
|
+
server.tool(
|
|
25119
|
+
"okx_redeem_sol_staking",
|
|
25120
|
+
"## \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",
|
|
25121
|
+
{
|
|
25122
|
+
amt: external_exports.string().describe("\u8D4E\u56DE\u6570\u91CF\uFF08SOL\uFF09\u3002\u5FC5\u586B")
|
|
25123
|
+
},
|
|
25124
|
+
async ({ amt }) => {
|
|
25125
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25126
|
+
try {
|
|
25127
|
+
const data = await privateApi.redeemSolStaking(auth, { amt });
|
|
25128
|
+
return toResult(data);
|
|
25129
|
+
} catch (e) {
|
|
25130
|
+
return toError(e);
|
|
25131
|
+
}
|
|
25132
|
+
}
|
|
25133
|
+
);
|
|
25134
|
+
server.tool(
|
|
25135
|
+
"okx_adjust_collateral",
|
|
25136
|
+
"## \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",
|
|
25137
|
+
{
|
|
25138
|
+
ccy: external_exports.string().describe("\u62B5\u62BC\u5E01\u79CD\u3002\u5FC5\u586B"),
|
|
25139
|
+
amt: external_exports.string().describe("\u8C03\u6574\u6570\u91CF\u3002\u5FC5\u586B"),
|
|
25140
|
+
side: external_exports.enum(["add", "reduce"]).describe("\u65B9\u5411\u3002add=\u589E\u52A0\u62B5\u62BC, reduce=\u51CF\u5C11\u62B5\u62BC")
|
|
25141
|
+
},
|
|
25142
|
+
async ({ ccy, amt, side }) => {
|
|
25143
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
25144
|
+
try {
|
|
25145
|
+
const data = await privateApi.adjustFlexibleLoanCollateral(auth, { ccy, amt, side });
|
|
25146
|
+
return toResult(data);
|
|
25147
|
+
} catch (e) {
|
|
25148
|
+
return toError(e);
|
|
25149
|
+
}
|
|
25150
|
+
}
|
|
25151
|
+
);
|
|
24771
25152
|
}
|
|
24772
25153
|
|
|
24773
25154
|
// src/tools/outcomes.ts
|
|
@@ -25721,6 +26102,177 @@ function registerCopyTools(server, auth) {
|
|
|
25721
26102
|
}
|
|
25722
26103
|
}
|
|
25723
26104
|
);
|
|
26105
|
+
server.tool(
|
|
26106
|
+
"okx_get_public_lead_traders",
|
|
26107
|
+
"## \u529F\u80FD\uFF1A\u516C\u5F00\u67E5\u8BE2\u5E26\u5355\u5458\u6392\u884C\u699C\n## \u573A\u666F\uFF1A\u7528\u4E8E\u53D1\u73B0\u4F18\u79C0\u5E26\u5355\u5458\u3001\u8BC4\u4F30\u5E26\u5355\u5458\u7EFC\u5408\u8868\u73B0\n## \u5173\u952E\u8BCD\uFF1A\u5E26\u5355\u5458\u6392\u884C, public lead traders, \u5E26\u5355\u6392\u884C\u699C, \u8DDF\u5355\u63A8\u8350\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\u770B\u6392\u884C\u699C \u2192 okx_get_lead_trader_stats \u770B\u8BE6\u60C5 \u2192 \u9009\u62E9\u8DDF\u5355",
|
|
26108
|
+
{},
|
|
26109
|
+
async () => {
|
|
26110
|
+
try {
|
|
26111
|
+
const data = await publicApi.getPublicLeadTraders();
|
|
26112
|
+
return toResult(data);
|
|
26113
|
+
} catch (e) {
|
|
26114
|
+
return toError(e);
|
|
26115
|
+
}
|
|
26116
|
+
}
|
|
26117
|
+
);
|
|
26118
|
+
server.tool(
|
|
26119
|
+
"okx_get_public_copy_config",
|
|
26120
|
+
"## \u529F\u80FD\uFF1A\u516C\u5F00\u67E5\u8BE2\u8DDF\u5355\u7CFB\u7EDF\u914D\u7F6E\n## \u573A\u666F\uFF1A\u7528\u4E8E\u4E86\u89E3\u8DDF\u5355\u89C4\u5219\u3001\u6700\u4F4E\u8DDF\u5355\u91D1\u989D\u3001\u6700\u5927\u8DDF\u5355\u6BD4\u4F8B\u7B49\n## \u5173\u952E\u8BCD\uFF1A\u8DDF\u5355\u914D\u7F6E, copy config, \u8DDF\u5355\u89C4\u5219, \u8DDF\u5355\u9650\u5236\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1APUBLIC \u2014 \u516C\u5F00\u63A5\u53E3\uFF0C\u4E0D\u9700\u8981 API Key\n## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~1KB\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u67E5\u770B\u89C4\u5219 \u2192 \u8BBE\u7F6E\u8DDF\u5355\u53C2\u6570",
|
|
26121
|
+
{},
|
|
26122
|
+
async () => {
|
|
26123
|
+
try {
|
|
26124
|
+
const data = await publicApi.getPublicCopyConfig();
|
|
26125
|
+
return toResult(data);
|
|
26126
|
+
} catch (e) {
|
|
26127
|
+
return toError(e);
|
|
26128
|
+
}
|
|
26129
|
+
}
|
|
26130
|
+
);
|
|
26131
|
+
server.tool(
|
|
26132
|
+
"okx_get_public_lead_trader_pnl",
|
|
26133
|
+
"## \u529F\u80FD\uFF1A\u516C\u5F00\u67E5\u8BE2\u5E26\u5355\u5458\u6536\u76CA\u6570\u636E\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8BC4\u4F30\u5E26\u5355\u5458\u7684\u5386\u53F2\u6536\u76CA\u8868\u73B0\n## \u5173\u952E\u8BCD\uFF1A\u5E26\u5355\u6536\u76CA, lead trader pnl, \u8DDF\u5355\u6536\u76CA, \u5E26\u5355\u76C8\u5229\u7387\n## \u53C2\u6570\uFF1A\n## - uniqueCode: \u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801\u3002\u5FC5\u586B\n## - lastDays: \u7EDF\u8BA1\u5468\u671F\uFF08\u5929\uFF09\uFF1A7/30/90/180\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\u5F31 ~500B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u770B\u6536\u76CA \u2192 okx_get_lead_trader_stats \u770B\u7EDF\u8BA1 \u2192 \u51B3\u5B9A\u662F\u5426\u8DDF\u5355",
|
|
26134
|
+
{
|
|
26135
|
+
uniqueCode: external_exports.string().describe("\u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801\u3002\u5FC5\u586B"),
|
|
26136
|
+
lastDays: external_exports.enum(["7", "30", "90", "180"]).describe("\u7EDF\u8BA1\u5468\u671F\uFF08\u5929\uFF09\uFF1A7/30/90/180")
|
|
26137
|
+
},
|
|
26138
|
+
async ({ uniqueCode, lastDays }) => {
|
|
26139
|
+
try {
|
|
26140
|
+
const data = await publicApi.getPublicLeadTraderPnl(uniqueCode, lastDays);
|
|
26141
|
+
return toResult(data);
|
|
26142
|
+
} catch (e) {
|
|
26143
|
+
return toError(e);
|
|
26144
|
+
}
|
|
26145
|
+
}
|
|
26146
|
+
);
|
|
26147
|
+
server.tool(
|
|
26148
|
+
"okx_get_copy_traders",
|
|
26149
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u8DDF\u5355\u6211\u7684\u4EA4\u6613\u5458\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u6709\u54EA\u4E9B\u4EA4\u6613\u5458\u5728\u8DDF\u5355\u81EA\u5DF1\u3001\u7BA1\u7406\u8DDF\u5355\u5173\u7CFB\n## \u5173\u952E\u8BCD\uFF1A\u6211\u7684\u8DDF\u5355\u8005, copy traders, \u8DDF\u5355\u5458, \u7C89\u4E1D\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\u8DDF\u5355\u8005 \u2192 \u7BA1\u7406\u8DDF\u5355\u5173\u7CFB",
|
|
26150
|
+
{},
|
|
26151
|
+
async () => {
|
|
26152
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26153
|
+
try {
|
|
26154
|
+
const data = await privateApi.getCopyTraders(auth);
|
|
26155
|
+
return toResult(data);
|
|
26156
|
+
} catch (e) {
|
|
26157
|
+
return toError(e);
|
|
26158
|
+
}
|
|
26159
|
+
}
|
|
26160
|
+
);
|
|
26161
|
+
server.tool(
|
|
26162
|
+
"okx_first_copy_settings",
|
|
26163
|
+
"## \u529F\u80FD\uFF1A\u9996\u6B21\u8BBE\u7F6E\u8DDF\u5355\uFF08\u521D\u59CB\u914D\u7F6E\u8DDF\u5355\u53C2\u6570\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u9996\u6B21\u5F00\u59CB\u8DDF\u5355\u65F6\u8BBE\u7F6E\u5168\u90E8\u53C2\u6570\n## \u5173\u952E\u8BCD\uFF1A\u9996\u6B21\u8DDF\u5355, first copy, \u521D\u6B21\u8DDF\u5355, \u8DDF\u5355\u521D\u59CB\u5316\n## \u53C2\u6570\uFF1A\n## - uniqueCode: \u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801\u3002\u5FC5\u586B\n## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SWAP/FUTURES\u3002\u5FC5\u586B\n## - amount: \u8DDF\u5355\u6570\u91CF\u3002\u5FC5\u586B\n## - amountType: \u6570\u91CF\u7C7B\u578B\u3002\u53EF\u9009\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u5F00\u59CB\u8DDF\u5355\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u9996\u6B21\u8DDF\u5355\u8BBE\u7F6E\u540E\u5C06\u81EA\u52A8\u590D\u5236\u4EA4\u6613\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_get_lead_trader_stats \u8BC4\u4F30 \u2192 \u672C\u5DE5\u5177\u9996\u6B21\u8DDF\u5355 \u2192 okx_get_copy_settings \u786E\u8BA4",
|
|
26164
|
+
{
|
|
26165
|
+
uniqueCode: external_exports.string().describe("\u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801\u3002\u5FC5\u586B"),
|
|
26166
|
+
instType: external_exports.enum(INST_TYPE_SWAP_FUT).describe("\u4EA7\u54C1\u7C7B\u578B\u3002SWAP=\u6C38\u7EED, FUTURES=\u4EA4\u5272"),
|
|
26167
|
+
amount: external_exports.string().describe("\u8DDF\u5355\u6570\u91CF\u3002\u5FC5\u586B"),
|
|
26168
|
+
amountType: external_exports.string().optional().describe("\u6570\u91CF\u7C7B\u578B\u30021=\u56FA\u5B9A\u5F20\u6570, 2=\u56FA\u5B9A\u91D1\u989D, 3=\u6BD4\u4F8B")
|
|
26169
|
+
},
|
|
26170
|
+
async ({ uniqueCode, instType, amount, amountType }) => {
|
|
26171
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26172
|
+
try {
|
|
26173
|
+
const body = { uniqueCode, instType, amount };
|
|
26174
|
+
if (amountType) body.amountType = amountType;
|
|
26175
|
+
const data = await privateApi.firstCopySettings(auth, body);
|
|
26176
|
+
return toResult(data);
|
|
26177
|
+
} catch (e) {
|
|
26178
|
+
return toError(e);
|
|
26179
|
+
}
|
|
26180
|
+
}
|
|
26181
|
+
);
|
|
26182
|
+
server.tool(
|
|
26183
|
+
"okx_get_unrealized_profit_sharing",
|
|
26184
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5E26\u5355\u672A\u5B9E\u73B0\u7684\u5206\u6210\u91D1\u989D\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5F53\u524D\u6301\u4ED3\u4E2D\u5C1A\u672A\u7ED3\u7B97\u7684\u6F5C\u5728\u5206\u6210\u6536\u5165\n## \u5173\u952E\u8BCD\uFF1A\u672A\u5B9E\u73B0\u5206\u6210, unrealized profit, \u5F85\u7ED3\u7B97\u5206\u6210, \u6301\u4ED3\u5206\u6210\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\u5F31 ~300B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u770B\u672A\u5B9E\u73B0\u5206\u6210 \u2192 okx_get_profit_sharing_total \u770B\u5DF2\u5B9E\u73B0\u5206\u6210",
|
|
26185
|
+
{},
|
|
26186
|
+
async () => {
|
|
26187
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26188
|
+
try {
|
|
26189
|
+
const data = await privateApi.getUnrealizedProfitSharing(auth);
|
|
26190
|
+
return toResult(data);
|
|
26191
|
+
} catch (e) {
|
|
26192
|
+
return toError(e);
|
|
26193
|
+
}
|
|
26194
|
+
}
|
|
26195
|
+
);
|
|
26196
|
+
server.tool(
|
|
26197
|
+
"okx_get_total_unrealized_profit_sharing",
|
|
26198
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5E26\u5355\u7D2F\u8BA1\u672A\u5B9E\u73B0\u5206\u6210\u603B\u989D\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u6240\u6709\u5E26\u5355\u7684\u7D2F\u8BA1\u6F5C\u5728\u5206\u6210\u6536\u5165\n## \u5173\u952E\u8BCD\uFF1A\u7D2F\u8BA1\u672A\u5B9E\u73B0, total unrealized, \u672A\u5B9E\u73B0\u603B\u989D, \u6F5C\u5728\u5206\u6210\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\u5F31 ~300B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u770B\u7D2F\u8BA1\u672A\u5B9E\u73B0 \u2192 okx_get_unrealized_profit_sharing \u770B\u660E\u7EC6",
|
|
26199
|
+
{},
|
|
26200
|
+
async () => {
|
|
26201
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26202
|
+
try {
|
|
26203
|
+
const data = await privateApi.getTotalUnrealizedProfitSharing(auth);
|
|
26204
|
+
return toResult(data);
|
|
26205
|
+
} catch (e) {
|
|
26206
|
+
return toError(e);
|
|
26207
|
+
}
|
|
26208
|
+
}
|
|
26209
|
+
);
|
|
26210
|
+
server.tool(
|
|
26211
|
+
"okx_amend_profit_sharing_ratio",
|
|
26212
|
+
"## \u529F\u80FD\uFF1A\u4FEE\u6539\u5E26\u5355\u5206\u6210\u6BD4\u4F8B\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8C03\u6574\u8DDF\u5355\u8005\u7684\u76C8\u5229\u5206\u6210\u6BD4\u4F8B\n## \u5173\u952E\u8BCD\uFF1A\u4FEE\u6539\u5206\u6210, profit ratio, \u5206\u6210\u6BD4\u4F8B, \u8C03\u6574\u5206\u6210\n## \u53C2\u6570\uFF1A\n## - profitSharingRatio: \u5206\u6210\u6BD4\u4F8B\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u4FEE\u6539\u5206\u6210\u6BD4\u4F8B\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u4FEE\u6539\u5206\u6210\u6BD4\u4F8B\u5F71\u54CD\u6536\u5165\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1Aokx_get_profit_sharing_total \u770B\u5F53\u524D\u5206\u6210 \u2192 \u672C\u5DE5\u5177\u4FEE\u6539\u6BD4\u4F8B",
|
|
26213
|
+
{
|
|
26214
|
+
profitSharingRatio: external_exports.string().describe("\u5206\u6210\u6BD4\u4F8B\u3002\u5FC5\u586B")
|
|
26215
|
+
},
|
|
26216
|
+
async ({ profitSharingRatio }) => {
|
|
26217
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26218
|
+
try {
|
|
26219
|
+
const data = await privateApi.amendProfitSharingRatio(auth, { profitSharingRatio });
|
|
26220
|
+
return toResult(data);
|
|
26221
|
+
} catch (e) {
|
|
26222
|
+
return toError(e);
|
|
26223
|
+
}
|
|
26224
|
+
}
|
|
26225
|
+
);
|
|
26226
|
+
server.tool(
|
|
26227
|
+
"okx_amend_copy_settings",
|
|
26228
|
+
"## \u529F\u80FD\uFF1A\u4FEE\u6539\u8DDF\u5355\u8BBE\u7F6E\n## \u573A\u666F\uFF1A\u7528\u4E8E\u8C03\u6574\u5DF2\u6709\u8DDF\u5355\u7684\u53C2\u6570\u3001\u66F4\u65B0\u8DDF\u5355\u6570\u91CF\u6216\u7C7B\u578B\n## \u5173\u952E\u8BCD\uFF1A\u4FEE\u6539\u8DDF\u5355, amend copy, \u8DDF\u5355\u8C03\u6574, \u8DDF\u5355\u53C2\u6570\u4FEE\u6539\n## \u53C2\u6570\uFF1A\n## - subPosId: \u5B50\u6301\u4ED3ID\u3002\u5FC5\u586B\n## - amount: \u65B0\u8DDF\u5355\u6570\u91CF\u3002\u53EF\u9009\n## - amountType: \u65B0\u6570\u91CF\u7C7B\u578B\u3002\u53EF\u9009\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u4FEE\u6539\u8DDF\u5355\u8BBE\u7F6E\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u4FEE\u6539\u8DDF\u5355\u53C2\u6570\u5F71\u54CD\u540E\u7EED\u8DDF\u5355\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_get_copy_settings \u67E5\u770B\u5F53\u524D \u2192 \u672C\u5DE5\u5177\u4FEE\u6539 \u2192 \u786E\u8BA4\u53D8\u66F4",
|
|
26229
|
+
{
|
|
26230
|
+
subPosId: external_exports.string().describe("\u5B50\u6301\u4ED3ID\u3002\u5FC5\u586B"),
|
|
26231
|
+
amount: external_exports.string().optional().describe("\u65B0\u8DDF\u5355\u6570\u91CF"),
|
|
26232
|
+
amountType: external_exports.string().optional().describe("\u65B0\u6570\u91CF\u7C7B\u578B\u30021=\u56FA\u5B9A\u5F20\u6570, 2=\u56FA\u5B9A\u91D1\u989D, 3=\u6BD4\u4F8B")
|
|
26233
|
+
},
|
|
26234
|
+
async ({ subPosId, amount, amountType }) => {
|
|
26235
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26236
|
+
try {
|
|
26237
|
+
const body = { subPosId };
|
|
26238
|
+
if (amount) body.amount = amount;
|
|
26239
|
+
if (amountType) body.amountType = amountType;
|
|
26240
|
+
const data = await privateApi.amendCopySettings(auth, body);
|
|
26241
|
+
return toResult(data);
|
|
26242
|
+
} catch (e) {
|
|
26243
|
+
return toError(e);
|
|
26244
|
+
}
|
|
26245
|
+
}
|
|
26246
|
+
);
|
|
26247
|
+
server.tool(
|
|
26248
|
+
"okx_get_public_preference_currency",
|
|
26249
|
+
"## \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",
|
|
26250
|
+
{
|
|
26251
|
+
uniqueCode: external_exports.string().describe("\u5E26\u5355\u5458\u552F\u4E00\u6807\u8BC6\u7801\u3002\u5FC5\u586B")
|
|
26252
|
+
},
|
|
26253
|
+
async ({ uniqueCode }) => {
|
|
26254
|
+
try {
|
|
26255
|
+
const data = await publicApi.getPublicPreferenceCurrency(uniqueCode);
|
|
26256
|
+
return toResult(data);
|
|
26257
|
+
} catch (e) {
|
|
26258
|
+
return toError(e);
|
|
26259
|
+
}
|
|
26260
|
+
}
|
|
26261
|
+
);
|
|
26262
|
+
server.tool(
|
|
26263
|
+
"okx_stop_copy_trading",
|
|
26264
|
+
"## \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",
|
|
26265
|
+
{},
|
|
26266
|
+
async () => {
|
|
26267
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26268
|
+
try {
|
|
26269
|
+
const data = await privateApi.stopCopyTrading(auth, {});
|
|
26270
|
+
return toResult(data);
|
|
26271
|
+
} catch (e) {
|
|
26272
|
+
return toError(e);
|
|
26273
|
+
}
|
|
26274
|
+
}
|
|
26275
|
+
);
|
|
25724
26276
|
}
|
|
25725
26277
|
|
|
25726
26278
|
// src/tools/signal.ts
|
|
@@ -26004,6 +26556,130 @@ function registerRfqTools(server, auth) {
|
|
|
26004
26556
|
}
|
|
26005
26557
|
}
|
|
26006
26558
|
);
|
|
26559
|
+
server.tool(
|
|
26560
|
+
"okx_get_rfq_counterparties",
|
|
26561
|
+
"## \u529F\u80FD\uFF1A\u83B7\u53D6RFQ\u5BF9\u624B\u65B9\u5217\u8868\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u53EF\u8BE2\u4EF7\u7684\u505A\u5E02\u5546\u548C\u5BF9\u624B\u65B9\n## \u5173\u952E\u8BCD\uFF1ARFQ\u5BF9\u624B\u65B9, counterparties, \u62A5\u4EF7\u5BF9\u624B, \u8BE2\u4EF7\u5BF9\u624B\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\u5BF9\u624B\u65B9 \u2192 okx_create_rfq \u53D1\u8D77\u8BE2\u4EF7",
|
|
26562
|
+
{},
|
|
26563
|
+
async () => {
|
|
26564
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26565
|
+
try {
|
|
26566
|
+
const data = await privateApi.getRfqCounterparties(auth);
|
|
26567
|
+
return toResult(data);
|
|
26568
|
+
} catch (e) {
|
|
26569
|
+
return toError(e);
|
|
26570
|
+
}
|
|
26571
|
+
}
|
|
26572
|
+
);
|
|
26573
|
+
server.tool(
|
|
26574
|
+
"okx_cancel_rfq",
|
|
26575
|
+
"## \u529F\u80FD\uFF1A\u53D6\u6D88RFQ\u62A5\u4EF7\u8BF7\u6C42\n## \u573A\u666F\uFF1A\u7528\u4E8E\u53D6\u6D88\u5DF2\u53D1\u9001\u4F46\u672A\u6536\u5230\u62A5\u4EF7\u7684\u8BE2\u4EF7\n## \u5173\u952E\u8BCD\uFF1A\u53D6\u6D88\u8BE2\u4EF7, cancel rfq, \u64A4\u9500\u8BE2\u4EF7\n## \u53C2\u6570\uFF1A\n## - rfqId: RFQ ID\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u53D6\u6D88\u8BE2\u4EF7\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u53D6\u6D88\u8BE2\u4EF7\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1Aokx_get_rfqs \u67E5\u770B\u8BE2\u4EF7 \u2192 \u672C\u5DE5\u5177\u53D6\u6D88 \u2192 \u91CD\u65B0\u8BE2\u4EF7",
|
|
26576
|
+
{
|
|
26577
|
+
rfqId: external_exports.string().describe("RFQ ID\u3002\u5FC5\u586B")
|
|
26578
|
+
},
|
|
26579
|
+
async ({ rfqId }) => {
|
|
26580
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26581
|
+
try {
|
|
26582
|
+
const data = await privateApi.cancelRfq(auth, { rfqId });
|
|
26583
|
+
return toResult(data);
|
|
26584
|
+
} catch (e) {
|
|
26585
|
+
return toError(e);
|
|
26586
|
+
}
|
|
26587
|
+
}
|
|
26588
|
+
);
|
|
26589
|
+
server.tool(
|
|
26590
|
+
"okx_cancel_batch_rfqs",
|
|
26591
|
+
"## \u529F\u80FD\uFF1A\u6279\u91CF\u53D6\u6D88RFQ\u62A5\u4EF7\u8BF7\u6C42\n## \u573A\u666F\uFF1A\u7528\u4E8E\u540C\u65F6\u53D6\u6D88\u591A\u4E2A\u8BE2\u4EF7\n## \u5173\u952E\u8BCD\uFF1A\u6279\u91CF\u53D6\u6D88, cancel batch rfqs, \u6279\u91CF\u64A4\u9500\u8BE2\u4EF7\n## \u53C2\u6570\uFF1A\n## - rfqIds: RFQ ID\u6570\u7EC4\uFF08JSON\u6570\u7EC4\u5B57\u7B26\u4E32\uFF09\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u6279\u91CF\u53D6\u6D88\u8BE2\u4EF7\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u6279\u91CF\u53D6\u6D88\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~2KB\n## \u5173\u8054\uFF1Aokx_get_rfqs \u67E5\u770B\u8BE2\u4EF7 \u2192 \u672C\u5DE5\u5177\u6279\u91CF\u53D6\u6D88",
|
|
26592
|
+
{
|
|
26593
|
+
rfqIds: external_exports.string().describe(`RFQ ID\u6570\u7EC4JSON\u5B57\u7B26\u4E32\uFF0C\u5982 '["123","456"]'`)
|
|
26594
|
+
},
|
|
26595
|
+
async ({ rfqIds }) => {
|
|
26596
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26597
|
+
try {
|
|
26598
|
+
const parsed = JSON.parse(rfqIds);
|
|
26599
|
+
const data = await privateApi.cancelBatchRfqs(auth, parsed);
|
|
26600
|
+
return toResult(data);
|
|
26601
|
+
} catch (e) {
|
|
26602
|
+
return toError(e);
|
|
26603
|
+
}
|
|
26604
|
+
}
|
|
26605
|
+
);
|
|
26606
|
+
server.tool(
|
|
26607
|
+
"okx_cancel_all_rfqs",
|
|
26608
|
+
"## \u529F\u80FD\uFF1A\u53D6\u6D88\u6240\u6709RFQ\u62A5\u4EF7\u8BF7\u6C42\n## \u573A\u666F\uFF1A\u7528\u4E8E\u4E00\u952E\u6E05\u7A7A\u6240\u6709\u672A\u5B8C\u6210\u7684\u8BE2\u4EF7\n## \u5173\u952E\u8BCD\uFF1A\u5168\u90E8\u53D6\u6D88, cancel all rfqs, \u6E05\u7A7A\u8BE2\u4EF7\n## \u53C2\u6570\uFF1A\u65E0\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u53D6\u6D88\u6240\u6709\u8BE2\u4EF7\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u53D6\u6D88\u5168\u90E8\u8BE2\u4EF7\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u4E00\u952E\u53D6\u6D88\u6240\u6709 \u2192 okx_create_rfq \u91CD\u65B0\u8BE2\u4EF7",
|
|
26609
|
+
{},
|
|
26610
|
+
async () => {
|
|
26611
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26612
|
+
try {
|
|
26613
|
+
const data = await privateApi.cancelAllRfqs(auth);
|
|
26614
|
+
return toResult(data);
|
|
26615
|
+
} catch (e) {
|
|
26616
|
+
return toError(e);
|
|
26617
|
+
}
|
|
26618
|
+
}
|
|
26619
|
+
);
|
|
26620
|
+
server.tool(
|
|
26621
|
+
"okx_create_quote",
|
|
26622
|
+
"## \u529F\u80FD\uFF1A\u521B\u5EFA\u62A5\u4EF7\uFF08\u56DE\u590DRFQ\u8BE2\u4EF7\uFF09\n## \u573A\u666F\uFF1A\u7528\u4E8E\u505A\u5E02\u5546\u56DE\u590D\u8BE2\u4EF7\u3001\u63D0\u4F9B\u62A5\u4EF7\n## \u53C2\u6570\uFF1A\n## - rfqId: RFQ ID\u3002\u5FC5\u586B\n## - quotePx: \u62A5\u4EF7\u4EF7\u683C\u3002\u5FC5\u586B\n## - sz: \u62A5\u4EF7\u6570\u91CF\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u53D1\u9001\u62A5\u4EF7\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u53D1\u9001\u62A5\u4EF7\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B\n## \u5173\u8054\uFF1Aokx_get_rfqs \u67E5\u770B\u8BE2\u4EF7 \u2192 \u672C\u5DE5\u5177\u62A5\u4EF7 \u2192 okx_get_quotes \u67E5\u770B\u62A5\u4EF7",
|
|
26623
|
+
{
|
|
26624
|
+
rfqId: external_exports.string().describe("RFQ ID\u3002\u5FC5\u586B"),
|
|
26625
|
+
quotePx: external_exports.string().describe("\u62A5\u4EF7\u4EF7\u683C\u3002\u5FC5\u586B"),
|
|
26626
|
+
sz: external_exports.string().describe("\u62A5\u4EF7\u6570\u91CF\u3002\u5FC5\u586B")
|
|
26627
|
+
},
|
|
26628
|
+
async ({ rfqId, quotePx, sz }) => {
|
|
26629
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26630
|
+
try {
|
|
26631
|
+
const data = await privateApi.createRfqQuote(auth, { rfqId, quotePx, sz });
|
|
26632
|
+
return toResult(data);
|
|
26633
|
+
} catch (e) {
|
|
26634
|
+
return toError(e);
|
|
26635
|
+
}
|
|
26636
|
+
}
|
|
26637
|
+
);
|
|
26638
|
+
server.tool(
|
|
26639
|
+
"okx_cancel_quote",
|
|
26640
|
+
"## \u529F\u80FD\uFF1A\u53D6\u6D88\u5DF2\u53D1\u9001\u7684\u62A5\u4EF7\n## \u573A\u666F\uFF1A\u7528\u4E8E\u53D6\u6D88\u5C1A\u672A\u88AB\u63A5\u53D7\u7684\u62A5\u4EF7\n## \u53C2\u6570\uFF1A\n## - rfqId: RFQ ID\u3002\u5FC5\u586B\n## - quoteId: \u62A5\u4EF7ID\u3002\u5FC5\u586B\n## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u5C06\u53D6\u6D88\u62A5\u4EF7\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u98CE\u9669\uFF1AWRITE \u2014 \u53D6\u6D88\u62A5\u4EF7\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4\n## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~300B\n## \u5173\u8054\uFF1Aokx_get_quotes \u67E5\u770B\u62A5\u4EF7 \u2192 \u672C\u5DE5\u5177\u53D6\u6D88 \u2192 \u91CD\u65B0\u62A5\u4EF7",
|
|
26641
|
+
{
|
|
26642
|
+
rfqId: external_exports.string().describe("RFQ ID\u3002\u5FC5\u586B"),
|
|
26643
|
+
quoteId: external_exports.string().describe("\u62A5\u4EF7ID\u3002\u5FC5\u586B")
|
|
26644
|
+
},
|
|
26645
|
+
async ({ rfqId, quoteId }) => {
|
|
26646
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26647
|
+
try {
|
|
26648
|
+
const data = await privateApi.cancelRfqQuote(auth, { rfqId, quoteId });
|
|
26649
|
+
return toResult(data);
|
|
26650
|
+
} catch (e) {
|
|
26651
|
+
return toError(e);
|
|
26652
|
+
}
|
|
26653
|
+
}
|
|
26654
|
+
);
|
|
26655
|
+
server.tool(
|
|
26656
|
+
"okx_get_rfq_trades",
|
|
26657
|
+
"## \u529F\u80FD\uFF1A\u67E5\u8BE2RFQ\u6210\u4EA4\u8BB0\u5F55\n## \u573A\u666F\uFF1A\u7528\u4E8E\u67E5\u770B\u5927\u5B97\u4EA4\u6613\u7684\u6210\u4EA4\u5386\u53F2\n## \u5173\u952E\u8BCD\uFF1ARFQ\u6210\u4EA4, rfq trades, \u5927\u5B97\u6210\u4EA4, \u8BE2\u4EF7\u6210\u4EA4\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_rfqs \u67E5\u8BE2\u4EF7 \u2192 \u672C\u5DE5\u5177\u67E5\u6210\u4EA4 \u2192 \u6838\u5BF9\u5927\u5B97\u4EA4\u6613",
|
|
26658
|
+
{},
|
|
26659
|
+
async () => {
|
|
26660
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26661
|
+
try {
|
|
26662
|
+
const data = await privateApi.getRfqTrades(auth);
|
|
26663
|
+
return toResult(data);
|
|
26664
|
+
} catch (e) {
|
|
26665
|
+
return toError(e);
|
|
26666
|
+
}
|
|
26667
|
+
}
|
|
26668
|
+
);
|
|
26669
|
+
server.tool(
|
|
26670
|
+
"okx_reset_rfq_mmp",
|
|
26671
|
+
"## \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",
|
|
26672
|
+
{},
|
|
26673
|
+
async () => {
|
|
26674
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
26675
|
+
try {
|
|
26676
|
+
const data = await privateApi.resetRfqMmp(auth);
|
|
26677
|
+
return toResult(data);
|
|
26678
|
+
} catch (e) {
|
|
26679
|
+
return toError(e);
|
|
26680
|
+
}
|
|
26681
|
+
}
|
|
26682
|
+
);
|
|
26007
26683
|
}
|
|
26008
26684
|
|
|
26009
26685
|
// src/tools/affiliate.ts
|