set_margin_mode
Configure margin mode for Bybit trades by specifying category, symbol, trade mode (isolated or cross), and leverage for buying and selling. Adjust risk management settings effectively.
Instructions
Set margin mode
Args:
category (str): Category (spot, linear, inverse, etc.)
symbol (str): Symbol (e.g., BTCUSDT)
tradeMode (int): Trading mode (0: Isolated, 1: Cross)
buyLeverage (str): Buying leverage
sellLeverage (str): Selling leverage
Returns:
Dict: Setting result
Example:
set_margin_mode("spot", "BTCUSDT", 0, "10", "10")
Reference:
https://bybit-exchange.github.io/docs/v5/account/set-margin-mode
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| buyLeverage | Yes | Buying leverage | |
| category | Yes | Category (spot, linear, inverse, etc.) | |
| sellLeverage | Yes | Selling leverage | |
| symbol | Yes | Symbol (e.g., BTCUSDT) | |
| tradeMode | Yes | Trading mode (0: Isolated, 1: Cross) |
Implementation Reference
- src/server.py:527-563 (handler)The main handler function for the 'set_margin_mode' MCP tool, decorated with @mcp.tool() for automatic registration. Includes input schema via Field annotations and implements the core logic by delegating to the service layer.def set_margin_mode( category: str = Field(description="Category (spot, linear, inverse, etc.)"), symbol: str = Field(description="Symbol (e.g., BTCUSDT)"), tradeMode: int = Field(description="Trading mode (0: Isolated, 1: Cross)"), buyLeverage: str = Field(description="Buying leverage"), sellLeverage: str = Field(description="Selling leverage") ) -> Dict: """ Set margin mode Args: category (str): Category (spot, linear, inverse, etc.) symbol (str): Symbol (e.g., BTCUSDT) tradeMode (int): Trading mode (0: Isolated, 1: Cross) buyLeverage (str): Buying leverage sellLeverage (str): Selling leverage Returns: Dict: Setting result Example: set_margin_mode("spot", "BTCUSDT", 0, "10", "10") Reference: https://bybit-exchange.github.io/docs/v5/account/set-margin-mode """ try: result = bybit_service.set_margin_mode( category, symbol, tradeMode, buyLeverage, sellLeverage ) if result.get("retCode") != 0: logger.error(f"Failed to set margin mode: {result.get('retMsg')}") return {"error": result.get("retMsg")} return result except Exception as e: logger.error(f"Failed to set margin mode: {e}", exc_info=True) return {"error": str(e)}
- src/service.py:455-477 (helper)Helper method in BybitService class that wraps and forwards the set_margin_mode call to the underlying Bybit client library.def set_margin_mode(self, category: str, symbol: str, tradeMode: int, buyLeverage: str, sellLeverage: str) -> Dict: """ Set margin mode Args: category (str): Category (spot, linear, inverse, etc.) symbol (str): Symbol (e.g., BTCUSDT) tradeMode (int): Trading mode (0: Isolated, 1: Cross) buyLeverage (str): Buying leverage sellLeverage (str): Selling leverage Returns: Dict: Setting result """ return self.client.set_margin_mode( category=category, symbol=symbol, tradeMode=tradeMode, buyLeverage=buyLeverage, sellLeverage=sellLeverage )