Skip to main content
Glama
dlwjdtn535

Bybit Server

by dlwjdtn535

MCP Bybit API Interface

Buy Me A Coffee

Bybit MCP (Model Context Protocol) Server. Provides a convenient interface to interact with the Bybit V5 API using MCP tools. Allows fetching market data, managing account information, and placing/canceling orders via API calls wrapped as tools.

⚠️ Security & Safety

This server can place real trades with real money. Read this before configuring it:

  • Trading is disabled by default. Mutating tools (place_order, cancel_order, amend_order, cancel_all_orders, set_trading_stop, set_margin_mode, set_leverage) return an error unless you explicitly set TRADING_ENABLED=true.

  • Use the testnet first. Set TESTNET=true while you experiment. Combine with TRADING_ENABLED=false for a fully read-only setup, or set READONLY_MODE=true to hard-block every mutating tool regardless of other settings.

  • Order size is capped. MAX_ORDER_SIZE_USDT (default 100) limits the estimated notional value of an order to guard against accidental large trades.

  • API keys are never logged or exposed. No tool returns your keys; logs only report whether a key is present.

  • Never commit your API keys. Provide them through environment variables only.

Related MCP server: Bybit MCP Server

Installation

Requires Python 3.12+. This project uses uv.

git clone https://github.com/dlwjdtn535/mcp-bybit-server.git
cd mcp-bybit-server
uv sync
uv run mcp-bybit-server   # runs the MCP server over stdio

After install, the mcp-bybit-server command is the entry point used by the MCP client configs below.

Installing via Smithery

To install this Bybit API Interface server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @dlwjdtn535/mcp-bybit-server --client claude

Configuration (Claude Desktop, Cline, Roo Code, etc.)

Add one of the following to your MCP settings file (e.g. claude_desktop_config.json / mcp_settings.json).

Using uv (run from a cloned repo):

{
  "mcpServers": {
    "bybit": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/absolute/path/to/mcp-bybit-server",
        "mcp-bybit-server"
      ],
      "env": {
        "ACCESS_KEY": "YOUR_BYBIT_API_KEY",
        "SECRET_KEY": "YOUR_BYBIT_SECRET_KEY",
        "TESTNET": "true",
        "TRADING_ENABLED": "false"
      }
    }
  }
}

On Windows, use an absolute path with double backslashes (e.g. C:\\Users\\YOUR_USERNAME\\mcp-bybit-server).

Using Docker:

First pull the image: docker pull dlwjdtn535/mcp-bybit-server:latest

{
  "mcpServers": {
    "bybit-server-docker": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--init",
        "-e", "ACCESS_KEY=YOUR_BYBIT_API_KEY",
        "-e", "SECRET_KEY=YOUR_BYBIT_SECRET_KEY",
        "-e", "TESTNET=true",
        "-e", "TRADING_ENABLED=false",
        "-e", "MAX_ORDER_SIZE_USDT=100",
        "dlwjdtn535/mcp-bybit-server:latest"
      ]
    }
  }
}

Note: Always use @latest or a specific version tag for both NPX and Docker to ensure you are using the intended version.

Environment Variables

Variable

Required

Default

Description

ACCESS_KEY

Yes

Bybit API key.

SECRET_KEY

Yes

Bybit API secret.

MEMBER_ID

No

Bybit member ID (optional).

TESTNET

No

false

Use the Bybit testnet when true.

TRADING_ENABLED

No

false

Must be true to allow any mutating/trading tool.

READONLY_MODE

No

false

When true, blocks every mutating tool (takes precedence over TRADING_ENABLED).

MAX_ORDER_SIZE_USDT

No

100

Caps the estimated notional value (USDT) of a single order.

RESPONSE_VERBOSITY

No

normal

minimal trims get_tickers/get_positions responses to core fields to save tokens; normal/full return the full payload.

Tools 🛠️

Market data

  • get_orderbook — order book (category, symbol, limit?).

  • get_kline — candlesticks (category, symbol, interval, start?, end?, limit?).

  • get_tickers — ticker info (category, symbol).

  • get_public_trade_history — recent public trades (category, symbol, limit?).

  • get_instruments_info — instrument metadata / limits (category, symbol, status?, baseCoin?).

  • get_funding_rate_history — funding rate history for perps (category, symbol, startTime?, endTime?, limit?).

  • get_open_interest — open interest over time (category, symbol, intervalTime?, ...).

  • get_fee_rate — maker/taker fee rates (category, symbol?, baseCoin?).

  • get_server_time — Bybit server time.

  • market_snapshot — composite market view (orderbook + ticker + kline + instrument + recent trades, plus funding rate & open interest for futures) in a single call.

Account

  • get_wallet_balance — balances (accountType, coin?).

  • get_positions — open positions (category, symbol?).

  • get_order_history — historical orders.

  • get_open_orders — current open orders.

  • get_api_key_information — API key details.

Trading (mutating — requires TRADING_ENABLED=true)

  • validate_order — pre-flight validation; never places an order. Not blocked by trading flags.

  • place_order — place an order; supports dry_run=true to validate without placing.

  • amend_order — modify an existing order in place.

  • cancel_order — cancel a single order.

  • cancel_all_orders — cancel all open orders (optionally scoped).

  • set_trading_stop — set take profit / stop loss / trailing stop.

  • set_margin_mode — set isolated/cross margin.

  • set_leverage — set leverage for a futures symbol.

(Refer to the function docstrings in the code for detailed parameter descriptions and examples.)

API Key Setup

To use this Bybit API interface, create an API key from Bybit:

  1. Log into your Bybit account.

  2. Navigate to API Management.

  3. Create a new API key.

  4. Important security settings:

    • Enable IP restriction if possible, and add ONLY the IP address(es) the server runs from.

    • Never share your API keys or expose them in public repositories.

    • Recommended permissions:

      • Read (required)

      • Trade (required only if you enable order execution)

      • Wallet (required for balance checking)

Development

uv sync --group dev   # install dev dependencies (pytest, ruff)
uv run ruff check .   # lint
uv run pytest -q      # run the unit test suite (no live API calls)

CI (GitHub Actions) runs lint + tests on every push/PR; Docker images are built and published automatically on pushes to main.

Sponsorship & Donations

If you find this project helpful and would like to support its development:

Buy Me a Coffee

"Buy Me A Coffee"

Referral Program

You can also support this project by signing up for Bybit using our referral link:

Your support helps maintain and improve this project. Thank you! 🙏

Contact & Support

For additional inquiries or support, please contact:

We welcome your questions and feedback!

License

MIT License

Available Tools

15 tools
cancel_orderC
Cancel order

Args:
    category (str): Category (spot, linear, inverse, etc.)
    symbol (str): Symbol (e.g., BTCUSDT)
    orderId (Optional[str]): Order ID
    orderLinkId (Optional[str]): Order link ID
    orderFilter (Optional[str]): Order filter

Returns:
    Dict: Cancel result

Example:
    cancel_order("spot", "BTCUSDT", "123456789")

Reference:
    https://bybit-exchange.github.io/docs/v5/order/cancel-order
ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory (spot, linear, inverse, etc.)
orderFilterNoOrder filter
orderIdNoOrder ID
orderLinkIdNoOrder link ID
symbolYesSymbol (e.g., BTCUSDT)

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Cancel order' implies a destructive write operation, the description doesn't mention authentication requirements, rate limits, side effects, error conditions, or what 'Cancel result' contains. The example shows basic usage but doesn't explain behavioral implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably structured with sections for Args, Returns, Example, and Reference. However, the core description 'Cancel order' is overly terse and could benefit from more context. The example and reference sections add value but the main description feels underdeveloped.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive financial operation with 5 parameters and no annotations or output schema, the description is inadequate. It doesn't explain what cancellation means in this trading context, what happens to partially filled orders, authentication requirements, error conditions, or what the return value contains. The reference link helps but doesn't compensate for missing behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description repeats parameter information in the Args section but adds minimal value beyond what's in the schema. The example shows usage but doesn't explain parameter interactions or which identifiers (orderId vs orderLinkId) should be used when.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool's purpose as 'Cancel order', which is a clear verb+resource combination. However, it doesn't differentiate from potential alternatives or provide any context about what types of orders can be canceled or what cancellation entails. It's a basic statement of function without elaboration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. While sibling tools include 'place_order' and 'get_open_orders', the description doesn't mention relationships between these tools or prerequisites for cancellation. There's no mention of when cancellation is possible or what happens to partially filled orders.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_access_keyB
Get access key from environment variables
:return: Access key
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves an access key but doesn't describe how it behaves: e.g., what happens if the key is missing (error handling), whether it's cached or fetched live, or if it requires specific permissions. This leaves significant gaps for a tool that handles sensitive credentials.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise—two short sentences with no wasted words. It's front-loaded with the core purpose. However, the ':return:' annotation is slightly informal and could be integrated more smoothly, preventing a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of handling access keys (sensitive data) and the lack of annotations and output schema, the description is incomplete. It doesn't explain the return value format (e.g., string type, encoding), error scenarios, or security implications. This is inadequate for a credential-fetching tool in a trading context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema description coverage is 100% (since there are no parameters to document). The description doesn't need to add parameter details beyond what the schema provides. A baseline of 4 is appropriate as the description accurately reflects the lack of inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get access key from environment variables.' It specifies the verb ('Get') and resource ('access key'), and indicates the source ('environment variables'). However, it doesn't explicitly differentiate from sibling tools like 'get_secret_key' or 'get_api_key_information,' which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., environment variables must be set), exclusions, or comparisons to siblings like 'get_secret_key' or 'get_api_key_information.' The agent must infer usage from context alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_api_key_informationC
Get API key information

Returns:
    Dict: API key information

Example:
    get_api_key_information()

Reference:
    https://bybit-exchange.github.io/docs/v5/user/apikey-info
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states it returns API key information without disclosing behavioral traits such as authentication requirements, rate limits, or what specific data is included. It lacks details on permissions, response format, or any constraints, making it insufficient for a tool that likely involves sensitive data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with sections (Returns, Example, Reference) but includes redundant elements like 'Returns: Dict: API key information' which adds little value. It's somewhat front-loaded but could be more efficient by eliminating tautological statements and focusing on unique aspects.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a tool handling API key information. It fails to explain what the returned dict contains, authentication needs, or how it differs from siblings. For a potentially sensitive operation, more context on behavior and output is necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so no parameter information is needed. The description correctly indicates no parameters with the example 'get_api_key_information()', aligning with the schema. A baseline of 4 is appropriate as it doesn't need to compensate for any parameter gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the tool name ('Get API key information') without adding specificity about what information is retrieved or distinguishing it from sibling tools like 'get_access_key' or 'get_secret_key'. It's a tautology that doesn't clarify the scope or content of the returned information beyond the obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'get_access_key' or 'get_secret_key'. The example shows usage but doesn't explain context, prerequisites, or differentiation from sibling tools, leaving the agent without usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_instruments_infoC
Get exchange information

Args:
    category (str): Category (spot, linear, inverse, etc.)
    symbol (str): Symbol (e.g., BTCUSDT)
    status (Optional[str]): Status
    baseCoin (Optional[str]): Base coin

Returns:
    Dict: Exchange information

Example:
    get_instruments_info("spot", "BTCUSDT", "Trading", "BTC")

Reference:
    https://bybit-exchange.github.io/docs/v5/market/instrument
ParametersJSON Schema
NameRequiredDescriptionDefault
baseCoinNoBase coin
categoryYesCategory (spot, linear, inverse, etc.)
statusNoStatus
symbolYesSymbol (e.g., BTCUSDT)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a 'Get' operation (implying read-only) but doesn't mention rate limits, authentication requirements, response format details, or whether this is a real-time or cached data source. The example helps but doesn't fully compensate for missing behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns, Example, Reference) and efficiently conveys necessary information. However, the 'Args' section repeats schema descriptions without adding value, and the purpose statement could be more specific about what 'exchange information' means.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter read operation with no output schema, the description is adequate but has gaps. It provides parameters and an example but doesn't explain what 'exchange information' actually returns (beyond 'Dict'), doesn't mention error conditions, and doesn't differentiate from sibling tools. The external reference helps but assumes the agent can access it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal value beyond what's in the schema - it repeats parameter descriptions verbatim and provides an example showing usage. This meets the baseline for high schema coverage but doesn't add meaningful semantic context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with 'Get exchange information' which is a specific verb+resource combination. However, it doesn't differentiate from sibling tools like get_tickers or get_orderbook, which also retrieve market data but for different types of information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like get_tickers or get_orderbook. There's no mention of what specific 'exchange information' this provides compared to other market data tools, leaving the agent to guess based on parameter names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_klineB
Get K-line (candlestick) data

Args:
    category (str): Category (spot, linear, inverse, etc.)
    symbol (str): Symbol (e.g., BTCUSDT)
    interval (str): Time interval (1, 3, 5, 15, 30, 60, 120, 240, 360, 720, D, W, M)
    start (Optional[int]): Start time in milliseconds
    end (Optional[int]): End time in milliseconds
    limit (int): Number of records to retrieve

Returns:
    Dict: K-line data

Example:
    get_kline("spot", "BTCUSDT", "1h", 1625097600000, 1625184000000, 100)

Reference:
    https://bybit-exchange.github.io/docs/v5/market/kline
ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory (spot, linear, inverse, etc.)
endNoEnd time in milliseconds
intervalYesTime interval (1, 3, 5, 15, 30, 60, 120, 240, 360, 720, D, W, M)
limitNoNumber of records to retrieve
startNoStart time in milliseconds
symbolYesSymbol (e.g., BTCUSDT)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies this is a read-only operation ('Get'), but doesn't explicitly state whether it requires authentication, has rate limits, or what happens with invalid inputs. The example and reference link add some context, but key behavioral traits like error handling or performance characteristics are missing, making this adequate but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns, Example, Reference) and front-loads the core purpose. However, the parameter descriptions are redundant with the schema, and the example could be more concise. Overall, it's efficient but has minor verbosity in repeating schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (6 parameters, no output schema, no annotations), the description is partially complete. It covers the basic purpose and parameters but lacks details on return format (beyond 'Dict'), error conditions, authentication needs, and differentiation from siblings. The reference link helps, but the description alone doesn't provide full context for reliable agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, meaning all parameters are documented in the input schema. The description repeats parameter information verbatim from the schema without adding meaningful context like valid symbol formats, interval interpretations (e.g., 'D' for day), or how start/end times interact with the limit. This meets the baseline for high schema coverage but doesn't enhance understanding beyond what's already structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Get K-line (candlestick) data' with a specific verb ('Get') and resource ('K-line data'), making the function immediately understandable. However, it doesn't explicitly differentiate this tool from potential sibling tools that might also retrieve market data, such as 'get_tickers' or 'get_orderbook', which could provide overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_tickers' or 'get_orderbook', nor does it mention prerequisites or context for usage. The example and reference link are helpful but don't constitute explicit usage guidelines, leaving the agent to infer when this specific data retrieval method is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_open_ordersC
Get open orders

Args:
    category (str): Category (spot, linear, inverse, etc.)
    symbol (Optional[str]): Symbol (e.g., BTCUSDT)
    orderId (Optional[str]): Order ID
    orderLinkId (Optional[str]): Order link ID
    orderFilter (Optional[str]): Order filter
    limit (int): Number of orders to retrieve

Returns:
    Dict: Open orders

Example:
    get_open_orders("spot", "BTCUSDT", "123456789", "link123", "Order", 10)

Reference:
    https://bybit-exchange.github.io/docs/v5/order/open-order
ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory (spot, linear, inverse, etc.)
limitNoNumber of orders to retrieve
orderFilterNoOrder filter
orderIdNoOrder ID
orderLinkIdNoOrder link ID
symbolNoSymbol (e.g., BTCUSDT)

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure but provides minimal information. It states what the tool does but doesn't describe authentication requirements, rate limits, error conditions, pagination behavior (despite having a limit parameter), or what happens when multiple filtering parameters are combined. For a financial API tool with 6 parameters, this is inadequate behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably structured with sections for Args, Returns, Example, and Reference, but includes redundant information. The 'Args' section duplicates schema descriptions without adding value, and the example shows all parameters including optional ones without explaining their optional nature. The structure is clear but not optimally efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a financial API tool with 6 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain the return format beyond 'Dict: Open orders', doesn't describe error handling, authentication requirements, or rate limiting. The reference link is helpful but doesn't compensate for missing behavioral context that should be in the description itself.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description includes an 'Args' section that lists all parameters, but the schema already has 100% description coverage with identical parameter descriptions. The description adds no additional semantic context beyond what's in the schema - no examples of valid category values, explanation of how orderFilter works, or guidance on parameter combinations. With complete schema coverage, the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with 'Get open orders' - a specific verb+resource combination. It distinguishes itself from siblings like 'get_order_history' by focusing specifically on open/active orders rather than historical ones. However, it doesn't explicitly contrast with other order-related tools beyond the name difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when this tool is appropriate versus 'get_order_history' or 'cancel_order', or any context about what constitutes an 'open order' in this system. The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_orderbookC
Get orderbook data
:parameter
    symbol: Symbol (e.g., BTCUSDT)
    limit: Number of orderbook entries to retrieve
    category: Category (spot, linear, inverse, etc.)

Args:
    category: Category (spot, linear, inverse, etc.)
    symbol (str): Symbol (e.g., BTCUSDT)
    limit (int): Number of orderbook entries to retrieve

Returns:
    Dict: Orderbook data

Example:
    get_orderbook("spot", "BTCUSDT", 10)

Reference:
    https://bybit-exchange.github.io/docs/v5/market/orderbook
ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory (spot, linear, inverse, etc.)
limitNoNumber of orderbook entries to retrieve
symbolYesSymbol (e.g., BTCUSDT)

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'Get orderbook data' and includes an example and reference link, but lacks details on behavioral traits such as rate limits, authentication needs, error handling, or whether it's a real-time or cached snapshot. The example and reference add some context but don't fully disclose operational behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is poorly structured with redundant sections (':parameter' and 'Args:' list the same info), an example, and a reference link. It's not front-loaded effectively, and sentences like 'Get orderbook data' are too brief, while repetition wastes space. It could be streamlined to improve clarity and efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a tool with 3 parameters. It lacks details on return values (beyond 'Dict: Orderbook data'), error cases, or behavioral context like pagination or data freshness. The example and reference help but don't compensate for missing operational guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (category, symbol, limit) with descriptions. The description repeats parameter info in the ':parameter' section and 'Args:', adding no new meaning beyond the schema. Baseline is 3 since the schema does the heavy lifting, but no extra value is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get orderbook data' which clearly indicates a retrieval operation, but it's vague about what specific data is returned (e.g., bids/asks, depth levels). It distinguishes from siblings like 'get_tickers' or 'get_kline' by focusing on orderbook data, but lacks specificity about the verb+resource combination beyond the basic action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'get_tickers' for price data or 'get_instruments_info' for instrument details. The description implies usage for orderbook retrieval but doesn't specify contexts, prerequisites, or exclusions, leaving the agent to infer based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_order_historyC
Get order history

Args:
    category (str): Category (spot, linear, inverse, etc.)
    symbol (Optional[str]): Symbol (e.g., BTCUSDT)
    orderId (Optional[str]): Order ID
    orderLinkId (Optional[str]): Order link ID
    orderFilter (Optional[str]): Order filter
    orderStatus (Optional[str]): Order status
    startTime (Optional[int]): Start time in milliseconds
    endTime (Optional[int]): End time in milliseconds
    limit (int): Number of orders to retrieve

Returns:
    Dict: Order history

Example:
    get_order_history("spot", "BTCUSDT", "123456789", "link123", "Order", "Created", 1625097600000, 1625184000000, 10)

Reference:
    https://bybit-exchange.github.io/docs/v5/order/order-list
ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory (spot, linear, inverse, etc.)
endTimeNoEnd time in milliseconds
limitNoNumber of orders to retrieve
orderFilterNoOrder filter
orderIdNoOrder ID
orderLinkIdNoOrder link ID
orderStatusNoOrder status
startTimeNoStart time in milliseconds
symbolNoSymbol (e.g., BTCUSDT)

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions what parameters are available but doesn't describe important behaviors: whether this is a read-only operation, if it requires authentication, how results are paginated (beyond the limit parameter), or what happens when multiple filters are combined. The example shows a call but doesn't explain the return format beyond 'Dict: Order history'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (Args, Returns, Example, Reference). The description is appropriately sized for a tool with 9 parameters. The 'Get order history' statement is front-loaded, though it could be more informative. The example is helpful but could be better integrated with the parameter explanations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain the return format beyond 'Dict: Order history', doesn't mention authentication requirements, doesn't describe error conditions, and doesn't provide guidance on parameter combinations. The reference link helps but doesn't compensate for missing contextual information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description repeats parameter information in the Args section but doesn't add meaningful context beyond what's in the schema - no explanation of how parameters interact, what 'orderFilter' values are valid, or what 'orderStatus' options exist. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get order history' which is a clear verb+resource combination, but it's quite basic and doesn't differentiate from sibling tools like 'get_open_orders' or 'get_positions'. It doesn't specify what kind of history (all orders vs filtered) or scope beyond the parameters listed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'get_open_orders' or 'get_positions'. The description provides parameter information but doesn't explain the tool's role in the broader API context or when it's the appropriate choice for different querying needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_positionsC
Get position information

Args:
    category (str): Category (spot, linear, inverse, etc.)
    symbol (Optional[str]): Symbol (e.g., BTCUSDT)

Returns:
    Dict: Position information

Example:
    get_positions("spot", "BTCUSDT")

Reference:
    https://bybit-exchange.github.io/docs/v5/position
ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory (spot, linear, inverse, etc.)
symbolNoSymbol (e.g., BTCUSDT)

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While it mentions what the tool does (get position information) and provides an example, it doesn't disclose important behavioral traits like whether this requires authentication, rate limits, what happens with invalid parameters, or the structure of the returned position information beyond 'Dict'. The reference link is helpful but external.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns, Example, Reference) and appropriately sized. The information is front-loaded with the core purpose first. The example is helpful and the reference provides additional context without cluttering the main description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with 100% schema coverage but no output schema and no annotations, the description is adequate but has gaps. It explains what the tool does and provides an example, but doesn't describe the return value structure (beyond 'Dict') or important behavioral considerations. The reference link partially compensates but requires external access.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters completely. The description adds minimal value beyond what's in the schema - it repeats the same parameter descriptions verbatim and provides an example showing usage. This meets the baseline expectation when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get position information' which is a clear verb+resource combination, but it's quite generic. It doesn't specifically differentiate from sibling tools like 'get_wallet_balance' or 'get_open_orders' which also retrieve trading-related information. The purpose is understandable but lacks specificity about what makes this tool unique.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. The description doesn't mention when this tool is appropriate versus other sibling tools like 'get_wallet_balance' or 'get_open_orders'. There's no context about prerequisites, limitations, or typical use cases for position information retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_secret_keyB
Get secret key from environment variables
:return: Secret key
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Get') but doesn't clarify if this is a read-only operation, whether it requires specific permissions, or what happens on failure (e.g., missing key). The return value is mentioned but without details on format or errors. For a tool accessing sensitive data with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two short sentences that directly state the action and return value, with zero wasted words. It's front-loaded, immediately conveying the purpose. Every sentence earns its place by providing essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of accessing sensitive environment variables, no annotations, and no output schema, the description is incomplete. It doesn't explain the return format (e.g., string type), error handling, or security implications. For a tool that retrieves secret keys, more context is needed to ensure safe and correct usage by an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add param info beyond the schema, but that's appropriate here. Baseline for 0 params is 4, as the description focuses on the tool's purpose rather than compensating for missing param details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('secret key from environment variables'), making the purpose immediately understandable. It distinguishes itself from siblings like 'get_access_key' and 'get_api_key_information' by specifying 'secret key' and 'environment variables', though it doesn't explicitly contrast with them. The description avoids tautology by not just restating the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as 'get_access_key' or 'get_api_key_information', which are related sibling tools. It lacks context about prerequisites (e.g., environment setup) or exclusions, leaving the agent to infer usage based on the tool name alone. No explicit when/when-not statements are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tickersC
Get ticker information

Args:
    category (str): Category (spot, linear, inverse, etc.)
    symbol (str): Symbol (e.g., BTCUSDT)

Returns:
    Dict: Ticker information

Example:
    get_tickers("spot", "BTCUSDT")

Reference:
    https://bybit-exchange.github.io/docs/v5/market/tickers
ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory (spot, linear, inverse, etc.)
symbolYesSymbol (e.g., BTCUSDT)

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a 'Get' operation which implies read-only behavior, but provides no information about authentication requirements, rate limits, error conditions, or response format details beyond 'Dict: Ticker information'. This leaves significant gaps for an agent to understand how to properly invoke and interpret results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably structured with sections for Args, Returns, Example, and Reference. However, the core description ('Get ticker information') is overly brief, and the parameter documentation duplicates what's already in the schema rather than adding semantic context. The reference URL is useful but could be integrated more efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description is insufficient. While it covers the basic purpose and parameters, it lacks critical information about what 'ticker information' actually contains, authentication requirements, rate limits, error handling, and how this differs from similar market data tools. The absence of output schema means the description should compensate by explaining return values, which it doesn't do adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with both parameters clearly documented in the schema. The description adds minimal value beyond what's already in the schema - it repeats the same parameter descriptions verbatim and provides an example. This meets the baseline expectation when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Get ticker information' which is a specific verb+resource combination. However, it doesn't distinguish this tool from potential siblings like 'get_instruments_info' or 'get_orderbook' that might also provide market data, leaving some ambiguity about its unique scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_instruments_info', 'get_orderbook', and 'get_kline' that also retrieve market data, there's no indication of what makes 'get_tickers' distinct or when it's the appropriate choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_wallet_balanceC
Get wallet balance

Args:
    accountType (str): Account type (UNIFIED, CONTRACT, SPOT)
    coin (Optional[str]): Coin symbol

Returns:
    Dict: Wallet balance information

Example:
    get_wallet_balance("UNIFIED", "BTC")

Reference:
    https://bybit-exchange.github.io/docs/v5/account/wallet-balance
ParametersJSON Schema
NameRequiredDescriptionDefault
accountTypeYesAccount type (UNIFIED, CONTRACT, SPOT)
coinNoCoin symbol

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a read operation ('Get'), but doesn't mention authentication requirements, rate limits, error conditions, or what specific information is returned in the 'Dict'. This leaves significant behavioral gaps for a financial data tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably structured with sections for Args, Returns, Example, and Reference, but includes redundant information (repeating schema details) and could be more front-loaded. The core purpose is clear in the first line, but subsequent sections don't efficiently add value beyond what structured fields could provide.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a financial data tool with no annotations and no output schema, the description is insufficient. It doesn't explain what balance information is returned, how to interpret the results, or address common use cases. The example helps but doesn't compensate for the lack of behavioral and output context needed for proper tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters. The description repeats the parameter information but doesn't add meaningful context beyond what's in the schema, such as explaining the relationship between account types or when coin filtering is useful. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('wallet balance'), making it immediately understandable. However, it doesn't differentiate this tool from potential siblings like 'get_positions' or 'get_order_history' that might also return financial information, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. While it mentions account types and coin parameters, it doesn't explain when to query balance versus positions, orders, or other financial data from sibling tools, leaving the agent without contextual usage instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

place_orderA
Execute order

Args:
    category (str): Category
        - spot: Spot trading
            * Minimum order quantity: 0.000011 BTC (up to 6 decimal places)
            * Minimum order amount: 5 USDT
            * If buying at market price, qty should be input in USDT units (e.g., "10" = 10 USDT)
            * If selling at market price, qty should be input in BTC units (e.g., "0.000100" = 0.0001 BTC)
            * If placing a limit order, qty should be input in BTC units
            * positionIdx is not used
        - linear: Futures trading (USDT margin)
            * positionIdx is required (1: Long, 2: Short)
        - inverse: Futures trading (coin margin)
            * positionIdx is required (1: Long, 2: Short)
    symbol (str): Symbol (e.g., BTCUSDT)
    side (str): Order direction (Buy, Sell)
    orderType (str): Order type (Market, Limit)
    qty (str): Order quantity
        - Market Buy: qty should be input in USDT units (e.g., "10" = 10 USDT)
        - Market Sell: qty should be input in BTC units (e.g., "0.000100" = 0.0001 BTC, up to 6 decimal places)
        - Limit: qty should be input in BTC units (e.g., "0.000100" = 0.0001 BTC, up to 6 decimal places)
    price (Optional[str]): Order price (for limit orders)
    positionIdx (Optional[str]): Position index
        - Required for futures (linear/inverse) trading
        - "1": Long position
        - "2": Short position
        - Not used for spot trading
    timeInForce (Optional[str]): Order validity period
        - GTC: Good Till Cancel (default, for limit orders)
        - IOC: Immediate or Cancel (market order)
        - FOK: Fill or Kill
        - PostOnly: Post Only
    orderLinkId (Optional[str]): Order link ID (unique value)
    isLeverage (Optional[int]): Use leverage (0: No, 1: Yes)
    orderFilter (Optional[str]): Order filter
        - Order: Regular order (default)
        - tpslOrder: TP/SL order
        - StopOrder: Stop order
    triggerPrice (Optional[str]): Trigger price
    triggerBy (Optional[str]): Trigger basis
    orderIv (Optional[str]): Order volatility
    takeProfit (Optional[str]): Take profit price
    stopLoss (Optional[str]): Stop loss price
    tpTriggerBy (Optional[str]): Take profit trigger basis
    slTriggerBy (Optional[str]): Stop loss trigger basis
    tpLimitPrice (Optional[str]): Take profit limit price
    slLimitPrice (Optional[str]): Stop loss limit price
    tpOrderType (Optional[str]): Take profit order type (Market, Limit)
    slOrderType (Optional[str]): Stop loss order type (Market, Limit)

Returns:
    Dict: Order result

Example:
    # Spot trading (SPOT account balance required)
    place_order("spot", "BTCUSDT", "Buy", "Market", "10")  # Buy market price for 10 USDT
    place_order("spot", "BTCUSDT", "Sell", "Market", "0.000100")  # Sell market price for 0.0001 BTC
    place_order("spot", "BTCUSDT", "Buy", "Limit", "0.000100", price="50000")  # Buy limit order for 0.0001 BTC

    # Spot trading - limit order + TP/SL
    place_order("spot", "BTCUSDT", "Buy", "Limit", "0.000100", price="50000",
               takeProfit="55000", stopLoss="45000",  # TP/SL setting
               tpOrderType="Market", slOrderType="Market")  # Execute TP/SL as market order

    # Futures trading
    place_order("linear", "BTCUSDT", "Buy", "Market", "0.001", positionIdx="1")  # Buy market price for long position
    place_order("linear", "BTCUSDT", "Sell", "Market", "0.001", positionIdx="2")  # Sell market price for short position

Notes:
    1. Spot trading order quantity restrictions:
        - Minimum order quantity: 0.000011 BTC
        - Minimum order amount: 5 USDT
        - BTC quantity is only allowed up to 6 decimal places (e.g., 0.000100 O, 0.0001234 X)
    2. Pay attention to unit when buying/selling at market price:
        - Buying: qty should be input in USDT units (e.g., "10" = 10 USDT)
        - Selling: qty should be input in BTC units (e.g., "0.000100" = 0.0001 BTC)
    3. Futures trading requires positionIdx:
        - Long position: positionIdx="1"
        - Short position: positionIdx="2"
    4. positionIdx is not used for spot trading

Reference:
    https://bybit-exchange.github.io/docs/v5/order/create-order
ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory (spot, linear, inverse, etc.)
isLeverageNoUse leverage (0: No, 1: Yes)
orderFilterNoOrder filter (Order, tpslOrder, StopOrder)
orderIvNoOrder volatility
orderLinkIdNoOrder link ID
orderTypeYesOrder type (Market, Limit)
positionIdxNoPosition index (1: Long, 2: Short)
priceNoOrder price (for limit orders)
qtyYesOrder quantity
sideYesOrder direction (Buy, Sell)
slLimitPriceNoStop loss limit price
slOrderTypeNoStop loss order type (Market, Limit)
slTriggerByNoStop loss trigger basis
stopLossNoStop loss price
symbolYesSymbol (e.g., BTCUSDT)
takeProfitNoTake profit price
timeInForceNoTime in force (GTC, IOC, FOK, PostOnly)
tpLimitPriceNoTake profit limit price
tpOrderTypeNoTake profit order type (Market, Limit)
tpTriggerByNoTake profit trigger basis
triggerByNoTrigger basis
triggerPriceNoTrigger price

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses important behavioral traits: minimum order quantities/amounts, decimal precision limits, unit conventions for market orders, and positionIdx requirements. However, it doesn't mention critical aspects like authentication needs, rate limits, whether this is a destructive/write operation (implied but not stated), error conditions, or what happens with insufficient funds.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is comprehensive but overly long and poorly structured. While it starts with a brief purpose statement, it immediately dives into detailed parameter documentation that could be better organized. The 'Notes' section repeats information already covered. However, all content is relevant and the examples are valuable, so it's not wasteful despite its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex trading tool with 22 parameters, no annotations, and no output schema, the description does an excellent job covering parameter semantics, usage patterns, and constraints. The examples are particularly helpful. It falls short on some behavioral aspects (authentication, error handling) and doesn't describe the return value beyond 'Dict: Order result', but given the complexity, it's quite complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema description coverage, the description adds substantial value beyond the schema. It provides crucial semantic context: category-specific behaviors (spot vs futures), unit conventions for qty based on side/orderType, positionIdx usage rules, timeInForce defaults, and detailed examples showing parameter interactions. This goes far beyond what the basic schema descriptions provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Execute order' which clearly states the verb and resource. It distinguishes between spot, linear, and inverse trading categories, providing specific context about what the tool does. However, it doesn't explicitly differentiate from sibling tools like cancel_order or set_trading_stop beyond the basic action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use specific parameter values (e.g., positionIdx required for futures, not for spot; unit differences for market buys/sells). It includes examples for different trading scenarios. However, it doesn't explicitly state when NOT to use this tool versus alternatives like cancel_order or set_trading_stop, nor does it mention prerequisites like account balances or authentication.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_margin_modeC
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
ParametersJSON Schema
NameRequiredDescriptionDefault
buyLeverageYesBuying leverage
categoryYesCategory (spot, linear, inverse, etc.)
sellLeverageYesSelling leverage
symbolYesSymbol (e.g., BTCUSDT)
tradeModeYesTrading mode (0: Isolated, 1: Cross)

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Set' implies a write/mutation operation, the description doesn't disclose important behavioral traits: whether this requires specific permissions, if it's reversible, potential rate limits, authentication requirements, or what happens to existing positions when changing margin mode. The example shows parameter values but doesn't explain the implications of those choices.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns, Example, Reference) and efficiently presents information. However, the core description 'Set margin mode' is overly terse and could benefit from slightly more context about what margin mode represents in this trading system.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a financial trading tool with 5 required parameters and no annotations or output schema, the description is inadequate. It doesn't explain what 'margin mode' means, the implications of changing it, error conditions, or what the 'Setting result' dictionary contains. The reference link is helpful but doesn't compensate for the lack of essential context in the description itself.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 5 parameters. The description repeats the same parameter information without adding meaningful context beyond what's in the schema. It doesn't explain the relationship between parameters (e.g., how category affects other parameters) or provide guidance on valid combinations. The baseline of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Set margin mode' which is a specific verb+resource, but it's quite minimal and doesn't distinguish this from sibling tools. While it's clear this configures margin settings, it doesn't explain what 'margin mode' means in this trading context or how it differs from related tools like 'set_trading_stop'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites, timing considerations, or relationship to sibling tools like 'place_order' or 'set_trading_stop'. The example shows usage but doesn't explain the context in which this operation is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_trading_stopC
Set trading stop

Args:
    category (str): Category (spot, linear, inverse, etc.)
    symbol (str): Symbol (e.g., BTCUSDT)
    takeProfit (Optional[str]): Take profit price
    stopLoss (Optional[str]): Stop loss price
    trailingStop (Optional[str]): Trailing stop
    positionIdx (Optional[int]): Position index

Returns:
    Dict: Setting result

Example:
    set_trading_stop("spot", "BTCUSDT", "55000", "45000", "1000", 0)

Reference:
    https://bybit-exchange.github.io/docs/v5/position/trading-stop
ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory (spot, linear, inverse, etc.)
positionIdxNoPosition index
stopLossNoStop loss price
symbolYesSymbol (e.g., BTCUSDT)
takeProfitNoTake profit price
trailingStopNoTrailing stop

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'Setting result' but doesn't disclose critical behaviors: whether this is a mutation (likely yes), authentication needs, rate limits, error conditions, or what happens to existing stops. The example implies it sets prices, but behavioral context is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (Args, Returns, Example, Reference). The core description is just two words, but the structured format adds value. Some redundancy exists between Args and schema, but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a trading tool with 6 parameters, no annotations, and no output schema, the description is inadequate. It lacks context on permissions, side effects, error handling, and relationship to other trading operations. The reference link helps but doesn't compensate for missing behavioral details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are documented in the schema. The description repeats parameter info in the Args section but adds no additional meaning beyond what's in the schema. The example shows usage but doesn't clarify semantics like price format or position index meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Set trading stop' which is a verb+resource, but it's vague about what exactly is being set (stop-loss, take-profit, trailing stop) and doesn't distinguish from sibling trading tools like 'place_order' or 'cancel_order'. The title is null, leaving the name as the only identifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like modifying orders or positions directly. The example shows usage but doesn't explain context or prerequisites. Sibling tools include position management tools, but no comparison is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 15 tool updatesv1.0.0
    • First observedcancel_order
    • First observedget_access_key
    • First observedget_api_key_information
    • First observedget_instruments_info
    • First observedget_kline
    • First observedget_open_orders
    • First observedget_order_history
    • First observedget_orderbook
    • First observedget_positions
    • First observedget_secret_key
    • First observedget_tickers
    • First observedget_wallet_balance
    • First observedplace_order
    • First observedset_margin_mode
    • First observedset_trading_stop

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific resources like orders, market data, positions, and account management, with clear boundaries. However, get_access_key and get_secret_key are very similar in purpose (retrieving credentials from environment variables) and could cause confusion, though they target different keys.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern (e.g., cancel_order, get_instruments_info, place_order, set_margin_mode). The pattern is uniform across all 15 tools, with no mixing of conventions like camelCase or other styles.

Tool Count5/5

With 15 tools, the count is well-scoped for a cryptocurrency exchange server, covering essential operations like trading, market data, account management, and positions. Each tool appears to serve a specific, necessary function without obvious bloat or redundancy.

Completeness4/5

The tool set provides comprehensive coverage for trading, market data, and account operations, including CRUD-like actions for orders (place, cancel, get history) and positions. Minor gaps exist, such as no tool for modifying orders (e.g., update_order) or handling more advanced account settings, but core workflows are well-supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    D
    maintenance
    Enables cryptocurrency trading on Bybit exchange through comprehensive market data access, account management, and automated trading operations. Features smart position validation, trailing stop losses, and risk management tools with demo mode support for safe testing.
    21
    -
  • F
    license
    B
    quality
    D
    maintenance
    A comprehensive MCP server providing full access to Bybit's v5 API for real-time market data, trading operations, and account management. It enables AI assistants to execute trades, manage positions, and monitor wallet balances with built-in safety controls for both testnet and production environments.
    22
    6
    -
  • A
    license
    C
    quality
    D
    maintenance
    MCP server for Bybit exchange enabling 246 tools for trading, market data, account management, and more via natural language.
    100
    2
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A production-ready MCP server for Bybit — 206 tools covering market data, trading, positions, account management, assets, and real-time WebSocket streams. Enables AI assistants to interact directly with the Bybit cryptocurrency exchange through natural language.
    382
    447
    31
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dlwjdtn535/mcp-bybit-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server