gate-mcp 0.18.2 → 0.18.3

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.
Files changed (46) hide show
  1. package/dist/tools/account.js +10 -10
  2. package/dist/tools/account.js.map +1 -1
  3. package/dist/tools/activity.js +1 -1
  4. package/dist/tools/activity.js.map +1 -1
  5. package/dist/tools/alpha.js +6 -6
  6. package/dist/tools/alpha.js.map +1 -1
  7. package/dist/tools/coupon.js +2 -2
  8. package/dist/tools/coupon.js.map +1 -1
  9. package/dist/tools/cross_ex.js +25 -25
  10. package/dist/tools/cross_ex.js.map +1 -1
  11. package/dist/tools/delivery.js +21 -21
  12. package/dist/tools/delivery.js.map +1 -1
  13. package/dist/tools/earn.js +28 -28
  14. package/dist/tools/earn.js.map +1 -1
  15. package/dist/tools/flash_swap.js +7 -7
  16. package/dist/tools/flash_swap.js.map +1 -1
  17. package/dist/tools/futures.js +51 -51
  18. package/dist/tools/futures.js.map +1 -1
  19. package/dist/tools/launch.js +4 -4
  20. package/dist/tools/launch.js.map +1 -1
  21. package/dist/tools/margin.js +17 -17
  22. package/dist/tools/margin.js.map +1 -1
  23. package/dist/tools/multi_collateral_loan.js +8 -8
  24. package/dist/tools/multi_collateral_loan.js.map +1 -1
  25. package/dist/tools/options.js +17 -17
  26. package/dist/tools/options.js.map +1 -1
  27. package/dist/tools/p2p.js +17 -17
  28. package/dist/tools/p2p.js.map +1 -1
  29. package/dist/tools/rebate.js +10 -10
  30. package/dist/tools/rebate.js.map +1 -1
  31. package/dist/tools/spot.d.ts +11 -0
  32. package/dist/tools/spot.d.ts.map +1 -1
  33. package/dist/tools/spot.js +45 -24
  34. package/dist/tools/spot.js.map +1 -1
  35. package/dist/tools/square.js +1 -1
  36. package/dist/tools/sub_account.js +11 -11
  37. package/dist/tools/sub_account.js.map +1 -1
  38. package/dist/tools/trad_fi.js +14 -14
  39. package/dist/tools/trad_fi.js.map +1 -1
  40. package/dist/tools/unified.js +20 -20
  41. package/dist/tools/unified.js.map +1 -1
  42. package/dist/tools/wallet.js +21 -21
  43. package/dist/tools/wallet.js.map +1 -1
  44. package/dist/tools/welfare.js +2 -2
  45. package/dist/tools/welfare.js.map +1 -1
  46. package/package.json +1 -1
@@ -150,7 +150,7 @@ export function registerFuturesTools(server) {
150
150
  return errorContent(e);
151
151
  }
152
152
  });
153
- server.tool('cex_futures_list_contract_stats', 'Get contract statistics (open interest, long/short ratio, etc.)', {
153
+ server.tool('cex_futures_list_contract_stats', 'Get contract statistics (open interest long/short ratio etc.)', {
154
154
  settle: settleSchema,
155
155
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
156
156
  from: z.number().optional().describe('Start time (Unix timestamp)'),
@@ -263,7 +263,7 @@ export function registerFuturesTools(server) {
263
263
  }
264
264
  });
265
265
  // ── Private tools ─────────────────────────────────────────────────────────
266
- server.tool('cex_futures_get_futures_accounts', 'Get futures account balances (requires authentication)', { settle: settleSchema }, async ({ settle }) => {
266
+ server.tool('cex_futures_get_futures_accounts', 'Get futures account balances.', { settle: settleSchema }, async ({ settle }) => {
267
267
  try {
268
268
  requireAuth();
269
269
  const { body } = await new FuturesApi(createClient()).listFuturesAccounts(settle);
@@ -273,7 +273,7 @@ export function registerFuturesTools(server) {
273
273
  return errorContent(e);
274
274
  }
275
275
  });
276
- server.tool('cex_futures_list_futures_account_book', 'Get futures account transaction/ledger history (requires authentication)', {
276
+ server.tool('cex_futures_list_futures_account_book', 'Get futures account transaction/ledger history.', {
277
277
  settle: settleSchema,
278
278
  contract: z.string().optional().describe('Filter by contract'),
279
279
  from: z.number().optional().describe('Start time (Unix timestamp)'),
@@ -304,7 +304,7 @@ export function registerFuturesTools(server) {
304
304
  return errorContent(e);
305
305
  }
306
306
  });
307
- server.tool('cex_futures_list_futures_positions', 'List all open futures positions (requires authentication)', {
307
+ server.tool('cex_futures_list_futures_positions', 'List all open futures positions.', {
308
308
  settle: settleSchema,
309
309
  holding: z.boolean().optional().describe('Only return positions with non-zero size'),
310
310
  limit: z.number().int().optional(),
@@ -326,7 +326,7 @@ export function registerFuturesTools(server) {
326
326
  return errorContent(e);
327
327
  }
328
328
  });
329
- server.tool('cex_futures_list_positions_timerange', 'Get position history for a contract filtered by time range (requires authentication)', {
329
+ server.tool('cex_futures_list_positions_timerange', 'Get position history for a contract filtered by time range.', {
330
330
  settle: settleSchema,
331
331
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
332
332
  from: z.number().optional().describe('Start time (Unix timestamp)'),
@@ -352,7 +352,7 @@ export function registerFuturesTools(server) {
352
352
  return errorContent(e);
353
353
  }
354
354
  });
355
- server.tool('cex_futures_get_futures_position', 'Get a single futures position (requires authentication)', {
355
+ server.tool('cex_futures_get_futures_position', 'Get a single futures position.', {
356
356
  settle: settleSchema,
357
357
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
358
358
  }, async ({ settle, contract }) => {
@@ -365,7 +365,7 @@ export function registerFuturesTools(server) {
365
365
  return errorContent(e);
366
366
  }
367
367
  });
368
- server.tool('cex_futures_get_leverage', 'Get current leverage for a futures position (requires authentication)', {
368
+ server.tool('cex_futures_get_leverage', 'Get current leverage for a futures position.', {
369
369
  settle: settleSchema,
370
370
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
371
371
  pos_margin_mode: z.string().describe('Position margin mode filter'),
@@ -380,7 +380,7 @@ export function registerFuturesTools(server) {
380
380
  return errorContent(e);
381
381
  }
382
382
  });
383
- server.tool('cex_futures_get_futures_fee', 'Get futures trading fee rates (requires authentication)', {
383
+ server.tool('cex_futures_get_futures_fee', 'Get futures trading fee rates.', {
384
384
  settle: settleSchema,
385
385
  contract: z.string().optional().describe('Filter by contract'),
386
386
  }, async ({ settle, contract }) => {
@@ -417,7 +417,7 @@ export function registerFuturesTools(server) {
417
417
  return errorContent(e);
418
418
  }
419
419
  });
420
- server.tool('cex_futures_get_futures_risk_limit_table', 'Get a specific risk limit tier table by table ID (requires authentication)', {
420
+ server.tool('cex_futures_get_futures_risk_limit_table', 'Get a specific risk limit tier table by table ID.', {
421
421
  settle: settleSchema,
422
422
  table_id: z.string().describe('Risk limit table ID'),
423
423
  }, async ({ settle, table_id }) => {
@@ -430,7 +430,7 @@ export function registerFuturesTools(server) {
430
430
  return errorContent(e);
431
431
  }
432
432
  });
433
- server.tool('cex_futures_list_futures_orders', 'List futures orders (requires authentication)', {
433
+ server.tool('cex_futures_list_futures_orders', 'List futures orders.', {
434
434
  settle: settleSchema,
435
435
  status: z.enum(['open', 'finished']).describe('Order status'),
436
436
  contract: z.string().optional().describe('Filter by contract'),
@@ -456,7 +456,7 @@ export function registerFuturesTools(server) {
456
456
  return errorContent(e);
457
457
  }
458
458
  });
459
- server.tool('cex_futures_create_futures_order', 'Create a futures order (requires authentication) — always confirm the details with the user before calling this tool', {
459
+ server.tool('cex_futures_create_futures_order', 'Create a futures order State-changing', {
460
460
  settle: settleSchema,
461
461
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
462
462
  size: z.string().describe('Order size in contracts (negative = short)'),
@@ -496,7 +496,7 @@ export function registerFuturesTools(server) {
496
496
  return errorContent(e);
497
497
  }
498
498
  });
499
- server.tool('cex_futures_create_futures_bbo_order', 'Create a Best-Bid/Offer futures order (requires authentication) — always confirm details with the user before calling this tool', {
499
+ server.tool('cex_futures_create_futures_bbo_order', 'Create a BBO futures order State-changing', {
500
500
  settle: settleSchema,
501
501
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
502
502
  size: z.number().int().describe('Order size in contracts (negative = short)'),
@@ -527,7 +527,7 @@ export function registerFuturesTools(server) {
527
527
  return errorContent(e);
528
528
  }
529
529
  });
530
- server.tool('cex_futures_get_futures_order', 'Get a futures order by ID (requires authentication)', {
530
+ server.tool('cex_futures_get_futures_order', 'Get a futures order by ID.', {
531
531
  settle: settleSchema,
532
532
  order_id: z.string().describe('Order ID'),
533
533
  }, async ({ settle, order_id }) => {
@@ -540,7 +540,7 @@ export function registerFuturesTools(server) {
540
540
  return errorContent(e);
541
541
  }
542
542
  });
543
- server.tool('cex_futures_amend_futures_order', 'Amend an open futures order (requires authentication) — always confirm the new values with the user before calling this tool', {
543
+ server.tool('cex_futures_amend_futures_order', 'Amend an open futures order State-changing', {
544
544
  settle: settleSchema,
545
545
  order_id: z.string().describe('Order ID'),
546
546
  size: z.string().optional().describe('New order size'),
@@ -563,7 +563,7 @@ export function registerFuturesTools(server) {
563
563
  return errorContent(e);
564
564
  }
565
565
  });
566
- server.tool('cex_futures_cancel_futures_order', 'Cancel a futures order (requires authentication) always confirm with the user before calling this tool', {
566
+ server.tool('cex_futures_cancel_futures_order', 'Cancel a single futures order. See also `cex_futures_cancel_futures_batch_orders` (batch) and `cex_futures_cancel_all_futures_orders` (cancel all open). State-changing.', {
567
567
  settle: settleSchema,
568
568
  order_id: z.string().describe('Order ID'),
569
569
  }, async ({ settle, order_id }) => {
@@ -576,7 +576,7 @@ export function registerFuturesTools(server) {
576
576
  return errorContent(e);
577
577
  }
578
578
  });
579
- server.tool('cex_futures_cancel_all_futures_orders', 'Cancel all open futures orders (requires authentication) always confirm with the user before calling this tool', {
579
+ server.tool('cex_futures_cancel_all_futures_orders', 'Cancel all open futures orders for a market. See also `cex_futures_cancel_futures_order` (single) and `cex_futures_cancel_futures_batch_orders` (batch). State-changing.', {
580
580
  settle: settleSchema,
581
581
  contract: z.string().describe('Contract to cancel orders for'),
582
582
  side: z.enum(['ask', 'bid']).optional().describe('Only cancel ask (sell) or bid (buy) orders'),
@@ -601,7 +601,7 @@ export function registerFuturesTools(server) {
601
601
  return errorContent(e);
602
602
  }
603
603
  });
604
- server.tool('cex_futures_create_futures_batch_orders', 'Create multiple futures orders in a single request (requires authentication) always confirm the details with the user before calling this tool', {
604
+ server.tool('cex_futures_create_futures_batch_orders', 'Create multiple futures orders in a single request State-changing. Single create_futures_order', {
605
605
  settle: settleSchema,
606
606
  orders: z.array(z.object({
607
607
  contract: z.string(),
@@ -631,7 +631,7 @@ export function registerFuturesTools(server) {
631
631
  return errorContent(e);
632
632
  }
633
633
  });
634
- server.tool('cex_futures_cancel_futures_batch_orders', 'Cancel multiple futures orders by ID in a single request (requires authentication) always confirm with the user before calling this tool', {
634
+ server.tool('cex_futures_cancel_futures_batch_orders', 'Cancel multiple futures orders (batch). See also `cex_futures_cancel_futures_order` (single) and `cex_futures_cancel_all_futures_orders` (cancel all open). State-changing.', {
635
635
  settle: settleSchema,
636
636
  order_ids: z.array(z.string()).describe('Array of order IDs to cancel'),
637
637
  }, async ({ settle, order_ids }) => {
@@ -644,7 +644,7 @@ export function registerFuturesTools(server) {
644
644
  return errorContent(e);
645
645
  }
646
646
  });
647
- server.tool('cex_futures_amend_futures_batch_orders', 'Amend multiple futures orders in a single request (requires authentication) always confirm the new values with the user before calling this tool', {
647
+ server.tool('cex_futures_amend_futures_batch_orders', 'Amend multiple futures orders in a single request State-changing. Single amend_futures_order', {
648
648
  settle: settleSchema,
649
649
  orders: z.array(z.object({
650
650
  order_id: z.string().optional().describe('Order ID to amend'),
@@ -677,7 +677,7 @@ export function registerFuturesTools(server) {
677
677
  return errorContent(e);
678
678
  }
679
679
  });
680
- server.tool('cex_futures_get_futures_orders_with_time_range', 'Get futures orders filtered by time range (requires authentication)', {
680
+ server.tool('cex_futures_get_futures_orders_with_time_range', 'Get futures orders filtered by time range.', {
681
681
  settle: settleSchema,
682
682
  contract: z.string().optional().describe('Filter by contract'),
683
683
  from: z.number().optional().describe('Start time (Unix timestamp)'),
@@ -705,7 +705,7 @@ export function registerFuturesTools(server) {
705
705
  return errorContent(e);
706
706
  }
707
707
  });
708
- server.tool('cex_futures_list_futures_my_trades', 'Get personal futures trading history (requires authentication)', {
708
+ server.tool('cex_futures_list_futures_my_trades', 'Get personal futures trading history.', {
709
709
  settle: settleSchema,
710
710
  contract: z.string().optional().describe('Filter by contract'),
711
711
  order: z.number().int().optional().describe('Filter by order ID'),
@@ -733,7 +733,7 @@ export function registerFuturesTools(server) {
733
733
  return errorContent(e);
734
734
  }
735
735
  });
736
- server.tool('cex_futures_get_futures_my_trades_timerange', 'Get personal futures trade history filtered by time range (requires authentication)', {
736
+ server.tool('cex_futures_get_futures_my_trades_timerange', 'Get personal futures trade history filtered by time range.', {
737
737
  settle: settleSchema,
738
738
  contract: z.string().optional().describe('Filter by contract'),
739
739
  from: z.number().optional().describe('Start time (Unix timestamp)'),
@@ -764,7 +764,7 @@ export function registerFuturesTools(server) {
764
764
  return errorContent(e);
765
765
  }
766
766
  });
767
- server.tool('cex_futures_list_position_close', 'List position close history (requires authentication)', {
767
+ server.tool('cex_futures_list_position_close', 'List position close history.', {
768
768
  settle: settleSchema,
769
769
  contract: z.string().optional(),
770
770
  limit: z.number().int().optional(),
@@ -798,7 +798,7 @@ export function registerFuturesTools(server) {
798
798
  return errorContent(e);
799
799
  }
800
800
  });
801
- server.tool('cex_futures_list_futures_liq_orders', 'Get personal futures liquidation history (requires authentication)', {
801
+ server.tool('cex_futures_list_futures_liq_orders', 'Get personal futures liquidation history.', {
802
802
  settle: settleSchema,
803
803
  contract: z.string().optional(),
804
804
  from: z.number().optional().describe('Start time (Unix timestamp)'),
@@ -829,7 +829,7 @@ export function registerFuturesTools(server) {
829
829
  return errorContent(e);
830
830
  }
831
831
  });
832
- server.tool('cex_futures_list_auto_deleverages', 'Get personal auto-deleverage history (requires authentication)', {
832
+ server.tool('cex_futures_list_auto_deleverages', 'Get personal auto-deleverage history.', {
833
833
  settle: settleSchema,
834
834
  contract: z.string().optional(),
835
835
  from: z.number().optional().describe('Start time (Unix timestamp)'),
@@ -860,7 +860,7 @@ export function registerFuturesTools(server) {
860
860
  return errorContent(e);
861
861
  }
862
862
  });
863
- server.tool('cex_futures_update_futures_position_leverage', 'Update leverage for a futures position (requires authentication) always confirm the new leverage with the user before calling this tool', {
863
+ server.tool('cex_futures_update_futures_position_leverage', 'Update futures position leverage. See also `cex_futures_update_futures_position_margin` (margin) and `cex_futures_update_futures_position_risk_limit` (risk limit). State-changing.', {
864
864
  settle: settleSchema,
865
865
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
866
866
  leverage: z.string().describe('New leverage value; 0 for cross-margin mode'),
@@ -878,7 +878,7 @@ export function registerFuturesTools(server) {
878
878
  return errorContent(e);
879
879
  }
880
880
  });
881
- server.tool('cex_futures_update_futures_contract_position_leverage', 'Update position leverage with explicit margin mode (requires authentication) — always confirm with the user before calling this tool', {
881
+ server.tool('cex_futures_update_futures_contract_position_leverage', 'Update position leverage with explicit margin mode State-changing', {
882
882
  settle: settleSchema,
883
883
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
884
884
  leverage: z.string().describe('New leverage value'),
@@ -897,7 +897,7 @@ export function registerFuturesTools(server) {
897
897
  return errorContent(e);
898
898
  }
899
899
  });
900
- server.tool('cex_futures_update_futures_position_margin', 'Add or reduce margin for a futures position (requires authentication) always confirm the amount with the user before calling this tool', {
900
+ server.tool('cex_futures_update_futures_position_margin', 'Update futures position margin. See also `cex_futures_update_futures_position_leverage` (leverage) and `cex_futures_update_futures_position_risk_limit` (risk limit). State-changing.', {
901
901
  settle: settleSchema,
902
902
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
903
903
  change: z.string().describe('Margin change amount; positive to add, negative to reduce'),
@@ -911,7 +911,7 @@ export function registerFuturesTools(server) {
911
911
  return errorContent(e);
912
912
  }
913
913
  });
914
- server.tool('cex_futures_update_futures_position_risk_limit', 'Update the risk limit for a futures position (requires authentication)', {
914
+ server.tool('cex_futures_update_futures_position_risk_limit', 'Update futures position risk limit. See also `cex_futures_update_futures_position_leverage` (leverage) and `cex_futures_update_futures_position_margin` (margin). State-changing.', {
915
915
  settle: settleSchema,
916
916
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
917
917
  risk_limit: z.number().describe('New risk limit value'),
@@ -925,7 +925,7 @@ export function registerFuturesTools(server) {
925
925
  return errorContent(e);
926
926
  }
927
927
  });
928
- server.tool('cex_futures_update_futures_position_cross_mode', 'Switch a single-mode position between isolated and cross margin (requires authentication)', {
928
+ server.tool('cex_futures_update_futures_position_cross_mode', 'Switch a single-mode position between isolated and cross margin State-changing', {
929
929
  settle: settleSchema,
930
930
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
931
931
  mode: z.enum(['CROSS', 'ISOLATED']).describe('Margin mode to set: CROSS or ISOLATED'),
@@ -942,7 +942,7 @@ export function registerFuturesTools(server) {
942
942
  return errorContent(e);
943
943
  }
944
944
  });
945
- server.tool('cex_futures_update_futures_dual_comp_position_cross_mode', 'Switch a dual-mode position between isolated and cross margin (requires authentication)', {
945
+ server.tool('cex_futures_update_futures_dual_comp_position_cross_mode', 'Switch a dual-mode position between isolated and cross margin State-changing. Single-mode → update_futures_position_cross_mode', {
946
946
  settle: settleSchema,
947
947
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
948
948
  mode: z.enum(['CROSS', 'ISOLATED']).describe('Margin mode to set: CROSS or ISOLATED'),
@@ -959,7 +959,7 @@ export function registerFuturesTools(server) {
959
959
  return errorContent(e);
960
960
  }
961
961
  });
962
- server.tool('cex_futures_set_futures_dual_mode', 'Enable or disable dual-mode (hedge mode) for a futures account (requires authentication)', {
962
+ server.tool('cex_futures_set_futures_dual_mode', 'Enable or disable dual-mode (hedge mode) for a futures account State-changing', {
963
963
  settle: settleSchema,
964
964
  dual_mode: z.boolean().describe('true to enable dual/hedge mode, false to disable'),
965
965
  }, async ({ settle, dual_mode }) => {
@@ -972,7 +972,7 @@ export function registerFuturesTools(server) {
972
972
  return errorContent(e);
973
973
  }
974
974
  });
975
- server.tool('cex_futures_set_position_mode', 'Set account-level position mode (requires authentication)', {
975
+ server.tool('cex_futures_set_position_mode', 'Set account-level position mode State-changing', {
976
976
  settle: settleSchema,
977
977
  position_mode: z.string().describe('Position mode e.g. single_mode or dual_long_short_mode'),
978
978
  }, async ({ settle, position_mode }) => {
@@ -985,7 +985,7 @@ export function registerFuturesTools(server) {
985
985
  return errorContent(e);
986
986
  }
987
987
  });
988
- server.tool('cex_futures_get_futures_dual_mode_position', 'Get dual-mode positions for a contract (requires authentication)', {
988
+ server.tool('cex_futures_get_futures_dual_mode_position', 'Get dual-mode positions for a contract.', {
989
989
  settle: settleSchema,
990
990
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
991
991
  }, async ({ settle, contract }) => {
@@ -998,7 +998,7 @@ export function registerFuturesTools(server) {
998
998
  return errorContent(e);
999
999
  }
1000
1000
  });
1001
- server.tool('cex_futures_update_futures_dual_mode_position_margin', 'Add or reduce margin for a dual-mode position (requires authentication) — always confirm the amount with the user before calling this tool', {
1001
+ server.tool('cex_futures_update_futures_dual_mode_position_margin', 'Add or reduce margin for a dual-mode position State-changing', {
1002
1002
  settle: settleSchema,
1003
1003
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
1004
1004
  change: z.string().describe('Margin change amount; positive to add, negative to reduce'),
@@ -1013,7 +1013,7 @@ export function registerFuturesTools(server) {
1013
1013
  return errorContent(e);
1014
1014
  }
1015
1015
  });
1016
- server.tool('cex_futures_update_futures_dual_mode_position_leverage', 'Update leverage for a dual-mode position (requires authentication) — always confirm the new leverage with the user before calling this tool', {
1016
+ server.tool('cex_futures_update_futures_dual_mode_position_leverage', 'Update leverage for a dual-mode position State-changing', {
1017
1017
  settle: settleSchema,
1018
1018
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
1019
1019
  leverage: z.string().describe('New leverage value; 0 for cross-margin mode'),
@@ -1031,7 +1031,7 @@ export function registerFuturesTools(server) {
1031
1031
  return errorContent(e);
1032
1032
  }
1033
1033
  });
1034
- server.tool('cex_futures_update_futures_dual_mode_position_risk_limit', 'Update the risk limit for a dual-mode position (requires authentication)', {
1034
+ server.tool('cex_futures_update_futures_dual_mode_position_risk_limit', 'Update the risk limit for a dual-mode position State-changing', {
1035
1035
  settle: settleSchema,
1036
1036
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
1037
1037
  risk_limit: z.number().describe('New risk limit value'),
@@ -1045,7 +1045,7 @@ export function registerFuturesTools(server) {
1045
1045
  return errorContent(e);
1046
1046
  }
1047
1047
  });
1048
- server.tool('cex_futures_countdown_cancel_all_futures', 'Set a countdown timer to cancel all futures orders (safety kill-switch, requires authentication)', {
1048
+ server.tool('cex_futures_countdown_cancel_all_futures', 'Set a countdown timer to cancel all futures orders (safety kill-switch,). State-changing', {
1049
1049
  settle: settleSchema,
1050
1050
  timeout: z.number().int().describe('Countdown in seconds; 0 disables the timer'),
1051
1051
  contract: z.string().optional().describe('Limit cancellation to this contract'),
@@ -1063,7 +1063,7 @@ export function registerFuturesTools(server) {
1063
1063
  }
1064
1064
  });
1065
1065
  // ── Trail Orders ──────────────────────────────────────────────────────────
1066
- server.tool('cex_futures_create_trail_order', 'Create a trailing stop order (requires authentication) — always confirm details with the user before calling this tool', {
1066
+ server.tool('cex_futures_create_trail_order', 'Create a trailing stop order State-changing', {
1067
1067
  settle: settleSchema,
1068
1068
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
1069
1069
  amount: z.string().describe('Order size'),
@@ -1098,7 +1098,7 @@ export function registerFuturesTools(server) {
1098
1098
  return errorContent(e);
1099
1099
  }
1100
1100
  });
1101
- server.tool('cex_futures_get_trail_orders', 'List trail orders (requires authentication)', {
1101
+ server.tool('cex_futures_get_trail_orders', 'List trail orders.', {
1102
1102
  settle: settleSchema,
1103
1103
  contract: z.string().optional(),
1104
1104
  is_finished: z.boolean().optional(),
@@ -1129,7 +1129,7 @@ export function registerFuturesTools(server) {
1129
1129
  return errorContent(e);
1130
1130
  }
1131
1131
  });
1132
- server.tool('cex_futures_get_trail_order_detail', 'Get details of a single trail order (requires authentication)', {
1132
+ server.tool('cex_futures_get_trail_order_detail', 'Get details of a single trail order.', {
1133
1133
  settle: settleSchema,
1134
1134
  id: z.number().int().describe('Trail order ID'),
1135
1135
  }, async ({ settle, id }) => {
@@ -1142,7 +1142,7 @@ export function registerFuturesTools(server) {
1142
1142
  return errorContent(e);
1143
1143
  }
1144
1144
  });
1145
- server.tool('cex_futures_update_trail_order', 'Update an existing trail order (requires authentication) — always confirm changes with the user before calling this tool', {
1145
+ server.tool('cex_futures_update_trail_order', 'Update an existing trail order State-changing', {
1146
1146
  settle: settleSchema,
1147
1147
  id: z.number().describe('Trail order ID'),
1148
1148
  amount: z.string().optional().describe('New order size'),
@@ -1169,7 +1169,7 @@ export function registerFuturesTools(server) {
1169
1169
  return errorContent(e);
1170
1170
  }
1171
1171
  });
1172
- server.tool('cex_futures_stop_trail_order', 'Stop a specific trail order (requires authentication) — always confirm with the user before calling this tool', {
1172
+ server.tool('cex_futures_stop_trail_order', 'Stop a specific trail order State-changing', {
1173
1173
  settle: settleSchema,
1174
1174
  id: z.number().describe('Trail order ID'),
1175
1175
  text: z.string().optional().describe('Stop reason text'),
@@ -1187,7 +1187,7 @@ export function registerFuturesTools(server) {
1187
1187
  return errorContent(e);
1188
1188
  }
1189
1189
  });
1190
- server.tool('cex_futures_stop_all_trail_orders', 'Stop all trail orders (requires authentication) — always confirm with the user before calling this tool', {
1190
+ server.tool('cex_futures_stop_all_trail_orders', 'Stop all trail orders State-changing', {
1191
1191
  settle: settleSchema,
1192
1192
  contract: z.string().optional().describe('Only stop trail orders for this contract'),
1193
1193
  related_position: z.number().int().optional().describe('Related position filter: 1 or 2'),
@@ -1206,7 +1206,7 @@ export function registerFuturesTools(server) {
1206
1206
  return errorContent(e);
1207
1207
  }
1208
1208
  });
1209
- server.tool('cex_futures_get_trail_order_change_log', 'Get change log for a trail order (requires authentication)', {
1209
+ server.tool('cex_futures_get_trail_order_change_log', 'Get change log for a trail order.', {
1210
1210
  settle: settleSchema,
1211
1211
  id: z.number().int().describe('Trail order ID'),
1212
1212
  page_num: z.number().int().optional(),
@@ -1227,7 +1227,7 @@ export function registerFuturesTools(server) {
1227
1227
  }
1228
1228
  });
1229
1229
  // ── Price-triggered orders ─────────────────────────────────────────────────
1230
- server.tool('cex_futures_list_price_triggered_orders', 'List futures price-triggered orders (requires authentication)', {
1230
+ server.tool('cex_futures_list_price_triggered_orders', 'List futures price-triggered orders.', {
1231
1231
  settle: settleSchema,
1232
1232
  status: z.enum(['open', 'finished']),
1233
1233
  contract: z.string().optional(),
@@ -1250,7 +1250,7 @@ export function registerFuturesTools(server) {
1250
1250
  return errorContent(e);
1251
1251
  }
1252
1252
  });
1253
- server.tool('cex_futures_create_futures_price_triggered_order', 'Create a futures price-triggered order (requires authentication) — always confirm the details with the user before calling this tool', {
1253
+ server.tool('cex_futures_create_futures_price_triggered_order', 'Create a futures price-triggered order State-changing', {
1254
1254
  settle: settleSchema,
1255
1255
  contract: z.string().describe('Contract name e.g. BTC_USDT'),
1256
1256
  trigger_price: z.string().describe('Price that activates the order'),
@@ -1287,7 +1287,7 @@ export function registerFuturesTools(server) {
1287
1287
  return errorContent(e);
1288
1288
  }
1289
1289
  });
1290
- server.tool('cex_futures_get_futures_price_triggered_order', 'Get details of a futures price-triggered order (requires authentication)', {
1290
+ server.tool('cex_futures_get_futures_price_triggered_order', 'Get details of a futures price-triggered order.', {
1291
1291
  settle: settleSchema,
1292
1292
  order_id: z.string().describe('Order ID'),
1293
1293
  }, async ({ settle, order_id }) => {
@@ -1300,7 +1300,7 @@ export function registerFuturesTools(server) {
1300
1300
  return errorContent(e);
1301
1301
  }
1302
1302
  });
1303
- server.tool('cex_futures_update_futures_price_triggered_order', 'Update an existing futures price-triggered order (requires authentication) — always confirm the new values with the user before calling this tool', {
1303
+ server.tool('cex_futures_update_futures_price_triggered_order', 'Update an existing futures price-triggered order State-changing', {
1304
1304
  settle: settleSchema,
1305
1305
  order_id: z.string().describe('Order ID'),
1306
1306
  size: z.number().int().optional().describe('New order size'),
@@ -1333,7 +1333,7 @@ export function registerFuturesTools(server) {
1333
1333
  return errorContent(e);
1334
1334
  }
1335
1335
  });
1336
- server.tool('cex_futures_cancel_futures_price_triggered_order', 'Cancel a single futures price-triggered order (requires authentication) — always confirm with the user before calling this tool', {
1336
+ server.tool('cex_futures_cancel_futures_price_triggered_order', 'Cancel a single futures price-triggered order State-changing', {
1337
1337
  settle: settleSchema,
1338
1338
  order_id: z.string().describe('Order ID'),
1339
1339
  }, async ({ settle, order_id }) => {
@@ -1346,7 +1346,7 @@ export function registerFuturesTools(server) {
1346
1346
  return errorContent(e);
1347
1347
  }
1348
1348
  });
1349
- server.tool('cex_futures_cancel_futures_price_triggered_order_list', 'Cancel all futures price-triggered orders (requires authentication) — always confirm with the user before calling this tool', {
1349
+ server.tool('cex_futures_cancel_futures_price_triggered_order_list', 'Cancel all futures price-triggered orders State-changing', {
1350
1350
  settle: settleSchema,
1351
1351
  contract: z.string().optional().describe('Only cancel orders for this contract'),
1352
1352
  }, async ({ settle, contract }) => {