hvip-mcp-server 0.2.0 → 0.2.2
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 +259 -2
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -21187,7 +21187,9 @@ var publicApi = {
|
|
|
21187
21187
|
getSpreadCandles: (sprdId, bar, limit) => request("GET", "/api/v5/sprd/candles", { params: { sprdId, bar, limit } }),
|
|
21188
21188
|
// ── 公告(公共) ──────────────────────────────────────────────────────────────
|
|
21189
21189
|
getAnnouncements: (annType, lang) => request("GET", "/api/v5/support/announcements", { params: { annType, lang } }),
|
|
21190
|
-
getAnnouncementTypes: () => request("GET", "/api/v5/support/announcement-types")
|
|
21190
|
+
getAnnouncementTypes: () => request("GET", "/api/v5/support/announcement-types"),
|
|
21191
|
+
getUnderlying: (instType) => request("GET", "/api/v5/public/underlying", { params: { instType } }),
|
|
21192
|
+
getTakerFlow: (ccy, instType, begin, end) => request("GET", "/api/v5/rubik/stat/taker-flow", { params: { ccy, instType, begin, end } })
|
|
21191
21193
|
};
|
|
21192
21194
|
var privateApi = {
|
|
21193
21195
|
getBalance: (auth, ccy) => request("GET", "/api/v5/account/balance", { params: { ccy }, auth }),
|
|
@@ -21211,6 +21213,12 @@ var privateApi = {
|
|
|
21211
21213
|
batchOrders: (auth, body) => request("POST", "/api/v5/trade/batch-orders", { body, auth }),
|
|
21212
21214
|
cancelBatchOrders: (auth, body) => request("POST", "/api/v5/trade/cancel-batch-orders", { body, auth }),
|
|
21213
21215
|
closePosition: (auth, body) => request("POST", "/api/v5/trade/close-position", { body, auth }),
|
|
21216
|
+
amendBatchOrders: (auth, body) => request("POST", "/api/v5/trade/amend-batch-orders", { body, auth }),
|
|
21217
|
+
getFillsHistory: (auth, instType, instId, limit) => request("GET", "/api/v5/trade/fills-history", { params: { instType, instId, limit }, auth }),
|
|
21218
|
+
massCancel: (auth, instType, instFamily) => request("POST", "/api/v5/trade/mass-cancel", { body: { instType, instFamily }, auth }),
|
|
21219
|
+
getMaxLoan: (auth, instId, mgnMode) => request("GET", "/api/v5/account/max-loan", { params: { instId, mgnMode }, auth }),
|
|
21220
|
+
getInterestAccrued: (auth, instId, ccy, limit) => request("GET", "/api/v5/account/interest-accrued", { params: { instId, ccy, limit }, auth }),
|
|
21221
|
+
getMarginBalance: (auth, instId, mgnMode) => request("GET", "/api/v5/account/margin-balance", { params: { instId, mgnMode }, auth }),
|
|
21214
21222
|
getOrdersPending: (auth, instType, instId, ordType) => request("GET", "/api/v5/trade/orders-pending", { params: { instType, instId, ordType }, auth }),
|
|
21215
21223
|
getFills: (auth, instType, instId, limit) => request("GET", "/api/v5/trade/fills", { params: { instType, instId, limit }, auth }),
|
|
21216
21224
|
getOrdersHistoryArchive: (auth, instType, limit) => request("GET", "/api/v5/trade/orders-history-archive", { params: { instType, limit }, auth }),
|
|
@@ -21790,6 +21798,58 @@ function registerPublicTools(server) {
|
|
|
21790
21798
|
}
|
|
21791
21799
|
}
|
|
21792
21800
|
);
|
|
21801
|
+
server.tool(
|
|
21802
|
+
"okx_get_underlying",
|
|
21803
|
+
`## \u529F\u80FD\uFF1A\u67E5\u8BE2OKX\u652F\u6301\u7684\u6807\u7684\u6307\u6570\u5217\u8868
|
|
21804
|
+
## \u573A\u666F\uFF1A\u7528\u4E8E\u83B7\u53D6\u53EF\u4EA4\u6613\u7684\u5E95\u5C42\u8D44\u4EA7\u5217\u8868\u3001\u7B5B\u9009\u7279\u5B9A\u7C7B\u578B\u7684\u5408\u7EA6\u6807\u7684
|
|
21805
|
+
## \u5173\u952E\u8BCD\uFF1A\u6807\u7684\u6307\u6570, \u5E95\u5C42\u8D44\u4EA7, underlying, \u5408\u7EA6\u6807\u7684, \u6307\u6570\u5217\u8868
|
|
21806
|
+
## \u53C2\u6570\uFF1A
|
|
21807
|
+
## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SWAP/FUTURES/OPTION\u3002\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8
|
|
21808
|
+
## \u9274\u6743\uFF1APUBLIC \u2014 \u516C\u5F00\u63A5\u53E3\uFF0C\u4E0D\u9700\u8981 API Key
|
|
21809
|
+
## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528
|
|
21810
|
+
## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~2KB
|
|
21811
|
+
## \u5173\u8054\uFF1A\u672C\u5DE5\u5177\u83B7\u53D6\u6807\u7684 \u2192 okx_get_instruments \u67E5\u5177\u4F53\u4EA7\u54C1 \u2192 okx_get_ticker \u67E5\u884C\u60C5`,
|
|
21812
|
+
{
|
|
21813
|
+
instType: external_exports.enum(["SWAP", "FUTURES", "OPTION"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B\uFF0C\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8")
|
|
21814
|
+
},
|
|
21815
|
+
async ({ instType }) => {
|
|
21816
|
+
try {
|
|
21817
|
+
const data = await publicApi.getUnderlying(instType);
|
|
21818
|
+
return toResult(data);
|
|
21819
|
+
} catch (e) {
|
|
21820
|
+
return toError(e);
|
|
21821
|
+
}
|
|
21822
|
+
}
|
|
21823
|
+
);
|
|
21824
|
+
server.tool(
|
|
21825
|
+
"okx_get_taker_flow",
|
|
21826
|
+
`## \u529F\u80FD\uFF1A\u83B7\u53D6\u4E3B\u52A8\u4E70\u5356\u6210\u4EA4\u6570\u636E\uFF08Taker\u6D41\u91CF\uFF09
|
|
21827
|
+
## \u573A\u666F\uFF1A\u7528\u4E8E\u5224\u65AD\u591A\u7A7A\u529B\u91CF\u5BF9\u6BD4\uFF08\u4E70\u5165Taker\u591A=\u591A\u5934\u5F3A\uFF09\u3001\u5206\u6790\u8D44\u91D1\u6D41\u5411\u8D8B\u52BF
|
|
21828
|
+
## \u5173\u952E\u8BCD\uFF1A\u4E3B\u52A8\u6210\u4EA4, taker flow, \u4E70\u5356\u529B\u91CF, \u8D44\u91D1\u6D41\u5411, \u4E3B\u52A8\u4E70\u5356
|
|
21829
|
+
## \u53C2\u6570\uFF1A
|
|
21830
|
+
## - ccy: \u5E01\u79CD\uFF0C\u5982 BTC\u3002\u5FC5\u586B
|
|
21831
|
+
## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SWAP/FUTURES\u3002\u53EF\u9009
|
|
21832
|
+
## - begin: \u5F00\u59CB\u65F6\u95F4\u6233(ms)\u3002\u53EF\u9009
|
|
21833
|
+
## - end: \u7ED3\u675F\u65F6\u95F4\u6233(ms)\u3002\u53EF\u9009
|
|
21834
|
+
## \u9274\u6743\uFF1APUBLIC \u2014 \u516C\u5F00\u63A5\u53E3\uFF0C\u4E0D\u9700\u8981 API Key
|
|
21835
|
+
## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528
|
|
21836
|
+
## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~5KB
|
|
21837
|
+
## \u5173\u8054\uFF1Aokx_get_taker_volume \u67E5\u6210\u4EA4\u91CF \u2192 \u672C\u5DE5\u5177\u67E5Taker\u6D41\u5411 \u2192 \u5224\u65AD\u591A\u7A7A\u65B9\u5411`,
|
|
21838
|
+
{
|
|
21839
|
+
ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 BTC\u3002\u5FC5\u586B"),
|
|
21840
|
+
instType: external_exports.enum(["SWAP", "FUTURES"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
|
|
21841
|
+
begin: external_exports.string().optional().describe("\u5F00\u59CB\u65F6\u95F4\u6233(ms)"),
|
|
21842
|
+
end: external_exports.string().optional().describe("\u7ED3\u675F\u65F6\u95F4\u6233(ms)")
|
|
21843
|
+
},
|
|
21844
|
+
async ({ ccy, instType, begin, end }) => {
|
|
21845
|
+
try {
|
|
21846
|
+
const data = await publicApi.getTakerFlow(ccy, instType, begin, end);
|
|
21847
|
+
return toResult(data);
|
|
21848
|
+
} catch (e) {
|
|
21849
|
+
return toError(e);
|
|
21850
|
+
}
|
|
21851
|
+
}
|
|
21852
|
+
);
|
|
21793
21853
|
}
|
|
21794
21854
|
|
|
21795
21855
|
// src/tools/account.ts
|
|
@@ -22019,6 +22079,86 @@ function registerAccountTools(server, auth) {
|
|
|
22019
22079
|
}
|
|
22020
22080
|
}
|
|
22021
22081
|
);
|
|
22082
|
+
server.tool(
|
|
22083
|
+
"okx_get_max_loan",
|
|
22084
|
+
`## \u529F\u80FD\uFF1A\u67E5\u8BE2\u67D0\u4EA7\u54C1\u7684\u6700\u5927\u53EF\u501F\u6570\u91CF
|
|
22085
|
+
## \u573A\u666F\uFF1A\u7528\u4E8E\u6760\u6746\u4EA4\u6613\u524D\u5224\u65AD\u6700\u5927\u53EF\u501F\u989D\u5EA6\u3001\u8BA1\u7B97\u4FDD\u8BC1\u91D1\u4F7F\u7528\u7387
|
|
22086
|
+
## \u5173\u952E\u8BCD\uFF1A\u6700\u5927\u53EF\u501F, \u501F\u6B3E\u4E0A\u9650, max loan, \u6760\u6746\u501F\u6B3E, \u53EF\u501F\u989D\u5EA6
|
|
22087
|
+
## \u53C2\u6570\uFF1A
|
|
22088
|
+
## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B
|
|
22089
|
+
## - mgnMode: \u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3\u3002\u5FC5\u586B
|
|
22090
|
+
## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09
|
|
22091
|
+
## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528
|
|
22092
|
+
## \u8FD4\u56DE\u91CF\uFF1A\u5355\u4EA7\u54C1 ~200B \u2014 \u5FAE\u5C0F
|
|
22093
|
+
## \u5173\u8054\uFF1Aokx_get_max_size \u67E5\u53EF\u5F00\u6570\u91CF \u2192 \u672C\u5DE5\u5177\u67E5\u53EF\u501F\u989D\u5EA6 \u2192 okx_place_order \u4E0B\u5355`,
|
|
22094
|
+
{
|
|
22095
|
+
instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B"),
|
|
22096
|
+
mgnMode: external_exports.enum(["cross", "isolated"]).describe("\u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3")
|
|
22097
|
+
},
|
|
22098
|
+
async ({ instId, mgnMode }) => {
|
|
22099
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22100
|
+
try {
|
|
22101
|
+
const data = await privateApi.getMaxLoan(auth, instId, mgnMode);
|
|
22102
|
+
return toResult(data);
|
|
22103
|
+
} catch (e) {
|
|
22104
|
+
return toError(e);
|
|
22105
|
+
}
|
|
22106
|
+
}
|
|
22107
|
+
);
|
|
22108
|
+
server.tool(
|
|
22109
|
+
"okx_get_interest_accrued",
|
|
22110
|
+
`## \u529F\u80FD\uFF1A\u67E5\u8BE2\u501F\u5E01\u5229\u606F\u7D2F\u8BA1\u660E\u7EC6
|
|
22111
|
+
## \u573A\u666F\uFF1A\u7528\u4E8E\u8BA1\u7B97\u5F53\u524D\u501F\u5E01\u6210\u672C\u3001\u8BC4\u4F30\u6301\u4ED3\u5229\u606F\u8D1F\u62C5\u3001\u51B3\u5B9A\u662F\u5426\u63D0\u524D\u8FD8\u6B3E
|
|
22112
|
+
## \u5173\u952E\u8BCD\uFF1A\u501F\u5E01\u5229\u606F, \u5229\u606F\u660E\u7EC6, interest accrued, \u501F\u6B3E\u6210\u672C, \u5229\u606F\u7D2F\u8BA1
|
|
22113
|
+
## \u53C2\u6570\uFF1A
|
|
22114
|
+
## - instId: \u4EA7\u54C1ID\uFF0C\u53EF\u9009
|
|
22115
|
+
## - ccy: \u5E01\u79CD\uFF0C\u5982 USDT\u3002\u53EF\u9009
|
|
22116
|
+
## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100
|
|
22117
|
+
## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09
|
|
22118
|
+
## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528
|
|
22119
|
+
## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~2KB
|
|
22120
|
+
## \u5173\u8054\uFF1Aokx_get_balance \u67E5\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u67E5\u5229\u606F \u2192 \u8BA1\u7B97\u51C0\u6536\u76CA`,
|
|
22121
|
+
{
|
|
22122
|
+
instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u53EF\u9009"),
|
|
22123
|
+
ccy: external_exports.string().optional().describe("\u5E01\u79CD\uFF0C\u5982 USDT"),
|
|
22124
|
+
limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
|
|
22125
|
+
},
|
|
22126
|
+
async ({ instId, ccy, limit }) => {
|
|
22127
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22128
|
+
try {
|
|
22129
|
+
const data = await privateApi.getInterestAccrued(auth, instId, ccy, limit);
|
|
22130
|
+
return toResult(data);
|
|
22131
|
+
} catch (e) {
|
|
22132
|
+
return toError(e);
|
|
22133
|
+
}
|
|
22134
|
+
}
|
|
22135
|
+
);
|
|
22136
|
+
server.tool(
|
|
22137
|
+
"okx_get_margin_balance",
|
|
22138
|
+
`## \u529F\u80FD\uFF1A\u67E5\u8BE2\u67D0\u4EA7\u54C1\u7684\u4FDD\u8BC1\u91D1\u4F59\u989D\u8BE6\u60C5
|
|
22139
|
+
## \u573A\u666F\uFF1A\u7528\u4E8E\u6760\u6746/\u5408\u7EA6\u4EA4\u6613\u524D\u67E5\u770B\u53EF\u7528\u4FDD\u8BC1\u91D1\u3001\u5360\u7528\u4FDD\u8BC1\u91D1\u3001\u4FDD\u8BC1\u91D1\u7387
|
|
22140
|
+
## \u5173\u952E\u8BCD\uFF1A\u4FDD\u8BC1\u91D1\u4F59\u989D, \u4FDD\u8BC1\u91D1\u7387, margin balance, \u53EF\u7528\u4FDD\u8BC1\u91D1, \u5360\u7528\u4FDD\u8BC1\u91D1
|
|
22141
|
+
## \u53C2\u6570\uFF1A
|
|
22142
|
+
## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B
|
|
22143
|
+
## - mgnMode: \u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3\u3002\u5FC5\u586B
|
|
22144
|
+
## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09
|
|
22145
|
+
## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528
|
|
22146
|
+
## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B
|
|
22147
|
+
## \u5173\u8054\uFF1Aokx_get_balance \u67E5\u603B\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u67E5\u4FDD\u8BC1\u91D1 \u2192 okx_get_positions \u67E5\u6301\u4ED3`,
|
|
22148
|
+
{
|
|
22149
|
+
instId: external_exports.string().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u5FC5\u586B"),
|
|
22150
|
+
mgnMode: external_exports.enum(["cross", "isolated"]).describe("\u4FDD\u8BC1\u91D1\u6A21\u5F0F\u3002cross=\u5168\u4ED3, isolated=\u9010\u4ED3")
|
|
22151
|
+
},
|
|
22152
|
+
async ({ instId, mgnMode }) => {
|
|
22153
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22154
|
+
try {
|
|
22155
|
+
const data = await privateApi.getMarginBalance(auth, instId, mgnMode);
|
|
22156
|
+
return toResult(data);
|
|
22157
|
+
} catch (e) {
|
|
22158
|
+
return toError(e);
|
|
22159
|
+
}
|
|
22160
|
+
}
|
|
22161
|
+
);
|
|
22022
22162
|
}
|
|
22023
22163
|
|
|
22024
22164
|
// src/tools/trading.ts
|
|
@@ -22222,6 +22362,85 @@ function registerTradingTools(server, auth) {
|
|
|
22222
22362
|
}
|
|
22223
22363
|
}
|
|
22224
22364
|
);
|
|
22365
|
+
server.tool(
|
|
22366
|
+
"okx_amend_batch_orders",
|
|
22367
|
+
`## \u529F\u80FD\uFF1A\u6279\u91CF\u4FEE\u6539\u672A\u6210\u4EA4\u8BA2\u5355
|
|
22368
|
+
## \u573A\u666F\uFF1A\u7528\u4E8E\u540C\u65F6\u8C03\u6574\u591A\u4E2A\u9650\u4EF7\u5355\u7684\u4EF7\u683C\u6216\u6570\u91CF\u3001\u6279\u91CF\u66F4\u65B0\u6302\u5355\u7B56\u7565
|
|
22369
|
+
## \u5173\u952E\u8BCD\uFF1A\u6279\u91CF\u6539\u5355, \u6279\u91CF\u4FEE\u6539, amend batch orders, \u6279\u91CF\u6539\u4EF7, \u6279\u91CF\u8C03\u91CF
|
|
22370
|
+
## \u53C2\u6570\uFF1A
|
|
22371
|
+
## - orders: \u6539\u5355\u6570\u7EC4\uFF08JSON\u6570\u7EC4\u5B57\u7B26\u4E32\uFF09\uFF0C\u6BCF\u9879\u542B instId/ordId/newSz/newPx\u3002\u6700\u591A20\u7B14
|
|
22372
|
+
## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u8C03\u7528\u524D\u987B\u5411\u7528\u6237\u786E\u8BA4
|
|
22373
|
+
## \u98CE\u9669\uFF1AWRITE \u2014 \u4FEE\u6539\u8BA2\u5355\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u5411\u7528\u6237\u786E\u8BA4
|
|
22374
|
+
## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~2KB
|
|
22375
|
+
## \u5173\u8054\uFF1Aokx_get_orders_pending \u67E5\u770B\u6302\u5355 \u2192 \u672C\u5DE5\u5177\u6279\u91CF\u6539\u5355 \u2192 okx_get_order \u786E\u8BA4\u4FEE\u6539`,
|
|
22376
|
+
{
|
|
22377
|
+
orders: external_exports.string().describe(`\u6539\u5355\u6570\u7EC4JSON\u5B57\u7B26\u4E32\uFF0C\u5982 '[{"instId":"BTC-USDT","ordId":"123","newPx":"62000"}]'\u3002\u6700\u591A20\u7B14`)
|
|
22378
|
+
},
|
|
22379
|
+
async ({ orders }) => {
|
|
22380
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22381
|
+
try {
|
|
22382
|
+
const parsed = JSON.parse(orders);
|
|
22383
|
+
const data = await privateApi.amendBatchOrders(auth, parsed);
|
|
22384
|
+
return toResult(data);
|
|
22385
|
+
} catch (e) {
|
|
22386
|
+
return toError(e);
|
|
22387
|
+
}
|
|
22388
|
+
}
|
|
22389
|
+
);
|
|
22390
|
+
server.tool(
|
|
22391
|
+
"okx_get_fills_history",
|
|
22392
|
+
`## \u529F\u80FD\uFF1A\u67E5\u8BE2\u5386\u53F2\u6210\u4EA4\u660E\u7EC6\uFF08\u6700\u8FD13\u4E2A\u6708\uFF09
|
|
22393
|
+
## \u573A\u666F\uFF1A\u7528\u4E8E\u7CBE\u786E\u8BA1\u7B97\u5386\u53F2\u6210\u4EA4\u5747\u4EF7\u3001\u590D\u76D8\u4EA4\u6613\u8868\u73B0\u3001\u6838\u5BF9\u6210\u4EA4\u8BB0\u5F55
|
|
22394
|
+
## \u5173\u952E\u8BCD\uFF1A\u6210\u4EA4\u5386\u53F2, \u6210\u4EA4\u660E\u7EC6, fills history, \u5386\u53F2\u6210\u4EA4, \u9010\u7B14\u6210\u4EA4\u5386\u53F2
|
|
22395
|
+
## \u53C2\u6570\uFF1A
|
|
22396
|
+
## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002\u53EF\u9009
|
|
22397
|
+
## - instId: \u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT\u3002\u53EF\u9009
|
|
22398
|
+
## - limit: \u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100
|
|
22399
|
+
## \u9274\u6743\uFF1A\u26A0\uFE0F \u9700\u8981 API Key\uFF08\u53EA\u8BFB\uFF09
|
|
22400
|
+
## \u98CE\u9669\uFF1AREAD \u2014 \u53EA\u8BFB\u67E5\u8BE2\uFF0CAgent \u53EF\u81EA\u52A8\u8C03\u7528
|
|
22401
|
+
## \u8FD4\u56DE\u91CF\uFF1A\u4E2D\u7B49 ~10KB
|
|
22402
|
+
## \u5173\u8054\uFF1Aokx_get_fills \u67E5\u6700\u8FD1\u6210\u4EA4 \u2192 \u672C\u5DE5\u5177\u67E5\u5386\u53F2\u6210\u4EA4 \u2192 okx_get_orders_history \u5BF9\u8D26`,
|
|
22403
|
+
{
|
|
22404
|
+
instType: external_exports.enum(["SPOT", "MARGIN", "SWAP", "FUTURES", "OPTION"]).optional().describe("\u4EA7\u54C1\u7C7B\u578B"),
|
|
22405
|
+
instId: external_exports.string().optional().describe("\u4EA7\u54C1ID\uFF0C\u5982 BTC-USDT"),
|
|
22406
|
+
limit: external_exports.number().int().min(1).max(100).optional().describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4100")
|
|
22407
|
+
},
|
|
22408
|
+
async ({ instType, instId, limit }) => {
|
|
22409
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22410
|
+
try {
|
|
22411
|
+
const data = await privateApi.getFillsHistory(auth, instType, instId, limit);
|
|
22412
|
+
return toResult(data);
|
|
22413
|
+
} catch (e) {
|
|
22414
|
+
return toError(e);
|
|
22415
|
+
}
|
|
22416
|
+
}
|
|
22417
|
+
);
|
|
22418
|
+
server.tool(
|
|
22419
|
+
"okx_mass_cancel",
|
|
22420
|
+
`## \u529F\u80FD\uFF1A\u6279\u91CF\u64A4\u9500\u67D0\u4EA7\u54C1\u7C7B\u578B\u4E0B\u6240\u6709\u6302\u5355
|
|
22421
|
+
## \u573A\u666F\uFF1A\u7528\u4E8E\u6781\u7AEF\u884C\u60C5\u4E0B\u7D27\u6025\u6E05\u7A7A\u6240\u6709\u6302\u5355\u3001\u5FEB\u901F\u91CD\u7F6E\u4EA4\u6613\u7B56\u7565
|
|
22422
|
+
## \u5173\u952E\u8BCD\uFF1A\u6279\u91CF\u64A4\u5355, \u5168\u90E8\u64A4\u5355, mass cancel, \u6E05\u7A7A\u6302\u5355, \u7D27\u6025\u64A4\u5355
|
|
22423
|
+
## \u53C2\u6570\uFF1A
|
|
22424
|
+
## - instType: \u4EA7\u54C1\u7C7B\u578B\u3002SPOT/MARGIN/SWAP/FUTURES/OPTION\u3002\u5FC5\u586B
|
|
22425
|
+
## - instFamily: \u4EA7\u54C1\u65CF\uFF0C\u5982 BTC-USDT\u3002\u53EF\u9009\uFF08\u4EC5\u5408\u7EA6\u9700\u8981\uFF09
|
|
22426
|
+
## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u4EA4\u6613\uFF09- \u8C03\u7528\u524D\u987B\u5411\u7528\u6237\u786E\u8BA4
|
|
22427
|
+
## \u98CE\u9669\uFF1AWRITE \u2014 \u64A4\u9500\u6240\u6709\u6302\u5355\uFF0C\u5F71\u54CD\u8303\u56F4\u5927\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u786E\u8BA4
|
|
22428
|
+
## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B
|
|
22429
|
+
## \u5173\u8054\uFF1Aokx_get_orders_pending \u786E\u8BA4\u6302\u5355 \u2192 \u672C\u5DE5\u5177\u5168\u90E8\u64A4\u9500 \u2192 okx_get_orders_history \u786E\u8BA4`,
|
|
22430
|
+
{
|
|
22431
|
+
instType: external_exports.enum(["SPOT", "MARGIN", "SWAP", "FUTURES", "OPTION"]).describe("\u4EA7\u54C1\u7C7B\u578B"),
|
|
22432
|
+
instFamily: external_exports.string().optional().describe("\u4EA7\u54C1\u65CF\uFF0C\u5982 BTC-USDT\u3002\u4EC5\u5408\u7EA6\u9700\u586B")
|
|
22433
|
+
},
|
|
22434
|
+
async ({ instType, instFamily }) => {
|
|
22435
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22436
|
+
try {
|
|
22437
|
+
const data = await privateApi.massCancel(auth, instType, instFamily);
|
|
22438
|
+
return toResult(data);
|
|
22439
|
+
} catch (e) {
|
|
22440
|
+
return toError(e);
|
|
22441
|
+
}
|
|
22442
|
+
}
|
|
22443
|
+
);
|
|
22225
22444
|
}
|
|
22226
22445
|
|
|
22227
22446
|
// src/tools/algo.ts
|
|
@@ -22391,6 +22610,44 @@ function registerFundingTools(server, auth) {
|
|
|
22391
22610
|
}
|
|
22392
22611
|
}
|
|
22393
22612
|
);
|
|
22613
|
+
server.tool(
|
|
22614
|
+
"okx_withdrawal",
|
|
22615
|
+
`## \u529F\u80FD\uFF1A\u63D0\u5E01\u5230\u5916\u90E8\u5730\u5740
|
|
22616
|
+
## \u573A\u666F\uFF1A\u5C06\u8D44\u4EA7\u4ECEOKX\u63D0\u73B0\u5230\u5916\u90E8\u94B1\u5305\u6216\u4EA4\u6613\u6240
|
|
22617
|
+
## \u5173\u952E\u8BCD\uFF1A\u63D0\u5E01, \u63D0\u73B0, withdrawal, \u51FA\u91D1, \u8F6C\u51FA
|
|
22618
|
+
## \u53C2\u6570\uFF1A
|
|
22619
|
+
## - ccy: \u5E01\u79CD\uFF0C\u5982 USDT\u3002\u5FC5\u586B
|
|
22620
|
+
## - amt: \u63D0\u5E01\u6570\u91CF\u3002\u5FC5\u586B
|
|
22621
|
+
## - dest: \u63D0\u5E01\u65B9\u5F0F\u30023=\u5185\u90E8\u8F6C\u8D26, 4=\u94FE\u4E0A\u63D0\u5E01\u3002\u5FC5\u586B
|
|
22622
|
+
## - toAddr: \u76EE\u6807\u5730\u5740\u3002\u94FE\u4E0A\u63D0\u5E01\u5FC5\u586B
|
|
22623
|
+
## - chain: \u94FE\u540D\u79F0\uFF0C\u5982 USDT-TRC20\u3002\u94FE\u4E0A\u63D0\u5E01\u5FC5\u586B
|
|
22624
|
+
## - fee: \u624B\u7EED\u8D39\u3002\u53EF\u9009
|
|
22625
|
+
## \u9274\u6743\uFF1A\u{1F534} \u9700\u8981 API Key\uFF08\u63D0\u73B0\uFF09- \u8C03\u7528\u524D\u5FC5\u987B\u4E8C\u6B21\u786E\u8BA4
|
|
22626
|
+
## \u98CE\u9669\uFF1AFUND_TRANSFER \u2014 \u63D0\u5E01\u64CD\u4F5C\u76F4\u63A5\u8F6C\u51FA\u8D44\u91D1\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u5411\u7528\u6237\u4E8C\u6B21\u786E\u8BA4
|
|
22627
|
+
## \u8FD4\u56DE\u91CF\uFF1A\u5FAE\u5C0F ~500B
|
|
22628
|
+
## \u5173\u8054\uFF1Aokx_get_currencies \u67E5\u652F\u6301\u5E01\u79CD \u2192 okx_get_funding_balance \u786E\u8BA4\u4F59\u989D \u2192 \u672C\u5DE5\u5177\u63D0\u5E01`,
|
|
22629
|
+
{
|
|
22630
|
+
ccy: external_exports.string().describe("\u5E01\u79CD\uFF0C\u5982 USDT\u3002\u5FC5\u586B"),
|
|
22631
|
+
amt: external_exports.string().describe("\u63D0\u5E01\u6570\u91CF\u3002\u5FC5\u586B"),
|
|
22632
|
+
dest: external_exports.enum(["3", "4"]).describe("\u63D0\u5E01\u65B9\u5F0F\uFF1A3=\u5185\u90E8\u8F6C\u8D26, 4=\u94FE\u4E0A\u63D0\u5E01"),
|
|
22633
|
+
toAddr: external_exports.string().optional().describe("\u76EE\u6807\u5730\u5740\uFF08\u94FE\u4E0A\u63D0\u5E01\u5FC5\u586B\uFF09"),
|
|
22634
|
+
chain: external_exports.string().optional().describe("\u94FE\u540D\u79F0\uFF0C\u5982 USDT-TRC20"),
|
|
22635
|
+
fee: external_exports.string().optional().describe("\u624B\u7EED\u8D39\uFF0C\u4E0D\u586B\u7528\u9ED8\u8BA4")
|
|
22636
|
+
},
|
|
22637
|
+
async ({ ccy, amt, dest, toAddr, chain, fee }) => {
|
|
22638
|
+
if (!auth) return toError(AUTH_REQUIRED);
|
|
22639
|
+
try {
|
|
22640
|
+
const body = { ccy, amt, dest };
|
|
22641
|
+
if (toAddr) body.toAddr = toAddr;
|
|
22642
|
+
if (chain) body.chain = chain;
|
|
22643
|
+
if (fee) body.fee = fee;
|
|
22644
|
+
const data = await privateApi.withdrawal(auth, body);
|
|
22645
|
+
return toResult(data);
|
|
22646
|
+
} catch (e) {
|
|
22647
|
+
return toError(e);
|
|
22648
|
+
}
|
|
22649
|
+
}
|
|
22650
|
+
);
|
|
22394
22651
|
}
|
|
22395
22652
|
|
|
22396
22653
|
// src/tools/stats.ts
|
|
@@ -23225,7 +23482,7 @@ function registerSignalTools(server, auth) {
|
|
|
23225
23482
|
|
|
23226
23483
|
// src/index.ts
|
|
23227
23484
|
async function main() {
|
|
23228
|
-
const server = new McpServer({ name: "hvip", version: "0.2.
|
|
23485
|
+
const server = new McpServer({ name: "hvip", version: "0.2.1" });
|
|
23229
23486
|
const auth = getAuth();
|
|
23230
23487
|
registerMarketTools(server);
|
|
23231
23488
|
registerPublicTools(server);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hvip-mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "OKX ecosystem MCP server
|
|
3
|
+
"version": "0.2.2",
|
|
4
|
+
"description": "OKX ecosystem MCP server - full API coverage for AI agents",
|
|
5
5
|
"homepage": "https://hvip.one",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"bin": {
|