gate-mcp 0.7.0 → 0.9.0
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/README.md +26 -10
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +5 -0
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/cross_ex.d.ts +3 -0
- package/dist/tools/cross_ex.d.ts.map +1 -0
- package/dist/tools/cross_ex.js +623 -0
- package/dist/tools/cross_ex.js.map +1 -0
- package/dist/tools/earn.d.ts.map +1 -1
- package/dist/tools/earn.js +0 -42
- package/dist/tools/earn.js.map +1 -1
- package/dist/tools/trad_fi.d.ts +3 -0
- package/dist/tools/trad_fi.d.ts.map +1 -0
- package/dist/tools/trad_fi.js +310 -0
- package/dist/tools/trad_fi.js.map +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +3 -1
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,623 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { CrossExApi } from 'gate-api';
|
|
3
|
+
import { createClient, requireAuth } from '../client.js';
|
|
4
|
+
import { textContent, errorContent } from '../utils.js';
|
|
5
|
+
export function registerCrossExTools(server) {
|
|
6
|
+
// ── Public market data ────────────────────────────────────────────────────
|
|
7
|
+
server.tool('cex_cross_ex_list_crossex_rule_symbols', 'List CrossEx rule symbols (public)', {
|
|
8
|
+
symbols: z.string().optional().describe('Filter by symbol(s), comma-separated'),
|
|
9
|
+
}, async ({ symbols }) => {
|
|
10
|
+
try {
|
|
11
|
+
const opts = {};
|
|
12
|
+
if (symbols !== undefined)
|
|
13
|
+
opts.symbols = symbols;
|
|
14
|
+
const { body } = await new CrossExApi(createClient()).listCrossexRuleSymbols(opts);
|
|
15
|
+
return textContent(body);
|
|
16
|
+
}
|
|
17
|
+
catch (e) {
|
|
18
|
+
return errorContent(e);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
server.tool('cex_cross_ex_list_crossex_rule_risk_limits', 'List CrossEx rule risk limits for a symbol (public)', {
|
|
22
|
+
symbols: z.string().describe('Symbol name'),
|
|
23
|
+
}, async ({ symbols }) => {
|
|
24
|
+
try {
|
|
25
|
+
const { body } = await new CrossExApi(createClient()).listCrossexRuleRiskLimits(symbols);
|
|
26
|
+
return textContent(body);
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
return errorContent(e);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
server.tool('cex_cross_ex_list_crossex_transfer_coins', 'List coins available for CrossEx transfer (public)', {
|
|
33
|
+
coin: z.string().optional().describe('Filter by coin symbol'),
|
|
34
|
+
}, async ({ coin }) => {
|
|
35
|
+
try {
|
|
36
|
+
const opts = {};
|
|
37
|
+
if (coin !== undefined)
|
|
38
|
+
opts.coin = coin;
|
|
39
|
+
const { body } = await new CrossExApi(createClient()).listCrossexTransferCoins(opts);
|
|
40
|
+
return textContent(body);
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
return errorContent(e);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
server.tool('cex_cross_ex_get_crossex_fee', 'Get CrossEx trading fee information (public)', {}, async () => {
|
|
47
|
+
try {
|
|
48
|
+
const { body } = await new CrossExApi(createClient()).getCrossexFee();
|
|
49
|
+
return textContent(body);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
return errorContent(e);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
server.tool('cex_cross_ex_get_crossex_interest_rate', 'Get CrossEx interest rates (public)', {
|
|
56
|
+
coin: z.string().optional().describe('Filter by coin symbol'),
|
|
57
|
+
exchange_type: z.string().optional().describe('Exchange type filter'),
|
|
58
|
+
}, async ({ coin, exchange_type }) => {
|
|
59
|
+
try {
|
|
60
|
+
const opts = {};
|
|
61
|
+
if (coin !== undefined)
|
|
62
|
+
opts.coin = coin;
|
|
63
|
+
if (exchange_type !== undefined)
|
|
64
|
+
opts.exchangeType = exchange_type;
|
|
65
|
+
const { body } = await new CrossExApi(createClient()).getCrossexInterestRate(opts);
|
|
66
|
+
return textContent(body);
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
return errorContent(e);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
server.tool('cex_cross_ex_list_crossex_coin_discount_rate', 'List CrossEx coin discount rates (public)', {
|
|
73
|
+
coin: z.string().optional().describe('Filter by coin symbol'),
|
|
74
|
+
exchange_type: z.string().optional().describe('Exchange type filter'),
|
|
75
|
+
}, async ({ coin, exchange_type }) => {
|
|
76
|
+
try {
|
|
77
|
+
const opts = {};
|
|
78
|
+
if (coin !== undefined)
|
|
79
|
+
opts.coin = coin;
|
|
80
|
+
if (exchange_type !== undefined)
|
|
81
|
+
opts.exchangeType = exchange_type;
|
|
82
|
+
const { body } = await new CrossExApi(createClient()).listCrossexCoinDiscountRate(opts);
|
|
83
|
+
return textContent(body);
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
return errorContent(e);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
// ── Transfers (requires authentication) ──────────────────────────────────
|
|
90
|
+
server.tool('cex_cross_ex_list_crossex_transfers', 'List CrossEx transfer history (requires authentication)', {
|
|
91
|
+
coin: z.string().optional().describe('Filter by coin symbol'),
|
|
92
|
+
order_id: z.string().optional().describe('Filter by order ID'),
|
|
93
|
+
from: z.number().optional().describe('Start time (Unix timestamp in seconds)'),
|
|
94
|
+
to: z.number().optional().describe('End time (Unix timestamp in seconds)'),
|
|
95
|
+
page: z.number().int().min(1).optional(),
|
|
96
|
+
limit: z.number().int().min(1).optional(),
|
|
97
|
+
}, async ({ coin, order_id, from, to, page, limit }) => {
|
|
98
|
+
try {
|
|
99
|
+
requireAuth();
|
|
100
|
+
const opts = {};
|
|
101
|
+
if (coin !== undefined)
|
|
102
|
+
opts.coin = coin;
|
|
103
|
+
if (order_id !== undefined)
|
|
104
|
+
opts.orderId = order_id;
|
|
105
|
+
if (from !== undefined)
|
|
106
|
+
opts.from = from;
|
|
107
|
+
if (to !== undefined)
|
|
108
|
+
opts.to = to;
|
|
109
|
+
if (page !== undefined)
|
|
110
|
+
opts.page = page;
|
|
111
|
+
if (limit !== undefined)
|
|
112
|
+
opts.limit = limit;
|
|
113
|
+
const { body } = await new CrossExApi(createClient()).listCrossexTransfers(opts);
|
|
114
|
+
return textContent(body);
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
return errorContent(e);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
server.tool('cex_cross_ex_create_crossex_transfer', 'Create a CrossEx transfer (requires authentication) — always confirm with the user before calling this tool', {
|
|
121
|
+
coin: z.string().describe('Coin symbol e.g. USDT'),
|
|
122
|
+
amount: z.string().describe('Transfer amount'),
|
|
123
|
+
from: z.string().describe('Source account'),
|
|
124
|
+
to: z.string().describe('Destination account'),
|
|
125
|
+
text: z.string().optional().describe('Optional memo'),
|
|
126
|
+
}, async ({ coin, amount, from, to, text }) => {
|
|
127
|
+
try {
|
|
128
|
+
requireAuth();
|
|
129
|
+
const { InlineObject10 } = await import('gate-api');
|
|
130
|
+
const req = new InlineObject10();
|
|
131
|
+
req.coin = coin;
|
|
132
|
+
req.amount = amount;
|
|
133
|
+
req.from = from;
|
|
134
|
+
req.to = to;
|
|
135
|
+
if (text !== undefined)
|
|
136
|
+
req.text = text;
|
|
137
|
+
const { body } = await new CrossExApi(createClient()).createCrossexTransfer({ inlineObject10: req });
|
|
138
|
+
return textContent(body);
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
return errorContent(e);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
// ── Orders (requires authentication) ─────────────────────────────────────
|
|
145
|
+
server.tool('cex_cross_ex_list_crossex_open_orders', 'List open CrossEx orders (requires authentication)', {
|
|
146
|
+
symbol: z.string().optional().describe('Filter by symbol'),
|
|
147
|
+
exchange_type: z.string().optional().describe('Exchange type filter'),
|
|
148
|
+
business_type: z.string().optional().describe('Business type filter'),
|
|
149
|
+
}, async ({ symbol, exchange_type, business_type }) => {
|
|
150
|
+
try {
|
|
151
|
+
requireAuth();
|
|
152
|
+
const opts = {};
|
|
153
|
+
if (symbol !== undefined)
|
|
154
|
+
opts.symbol = symbol;
|
|
155
|
+
if (exchange_type !== undefined)
|
|
156
|
+
opts.exchangeType = exchange_type;
|
|
157
|
+
if (business_type !== undefined)
|
|
158
|
+
opts.businessType = business_type;
|
|
159
|
+
const { body } = await new CrossExApi(createClient()).listCrossexOpenOrders(opts);
|
|
160
|
+
return textContent(body);
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
return errorContent(e);
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
server.tool('cex_cross_ex_create_crossex_order', 'Create a CrossEx order (requires authentication) — always confirm the details with the user before calling this tool', {
|
|
167
|
+
symbol: z.string().describe('Symbol e.g. BTC_USDT'),
|
|
168
|
+
side: z.enum(['BUY', 'SELL']).describe('Order side'),
|
|
169
|
+
type: z.enum(['LIMIT', 'MARKET']).optional().describe('Order type (default LIMIT)'),
|
|
170
|
+
qty: z.string().optional().describe('Order quantity'),
|
|
171
|
+
price: z.string().optional().describe('Order price (required for LIMIT)'),
|
|
172
|
+
quote_qty: z.string().optional().describe('Quote quantity (for market buy by amount)'),
|
|
173
|
+
time_in_force: z.enum(['GTC', 'IOC', 'FOK', 'POC']).optional(),
|
|
174
|
+
reduce_only: z.boolean().optional(),
|
|
175
|
+
position_side: z.enum(['LONG', 'SHORT', 'NONE']).optional(),
|
|
176
|
+
text: z.string().optional().describe('Custom order note'),
|
|
177
|
+
}, async ({ symbol, side, type, qty, price, quote_qty, time_in_force, reduce_only, position_side, text }) => {
|
|
178
|
+
try {
|
|
179
|
+
requireAuth();
|
|
180
|
+
const { InlineObject11 } = await import('gate-api');
|
|
181
|
+
const req = new InlineObject11();
|
|
182
|
+
req.symbol = symbol;
|
|
183
|
+
req.side = side;
|
|
184
|
+
if (type !== undefined)
|
|
185
|
+
req.type = type;
|
|
186
|
+
if (qty !== undefined)
|
|
187
|
+
req.qty = qty;
|
|
188
|
+
if (price !== undefined)
|
|
189
|
+
req.price = price;
|
|
190
|
+
if (quote_qty !== undefined)
|
|
191
|
+
req.quoteQty = quote_qty;
|
|
192
|
+
if (time_in_force !== undefined)
|
|
193
|
+
req.timeInForce = time_in_force;
|
|
194
|
+
if (reduce_only !== undefined)
|
|
195
|
+
req.reduceOnly = (reduce_only ? 'true' : 'false');
|
|
196
|
+
if (position_side !== undefined)
|
|
197
|
+
req.positionSide = position_side;
|
|
198
|
+
if (text !== undefined)
|
|
199
|
+
req.text = text;
|
|
200
|
+
const { body } = await new CrossExApi(createClient()).createCrossexOrder({ inlineObject11: req });
|
|
201
|
+
return textContent(body);
|
|
202
|
+
}
|
|
203
|
+
catch (e) {
|
|
204
|
+
return errorContent(e);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
server.tool('cex_cross_ex_get_crossex_order', 'Get details of a CrossEx order (requires authentication)', {
|
|
208
|
+
order_id: z.string().describe('Order ID'),
|
|
209
|
+
}, async ({ order_id }) => {
|
|
210
|
+
try {
|
|
211
|
+
requireAuth();
|
|
212
|
+
const { body } = await new CrossExApi(createClient()).getCrossexOrder(order_id);
|
|
213
|
+
return textContent(body);
|
|
214
|
+
}
|
|
215
|
+
catch (e) {
|
|
216
|
+
return errorContent(e);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
server.tool('cex_cross_ex_update_crossex_order', 'Update an open CrossEx order (requires authentication) — always confirm with the user before calling this tool', {
|
|
220
|
+
order_id: z.string().describe('Order ID'),
|
|
221
|
+
qty: z.string().optional().describe('New quantity'),
|
|
222
|
+
price: z.string().optional().describe('New price'),
|
|
223
|
+
}, async ({ order_id, qty, price }) => {
|
|
224
|
+
try {
|
|
225
|
+
requireAuth();
|
|
226
|
+
const { InlineObject12 } = await import('gate-api');
|
|
227
|
+
const req = new InlineObject12();
|
|
228
|
+
if (qty !== undefined)
|
|
229
|
+
req.qty = qty;
|
|
230
|
+
if (price !== undefined)
|
|
231
|
+
req.price = price;
|
|
232
|
+
const { body } = await new CrossExApi(createClient()).updateCrossexOrder(order_id, { inlineObject12: req });
|
|
233
|
+
return textContent(body);
|
|
234
|
+
}
|
|
235
|
+
catch (e) {
|
|
236
|
+
return errorContent(e);
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
server.tool('cex_cross_ex_cancel_crossex_order', 'Cancel a CrossEx order (requires authentication) — always confirm with the user before calling this tool', {
|
|
240
|
+
order_id: z.string().describe('Order ID'),
|
|
241
|
+
}, async ({ order_id }) => {
|
|
242
|
+
try {
|
|
243
|
+
requireAuth();
|
|
244
|
+
const { body } = await new CrossExApi(createClient()).cancelCrossexOrder(order_id);
|
|
245
|
+
return textContent(body);
|
|
246
|
+
}
|
|
247
|
+
catch (e) {
|
|
248
|
+
return errorContent(e);
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
server.tool('cex_cross_ex_list_crossex_history_orders', 'List CrossEx order history (requires authentication)', {
|
|
252
|
+
symbol: z.string().optional().describe('Filter by symbol'),
|
|
253
|
+
from: z.number().optional().describe('Start time (Unix timestamp in seconds)'),
|
|
254
|
+
to: z.number().optional().describe('End time (Unix timestamp in seconds)'),
|
|
255
|
+
page: z.number().int().min(1).optional(),
|
|
256
|
+
limit: z.number().int().min(1).optional(),
|
|
257
|
+
}, async ({ symbol, from, to, page, limit }) => {
|
|
258
|
+
try {
|
|
259
|
+
requireAuth();
|
|
260
|
+
const opts = {};
|
|
261
|
+
if (symbol !== undefined)
|
|
262
|
+
opts.symbol = symbol;
|
|
263
|
+
if (from !== undefined)
|
|
264
|
+
opts.from = from;
|
|
265
|
+
if (to !== undefined)
|
|
266
|
+
opts.to = to;
|
|
267
|
+
if (page !== undefined)
|
|
268
|
+
opts.page = page;
|
|
269
|
+
if (limit !== undefined)
|
|
270
|
+
opts.limit = limit;
|
|
271
|
+
const { body } = await new CrossExApi(createClient()).listCrossexHistoryOrders(opts);
|
|
272
|
+
return textContent(body);
|
|
273
|
+
}
|
|
274
|
+
catch (e) {
|
|
275
|
+
return errorContent(e);
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
server.tool('cex_cross_ex_list_crossex_history_trades', 'List CrossEx trade history (requires authentication)', {
|
|
279
|
+
symbol: z.string().optional().describe('Filter by symbol'),
|
|
280
|
+
from: z.number().optional().describe('Start time (Unix timestamp in seconds)'),
|
|
281
|
+
to: z.number().optional().describe('End time (Unix timestamp in seconds)'),
|
|
282
|
+
page: z.number().int().min(1).optional(),
|
|
283
|
+
limit: z.number().int().min(1).optional(),
|
|
284
|
+
}, async ({ symbol, from, to, page, limit }) => {
|
|
285
|
+
try {
|
|
286
|
+
requireAuth();
|
|
287
|
+
const opts = {};
|
|
288
|
+
if (symbol !== undefined)
|
|
289
|
+
opts.symbol = symbol;
|
|
290
|
+
if (from !== undefined)
|
|
291
|
+
opts.from = from;
|
|
292
|
+
if (to !== undefined)
|
|
293
|
+
opts.to = to;
|
|
294
|
+
if (page !== undefined)
|
|
295
|
+
opts.page = page;
|
|
296
|
+
if (limit !== undefined)
|
|
297
|
+
opts.limit = limit;
|
|
298
|
+
const { body } = await new CrossExApi(createClient()).listCrossexHistoryTrades(opts);
|
|
299
|
+
return textContent(body);
|
|
300
|
+
}
|
|
301
|
+
catch (e) {
|
|
302
|
+
return errorContent(e);
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
// ── Convert (requires authentication) ────────────────────────────────────
|
|
306
|
+
server.tool('cex_cross_ex_create_crossex_convert_quote', 'Get a conversion quote for CrossEx (requires authentication)', {
|
|
307
|
+
exchange_type: z.string().describe('Exchange type'),
|
|
308
|
+
from_coin: z.string().describe('Source coin e.g. BTC'),
|
|
309
|
+
to_coin: z.string().describe('Target coin e.g. USDT'),
|
|
310
|
+
from_amount: z.string().describe('Amount to convert'),
|
|
311
|
+
}, async ({ exchange_type, from_coin, to_coin, from_amount }) => {
|
|
312
|
+
try {
|
|
313
|
+
requireAuth();
|
|
314
|
+
const { InlineObject13 } = await import('gate-api');
|
|
315
|
+
const req = new InlineObject13();
|
|
316
|
+
req.exchangeType = exchange_type;
|
|
317
|
+
req.fromCoin = from_coin;
|
|
318
|
+
req.toCoin = to_coin;
|
|
319
|
+
req.fromAmount = from_amount;
|
|
320
|
+
const { body } = await new CrossExApi(createClient()).createCrossexConvertQuote({ inlineObject13: req });
|
|
321
|
+
return textContent(body);
|
|
322
|
+
}
|
|
323
|
+
catch (e) {
|
|
324
|
+
return errorContent(e);
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
server.tool('cex_cross_ex_create_crossex_convert_order', 'Execute a CrossEx conversion order using a quote (requires authentication) — always confirm with the user before calling this tool', {
|
|
328
|
+
quote_id: z.string().describe('Quote ID from create_crossex_convert_quote'),
|
|
329
|
+
}, async ({ quote_id }) => {
|
|
330
|
+
try {
|
|
331
|
+
requireAuth();
|
|
332
|
+
const { InlineObject14 } = await import('gate-api');
|
|
333
|
+
const req = new InlineObject14();
|
|
334
|
+
req.quoteId = quote_id;
|
|
335
|
+
const { body } = await new CrossExApi(createClient()).createCrossexConvertOrder({ inlineObject14: req });
|
|
336
|
+
return textContent(body);
|
|
337
|
+
}
|
|
338
|
+
catch (e) {
|
|
339
|
+
return errorContent(e);
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
// ── Account (requires authentication) ────────────────────────────────────
|
|
343
|
+
server.tool('cex_cross_ex_get_crossex_account', 'Get CrossEx account information (requires authentication)', {
|
|
344
|
+
exchange_type: z.string().optional().describe('Exchange type filter'),
|
|
345
|
+
}, async ({ exchange_type }) => {
|
|
346
|
+
try {
|
|
347
|
+
requireAuth();
|
|
348
|
+
const opts = {};
|
|
349
|
+
if (exchange_type !== undefined)
|
|
350
|
+
opts.exchangeType = exchange_type;
|
|
351
|
+
const { body } = await new CrossExApi(createClient()).getCrossexAccount(opts);
|
|
352
|
+
return textContent(body);
|
|
353
|
+
}
|
|
354
|
+
catch (e) {
|
|
355
|
+
return errorContent(e);
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
server.tool('cex_cross_ex_update_crossex_account', 'Update CrossEx account settings (requires authentication)', {
|
|
359
|
+
position_mode: z.string().optional().describe('Position mode e.g. hedge or one-way'),
|
|
360
|
+
account_mode: z.string().optional().describe('Account mode'),
|
|
361
|
+
exchange_type: z.string().optional().describe('Exchange type'),
|
|
362
|
+
}, async ({ position_mode, account_mode, exchange_type }) => {
|
|
363
|
+
try {
|
|
364
|
+
requireAuth();
|
|
365
|
+
const { InlineObject15 } = await import('gate-api');
|
|
366
|
+
const req = new InlineObject15();
|
|
367
|
+
if (position_mode !== undefined)
|
|
368
|
+
req.positionMode = position_mode;
|
|
369
|
+
if (account_mode !== undefined)
|
|
370
|
+
req.accountMode = account_mode;
|
|
371
|
+
if (exchange_type !== undefined)
|
|
372
|
+
req.exchangeType = exchange_type;
|
|
373
|
+
const { body } = await new CrossExApi(createClient()).updateCrossexAccount({ inlineObject15: req });
|
|
374
|
+
return textContent(body);
|
|
375
|
+
}
|
|
376
|
+
catch (e) {
|
|
377
|
+
return errorContent(e);
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
server.tool('cex_cross_ex_list_crossex_account_book', 'List CrossEx account ledger/book entries (requires authentication)', {
|
|
381
|
+
coin: z.string().optional().describe('Filter by coin symbol'),
|
|
382
|
+
from: z.number().optional().describe('Start time (Unix timestamp in seconds)'),
|
|
383
|
+
to: z.number().optional().describe('End time (Unix timestamp in seconds)'),
|
|
384
|
+
page: z.number().int().min(1).optional(),
|
|
385
|
+
limit: z.number().int().min(1).optional(),
|
|
386
|
+
}, async ({ coin, from, to, page, limit }) => {
|
|
387
|
+
try {
|
|
388
|
+
requireAuth();
|
|
389
|
+
const opts = {};
|
|
390
|
+
if (coin !== undefined)
|
|
391
|
+
opts.coin = coin;
|
|
392
|
+
if (from !== undefined)
|
|
393
|
+
opts.from = from;
|
|
394
|
+
if (to !== undefined)
|
|
395
|
+
opts.to = to;
|
|
396
|
+
if (page !== undefined)
|
|
397
|
+
opts.page = page;
|
|
398
|
+
if (limit !== undefined)
|
|
399
|
+
opts.limit = limit;
|
|
400
|
+
const { body } = await new CrossExApi(createClient()).listCrossexAccountBook(opts);
|
|
401
|
+
return textContent(body);
|
|
402
|
+
}
|
|
403
|
+
catch (e) {
|
|
404
|
+
return errorContent(e);
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
// ── Positions (requires authentication) ──────────────────────────────────
|
|
408
|
+
server.tool('cex_cross_ex_list_crossex_positions', 'List open CrossEx positions (requires authentication)', {
|
|
409
|
+
symbol: z.string().optional().describe('Filter by symbol'),
|
|
410
|
+
exchange_type: z.string().optional().describe('Exchange type filter'),
|
|
411
|
+
}, async ({ symbol, exchange_type }) => {
|
|
412
|
+
try {
|
|
413
|
+
requireAuth();
|
|
414
|
+
const opts = {};
|
|
415
|
+
if (symbol !== undefined)
|
|
416
|
+
opts.symbol = symbol;
|
|
417
|
+
if (exchange_type !== undefined)
|
|
418
|
+
opts.exchangeType = exchange_type;
|
|
419
|
+
const { body } = await new CrossExApi(createClient()).listCrossexPositions(opts);
|
|
420
|
+
return textContent(body);
|
|
421
|
+
}
|
|
422
|
+
catch (e) {
|
|
423
|
+
return errorContent(e);
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
server.tool('cex_cross_ex_list_crossex_margin_positions', 'List open CrossEx margin positions (requires authentication)', {
|
|
427
|
+
symbol: z.string().optional().describe('Filter by symbol'),
|
|
428
|
+
exchange_type: z.string().optional().describe('Exchange type filter'),
|
|
429
|
+
}, async ({ symbol, exchange_type }) => {
|
|
430
|
+
try {
|
|
431
|
+
requireAuth();
|
|
432
|
+
const opts = {};
|
|
433
|
+
if (symbol !== undefined)
|
|
434
|
+
opts.symbol = symbol;
|
|
435
|
+
if (exchange_type !== undefined)
|
|
436
|
+
opts.exchangeType = exchange_type;
|
|
437
|
+
const { body } = await new CrossExApi(createClient()).listCrossexMarginPositions(opts);
|
|
438
|
+
return textContent(body);
|
|
439
|
+
}
|
|
440
|
+
catch (e) {
|
|
441
|
+
return errorContent(e);
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
server.tool('cex_cross_ex_list_crossex_adl_rank', 'List CrossEx auto-deleverage ranks for a symbol (requires authentication)', {
|
|
445
|
+
symbol: z.string().describe('Symbol name'),
|
|
446
|
+
}, async ({ symbol }) => {
|
|
447
|
+
try {
|
|
448
|
+
requireAuth();
|
|
449
|
+
const { body } = await new CrossExApi(createClient()).listCrossexAdlRank(symbol);
|
|
450
|
+
return textContent(body);
|
|
451
|
+
}
|
|
452
|
+
catch (e) {
|
|
453
|
+
return errorContent(e);
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
server.tool('cex_cross_ex_get_crossex_positions_leverage', 'Get leverage settings for CrossEx positions (requires authentication)', {
|
|
457
|
+
symbols: z.string().optional().describe('Filter by symbol(s), comma-separated'),
|
|
458
|
+
}, async ({ symbols }) => {
|
|
459
|
+
try {
|
|
460
|
+
requireAuth();
|
|
461
|
+
const opts = {};
|
|
462
|
+
if (symbols !== undefined)
|
|
463
|
+
opts.symbols = symbols;
|
|
464
|
+
const { body } = await new CrossExApi(createClient()).getCrossexPositionsLeverage(opts);
|
|
465
|
+
return textContent(body);
|
|
466
|
+
}
|
|
467
|
+
catch (e) {
|
|
468
|
+
return errorContent(e);
|
|
469
|
+
}
|
|
470
|
+
});
|
|
471
|
+
server.tool('cex_cross_ex_update_crossex_positions_leverage', 'Update leverage for CrossEx positions (requires authentication)', {
|
|
472
|
+
symbol: z.string().describe('Symbol name'),
|
|
473
|
+
leverage: z.string().describe('Leverage value e.g. "10"'),
|
|
474
|
+
}, async ({ symbol, leverage }) => {
|
|
475
|
+
try {
|
|
476
|
+
requireAuth();
|
|
477
|
+
const { InlineObject16 } = await import('gate-api');
|
|
478
|
+
const req = new InlineObject16();
|
|
479
|
+
req.symbol = symbol;
|
|
480
|
+
req.leverage = leverage;
|
|
481
|
+
const { body } = await new CrossExApi(createClient()).updateCrossexPositionsLeverage({ inlineObject16: req });
|
|
482
|
+
return textContent(body);
|
|
483
|
+
}
|
|
484
|
+
catch (e) {
|
|
485
|
+
return errorContent(e);
|
|
486
|
+
}
|
|
487
|
+
});
|
|
488
|
+
server.tool('cex_cross_ex_get_crossex_margin_positions_leverage', 'Get leverage settings for CrossEx margin positions (requires authentication)', {
|
|
489
|
+
symbols: z.string().optional().describe('Filter by symbol(s), comma-separated'),
|
|
490
|
+
}, async ({ symbols }) => {
|
|
491
|
+
try {
|
|
492
|
+
requireAuth();
|
|
493
|
+
const opts = {};
|
|
494
|
+
if (symbols !== undefined)
|
|
495
|
+
opts.symbols = symbols;
|
|
496
|
+
const { body } = await new CrossExApi(createClient()).getCrossexMarginPositionsLeverage(opts);
|
|
497
|
+
return textContent(body);
|
|
498
|
+
}
|
|
499
|
+
catch (e) {
|
|
500
|
+
return errorContent(e);
|
|
501
|
+
}
|
|
502
|
+
});
|
|
503
|
+
server.tool('cex_cross_ex_update_crossex_margin_positions_leverage', 'Update leverage for CrossEx margin positions (requires authentication)', {
|
|
504
|
+
symbol: z.string().describe('Symbol name'),
|
|
505
|
+
leverage: z.string().describe('Leverage value e.g. "10"'),
|
|
506
|
+
}, async ({ symbol, leverage }) => {
|
|
507
|
+
try {
|
|
508
|
+
requireAuth();
|
|
509
|
+
const { InlineObject17 } = await import('gate-api');
|
|
510
|
+
const req = new InlineObject17();
|
|
511
|
+
req.symbol = symbol;
|
|
512
|
+
req.leverage = leverage;
|
|
513
|
+
const { body } = await new CrossExApi(createClient()).updateCrossexMarginPositionsLeverage({ inlineObject17: req });
|
|
514
|
+
return textContent(body);
|
|
515
|
+
}
|
|
516
|
+
catch (e) {
|
|
517
|
+
return errorContent(e);
|
|
518
|
+
}
|
|
519
|
+
});
|
|
520
|
+
server.tool('cex_cross_ex_close_crossex_position', 'Close a CrossEx position (requires authentication) — always confirm with the user before calling this tool', {
|
|
521
|
+
symbol: z.string().describe('Symbol name'),
|
|
522
|
+
position_side: z.string().optional().describe('Position side: LONG, SHORT, or NONE'),
|
|
523
|
+
}, async ({ symbol, position_side }) => {
|
|
524
|
+
try {
|
|
525
|
+
requireAuth();
|
|
526
|
+
const { InlineObject18 } = await import('gate-api');
|
|
527
|
+
const req = new InlineObject18();
|
|
528
|
+
req.symbol = symbol;
|
|
529
|
+
if (position_side !== undefined)
|
|
530
|
+
req.positionSide = position_side;
|
|
531
|
+
const { body } = await new CrossExApi(createClient()).closeCrossexPosition({ inlineObject18: req });
|
|
532
|
+
return textContent(body);
|
|
533
|
+
}
|
|
534
|
+
catch (e) {
|
|
535
|
+
return errorContent(e);
|
|
536
|
+
}
|
|
537
|
+
});
|
|
538
|
+
server.tool('cex_cross_ex_list_crossex_history_positions', 'List CrossEx position history (requires authentication)', {
|
|
539
|
+
symbol: z.string().optional().describe('Filter by symbol'),
|
|
540
|
+
from: z.number().optional().describe('Start time (Unix timestamp in seconds)'),
|
|
541
|
+
to: z.number().optional().describe('End time (Unix timestamp in seconds)'),
|
|
542
|
+
page: z.number().int().min(1).optional(),
|
|
543
|
+
limit: z.number().int().min(1).optional(),
|
|
544
|
+
}, async ({ symbol, from, to, page, limit }) => {
|
|
545
|
+
try {
|
|
546
|
+
requireAuth();
|
|
547
|
+
const opts = {};
|
|
548
|
+
if (symbol !== undefined)
|
|
549
|
+
opts.symbol = symbol;
|
|
550
|
+
if (from !== undefined)
|
|
551
|
+
opts.from = from;
|
|
552
|
+
if (to !== undefined)
|
|
553
|
+
opts.to = to;
|
|
554
|
+
if (page !== undefined)
|
|
555
|
+
opts.page = page;
|
|
556
|
+
if (limit !== undefined)
|
|
557
|
+
opts.limit = limit;
|
|
558
|
+
const { body } = await new CrossExApi(createClient()).listCrossexHistoryPositions(opts);
|
|
559
|
+
return textContent(body);
|
|
560
|
+
}
|
|
561
|
+
catch (e) {
|
|
562
|
+
return errorContent(e);
|
|
563
|
+
}
|
|
564
|
+
});
|
|
565
|
+
server.tool('cex_cross_ex_list_crossex_history_margin_positions', 'List CrossEx margin position history (requires authentication)', {
|
|
566
|
+
symbol: z.string().optional().describe('Filter by symbol'),
|
|
567
|
+
from: z.number().optional().describe('Start time (Unix timestamp in seconds)'),
|
|
568
|
+
to: z.number().optional().describe('End time (Unix timestamp in seconds)'),
|
|
569
|
+
page: z.number().int().min(1).optional(),
|
|
570
|
+
limit: z.number().int().min(1).optional(),
|
|
571
|
+
}, async ({ symbol, from, to, page, limit }) => {
|
|
572
|
+
try {
|
|
573
|
+
requireAuth();
|
|
574
|
+
const opts = {};
|
|
575
|
+
if (symbol !== undefined)
|
|
576
|
+
opts.symbol = symbol;
|
|
577
|
+
if (from !== undefined)
|
|
578
|
+
opts.from = from;
|
|
579
|
+
if (to !== undefined)
|
|
580
|
+
opts.to = to;
|
|
581
|
+
if (page !== undefined)
|
|
582
|
+
opts.page = page;
|
|
583
|
+
if (limit !== undefined)
|
|
584
|
+
opts.limit = limit;
|
|
585
|
+
const { body } = await new CrossExApi(createClient()).listCrossexHistoryMarginPositions(opts);
|
|
586
|
+
return textContent(body);
|
|
587
|
+
}
|
|
588
|
+
catch (e) {
|
|
589
|
+
return errorContent(e);
|
|
590
|
+
}
|
|
591
|
+
});
|
|
592
|
+
server.tool('cex_cross_ex_list_crossex_history_margin_interests', 'List CrossEx margin interest history (requires authentication)', {
|
|
593
|
+
symbol: z.string().optional().describe('Filter by symbol'),
|
|
594
|
+
exchange_type: z.string().optional().describe('Exchange type filter'),
|
|
595
|
+
from: z.number().optional().describe('Start time (Unix timestamp in seconds)'),
|
|
596
|
+
to: z.number().optional().describe('End time (Unix timestamp in seconds)'),
|
|
597
|
+
page: z.number().int().min(1).optional(),
|
|
598
|
+
limit: z.number().int().min(1).optional(),
|
|
599
|
+
}, async ({ symbol, exchange_type, from, to, page, limit }) => {
|
|
600
|
+
try {
|
|
601
|
+
requireAuth();
|
|
602
|
+
const opts = {};
|
|
603
|
+
if (symbol !== undefined)
|
|
604
|
+
opts.symbol = symbol;
|
|
605
|
+
if (exchange_type !== undefined)
|
|
606
|
+
opts.exchangeType = exchange_type;
|
|
607
|
+
if (from !== undefined)
|
|
608
|
+
opts.from = from;
|
|
609
|
+
if (to !== undefined)
|
|
610
|
+
opts.to = to;
|
|
611
|
+
if (page !== undefined)
|
|
612
|
+
opts.page = page;
|
|
613
|
+
if (limit !== undefined)
|
|
614
|
+
opts.limit = limit;
|
|
615
|
+
const { body } = await new CrossExApi(createClient()).listCrossexHistoryMarginInterests(opts);
|
|
616
|
+
return textContent(body);
|
|
617
|
+
}
|
|
618
|
+
catch (e) {
|
|
619
|
+
return errorContent(e);
|
|
620
|
+
}
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
//# sourceMappingURL=cross_ex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross_ex.js","sourceRoot":"","sources":["../../src/tools/cross_ex.ts"],"names":[],"mappings":"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"}
|