Bybit MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bybit MCP ServerCheck my current wallet balance and any open positions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bybit MCP Server
⚠️ TRADING WARNING ⚠️
This MCP server can execute REAL TRADING OPERATIONS on Bybit whenBYBIT_TRADING_ENABLED=true.
Trading operations use REAL MONEY and can result in FINANCIAL LOSSES.
Always test on testnet first (BYBIT_TESTNET=true) and understand the risks before enabling trading.
Trading is DISABLED by default for safety.
A comprehensive Model Context Protocol (MCP) server that provides full access to Bybit's v5 API. This server enables AI assistants to fetch real-time market data, execute trading operations, manage positions, and access account information from the Bybit cryptocurrency exchange.
🚀 Production Ready
✅ Fully Tested - All endpoints tested and working
✅ Docker Support - Published image available at falconiun/bybit-mcp
✅ VS Code Integration - Ready-to-use configurations provided
✅ Comprehensive API Coverage - Market data, trading, positions, and account management
Related MCP server: bybit-mcp
Features
Core Market Data
Server Time: Get current Bybit server time
Tickers: Retrieve ticker information for trading symbols
Order Book: Get order book depth for any symbol
Recent Trades: Access recent trade history
Kline/Candlestick Data
Standard Klines: Get OHLCV candlestick data
Mark Price Klines: Get mark price historical data
Index Price Klines: Get index price historical data
Premium Index Klines: Get premium index price data
Trading Information
Instruments Info: Get detailed trading instrument information
Funding Rate History: Access historical funding rates
Open Interest: Get open interest statistics
Risk Limits: Retrieve risk limit information
Market Statistics
Insurance Fund: Get insurance fund data
Long/Short Ratio: Access long/short ratio statistics
Trading Operations (Requires BYBIT_TRADING_ENABLED=true)
Order Management: Place, amend, and cancel orders with full control
Advanced Order Types: Support for Market, Limit, and conditional/trigger orders
Batch Operations: Execute multiple orders in a single request for efficiency
Order History: View comprehensive open/closed orders and trade history
Real-time Execution: Get immediate feedback on order status and fills
Trigger Orders: Conditional orders with price triggers and advanced stop/take profit logic
Position Management (Requires BYBIT_TRADING_ENABLED=true)
Position Info: Query real-time position data with detailed metrics
Leverage Control: Set and modify position leverage dynamically
Margin Management: Switch between cross/isolated margin modes
Trading Stops: Set take profit, stop loss, and trailing stops
Auto Add Margin: Configure automatic margin addition
Position Modes: Switch between one-way and hedge position modes
P&L Tracking: Access closed profit and loss records
Account & Wallet Management
Wallet Balance: Get comprehensive wallet balance information
Single Coin Balance: Query specific coin balances
Account Information: Access detailed account information and settings
Multiple Account Types: Support for UNIFIED, CONTRACT, SPOT, INVESTMENT accounts
🎯 Key Capabilities
✅ Complete API Coverage
Market Data: All Bybit v5 market endpoints (tickers, order book, klines, funding rates, etc.)
Trading: Full order lifecycle management (place, amend, cancel, batch operations)
Advanced Orders: Conditional/trigger orders with sophisticated entry and exit strategies
Positions: Complete position management (leverage, margin, stops, P&L tracking)
Account: Wallet balances, account info, and multi-account support
✅ Agent-Optimized Design
Clear Tool Descriptions: Each tool has detailed, agent-friendly descriptions explaining purpose and usage
Rich Parameter Schemas: Comprehensive JSON schemas with examples, enums, and validation constraints
Safety Warnings: Important trading tools include prominent safety warnings and risk notices
Usage Guidance: Tools include context about when and how to use them effectively
Error Prevention: Schema validation prevents common parameter mistakes before API calls
✅ Production Features
Safety First: Trading disabled by default with explicit enablement required
Testnet Support: Full testnet integration for safe development and testing
Error Handling: Comprehensive error handling with detailed error messages
Data Validation: Pydantic models ensure data integrity and type safety
Docker Ready: Published Docker image with proper environment variable handling
✅ Developer Experience
VS Code Integration: Ready-to-use configurations for both local and Docker deployment
MCP Protocol: Full Model Context Protocol compliance for AI assistant integration
Type Safety: Complete TypeScript-style typing with Pydantic models
Testing: Comprehensive test suite with real API integration
Documentation: Extensive documentation with examples and best practices
Supported Categories
Linear: USDT perpetual, USDC perpetual, USDC futures
Inverse: Inverse perpetual, Inverse futures
Option: Options trading
Spot: Spot trading pairs
Installation
Prerequisites
Python 3.13+
uv package manager
Using uvx (Easiest - No Installation Required)
Run directly from PyPi without cloning or installing:
uvx bybit-mcpUsing uv (Recommended for local Development)
Clone the repository:
git clone <repository-url>
cd bybit-mcpInstall dependencies:
uv syncSet up environment variables:
# Copy the example environment file
cp .env.example .env
# Edit .env with your Bybit API credentials
BYBIT_API_KEY=your_api_key_here
BYBIT_API_SECRET=your_api_secret_here
BYBIT_TESTNET=false # Set to true for testnet
BYBIT_TRADING_ENABLED=false # Set to true to enable trading operationsRun the server:
uv run bybit-mcpDocker Usage
Build and Run
# Build the Docker image
docker build -t bybit-mcp .
# Run with environment variables (correct syntax)
docker run -i --rm --init \
-e BYBIT_API_KEY=your_api_key \
-e BYBIT_API_SECRET=your_api_secret \
-e BYBIT_TESTNET=false \
-e BYBIT_TRADING_ENABLED=false \
bybit-mcpUsing Docker Compose
# Set environment variables in .env file first
docker-compose upUsing Published Image
# Use the published Docker image
docker run -i --rm --init \
-e BYBIT_API_KEY=your_api_key \
-e BYBIT_API_SECRET=your_api_secret \
-e BYBIT_TESTNET=false \
-e BYBIT_TRADING_ENABLED=false \
falconiun/bybit-mcpConfiguration
Environment Variables
BYBIT_API_KEY: Your Bybit API keyBYBIT_API_SECRET: Your Bybit API secretBYBIT_TESTNET: Set totrueto use the Bybit testnet (default isfalse)BYBIT_TRADING_ENABLED: Set totrueto enable trading operations (default isfalse)
Safety Controls
The server implements several safety controls for trading operations:
Trading Disabled by Default
All trading and position management tools are disabled by default
Must explicitly set
BYBIT_TRADING_ENABLED=trueto enable tradingMarket data tools are always available regardless of this setting
Testnet Support
Set
BYBIT_TESTNET=trueto use Bybit's testnet environmentRecommended for development and testing
Testnet trading uses fake money and won't affect real balances
Tool Visibility
Trading tools only appear in the tool list when
BYBIT_TRADING_ENABLED=truePosition management tools require the same flag
This prevents accidental trading operations
API Permissions
Ensure your Bybit API key has the appropriate permissions:
Read-only: For market data (always safe)
Trade: Required for order operations (enable only when needed)
Position: Required for position management
Withdraw: Not required for this server
MCP Client Integration
Claude Desktop
To use the Bybit MCP server with Claude Desktop, add the following configuration to your Claude Desktop MCP settings file:
Location of Claude Desktop MCP config:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Option 1: Using Published Docker Image (Recommended)
{
"mcpServers": {
"bybit-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"-e", "BYBIT_API_KEY=your_api_key_here",
"-e", "BYBIT_API_SECRET=your_api_secret_here",
"-e", "BYBIT_TESTNET=false",
"-e", "BYBIT_TRADING_ENABLED=false",
"falconiun/bybit-mcp"
]
}
}
}Option 2: Using uvx (No Installation Required)
{
"mcpServers": {
"bybit-mcp": {
"command": "uvx",
"args": [
"bybit-mcp"
],
"env": {
"BYBIT_API_KEY": "your_api_key_here",
"BYBIT_API_SECRET": "your_api_secret_here",
"BYBIT_TESTNET": "false",
"BYBIT_TRADING_ENABLED": "false"
}
}
}
}Option 3: Local Development
{
"mcpServers": {
"bybit-mcp": {
"command": "uv",
"args": ["run", "bybit-mcp"],
"cwd": "path/to/your/bybit-mcp",
"env": {
"BYBIT_API_KEY": "your_api_key_here",
"BYBIT_API_SECRET": "your_api_secret_here",
"BYBIT_TESTNET": "false",
"BYBIT_TRADING_ENABLED": "false"
}
}
}
}Important Claude Desktop Notes:
Replace
your_api_key_hereandyour_api_secret_herewith your actual Bybit API credentialsSet
BYBIT_TESTNET=truefor testing with fake money (recommended for first use)Set
BYBIT_TRADING_ENABLED=trueonly when you want to enable real trading operationsRestart Claude Desktop after modifying the configuration file
Claude Desktop Usage Examples:
Once configured, you can ask Claude Desktop questions like:
"What's my USDT balance?"
"What's the current price of BTCUSDT?"
"Show me the order book for ETHUSDT"
"Get me the recent trading history for my account"
"What positions do I currently have open?"
For trading (when BYBIT_TRADING_ENABLED=true):
"Place a limit buy order for 0.001 BTC at $95,000"
"Cancel all my open orders"
"Set leverage to 10x for BTCUSDT"
"Set a stop loss at $90,000 for my BTC position"
Security Best Practices:
Start with
BYBIT_TESTNET=trueto test functionality safelyUse API keys with minimal required permissions (read-only for market data, trade permissions only when needed)
Never share your configuration file containing API keys
Consider using environment variables for sensitive credentials in production
Other MCP Clients
This server works with any MCP-compatible client. The configuration format may vary slightly between clients, but the core setup remains the same:
VS Code MCP Integration
Option 1: Local Development (Recommended)
Add to your VS Code settings.json:
{
"mcp": {
"servers": {
"bybit-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["bybit-mcp"],
"env": {
"BYBIT_API_KEY": "${input:bybit_api_key}",
"BYBIT_API_SECRET": "${input:bybit_api_secret}",
"BYBIT_TESTNET": "${input:bybit_testnet}",
"BYBIT_TRADING_ENABLED": "${input:bybit_trading_enabled}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "bybit_api_key",
"description": "Bybit API Key",
"password": true
},
{
"type": "promptString",
"id": "bybit_api_secret",
"description": "Bybit API Secret",
"password": true
},
{
"type": "promptString",
"id": "bybit_testnet",
"description": "Use Bybit Testnet",
"default": "false"
},
{
"type": "promptString",
"id": "bybit_trading_enabled",
"description": "Enable Bybit Trading",
"default": "false"
}
]
}
}Option 2: Docker (Production)
For using the published Docker image:
{
"mcp": {
"servers": {
"bybit-mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"-e",
"DOCKER_CONTAINER",
"-e",
"BYBIT_API_KEY",
"-e",
"BYBIT_API_SECRET",
"-e",
"BYBIT_TRADING_ENABLED",
"-e",
"BYBIT_TESTNET",
"falconiun/bybit-mcp"
],
"env": {
"DOCKER_CONTAINER": "true",
"BYBIT_API_KEY": "${input:bybit_api_key}",
"BYBIT_API_SECRET": "${input:bybit_api_secret}",
"BYBIT_TRADING_ENABLED": "${input:bybit_trading_enabled}",
"BYBIT_TESTNET": "${input:bybit_testnet}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "bybit_api_key",
"description": "Bybit API Key",
"password": true
},
{
"type": "promptString",
"id": "bybit_api_secret",
"description": "Bybit API Secret",
"password": true
},
{
"type": "promptString",
"id": "bybit_testnet",
"description": "Use Bybit Testnet",
"default": "false"
},
{
"type": "promptString",
"id": "bybit_trading_enabled",
"description": "Enable Bybit Trading",
"default": "false"
}
]
}
}Important Docker Notes:
The
-eflags are required to pass environment variables to the Docker containerThe
envsection sets the variables in VS Code's environment, which are then passed to DockerThe
--initflag helps with proper signal handling in containers
Testing
MCP Inspector
Test the server using the MCP inspector:
npx @modelcontextprotocol/inspector uv run bybit-mcpUnit Tests
uv run pytest tests/API Reference
Market Data Tools
All market data tools are always available and do not require special permissions.
Core Data
get_server_time: Get current Bybit server timeget_tickers: Get ticker information for symbolsget_order_book: Get order book depthget_recent_trades: Get recent trade history
Kline/Candlestick Data
get_kline: Get standard OHLCV kline dataget_mark_price_kline: Get mark price historical dataget_index_price_kline: Get index price historical dataget_premium_index_price_kline: Get premium index kline data
Market Information
get_instruments_info: Get trading instrument detailsget_funding_rate_history: Get funding rate historyget_open_interest: Get open interest statisticsget_insurance: Get insurance fund dataget_risk_limit: Get risk limit informationget_long_short_ratio: Get long/short ratio data
Trading Tools (Requires BYBIT_TRADING_ENABLED=true)
These tools are only available when trading is enabled via the BYBIT_TRADING_ENABLED environment variable.
Order Management
place_order: Place standard orders (Market, Limit) for immediate or specified price executionplace_trigger_order: Place conditional/trigger orders with advanced stop-loss, take-profit, and market entry strategiesamend_order: Modify existing pending orders (price, quantity, or trigger conditions)cancel_order: Cancel a specific pending ordercancel_all_orders: Cancel all open orders for enhanced risk management
Batch Operations
batch_place_order: Place multiple orders in one requestbatch_amend_order: Amend multiple orders in one requestbatch_cancel_order: Cancel multiple orders in one request
Order Information
get_open_closed_orders: Get open and closed ordersget_order_history: Get order historyget_trade_history: Get trade execution history
Wallet & Account Management
get_wallet_balance: Get comprehensive wallet balance informationget_single_coin_balance: Get balance for a specific cryptocurrencyget_account_info: Get detailed account information and settings
Position Tools (Requires BYBIT_TRADING_ENABLED=true)
Position management tools require trading to be enabled.
Position Information
get_position_info: Query real-time position dataget_closed_pnl: Get closed profit and loss records
Position Configuration
set_leverage: Set position leverageswitch_cross_isolated_margin: Switch margin modeswitch_position_mode: Switch between one-way/hedge modeset_auto_add_margin: Configure automatic margin addition
Risk Management
set_trading_stop: Set take profit, stop loss, trailing stopsmodify_position_margin: Add or reduce position margin
Tools
All tools support the following common parameters where applicable:
category: Product type (linear, inverse, option, spot)symbol: Trading symbol (e.g., BTCUSDT)limit: Data size limit per pagestart/end: Time range for historical data
Example Tool Calls
Get Server Time
{
"name": "get_server_time",
"arguments": {}
}Get Ticker Data
{
"name": "get_tickers",
"arguments": {
"category": "linear",
"symbol": "BTCUSDT"
}
}Get Kline Data
{
"name": "get_kline",
"arguments": {
"symbol": "BTCUSDT",
"interval": "1",
"category": "linear",
"limit": 100
}
}Place Order (Requires Trading Enabled)
{
"name": "place_order",
"arguments": {
"category": "linear",
"symbol": "BTCUSDT",
"side": "Buy",
"orderType": "Limit",
"qty": "0.001",
"price": "50000.00",
"orderLinkId": "my-order-123"
}
}Place Trigger Order (Requires Trading Enabled)
{
"name": "place_trigger_order",
"arguments": {
"category": "linear",
"symbol": "BTCUSDT",
"side": "Buy",
"orderType": "Market",
"qty": "0.001",
"triggerPrice": "48000.00",
"triggerDirection": 2,
"triggerBy": "LastPrice",
"orderLinkId": "trigger-buy-123"
}
}Get Position Info (Requires Trading Enabled)
{
"name": "get_position_info",
"arguments": {
"category": "linear",
"symbol": "BTCUSDT"
}
}Set Leverage (Requires Trading Enabled)
{
"name": "set_leverage",
"arguments": {
"category": "linear",
"symbol": "BTCUSDT",
"buyLeverage": "10",
"sellLeverage": "10"
}
}Set Trading Stop (Requires Trading Enabled)
{
"name": "set_trading_stop",
"arguments": {
"category": "linear",
"symbol": "BTCUSDT",
"takeProfit": "55000.00",
"stopLoss": "45000.00",
"positionIdx": 0
}
}Get Wallet Balance
{
"name": "get_wallet_balance",
"arguments": {
"accountType": "UNIFIED",
"coin": "USDT"
}
}Get Single Coin Balance
{
"name": "get_single_coin_balance",
"arguments": {
"accountType": "UNIFIED",
"coin": "BTC"
}
}Get Account Info
{
"name": "get_account_info",
"arguments": {}
}Resources
bybit://market/info: General information about available endpoints and capabilities
Troubleshooting
Common Issues
Environment Variables Not Working in Docker
Problem: API keys not being passed to Docker container
Solution: Use the
-eflag format shown in the Docker configuration aboveNote: The
envsection in VS Code MCP settings sets variables in VS Code's environment, which are then passed to Docker via-eflags
Pydantic Validation Errors
Problem: Data type mismatches (e.g., integers vs strings)
Solution: The server includes automatic type conversion for common API inconsistencies
Example:
seqfield in trade history is automatically converted from int to string
Trading Operations Disabled
Problem: Trading tools not appearing or returning disabled errors
Solution: Set
BYBIT_TRADING_ENABLED=truein your environment variablesSafety: This is intentional - trading is disabled by default for safety
API Permission Errors
Problem: 401 Unauthorized or insufficient permissions
Solution: Verify your Bybit API key has the required permissions:
Read-only: For market data (always safe)
Trade: Required for order operations
Position: Required for position management
Debug Mode
Enable debug logging by setting the log level:
# Local development
PYTHONPATH=src python -c "import logging; logging.basicConfig(level=logging.DEBUG)" -m bybit_mcp.main
# Docker
docker run -e PYTHONPATH=src -e LOG_LEVEL=DEBUG ...Development
Project Structure
bybit-mcp/
├── src/bybit_mcp/
│ ├── __init__.py
│ ├── main.py # MCP server implementation
│ ├── market.py # Market data API functions
│ ├── trade.py # Trading API functions
│ ├── position.py # Position management functions
│ └── models/
│ ├── market_models.py # Market data Pydantic models
│ ├── trade_models.py # Trading Pydantic models
│ └── position_models.py # Position Pydantic models
├── tests/
│ ├── test_market.py # Market data unit tests
│ └── test_trade.py # Trading unit tests
├── pyproject.toml # Project configuration
├── Dockerfile # Docker configuration
└── README.mdContributing
Fork the repository
Create a feature branch
Make your changes
Add tests for new functionality
Run the test suite
Submit a pull request
Code Quality
The project uses:
Ruff: For linting and formatting
Pytest: For testing
Pydantic: For data validation
Type hints: For better code documentation
Recent Updates
v0.1.0 - Production Release
✅ Complete Bybit v5 API coverage (market data, trading, positions, accounts)
✅ Docker image published to
falconiun/bybit-mcp✅ Fixed Pydantic validation issues (seq field type conversion)
✅ Comprehensive VS Code MCP integration with working Docker configuration
✅ Enhanced error handling and safety controls
✅ Full wallet and account management support
✅ Testnet support for safe development
✅ Production-ready with comprehensive testing
License
This project is licensed under the MIT License - see the LICENSE file for details.
Disclaimer
This software is for educational and development purposes. Always test thoroughly before using in production environments. The authors are not responsible for any financial losses incurred through the use of this software.
Support
For issues and questions:
Check the existing GitHub Issues
Create a new issue with detailed information
Provide logs and error messages when applicable
Support the Project
If you find this MCP server useful for your trading and development needs, consider supporting its continued development:
Your support helps maintain and improve this project, add new features, and ensure compatibility with the latest Bybit API updates. Thank you for considering a contribution!
Acknowledgments
Built with the Model Context Protocol
Uses the Bybit API v5
Powered by pybit library
Available Tools
22 toolsget_account_infoA
Get comprehensive account information including margin ratios, account status, upgrade status, and overall account health metrics. Essential for risk monitoring.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies this is a read-only operation ('Get'), which is consistent with the tool name, but does not disclose behavioral traits like authentication requirements, rate limits, or response format. The description adds some context about the tool's purpose in risk monitoring, but lacks details on how it behaves beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by a brief usage note. Every sentence earns its place by providing essential information without redundancy. It is appropriately sized for a tool with no parameters and clear functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no input parameters and no output schema, the description provides a clear purpose and usage context. However, it lacks details on what the output includes beyond high-level categories, and with no annotations, it does not cover behavioral aspects like error handling or data freshness. This is adequate but has gaps in completeness for a tool that returns account health metrics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter information is needed. The description does not add parameter details, which is appropriate. A baseline score of 4 is given because the tool has no parameters, and the description adequately explains what the tool does without unnecessary parameter elaboration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and the resource ('comprehensive account information'), with specific details about what information is included (margin ratios, account status, upgrade status, overall account health metrics). It distinguishes this tool from siblings by focusing on account-level data rather than market data, positions, orders, or balances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Essential for risk monitoring'), which implicitly suggests it's for assessing account health rather than trading or market analysis. However, it does not explicitly state when not to use it or name specific alternatives among the sibling tools, such as get_position_info or get_wallet_balance for more specific data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_closed_pnlB
Get historical profit and loss data for closed positions. Useful for performance analysis and tax reporting.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Product category to query closed PnL for | |
| symbol | No | Specific trading pair to get PnL for. Leave empty to get all closed PnL in category | |
| startTime | No | Start timestamp in milliseconds for PnL query | |
| endTime | No | End timestamp in milliseconds for PnL query | |
| limit | No | Maximum number of records to return (1-100) | |
| cursor | No | Pagination cursor for next page of results |
TDQS
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 mentions the tool retrieves 'historical' data, implying it's a read-only operation, but doesn't specify authentication requirements, rate limits, error conditions, or the format/structure of returned data. For a tool with 6 parameters and no output schema, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero waste. The first sentence states the core purpose, and the second provides usage context. It's appropriately sized and front-loaded, with every sentence earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no annotations, no output schema), the description is minimally adequate. It clarifies the tool's purpose and usage context but lacks details on behavioral traits, output format, and differentiation from siblings. With no output schema, the description should ideally hint at return values, but it doesn't, leaving gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no specific parameter information beyond what's in the schema (e.g., it doesn't explain 'category' options or 'cursor' usage). However, it implicitly reinforces that parameters filter 'closed positions' data, which aligns with the schema. Baseline 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.
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 historical profit and loss data for closed positions.' It specifies both the verb ('Get') and resource ('historical profit and loss data for closed positions'), making it unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_trade_history' or 'get_order_history' which might also involve historical data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance by stating it's 'Useful for performance analysis and tax reporting,' which suggests appropriate contexts. However, it doesn't explicitly say when to use this tool versus alternatives (e.g., vs. 'get_trade_history' or 'get_order_history'), nor does it mention any prerequisites or exclusions. The guidance is helpful but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_funding_rate_historyC
Get funding rate history
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Product type | linear |
| symbol | Yes | Symbol name (e.g., BTCUSDT) | |
| startTime | No | Start timestamp (ms) | |
| endTime | No | End timestamp (ms) | |
| limit | No | Limit for data size per page (1-200) |
TDQS
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 but offers no information beyond the basic action. It does not mention whether this is a read-only operation, potential rate limits, authentication needs, error conditions, or the format of returned data. For a tool with 5 parameters and no output schema, this lack of behavioral context is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single, front-loaded sentence that directly states the tool's purpose. There is no wasted verbiage or unnecessary elaboration, making it efficient and easy to parse, though this brevity comes at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no annotations, no output schema), the description is incomplete. It does not address behavioral aspects like data retrieval limits, error handling, or output format, nor does it provide usage context. For a historical data query tool, this leaves critical gaps in understanding how to effectively invoke and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 itself. The description adds no additional meaning beyond what the schema provides (e.g., it does not explain relationships between parameters like 'startTime' and 'endTime' or clarify the 'category' enum). Since the schema does the heavy lifting, the baseline score of 3 is appropriate, though the description fails to compensate with any extra insights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get funding rate history' is a tautology that restates the tool name with minimal elaboration. While it indicates the action ('Get') and resource ('funding rate history'), it lacks specificity about scope or differentiation from sibling tools like 'get_kline' or 'get_mark_price_kline' that might also retrieve historical data. This makes it vague and minimally informative beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. The description does not mention context, prerequisites, or exclusions, and it fails to differentiate from sibling tools that might serve similar purposes (e.g., other historical data tools). This leaves the agent without clear direction on appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_index_price_klineC
Get index price candlestick data for derivatives. Index price is the fair value price based on major spot exchanges, used as reference for mark price calculation.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Product type: 'linear' for USDT perpetuals, 'inverse' for coin-margined futures | linear |
| symbol | Yes | Trading pair symbol. Examples: 'BTCUSDT', 'ETHUSDT' | |
| interval | No | Time interval for each candlestick. Minutes: '1', '3', '5', '15', '30', '60' (1h), '120' (2h), '240' (4h), '360' (6h), '720' (12h). Periods: 'D' (daily), 'W' (weekly), 'M' (monthly) | D |
| start | No | Start time in milliseconds timestamp (OPTIONAL). The OLDEST time point (furthest back). If not provided, returns recent data. | |
| end | No | End time in milliseconds timestamp (OPTIONAL). The NEWEST time point (most recent). If not provided, defaults to current time. | |
| limit | No | Maximum number of candlesticks to return (OPTIONAL). Range: 1-1000. |
TDQS
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. The description explains what index price is and its purpose, but doesn't disclose key behavioral traits: whether this is a read-only operation, if it requires authentication, rate limits, error conditions, or what the output format looks like (e.g., array of candlesticks with OHLCV data). For a data retrieval tool with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences. The first sentence directly states the tool's purpose, and the second provides helpful context about index price. There's no wasted text, and the information is front-loaded. It could potentially be more structured with explicit usage guidance, but it's efficient as is.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, financial data tool) and lack of both annotations and output schema, the description is incomplete. It explains what index price is but doesn't cover behavioral aspects like authentication needs, rate limits, error handling, or output format. For a tool that retrieves time-series financial data with multiple parameters, more context about how to interpret and use the results would be valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters thoroughly with descriptions, enums, examples, and constraints. The description adds no parameter-specific information beyond what's in the schema. According to the rules, when schema coverage is high (>80%), the baseline score is 3 even with no param info in the description, which applies here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 index price candlestick data for derivatives.' It specifies the resource (index price candlestick data) and domain (derivatives). However, it doesn't explicitly distinguish this from sibling tools like 'get_kline' or 'get_mark_price_kline', which likely retrieve different types of price data. The explanation of index price as 'fair value price based on major spot exchanges' is helpful but doesn't fully differentiate the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 mentions that index price is 'used as reference for mark price calculation,' which hints at a use case, but doesn't explicitly contrast with sibling tools like 'get_kline' (likely for spot prices) or 'get_mark_price_kline' (for mark prices). There are no explicit when-to-use or when-not-to-use instructions, leaving the agent to infer usage from context.
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 trading instruments information
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Product type | linear |
| symbol | No | Symbol name (e.g., BTCUSDT) | |
| baseCoin | No | Base coin | |
| limit | No | Limit for data size per page (1-1000) | |
| cursor | No | Cursor for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It implies a read operation ('Get'), but doesn't disclose behavioral traits like whether it requires authentication, rate limits, pagination behavior (beyond the cursor parameter), error conditions, or response format. This is inadequate for a tool with 5 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized for a tool name that already hints at the function, though this conciseness comes at the cost of detail needed for other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, no annotations, no output schema, many similar siblings), the description is incomplete. It doesn't explain what 'trading instruments information' includes, how results are structured, or when to use it over other tools. This leaves significant gaps for an agent to operate effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 5 parameters with descriptions, enums, and constraints. The description adds no meaning beyond the schema, not even clarifying relationships between parameters (e.g., if symbol and baseCoin are mutually exclusive). Baseline 3 is appropriate when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get trading instruments information' states a clear verb ('Get') and resource ('trading instruments information'), but it's vague about what specific information is retrieved. It doesn't distinguish this tool from siblings like 'get_tickers' or 'get_order_book' that also provide trading-related information, leaving ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With many sibling tools related to trading data (e.g., get_tickers, get_order_book, get_position_info), the description offers no context about use cases, prerequisites, or exclusions, 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_insuranceD
Get insurance fund data
| Name | Required | Description | Default |
|---|---|---|---|
| coin | No | Coin name (e.g., BTC, ETH, USDT) |
TDQS
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 fails to describe any traits such as read-only status, potential side effects, authentication needs, rate limits, or return format. The description is too vague to inform the agent about how the tool behaves beyond its basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a single sentence, but it is under-specified rather than efficiently informative. It lacks front-loaded detail that could clarify the tool's scope or usage, making it minimally structured but not effectively so.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of financial data tools and the lack of annotations and output schema, the description is incomplete. It does not explain what 'insurance fund data' entails, how results are returned, or any behavioral aspects, leaving significant gaps for the agent to understand the tool's full context and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'coin' well-documented in the schema. The description does not add any meaning beyond the schema, such as explaining why the coin parameter is optional or its impact on the query. Given the high schema coverage, a baseline score of 3 is appropriate as the description does not compensate but also does not detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get insurance fund data' restates the tool name 'get_insurance' with minimal elaboration, making it tautological. It specifies the resource ('insurance fund data') but lacks a clear verb beyond 'get' and does not differentiate from siblings like 'get_wallet_balance' or 'get_account_info' in terms of what specific data is retrieved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It does not mention context, prerequisites, or exclusions, leaving the agent without direction on its appropriate application among the many sibling tools for financial data retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_klineA
Get historical candlestick/OHLC data for technical analysis. Returns open, high, low, close prices and volume data. If no time range specified, returns recent data ending at current time.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Product type: 'linear' for USDT perpetuals (most common), 'inverse' for coin-margined futures, 'option' for options, 'spot' for spot trading | linear |
| symbol | Yes | Trading pair symbol. Examples: 'BTCUSDT', 'ETHUSDT', 'SOLUSDT' | |
| interval | No | Time interval for each candlestick. Minutes: '1', '3', '5', '15', '30', '60' (1h), '120' (2h), '240' (4h), '360' (6h), '720' (12h). Periods: 'D' (daily), 'W' (weekly), 'M' (monthly) | D |
| start | No | Start time in milliseconds timestamp (OPTIONAL). If not provided, returns recent data. This is the OLDEST time point you want (furthest back in time). Example: 1640995200000 for Jan 1, 2022 | |
| end | No | End time in milliseconds timestamp (OPTIONAL). If not provided, defaults to current time. This is the NEWEST time point you want (most recent). Must be after start time. | |
| limit | No | Maximum number of candlesticks to return (OPTIONAL). Range: 1-1000. If not specified, API will use a reasonable default based on the interval. |
TDQS
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 effectively describes the return format (OHLCV data) and default time behavior, but doesn't mention rate limits, authentication requirements, data freshness, or potential errors. For a data retrieval tool with no annotations, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place. The first sentence states the core purpose and return format, while the second explains the default time behavior. There's zero wasted language and it's front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no annotations and no output schema, the description provides adequate basic information about what the tool does and returns. However, it lacks details about authentication needs, rate limits, error conditions, and pagination behavior that would be helpful for a financial data retrieval tool. The schema handles parameter documentation well, but the description doesn't fully compensate for the missing behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 6 parameters thoroughly. The description adds minimal value beyond what's in the schema - it mentions time range defaults but doesn't provide additional parameter semantics. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get historical candlestick/OHLC data') and resource ('for technical analysis'), distinguishing it from sibling tools like get_tickers (current prices) or get_recent_trades (raw trades). It explicitly mentions the return data structure (open, high, low, close prices and volume), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some implied usage context by mentioning 'technical analysis' and the default behavior when no time range is specified. However, it doesn't explicitly state when to use this tool versus alternatives like get_mark_price_kline or get_index_price_kline, nor does it mention any prerequisites or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_long_short_ratioC
Get long/short ratio data
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Product type | linear |
| symbol | Yes | Symbol name (e.g., BTCUSDT) | |
| interval | No | Data recording interval | 5min |
| startTime | No | Start timestamp (ms) | |
| endTime | No | End timestamp (ms) | |
| limit | No | Limit for data size per page (1-500) |
TDQS
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 but offers minimal insight. It implies a read operation but does not cover aspects like rate limits, authentication needs, data freshness, or error handling. This is inadequate for a tool with multiple parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single phrase, 'Get long/short ratio data,' which is front-loaded and wastes no words. It efficiently conveys the core function without unnecessary elaboration, though this brevity contributes to gaps in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no output schema, and no annotations), the description is insufficient. It fails to explain return values, usage context, or behavioral traits, leaving significant gaps for an agent to understand and invoke the tool effectively in a financial data context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing detailed documentation for all parameters, including enums and defaults. The description adds no additional meaning beyond the schema, but the high coverage justifies a baseline score of 3, as the schema adequately compensates for the lack of param details in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get long/short ratio data' restates the tool name with minimal elaboration, making it tautological. It specifies the type of data but lacks a clear verb-resource pairing or differentiation from sibling tools like get_open_interest or get_position_info, which might relate to similar financial metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. The description does not mention context, prerequisites, or comparisons to sibling tools, leaving the agent with no usage instructions beyond the basic function implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mark_price_klineA
Get mark price candlestick data for derivatives trading. Mark price is used for liquidation calculations and PnL. Available for linear and inverse perpetual contracts only.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Product type: 'linear' for USDT perpetuals, 'inverse' for coin-margined futures | linear |
| symbol | Yes | Trading pair symbol. Examples: 'BTCUSDT', 'ETHUSDT' | |
| interval | No | Time interval for each candlestick. Minutes: '1', '3', '5', '15', '30', '60' (1h), '120' (2h), '240' (4h), '360' (6h), '720' (12h). Periods: 'D' (daily), 'W' (weekly), 'M' (monthly) | D |
| start | No | Start time in milliseconds timestamp (OPTIONAL). The OLDEST time point (furthest back). If not provided, returns recent data. | |
| end | No | End time in milliseconds timestamp (OPTIONAL). The NEWEST time point (most recent). If not provided, defaults to current time. | |
| limit | No | Maximum number of candlesticks to return (OPTIONAL). Range: 1-1000. |
TDQS
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 adds useful context about the purpose of mark price (liquidation and PnL calculations) and contract availability, but it does not cover other behavioral traits such as rate limits, authentication needs, error conditions, or the format of returned data. This leaves gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, consisting of two concise sentences that immediately convey the tool's purpose and key constraints. Every sentence earns its place by providing essential information without redundancy or unnecessary details, making it efficient and easy to understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 somewhat complete but has gaps. It explains the tool's purpose and contract limitations well, but without annotations or an output schema, it lacks details on behavioral aspects like data format, error handling, or usage limits. This makes it adequate but not fully comprehensive for an agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, providing detailed documentation for all 6 parameters (e.g., category, symbol, interval). The description does not add any parameter-specific semantics beyond what the schema already explains, so it meets the baseline of 3 without compensating further. No parameters are explicitly mentioned in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 specific verbs ('Get mark price candlestick data') and resource ('for derivatives trading'), distinguishing it from siblings like 'get_kline' (likely regular price data) and 'get_index_price_kline' by specifying 'mark price' used for liquidation and PnL calculations. It explicitly mentions the contract types it supports ('linear and inverse perpetual contracts only'), making the scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool by explaining that mark price is for liquidation and PnL calculations, and it specifies the available contract types ('linear and inverse perpetual contracts only'). However, it does not explicitly state when not to use it or name alternatives (e.g., 'get_kline' for regular price data or 'get_index_price_kline'), which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_open_closed_ordersA
Get both open (pending) and recently closed orders. Essential for monitoring order status and trading activity. Use this to check if orders are filled, cancelled, or still pending.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Product category to query orders for | |
| symbol | No | Specific trading pair to get orders for. Leave empty to get all orders in category | |
| baseCoin | No | Base coin filter for derivatives and options | |
| orderId | No | Specific order ID to query | |
| orderLinkId | No | Specific custom order ID to query | |
| openOnly | No | Filter by open orders only: 0 = all orders, 1 = open orders only, 2 = closed orders only | |
| limit | No | Maximum number of records to return (1-50) | |
| cursor | No | Pagination cursor for next page of results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. While it mentions the tool's purpose and usage, it fails to disclose critical behavioral traits such as authentication requirements, rate limits, whether it's a read-only operation, what 'recently closed' means, or how results are structured. For a tool with 8 parameters and no annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with three sentences that are front-loaded with the core purpose. Every sentence earns its place by explaining what the tool does and when to use it, though the third sentence slightly repeats the first. There is minimal waste, but it could be slightly more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, no annotations, no output schema), the description is incomplete. It lacks information on authentication, rate limits, pagination behavior, error handling, and the structure of returned data. For a tool with this many parameters and no output schema, the description should provide more context to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 8 parameters thoroughly. The description adds no additional parameter semantics beyond what the schema provides, such as explaining interactions between parameters or providing usage examples. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('both open (pending) and recently closed orders'), and distinguishes it from siblings by specifying its unique scope of monitoring order status and trading activity. It explicitly mentions checking if orders are filled, cancelled, or still pending, which sets it apart from tools like get_order_history or get_closed_pnl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Essential for monitoring order status and trading activity'), but does not explicitly state when not to use it or name alternatives. It implies usage for checking order statuses, but lacks explicit exclusions or comparisons to sibling tools like get_order_history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_open_interestC
Get open interest data
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Product type | linear |
| symbol | Yes | Symbol name (e.g., BTCUSDT) | |
| interval | No | Interval time | 5min |
| startTime | No | Start timestamp (ms) | |
| endTime | No | End timestamp (ms) | |
| limit | No | Limit for data size per page (1-200) | |
| cursor | No | Cursor for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. 'Get open interest data' implies a read-only operation but doesn't specify authentication requirements, rate limits, pagination behavior (though cursor parameter hints at it), error conditions, or what format the data returns. For a financial data tool with 7 parameters, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is maximally concise at just three words with zero wasted language. It's front-loaded with the core purpose and contains no unnecessary elaboration. For its limited content, the structure is perfectly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 parameters, financial data tool), lack of annotations, and absence of an output schema, the description is insufficiently complete. It doesn't explain what open interest data represents, what format it returns, or how to interpret results. The agent would need to infer much from parameter names alone, which is inadequate for proper tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter information beyond what's already in the input schema, which has 100% description coverage with clear parameter documentation including enums, defaults, and constraints. The baseline score of 3 reflects that the schema does all the work - the description doesn't compensate but doesn't need to given complete schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get open interest data' is a tautology that essentially restates the tool name 'get_open_interest'. It specifies the resource ('open interest data') but lacks a clear verb beyond 'get' and doesn't distinguish this tool from its many siblings that also retrieve various types of financial data. The purpose is identifiable but overly generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 21 sibling tools on the server (including get_kline, get_tickers, get_position_info, etc.), there's no indication of what makes open interest data distinct or when an agent should prefer this tool over others for related financial metrics. No context, exclusions, or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_order_bookC
Get order book depth for a trading symbol
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Product type | linear |
| symbol | Yes | Symbol name (e.g., BTCUSDT) | |
| limit | No | Limit for data size per page (1-500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it 'gets' data, implying a read-only operation, but doesn't disclose behavioral traits like rate limits, authentication needs, or what 'depth' entails (e.g., bid/ask levels). This is inadequate for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose, making it easy to parse quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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. It doesn't explain what 'order book depth' returns (e.g., bid/ask arrays, timestamps) or behavioral aspects like pagination or error handling, leaving significant gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents parameters. The description adds no additional meaning beyond implying 'symbol' is for trading, which is already clear from the schema. Baseline 3 is appropriate as the schema handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get order book depth') and resource ('for a trading symbol'), making the purpose immediately understandable. However, it doesn't differentiate from siblings like 'get_recent_trades' or 'get_tickers' that also provide market data, missing explicit distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With siblings like 'get_recent_trades' and 'get_tickers' that offer different market data, the description lacks context for choosing this specific tool, leaving the agent to infer usage.
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 comprehensive order history with detailed information about past orders including execution details, timestamps, and status changes. Useful for trade analysis and record keeping.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Product category to query order history for | |
| symbol | No | Specific trading pair to get order history for. Leave empty to get all orders in category | |
| baseCoin | No | Base coin filter for derivatives and options | |
| orderId | No | Specific order ID to query | |
| orderLinkId | No | Specific custom order ID to query | |
| orderStatus | No | Filter by order status | |
| orderFilter | No | Order type filter | |
| startTime | No | Start timestamp in milliseconds for history query | |
| endTime | No | End timestamp in milliseconds for history query | |
| limit | No | Maximum number of records to return (1-50) | |
| cursor | No | Pagination cursor for next page of results |
TDQS
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. While it mentions the tool provides 'comprehensive order history' and is 'useful for trade analysis,' it lacks critical details such as whether this is a read-only operation, potential rate limits, authentication requirements, pagination behavior (implied by 'cursor' parameter but not explained), or what happens with large datasets. For a tool with 11 parameters and no annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with two sentences that efficiently state the tool's purpose and utility. There's no wasted language, and it avoids redundancy. However, it could be slightly more structured by explicitly separating purpose from usage context, preventing a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 parameters, no annotations, no output schema), the description is incomplete. It doesn't address behavioral aspects like safety, performance, or output format, which are crucial for a tool of this scope. Without annotations or an output schema, the description should provide more context on what to expect from the tool's operation and results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 well-documented in the schema itself. The description adds no specific parameter semantics beyond the general scope of 'order history,' so it doesn't enhance understanding of individual parameters. This meets the baseline score of 3, as the schema adequately handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 comprehensive order history with detailed information about past orders including execution details, timestamps, and status changes.' It specifies the verb ('Get') and resource ('order history') with some detail about what information is included. However, it doesn't explicitly differentiate this from sibling tools like 'get_open_closed_orders' or 'get_trade_history', 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal usage guidance with 'Useful for trade analysis and record keeping,' which gives some context but doesn't specify when to use this tool versus alternatives like 'get_open_closed_orders' or 'get_trade_history.' There's no explicit mention of when not to use it or clear alternatives, leaving significant gaps in guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_position_infoB
Get detailed position information including size, value, PnL, and margin for your trading positions. Essential for portfolio monitoring and risk management.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Product category to query positions for | |
| symbol | No | Specific trading pair to get position for. Leave empty to get all positions in category | |
| baseCoin | No | Base coin filter for derivatives and options | |
| settleCoin | No | Settlement coin filter | |
| limit | No | Maximum number of records to return (1-200) | |
| cursor | No | Pagination cursor for next page of results |
TDQS
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 information (implying read-only behavior) but doesn't specify authentication requirements, rate limits, error conditions, or whether it returns real-time or cached data. For a financial tool with potential high-stakes use, this lack of detail is a significant gap, though it doesn't contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence and adds context in the second. Both sentences earn their place by clarifying the tool's function and use case without redundancy. It's appropriately sized for a tool with 6 parameters, though it could be slightly more concise by integrating the two sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 6 parameters, no annotations, and no output schema, the description is moderately complete. It covers the purpose and high-level use but lacks details on behavioral traits, return format, or error handling. For a tool in a trading environment with siblings like get_closed_pnl, more guidance on differentiation would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, providing clear documentation for all 6 parameters, including enums and examples. The description adds no parameter-specific semantics beyond implying filtering by category and symbol, which is already covered in the schema. This meets the baseline score of 3 for high schema coverage without additional value from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 specific verbs ('Get detailed position information') and resources ('trading positions'), listing key data points like size, value, PnL, and margin. It distinguishes itself from siblings like get_account_info or get_wallet_balance by focusing on active trading positions rather than account balances or historical data. However, it doesn't explicitly differentiate from get_closed_pnl, which might overlap in PnL reporting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for 'portfolio monitoring and risk management,' suggesting when to use this tool in a trading context. It doesn't provide explicit alternatives or exclusions, such as when to use get_closed_pnl for historical PnL versus this tool for current positions. The guidance is contextual but lacks specificity on tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_tradesC
Get recent trades for a symbol
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Product type | linear |
| symbol | Yes | Symbol name (e.g., BTCUSDT) | |
| baseCoin | No | Base coin (for option only) | |
| optionType | No | Option type (Call or Put, for option only) | |
| limit | No | Limit for data size per page (1-1000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'recent trades' but doesn't specify time frames, pagination, rate limits, authentication needs, or what 'recent' means. This leaves significant behavioral gaps for a tool with 5 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, making it easy to parse without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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. It doesn't explain return values, error conditions, or behavioral traits like time ranges for 'recent'. For a tool with 5 parameters and complex options, this leaves too much unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no extra meaning beyond implying 'symbol' is required, which is already in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('recent trades for a symbol'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_trade_history' or 'get_order_history', which might have overlapping functionality, so it lacks sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With siblings like 'get_trade_history' and 'get_order_history' available, the description offers no context on differences, prerequisites, or exclusions, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_risk_limitC
Get risk limit information
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Product type | linear |
| symbol | No | Symbol name (e.g., BTCUSDT) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It only states the action ('get') without any details on permissions required, rate limits, response format, or whether it's a read-only operation. For a tool with no annotation coverage, this minimal description fails to provide necessary 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence 'Get risk limit information', which is front-loaded and wastes no words. However, this conciseness comes at the cost of completeness, but for this dimension alone, it's efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (2 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain what 'risk limit information' entails (e.g., numerical limits, thresholds), how results are returned, or tie parameters to the output. With no output schema and minimal description, it leaves significant gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter descriptions in the schema (e.g., 'category' as product type with enum values, 'symbol' as symbol name). The description adds no additional meaning beyond the schema, so it meets the baseline score of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get risk limit information' is a tautology that essentially restates the tool name 'get_risk_limit'. It specifies the verb 'get' and resource 'risk limit information', but lacks specificity about what risk limits are (e.g., trading limits, margin requirements) and doesn't distinguish from sibling tools like get_position_info or get_account_info that might provide related risk data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. The description doesn't mention prerequisites, context (e.g., for trading decisions, risk assessment), or how it differs from sibling tools like get_position_info or get_account_info that might include risk-related data. This leaves the agent with no basis for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_timeA
Get the current Bybit server time
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool's function but lacks details on behavioral traits such as rate limits, authentication requirements, response format, or error handling. However, for a simple, parameterless tool, the description is minimally adequate, though it could benefit from additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded and appropriately sized for a simple tool, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is complete enough for basic understanding. However, it lacks details on output format or behavioral context, which could be helpful for an AI agent. It meets the minimum viable standard but has clear gaps in providing full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description does not add parameter details beyond the schema, but this is appropriate given the lack of parameters, warranting a baseline score of 4 as per the rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get') and resource ('current Bybit server time'), making the purpose immediately understandable. It distinguishes itself from sibling tools like get_account_info or get_tickers by focusing exclusively on server time rather than account data, market data, or other metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving server time, but does not explicitly state when to use this tool versus alternatives (e.g., for timestamp synchronization vs. using local time). No guidance is provided on prerequisites, exclusions, or specific contexts where this tool is preferred over others in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_single_coin_balanceA
Get balance information for a specific coin with additional details like transferable amounts and account relationships. More detailed than wallet balance for single coin queries.
| Name | Required | Description | Default |
|---|---|---|---|
| accountType | Yes | Account type to query coin balance for | |
| coin | Yes | Specific coin to get detailed balance for | |
| memberId | No | Member ID for institutional accounts (optional) | |
| toAccountType | No | Target account type for transfer queries (optional) | |
| toMemberId | No | Target member ID for institutional transfers (optional) | |
| withBonus | No | Include bonus balance in results: 0 = exclude bonus, 1 = include bonus |
TDQS
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 the tool provides 'additional details like transferable amounts and account relationships', it doesn't disclose important behavioral aspects such as whether this is a read-only operation, authentication requirements, rate limits, error conditions, or what format the balance information returns. The description adds some value but leaves significant gaps for a tool with 6 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with just two sentences that each earn their place. The first sentence states the core purpose and key differentiators, while the second sentence provides important comparative context. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no annotations, no output schema), the description provides adequate but incomplete context. It explains the tool's purpose and differentiators well, but doesn't address behavioral aspects, return format, or error handling. For a balance query tool with multiple optional parameters affecting institutional accounts and bonus calculations, more behavioral context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters thoroughly with descriptions, enums, examples, and required status. The description doesn't add any parameter-specific information beyond what's in the schema, but with complete schema coverage, a baseline score of 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 specific verbs ('Get balance information') and resources ('specific coin'), and explicitly differentiates it from sibling tools by mentioning it's 'More detailed than wallet balance for single coin queries' and listing additional details like 'transferable amounts and account relationships'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('for single coin queries' and 'more detailed than wallet balance'), but doesn't explicitly state when NOT to use it or name specific alternatives beyond the general comparison to 'wallet balance'. It implies usage scenarios without providing explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tickersB
Get real-time ticker information including current prices, 24h volume, and price changes for trading symbols. Use this to get current market data for any cryptocurrency pair.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Product type: 'linear' for USDT perpetuals (most common), 'inverse' for coin-margined futures, 'option' for options, 'spot' for spot trading | linear |
| symbol | No | Trading pair symbol. Examples: 'BTCUSDT' (Bitcoin), 'ETHUSDT' (Ethereum), 'SOLUSDT' (Solana). Leave empty to get all symbols. | |
| baseCoin | No | Base coin for options only. Examples: 'BTC', 'ETH' | |
| expDate | No | Expiry date for options only. Format: DDMMMYY (e.g., '25DEC21', '30JUN22') |
TDQS
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 this is for 'real-time' data and mentions what information is included, but doesn't address important behavioral aspects like rate limits, authentication requirements, data freshness guarantees, error conditions, or response format. For a financial data tool with no annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two sentences that each serve a clear purpose: the first states what the tool does, the second provides usage guidance. There's no wasted language, though it could be slightly more specific about differentiation from sibling tools.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (financial data tool with 4 parameters), no annotations, and no output schema, the description is moderately complete. It covers the basic purpose and provides some usage context, but lacks important behavioral information that would be crucial for an AI agent to use this tool effectively in production. The absence of output schema means the description should ideally mention what the return structure looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all 4 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. It mentions 'trading symbols' which relates to the 'symbol' parameter, but provides no additional syntax, format, or usage guidance for parameters. Baseline 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.
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 real-time ticker information including current prices, 24h volume, and price changes for trading symbols.' It specifies the verb ('Get') and resource ('ticker information') with concrete data fields. However, it doesn't explicitly differentiate from siblings like 'get_instruments_info' or 'get_recent_trades' which might provide overlapping market data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context: 'Use this to get current market data for any cryptocurrency pair.' This implies when to use it (for real-time ticker data) but doesn't explicitly state when NOT to use it or mention alternatives among the many sibling tools. The guidance is helpful but incomplete for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trade_historyA
Get detailed execution history showing actual trades (fills) with execution prices, quantities, fees, and timestamps. Essential for performance analysis and tax reporting.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Product category to query trade executions for | |
| symbol | No | Specific trading pair to get trade history for. Leave empty to get all trades in category | |
| baseCoin | No | Base coin filter for derivatives and options | |
| orderId | No | Get trades for specific order ID | |
| orderLinkId | No | Get trades for specific custom order ID | |
| execType | No | Execution type filter | |
| startTime | No | Start timestamp in milliseconds for trade history query | |
| endTime | No | End timestamp in milliseconds for trade history query | |
| limit | No | Maximum number of records to return (1-100) | |
| cursor | No | Pagination cursor for next page of results |
TDQS
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 describes what data is returned but does not mention critical behavioral traits such as whether this is a read-only operation, potential rate limits, authentication requirements, or pagination behavior (implied by the cursor parameter but not explained). The description adds some context about data utility but misses key operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and highly concise, consisting of only two sentences that efficiently convey the tool's purpose and primary use cases without unnecessary elaboration. Every sentence earns its place by providing essential information, making it easy for an agent to quickly understand the tool's role.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 10 parameters and no output schema, the description is moderately complete but has gaps. It explains the tool's purpose and data focus well, but without annotations or output schema, it lacks details on behavioral aspects like safety, performance, and return format. The description is adequate for basic understanding but insufficient for full operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, providing detailed documentation for all 10 parameters. The description does not add any parameter-specific semantics beyond what the schema already explains, such as clarifying parameter interactions or usage nuances. Baseline score of 3 is appropriate since the schema does the heavy lifting, but the description offers no additional parameter insights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 specific verbs ('Get detailed execution history') and resources ('actual trades (fills)'), distinguishing it from siblings like get_order_history or get_closed_pnl by focusing on execution-level data. It explicitly mentions key data elements like execution prices, quantities, fees, and timestamps, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('Essential for performance analysis and tax reporting') but does not explicitly state when to use this tool versus alternatives like get_order_history or get_closed_pnl. It provides a general purpose but lacks specific guidance on tool selection among siblings, leaving the agent to infer based on the described data focus.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wallet_balanceA
Get detailed wallet balance information including available balance, locked balance, and total equity across different account types. Essential for portfolio monitoring and risk management.
| Name | Required | Description | Default |
|---|---|---|---|
| accountType | Yes | Account type to query balance for. UNIFIED is most common for modern trading | |
| coin | No | Specific coin to get balance for. Leave empty to get all coin balances |
TDQS
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 effectively indicates this is a read operation ('Get') and describes the scope of returned data, but doesn't address important behavioral aspects like authentication requirements, rate limits, error conditions, or whether the data is real-time vs cached. The description adds value by specifying what balance components are included, but leaves gaps in operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place. The first sentence clearly states the tool's purpose and scope, while the second provides valuable context about its importance. There's zero wasted language or redundancy, and the information is front-loaded effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read operation with 2 parameters and no output schema, the description provides adequate purpose and context but lacks completeness. Without annotations covering behavioral aspects and no output schema to describe return values, the description should ideally address more operational details like response format, authentication needs, or data freshness. The current description is functional but leaves the agent to infer important implementation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 with descriptions, enums, examples, and requirements. The description doesn't add any parameter-specific information beyond what's in the schema, nor does it explain parameter interactions or provide usage examples. The baseline of 3 is appropriate when the schema does all the parameter documentation work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get detailed wallet balance information') and resource ('wallet'), with explicit details about what information is included ('available balance, locked balance, and total equity across different account types'). It distinguishes from siblings like 'get_single_coin_balance' by emphasizing comprehensive balance data across account types rather than single-coin focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage ('Essential for portfolio monitoring and risk management'), which helps identify appropriate scenarios. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_single_coin_balance' or 'get_account_info', nor does it mention any exclusions or prerequisites for usage.
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.
22 tool updates
- First observed
get_account_info - First observed
get_closed_pnl - First observed
get_funding_rate_history - First observed
get_index_price_kline - First observed
get_instruments_info - First observed
get_insurance - First observed
get_kline - First observed
get_long_short_ratio - First observed
get_mark_price_kline - First observed
get_open_closed_orders - First observed
get_open_interest - First observed
get_order_book - First observed
get_order_history - First observed
get_position_info - First observed
get_premium_index_price_kline - First observed
get_recent_trades - First observed
get_risk_limit - First observed
get_server_time - First observed
get_single_coin_balance - First observed
get_tickers - First observed
get_trade_history - First observed
get_wallet_balance
TDQS
Most tools have distinct purposes targeting specific data types like account info, positions, orders, or market data, with clear boundaries. However, some overlap exists, such as get_closed_pnl and get_trade_history both relating to historical performance, which could cause minor confusion for agents.
All tool names follow a consistent verb_noun pattern with 'get_' prefix, ensuring predictability and readability. This uniformity helps agents easily understand and navigate the tool set without naming conflicts.
With 22 tools, the count is slightly high but reasonable for a comprehensive cryptocurrency trading server covering account, market, and order data. It provides extensive coverage without being overly bloated, though some tools might be consolidated for efficiency.
The tool set offers strong coverage for monitoring and analysis in trading, including account, positions, orders, and market data. Minor gaps exist, such as missing tools for executing trades or managing orders (e.g., create_order, cancel_order), which could limit full trading workflows.
Maintenance
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
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
MCP server for OpenMM — exposes market data, account, trading, and strategy tools to AI agents
MCP server exposing the Backtest360 engine API as tools for AI agents.
Trade 16 crypto exchanges + MetaTrader 5 from your AI assistant via one MCP connection.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables AI coding tools like Claude Code and Cursor to interact with Bybit's trading platform for market data retrieval, account management, and trading operations.112813MIT
- AlicenseCqualityDmaintenanceMCP server for Bybit exchange enabling 246 tools for trading, market data, account management, and more via natural language.1002MIT

Bybit MCP Serverofficial
AlicenseBqualityCmaintenanceA 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.38244731MIT- AlicenseNot gradedqualityAmaintenanceAn MCP server that enables AI agents to scan the market, manage positions, and retrieve trading metrics for Bybit through natural language commands.1AGPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/BCusack/bybit-py-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server