Skip to main content
Glama

CCXT MCP Server

npm version npm downloads GitHub stars License: MIT

한국어 버전(Korean version)

CCXT MCP Server is a server that allows AI models to interact with cryptocurrency exchange APIs through the Model Context Protocol (MCP). This server uses the CCXT library to provide access to more than 100 cryptocurrency exchanges and their trading capabilities.

🚀 Quick Start

# Install the package globally
npm install -g @lazydino/ccxt-mcp

# Run with default settings
ccxt-mcp

# or run without installation
npx @lazydino/ccxt-mcp

Related MCP server: CCXT MCP Server

Installation and Usage

Global Installation

# Install the package globally
npm install -g @lazydino/ccxt-mcp

Running with npx

You can run it directly without installation:

# Using default settings
npx @lazydino/ccxt-mcp

# Using custom configuration file
npx @lazydino/ccxt-mcp --config /path/to/config.json

View help:

npx @lazydino/ccxt-mcp --help

Configuration

Registering the MCP Server in Claude Desktop

  1. Open Claude Desktop Settings:

    • Go to the Settings menu in the Claude Desktop app

    • Find the "MCP Servers" section

  2. Add a New MCP Server:

    • Click the "Add Server" button

    • Server name: ccxt-mcp

    • Command: npx @lazydino/ccxt-mcp

    • Additional arguments (optional): --config /path/to/config.json

  3. Save and Test the Server:

    • Save the settings

    • Test the connection with the "Test Connection" button

Configuration Methods - Two Options

Option 1: Include Account Information Directly in Claude Desktop Settings (Basic Method)

This method includes CCXT account information directly in the Claude Desktop settings file (claude_desktop_config.json):

{
  "mcpServers": {
    "ccxt-mcp": {
      "command": "npx",
      "args": ["-y", "@lazydino/ccxt-mcp"],
      "mcpBearerToken": "YOUR_MCP_TOKEN",
      "accounts": [
        {
          "name": "bybit_main",
          "exchangeId": "bybit",
          "apiKey": "YOUR_API_KEY",
          "secret": "YOUR_SECRET_KEY",
          "defaultType": "spot"
        },
        {
          "name": "bybit_futures",
          "exchangeId": "bybit",
          "apiKey": "YOUR_API_KEY",
          "secret": "YOUR_SECRET_KEY",
          "defaultType": "swap"
        }
      ]
    }
  }
}

Using this method, you don't need a separate configuration file. All settings are integrated into the Claude Desktop configuration file.

Option 2: Using a Separate Configuration File (Advanced Method)

To separate account information into a separate configuration file, set up as follows:

  1. Create a Separate Configuration File (e.g., ccxt-config.json):

{
  "mcpBearerToken": "YOUR_MCP_TOKEN",
  "accounts": [
    {
      "name": "bybit_main",
      "exchangeId": "bybit",
      "apiKey": "YOUR_API_KEY",
      "secret": "YOUR_SECRET_KEY",
      "defaultType": "spot"
    },
    {
      "name": "bybit_futures",
      "exchangeId": "bybit",
      "apiKey": "YOUR_API_KEY",
      "secret": "YOUR_SECRET_KEY",
      "defaultType": "swap"
    }
  ]
}

Important: The configuration file must contain an accounts array at the root level, as shown above.

Important: If you run the server in HTTP+SSE mode (--sse), set mcpBearerToken in the same config file. Clients must send Authorization: Bearer <mcpBearerToken> on requests.

  1. Specify the Configuration File Path in Claude Desktop Settings:

{
  "mcpServers": {
    "ccxt-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@lazydino/ccxt-mcp",
        "--config",
        "/path/to/ccxt-config.json"
      ]
    }
  }
}

Note: When using a separate configuration file with the --config option, the server will look for the accounts array directly in the root of the JSON file, not in mcpServers.ccxt-mcp.accounts path.

  1. Running with External Configuration File from Command Line:

# Using custom configuration file
npx @lazydino/ccxt-mcp --config /path/to/ccxt-config.json

You can find an example configuration file at config/ccxt-config.example.json in the repository.

Reasons to Use a Separate Configuration File:

  • Prevents recursive reference issues

  • Separates sensitive information like API keys

  • Easier multi-environment configuration (development, testing, production)

  • Improved configuration file version control

Key Features

  • Market Information Retrieval:

    • List exchanges

    • View market information by exchange

    • Get price information for specific symbols

    • View order book information for specific symbols

    • Search historical OHLCV data

  • Trading Functions:

    • Create market/limit orders

    • Cancel orders and check status

    • View account balances

    • Check trading history

  • Trading Analysis:

    • Daily/weekly/monthly performance analysis

    • Win rate calculation (last 7 days, 30 days, all time)

    • Average profit/loss ratio (R-multiple)

    • Maximum consecutive loss/profit series analysis

    • Asset variation tracking

    • Comprehensive performance metrics

    • Trade pattern recognition

    • Period-based return calculations

  • Position Management:

    • Capital ratio trading (e.g., enter with 5% of account capital)

    • Futures market leverage setting (1-100x)

    • Dynamic position sizing (volatility-based)

    • Split buy/sell strategy implementation

  • Risk Management:

    • Technical indicator-based stop loss setting (e.g., lowest point among 10 candles on 5-minute chart)

    • Volatility-based stop loss/take profit (ATR multiples)

    • Maximum allowable loss limit (daily/weekly)

    • Dynamic take profit setting (trailing profit)

How It Works

User <--> AI Model(Claude/GPT) <--> MCP Protocol <--> CCXT MCP Server <--> Cryptocurrency Exchange API
  1. User: Requests like "Tell me the Bitcoin price" or "Buy Ethereum on my Binance account"

  2. AI Model: Understands user requests and determines which MCP tools/resources to use

  3. MCP Protocol: Standardized communication between AI and CCXT MCP server

  4. CCXT MCP Server: Communicates with cryptocurrency exchange APIs using the CCXT library

  5. Exchange API: Provides actual data and executes trade orders

Using with AI Models

When registered with Claude Desktop, you can make the following types of requests to AI models:

When using AI models, consider the following cautions and use the prompt below for effective trading:

Your goal is to execute trades using the ccxt tools as much as possible
Cautions:
- Accurately identify whether it's a futures market or spot market before proceeding with trades
- If there's no instruction about percentage of capital or amount to use, always calculate and execute trades using the entire available capital

Notes:

  • AI models sometimes confuse futures trading with spot trading.

  • Without clear guidance on trading capital size, AI might get confused.

  • Using the above prompt helps clearly communicate your trading intentions.

Basic Query Examples

Check and compare the current Bitcoin price on binance and coinbase.

Advanced Trading Query Examples

Position Management

Open a long position on BTC/USDT futures market in my Bybit account (bybit_futures) with 5% of capital using 10x leverage.
Enter based on moving average crossover strategy and set stop loss at the lowest point among the 12 most recent 5-minute candles.

Performance Analysis

Analyze my Binance account (bybit_main) trading records for the last 7 days and show me the win rate, average profit, and maximum consecutive losses.

Detailed Trading Analytics

Analyze my trading performance on the bybit_futures account for BTC/USDT over the last 30 days. Calculate win rate, profit factor, and identify any patterns in my winning trades.
Show me the monthly returns for my bybit_main account over the past 90 days and identify my best and worst trading months.
Analyze my consecutive wins and losses on my bybit_futures account and tell me if I have any psychological patterns affecting my trading after losses.

Development

Building from Source

# Clone repository
git clone https://github.com/lazy-dinosaur/ccxt-mcp.git

# Navigate to project directory
cd ccxt-mcp

# Install dependencies
npm install

# Build
npm run build

Docker

Build and Run with Docker Compose

  1. Create a config file:

cp config/ccxt-config.example.json config/ccxt-config.json

Then fill in your real API keys in config/ccxt-config.json. Also set mcpBearerToken in that same config file. 2. Build image:

docker compose build
  1. Start the MCP server in background (SSE mode on localhost:2298):

docker compose up -d
  1. Verify local health endpoint:

curl -H "Authorization: Bearer YOUR_MCP_TOKEN" http://127.0.0.1:2298/healthz

This Compose setup runs MCP over HTTP+SSE (/sse + /messages) on localhost:2298 for reverse proxying.

Remote MCP Client Configuration

If your MCP client runs on another host, use an Nginx reverse proxy on this machine.

  1. Copy ccxt-mcp.nginx to your Nginx config location and update certificate paths:

sudo cp ccxt-mcp.nginx /etc/nginx/conf.d/ccxt-mcp.conf
  1. Edit /etc/nginx/conf.d/ccxt-mcp.conf and set:

  • ssl_certificate

  • ssl_certificate_key

  • Authorization header forwarding (already included in this file)

  1. Reload Nginx:

sudo nginx -t && sudo systemctl reload nginx
  1. In your MCP client, configure the MCP server URL to your TLS endpoint:

  • SSE URL: https://YOUR_HOSTNAME_OR_IP:42299/sse

  • Messages URL: https://YOUR_HOSTNAME_OR_IP:42299/messages

  • Header: Authorization: Bearer YOUR_MCP_TOKEN

You can generate a strong token with:

openssl rand -hex 32

Config example:

{
  "mcpBearerToken": "YOUR_MCP_TOKEN",
  "accounts": [
    {
      "name": "bybit_main",
      "exchangeId": "bybit",
      "apiKey": "YOUR_API_KEY",
      "secret": "YOUR_SECRET_KEY"
    }
  ]
}

Port note:

  • 42298 is HTTP (redirect only)

  • 42299 is HTTPS

  • 2298 comes from CCXT on a phone keypad

If your MCP client accepts command-based MCP servers instead of URL configuration, configure ccxt-mcp with:

  • Command: docker

  • Args:

[
  "run",
  "--rm",
  "-i",
  "-p",
  "127.0.0.1:2298:2298",
  "-v",
  "/absolute/path/to/ccxt-mcp/config/ccxt-config.json:/config/ccxt-config.json:ro",
  "ccxt-mcp:local",
  "--sse",
  "--host",
  "0.0.0.0",
  "--port",
  "2298",
  "--config",
  "/config/ccxt-config.json"
]

Build the image first with docker compose build.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📄 License

Distributed under the MIT License. See the LICENSE file for more information.

❤️ Support

If you find this project useful, please consider giving it a ⭐️ on GitHub!

Available Tools

20 tools
analyzeConsecutiveProfitLossC

Analyze consecutive winning and losing trades

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')
symbolNoOptional trading symbol (e.g., 'BTC/USDT') to filter trades
periodNoAnalysis period: '30d' or 'all'all

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool analyzes trades but doesn't describe what the analysis entails (e.g., statistical summaries, visual outputs, or specific metrics), whether it requires specific permissions or data availability, or any limitations like rate limits or data freshness. This leaves significant gaps in understanding the tool's behavior 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.

Conciseness5/5

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 with a clear but narrow purpose, and it's front-loaded with the core action ('analyze') and target ('consecutive winning and losing trades'), making it easy to parse quickly.

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

Completeness2/5

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

Given the tool's complexity (analyzing trade patterns), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the analysis outputs (e.g., statistics, charts, or insights), how results are formatted, or any behavioral traits like error handling. For a tool that likely returns detailed trade analysis, this leaves the agent with insufficient context to use it effectively.

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

Parameters3/5

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

The description adds no parameter semantics beyond what the input schema provides. With 100% schema description coverage, the schema fully documents the three parameters (accountName, symbol, period), including their types, descriptions, enums, and defaults. The description doesn't compensate or add context, such as explaining how these parameters affect the analysis, so it meets the baseline of 3 for high schema coverage without adding value.

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

Purpose3/5

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

The description 'Analyze consecutive winning and losing trades' clearly states the verb ('analyze') and resource ('consecutive winning and losing trades'), but it's somewhat vague about what specific analysis is performed. It distinguishes from siblings like 'analyzePeriodicReturns' or 'calculateWinRate' by focusing on consecutive patterns rather than periodic returns or win rate calculations, but the distinction isn't explicitly articulated in the description itself.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'analyzeTradingPerformance' or 'calculateWinRate'. It doesn't mention prerequisites, such as needing trade data from the specified account, or exclusions, like whether it works for all trade types. Without any usage context, the agent must infer based on tool names alone.

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

analyzePeriodicReturnsB

Analyze daily and monthly returns for a configured account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')
symbolNoOptional trading symbol (e.g., 'BTC/USDT') to filter trades
periodNoAnalysis period: '30d', '90d', '180d', or '1y'90d
intervalNoReturn calculation intervaldaily

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'analyze' suggests a read-only operation, the description doesn't explicitly state whether this requires authentication, has rate limits, returns specific data formats, or involves computational costs. It mentions 'configured account' but doesn't clarify what configuration entails or potential errors.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded with the core functionality. Every word earns its place in conveying the essential action and scope.

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

Completeness3/5

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

For a 4-parameter tool with no annotations and no output schema, the description is minimally adequate. It covers the basic purpose but lacks behavioral context, usage guidance, and output information. The schema provides good parameter documentation, but the description doesn't compensate for missing annotations or output details, leaving gaps in understanding the tool's full behavior.

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

Parameters3/5

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

Schema description coverage is 100%, with all parameters well-documented in the schema. The description adds no additional parameter semantics beyond what's already in the schema. It mentions 'daily and monthly returns' which loosely relates to the 'interval' parameter, but provides no new details. 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.

Purpose4/5

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

The description clearly states the tool's purpose: 'Analyze daily and monthly returns for a configured account'. It specifies the action ('analyze'), the subject ('returns'), and the scope ('for a configured account'). However, it doesn't explicitly differentiate this from sibling tools like 'analyzeTradingPerformance' or 'analyzeConsecutiveProfitLoss', which appear related to similar financial analysis domains.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'analyzeTradingPerformance' or 'calculateWinRate', nor does it specify prerequisites, appropriate contexts, or exclusions. The agent must infer usage from the tool name and parameters alone.

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

analyzeTradingPerformanceC

Analyze trading performance for a configured account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')
symbolNoOptional trading symbol (e.g., 'BTC/USDT') to filter trades
periodNoAnalysis period: '7d', '30d', '90d', or 'all'30d

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'configured account' but does not specify required permissions, data sources, computational cost, or output format. For a 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.

Conciseness4/5

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. It is appropriately sized and front-loaded, with no wasted words, though it could be slightly more informative without losing conciseness.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool with 3 parameters and sibling tools. It does not explain what 'analyze' returns (e.g., metrics, reports), behavioral traits, or how it differs from similar tools, leaving the agent with insufficient context for effective use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents parameters like 'accountName', 'symbol', and 'period'. The description adds no additional meaning beyond the schema, such as explaining how 'accountName' relates to configuration or what 'analyze' entails. Baseline 3 is appropriate as the schema handles parameter documentation.

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

Purpose3/5

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

The description states the purpose as 'Analyze trading performance for a configured account', which is clear but vague. It specifies the verb ('analyze') and resource ('trading performance'), but does not distinguish it from siblings like 'analyzeConsecutiveProfitLoss' or 'analyzePeriodicReturns', leaving ambiguity about what specific aspects of performance are analyzed.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description lacks context on prerequisites (e.g., needing a configured account), exclusions, or comparisons to sibling tools like 'calculateWinRate', leaving the agent without usage direction.

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

calculateWinRateC

Calculate win rate and profit metrics for a configured account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')
symbolNoOptional trading symbol (e.g., 'BTC/USDT') to filter trades
periodNoAnalysis period: '7d', '30d', or 'all'30d

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'calculate' but doesn't specify whether this is a read-only operation, if it requires authentication, what the output format looks like, or any rate limits. This leaves significant gaps in understanding how the tool behaves, especially for a tool that likely involves data analysis.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly and understand the core function.

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

Completeness2/5

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

Given the tool's complexity (involving calculations for win rate and profit metrics), no annotations, and no output schema, the description is incomplete. It fails to explain what the output includes (e.g., specific metrics, format) or any behavioral aspects like data sources or computation methods, leaving the agent with insufficient context for effective use.

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

Parameters3/5

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

The input schema has 100% description coverage, so the schema already documents all parameters thoroughly. The description adds no additional meaning beyond what's in the schema, such as explaining how 'accountName' relates to configuration or the implications of the 'period' options. Thus, it meets the baseline score without compensating for any gaps.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('calculate') and resource ('win rate and profit metrics'), making it easy to understand what it does. However, it doesn't explicitly distinguish this tool from its siblings like 'analyzeTradingPerformance' or 'analyzePeriodicReturns', which might offer similar functionality, so it misses the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as the sibling tools 'analyzeTradingPerformance' or 'analyzePeriodicReturns'. It lacks context about prerequisites, exclusions, or specific scenarios where this tool is preferred, leaving the agent with no usage direction.

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

cancelOrderC

Cancel an existing order using a configured account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')
idYesOrder ID to cancel
symbolYesTrading symbol (e.g., 'BTC/USDT')
paramsNoAdditional exchange-specific parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('cancel') but doesn't describe what happens after cancellation (e.g., order status changes, potential fees, confirmation requirements), whether it's reversible, or any rate limits. The mention of 'configured account' suggests authentication but lacks specifics about permissions needed.

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

Conciseness5/5

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

The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a tool with clear parameters documented elsewhere. Every word earns its place, and the structure is straightforward.

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

Completeness2/5

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

For a mutation tool (canceling orders) with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after cancellation, potential side effects, error conditions, or return values. The context signals show 4 parameters with 100% schema coverage, but the behavioral aspects are largely undocumented.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter information beyond what's already in the schema descriptions. It mentions 'configured account' which relates to 'accountName' parameter but doesn't provide new semantic details. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb ('cancel') and resource ('an existing order'), making the purpose immediately understandable. It also mentions 'using a configured account' which adds context about authentication. However, it doesn't explicitly differentiate from sibling tools like 'createOrder' beyond the obvious action difference.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing order), when not to use it, or how it relates to sibling tools like 'fetchOpenOrders' or 'fetchOrder'. The phrase 'using a configured account' hints at authentication but doesn't provide clear usage context.

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

createOrderC

Create a new order using a configured account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')
symbolYesTrading symbol (e.g., 'BTC/USDT')
typeYesOrder type: 'market' or 'limit'
sideYesOrder side: 'buy' or 'sell'
amountYesAmount of base currency to trade
priceNoPrice per unit (required for limit orders)
paramsNoAdditional exchange-specific parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Create a new order', implying a write/mutation operation, but doesn't disclose critical traits like authentication needs, rate limits, error handling, or what happens on success (e.g., order ID returned). For a financial trading tool with potential real-world consequences, this lack of transparency 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action ('Create a new order') and includes only essential context ('using a configured account'). Every part earns its place, making it highly concise and well-structured for quick comprehension.

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

Completeness2/5

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

Given the complexity of a financial trading tool with 7 parameters, no annotations, and no output schema, the description is incomplete. It lacks crucial context such as authentication requirements, error scenarios, return values (e.g., order ID), and behavioral details like rate limits or idempotency. The schema handles parameter documentation, but the description fails to compensate for missing annotations and output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly with descriptions and enums. The description adds no additional meaning beyond the schema, as it doesn't explain parameter relationships (e.g., 'price' required for 'limit' orders) or provide usage examples. The baseline score of 3 reflects adequate parameter documentation solely from the schema.

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

Purpose4/5

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

The description clearly states the action ('Create a new order') and resource ('using a configured account'), making the purpose unambiguous. It distinguishes from sibling tools like 'cancelOrder' or 'fetchOpenOrders' by focusing on creation rather than modification or retrieval. However, it doesn't specify what kind of order (e.g., trading order) or differentiate from other potential order creation tools that might exist in other contexts.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a configured account), exclusions (e.g., not for modifying existing orders), or comparisons to siblings like 'cancelOrder' or 'fetchOrder'. The phrase 'using a configured account' hints at a prerequisite but doesn't explicitly state it as a requirement or explain how to configure accounts.

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

fetchBalanceC

Fetch account balance for a configured account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'fetch' which implies a read operation, but doesn't specify whether this requires authentication, rate limits, error conditions, or what the return format looks like. For a financial tool with zero annotation coverage, 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.

Conciseness5/5

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 unnecessary words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the complexity of financial data retrieval and the absence of both annotations and output schema, the description is insufficient. It doesn't explain what balance information is returned (e.g., total balance, available balance, currency details) or address potential error scenarios, leaving the agent with incomplete context for proper tool invocation.

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

Parameters3/5

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

Schema description coverage is 100%, with the single parameter 'accountName' fully documented in the schema. The description adds no additional parameter information beyond what the schema provides, 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.

Purpose4/5

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

The description clearly states the verb 'fetch' and resource 'account balance' with the context 'for a configured account', making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'listAccounts' or 'fetchDeposits', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides minimal guidance with 'for a configured account', implying usage when balance information is needed for a specific account. However, it lacks explicit when-to-use scenarios, prerequisites, or alternatives compared to sibling tools like 'listAccounts' or 'fetchDeposits', leaving the agent with insufficient context for optimal selection.

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

fetchClosedOrdersC

Fetch all closed orders using a configured account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')
symbolNoTrading symbol (e.g., 'BTC/USDT')
sinceNoTimestamp in ms to fetch orders since (optional)
limitNoLimit the number of orders returned (optional)
paramsNoAdditional exchange-specific parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but lacks behavioral details. It doesn't disclose if this is a read-only operation, potential rate limits, authentication needs, or what 'fetch all' entails (e.g., pagination, performance impact). The phrase 'using a configured account' hints at configuration dependency but is vague.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for the tool's complexity.

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

Completeness2/5

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

Given no annotations, no output schema, and 5 parameters (including a nested object), the description is incomplete. It lacks behavioral context, return value explanation, and usage guidelines, making it inadequate for a tool with this complexity and sibling tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds no additional parameter semantics beyond implying accountName is configured externally, which is already covered in the schema's description. 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.

Purpose4/5

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

The description clearly states the action ('fetch') and resource ('closed orders'), specifying the scope as 'all closed orders'. It distinguishes from siblings like fetchOpenOrders and fetchOrder by focusing on closed orders, but doesn't explicitly differentiate from fetchMyTrades which might overlap.

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

Usage Guidelines2/5

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

The description provides minimal guidance with 'using a configured account', implying accountName is required, but offers no explicit when-to-use advice, alternatives (e.g., vs fetchMyTrades), or exclusions. No context on prerequisites or typical scenarios is given.

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

fetchDepositsC

Fetch deposit history for a configured account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')
codeNoCurrency code (e.g., 'BTC', 'ETH')
sinceNoTimestamp in ms to fetch deposits since (optional)
limitNoLimit the number of deposits returned (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states it fetches history without detailing behavioral traits like authentication requirements, rate limits, pagination, error handling, or response format. This leaves significant gaps for an agent to understand how the tool behaves.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part of it contributes directly to understanding the tool's function.

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

Completeness2/5

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

Given the tool's complexity (fetching financial data with 4 parameters), lack of annotations, and no output schema, the description is insufficient. It doesn't cover critical aspects like response structure, error cases, or operational constraints, leaving the agent under-informed.

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

Parameters3/5

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

The description implies parameters like 'accountName' and possibly filtering by currency or time, but doesn't add meaning beyond the input schema, which has 100% coverage with detailed descriptions for all parameters. This meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('fetch') and resource ('deposit history for a configured account'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'fetchWithdrawals' or 'fetchBalance' beyond the resource name, which keeps it from a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'fetchWithdrawals' or 'fetchBalance', nor does it mention prerequisites such as needing a configured account. It simply states what it does without context for selection.

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

fetchMarketsC

Fetch markets from a cryptocurrency exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeIdYesExchange ID (e.g., 'binance', 'coinbase')

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the basic action without mentioning rate limits, authentication requirements, response format, pagination, or what 'markets' specifically includes (trading pairs, symbols, etc.). For a data-fetching tool with zero 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.

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It's appropriately sized for a simple tool and gets straight to the point without unnecessary elaboration.

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

Completeness2/5

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

For a data retrieval tool with no annotations and no output schema, the description should provide more context about what 'markets' includes, response format, and behavioral constraints. The current description is too minimal given the lack of structured information about the tool's behavior and output.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents the single 'exchangeId' parameter. The description doesn't add any additional meaning about parameters beyond what's in the schema, meeting the baseline expectation when schema coverage is complete.

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

Purpose4/5

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

The description clearly states the verb 'fetch' and resource 'markets from a cryptocurrency exchange', making the purpose immediately understandable. It doesn't specifically distinguish from sibling tools like 'fetchTicker' or 'fetchTickers', but the resource specificity is adequate for basic understanding.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives like 'fetchTicker' (single market) or 'fetchTickers' (multiple markets). The description only states what it does, not when it's appropriate or what distinguishes it from similar sibling tools.

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

fetchMyTradesC

Fetch personal trade history for a configured account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')
symbolNoTrading symbol (e.g., 'BTC/USDT')
sinceNoTimestamp in ms to fetch trades since (optional)
limitNoLimit the number of trades returned (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does without behavioral details. It doesn't disclose rate limits, authentication needs, pagination behavior, error conditions, or what 'fetch' entails (e.g., real-time vs. cached data). This is inadequate for a tool with potential complexity.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and appropriately sized for the tool's scope.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain return values (e.g., trade format, fields), error handling, or behavioral constraints. For a tool fetching personal trade data with 4 parameters, this leaves significant gaps for an AI agent.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no additional parameter semantics beyond implying 'accountName' refers to a pre-configured account, which is already covered 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.

Purpose4/5

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

The description clearly states the action ('fetch') and resource ('personal trade history for a configured account'), making the purpose immediately understandable. It distinguishes from siblings like 'fetchTrades' (likely public trades) by specifying 'personal' and 'configured account', though it doesn't explicitly name alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'fetchClosedOrders' or 'fetchTrades', nor does it mention prerequisites (e.g., needing a configured account). It implies usage for personal trade history but lacks explicit when/when-not instructions.

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

fetchOHLCVC

Fetch OHLCV candlestick data for a symbol on an exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeIdYesExchange ID (e.g., 'binance', 'coinbase')
symbolYesTrading symbol (e.g., 'BTC/USDT')
timeframeNoTimeframe (e.g., '1m', '5m', '1h', '1d')1h
sinceNoTimestamp in ms to fetch data since (optional)
limitNoLimit the number of candles returned (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't cover important traits like rate limits, authentication requirements, error handling, or the format/scope of returned data (e.g., whether it's historical or real-time). This leaves significant gaps for an agent to understand operational constraints.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without any unnecessary words. Every part of the sentence directly contributes to understanding what the tool does, making it highly concise and well-structured for quick comprehension.

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

Completeness2/5

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

Given the complexity of fetching financial data with 5 parameters and no output schema or annotations, the description is incomplete. It doesn't address the return format (e.g., array of candles with OHLCV fields), data recency, or common use cases, which are critical for an agent to use this tool effectively in a trading context.

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

Parameters3/5

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

Schema description coverage is 100%, providing clear documentation for all 5 parameters. The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline of 3 without compensating for any gaps. It doesn't explain parameter interactions or provide examples beyond the schema's descriptions.

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

Purpose4/5

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

The description clearly states the action ('fetch') and resource ('OHLCV candlestick data for a symbol on an exchange'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like fetchTicker or fetchTrades, which also retrieve market data but for different types of information.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like fetchTicker (for current price) or fetchTrades (for recent trades). It also doesn't mention prerequisites such as needing a valid exchange ID or symbol format, leaving usage context implied rather than explicit.

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

fetchOpenOrdersC

Fetch all open orders using a configured account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')
symbolNoTrading symbol (e.g., 'BTC/USDT')
sinceNoTimestamp in ms to fetch orders since (optional)
limitNoLimit the number of orders returned (optional)
paramsNoAdditional exchange-specific parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like whether this is a read-only operation, potential rate limits, authentication requirements, pagination behavior, or what happens if no orders exist. For a tool with 5 parameters and 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.

Conciseness5/5

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 the tool's complexity and front-loads the core purpose without unnecessary elaboration.

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

Completeness2/5

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

Given the tool has 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'open orders' means in this context, what data is returned, or how results are structured. For a data-fetching tool in a trading environment, more context about return values and behavior is needed.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter semantics beyond implying 'accountName' is required (which is already in the schema). The baseline of 3 is appropriate when the schema does the heavy lifting, though the description could have explained parameter interactions.

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

Purpose4/5

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

The description clearly states the verb 'fetch' and resource 'all open orders' with the context 'using a configured account', which makes the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'fetchOrder' or 'fetchClosedOrders', which would require more specific language about scope.

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

Usage Guidelines2/5

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

The description provides minimal guidance with 'using a configured account' but doesn't specify when to use this tool versus alternatives like 'fetchOrder' (for a single order) or 'fetchClosedOrders'. No explicit when-not-to-use scenarios or prerequisites are mentioned, leaving the agent to infer usage from context alone.

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

fetchOrderC

Fetch information about a specific order using a configured account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')
idYesOrder ID to fetch
symbolYesTrading symbol (e.g., 'BTC/USDT')
paramsNoAdditional exchange-specific parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool fetches information, implying a read-only operation, but doesn't clarify if it requires authentication, has rate limits, returns specific data formats, or handles errors. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior and constraints.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. Every word contributes to understanding the tool's function, making it appropriately sized and well-structured for quick comprehension.

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

Completeness2/5

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

Given the tool's complexity (4 parameters, no output schema, no annotations), the description is incomplete. It lacks details on behavioral traits, usage context, and output expectations, which are crucial for an AI agent to invoke it correctly. The high schema coverage helps with parameters, but overall, the description doesn't compensate for missing annotations and output schema.

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

Parameters3/5

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

The description adds no parameter-specific information beyond what's already in the schema, which has 100% coverage. It mentions 'using a configured account', which loosely relates to the 'accountName' parameter, but doesn't explain parameter interactions or provide examples. With high schema coverage, the baseline is 3, as the schema adequately documents parameters without extra description input.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Fetch information about a specific order using a configured account'. It specifies the verb ('fetch'), resource ('order'), and context ('using a configured account'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'fetchOpenOrders' or 'fetchClosedOrders', which are similar fetch operations for different order types.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'fetchOpenOrders' or 'fetchClosedOrders', nor does it specify prerequisites such as needing a configured account or valid order ID. The phrase 'using a configured account' is the only contextual hint, but it's insufficient for distinguishing between similar fetch operations.

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

fetchOrderBookC

Fetch order book for a symbol on an exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeIdYesExchange ID (e.g., 'binance', 'coinbase')
symbolYesTrading symbol (e.g., 'BTC/USDT')
limitNoLimit the number of orders returned (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't describe how it behaves: no information about rate limits, authentication requirements, error handling, response format, or whether it's a read-only operation. For a tool fetching financial data, this leaves significant gaps in understanding its operational characteristics.

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

Conciseness5/5

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

The description is a single, efficient sentence that states exactly what the tool does with zero wasted words. It's appropriately sized for a straightforward data-fetching tool and front-loads the core functionality without unnecessary elaboration.

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

Completeness2/5

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

Given the complexity of financial data fetching and the absence of both annotations and an output schema, the description is insufficiently complete. It doesn't explain what an order book contains (bids/asks), how the data is structured, whether real-time or historical, or any limitations. For a tool in a trading context with 3 parameters and no structured behavioral hints, more context is needed.

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

Parameters3/5

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

The description doesn't add any parameter information beyond what's already in the schema, which has 100% coverage with clear descriptions for all three parameters. The baseline is 3 since the schema adequately documents exchangeId, symbol, and limit. No additional semantic context is provided about parameter constraints or usage patterns.

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

Purpose4/5

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

The description clearly states the action ('Fetch') and resource ('order book for a symbol on an exchange'), making the purpose immediately understandable. It distinguishes from siblings like fetchTicker or fetchTrades by specifying the order book resource. However, it doesn't explicitly differentiate from fetchMarkets or fetchOHLCV in terms of data type, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose fetchOrderBook over fetchTicker for price data, fetchTrades for recent transactions, or fetchOpenOrders for user-specific orders. There's also no context about prerequisites like authentication or exchange availability.

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

fetchTickerC

Fetch ticker information for a symbol on an exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeIdYesExchange ID (e.g., 'binance', 'coinbase')
symbolYesTrading symbol (e.g., 'BTC/USDT')

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions fetching information, implying a read-only operation, but fails to describe critical behaviors such as rate limits, error conditions (e.g., invalid symbols), authentication requirements, or response format. For a tool with no annotation coverage, this leaves significant gaps in understanding how it 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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded with the core action and resource, making it easy to parse quickly. Every part of the sentence contributes essential information, meeting the standard for optimal conciseness.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is insufficient for a tool that interacts with financial data. It doesn't cover behavioral aspects like error handling or response structure, and while the input schema is well-documented, the overall context for safe and effective use is incomplete. For a fetch operation in a trading environment, more guidance on limitations and outputs is needed.

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

Parameters3/5

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

The description adds minimal semantic context beyond the input schema, which has 100% coverage with clear descriptions for both parameters. It implies that 'symbol' and 'exchangeId' are used to fetch ticker data, but doesn't elaborate on format constraints or relationships between parameters. Given the high schema coverage, a baseline score of 3 is appropriate, as the schema already documents the parameters adequately.

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

Purpose4/5

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

The description clearly states the action ('fetch') and resource ('ticker information') with specific scope ('for a symbol on an exchange'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'fetchTickers' (plural) or 'fetchMarkets', but the specificity of 'ticker information for a symbol' provides adequate clarity for basic use.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'fetchTickers' (for multiple symbols) or 'fetchMarkets' (for market data). It states what it does but offers no context about prerequisites, timing, or comparisons with related tools, leaving the agent to infer usage from the name alone.

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

fetchTickersC

Fetch all tickers from an exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeIdYesExchange ID (e.g., 'binance', 'coinbase')
symbolsNoOptional list of specific symbols to fetch

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('fetch') but doesn't cover critical aspects like whether this is a read-only operation, potential rate limits, authentication requirements, error handling, or the format/scope of returned data (e.g., all tickers vs. filtered). This leaves significant gaps for an agent to understand how to use it effectively.

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

Conciseness5/5

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

The description is a single, direct sentence with no wasted words. It's front-loaded with the core purpose ('fetch all tickers'), making it highly efficient and easy to parse, though this conciseness comes at the cost of completeness.

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

Completeness2/5

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

Given the tool's moderate complexity (fetching financial data with parameters), lack of annotations, and no output schema, the description is insufficient. It doesn't address behavioral traits, usage context, or return values, leaving the agent with incomplete information to operate the tool reliably in a real-world scenario.

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

Parameters3/5

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

The input schema has 100% description coverage, clearly documenting both parameters ('exchangeId' and optional 'symbols'). The description adds no additional semantic context beyond what's in the schema (e.g., it doesn't explain what 'tickers' include or how 'symbols' filtering works), so it meets the baseline for adequate but unenhanced parameter documentation.

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

Purpose4/5

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

The description clearly states the action ('fetch') and resource ('tickers from an exchange'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'fetchTicker' (singular) or 'fetchMarkets', leaving room for ambiguity about what specifically distinguishes this tool.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'fetchTicker' (for a single ticker) or 'fetchMarkets' (which might include ticker data). There's no mention of prerequisites, exclusions, or specific contexts where this tool is preferred.

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

fetchTradesC

Fetch recent trades for a symbol on an exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeIdYesExchange ID (e.g., 'binance', 'coinbase')
symbolYesTrading symbol (e.g., 'BTC/USDT')
sinceNoTimestamp in ms to fetch trades since (optional)
limitNoLimit the number of trades returned (optional)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'fetch recent trades' but doesn't cover aspects like rate limits, authentication needs, data freshness, or error handling. This is a significant gap 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.

Conciseness5/5

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 wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations, no output schema, and a tool that fetches data (implying potential complexity like pagination or real-time constraints), the description is incomplete. It lacks details on return format, error cases, or behavioral traits, making it inadequate for full contextual understanding.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional meaning beyond what the schema provides, such as clarifying the scope of 'recent' or providing examples beyond 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.

Purpose4/5

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

The description clearly states the verb 'fetch' and the resource 'recent trades for a symbol on an exchange', making the purpose specific and understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'fetchMyTrades' or 'fetchOrderBook', which also fetch trade-related data, so it misses full sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios like needing public vs. personal trades, or how it differs from 'fetchMyTrades' or 'fetchOrderBook', leaving the agent without explicit usage context or exclusions.

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

fetchWithdrawalsC

Fetch withdrawal history for a configured account

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNameYesAccount name defined in the configuration file (e.g., 'bybit_main')
codeNoCurrency code (e.g., 'BTC', 'ETH')
sinceNoTimestamp in ms to fetch withdrawals since (optional)
limitNoLimit the number of withdrawals returned (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral disclosure. It mentions 'configured account' which hints at setup requirements, but doesn't describe authentication needs, rate limits, error conditions, response format, or whether this is a read-only operation. For a financial data tool with zero annotation coverage, this is inadequate.

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

Conciseness5/5

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

The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a data-fetching tool and front-loads the essential information.

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

Completeness2/5

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

For a financial data tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It should explain what withdrawal data is returned, authentication requirements, rate limits, and error handling. The minimal description doesn't compensate for the lack of structured metadata.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description adds no additional parameter information beyond what's in the schema. The baseline score 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.

Purpose4/5

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

The description clearly states the verb 'fetch' and resource 'withdrawal history', specifying it's for a configured account. It distinguishes from siblings like fetchDeposits (different resource) and fetchBalance (different data type). However, it doesn't explicitly differentiate from fetchClosedOrders or fetchMyTrades which might also involve transaction history.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when withdrawals should be fetched versus deposits, trades, or orders, nor does it specify prerequisites like account configuration. The sibling tools include multiple data-fetching tools without clear differentiation.

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

listAccountsB

List all configured account names

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states it 'lists' accounts, implying a read-only operation, but doesn't specify if it requires authentication, returns structured data, or has rate limits. This is inadequate for a tool with zero 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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded and wastes no space, making it ideal for quick comprehension.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. However, it lacks details on return format (e.g., list structure) and behavioral context, which would enhance completeness for even a simple tool.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description doesn't add parameter details, but this is appropriate given the schema fully covers the absence of inputs, warranting a baseline score above minimum viable.

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

Purpose4/5

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

The description clearly states the action ('List') and resource ('all configured account names'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'fetchBalance' or 'fetchMarkets' that might also involve account-related operations, preventing a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'fetchBalance' or other account-related siblings. It lacks context about prerequisites (e.g., whether accounts must be configured first) 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.

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between analyzeConsecutiveProfitLoss, analyzePeriodicReturns, analyzeTradingPerformance, and calculateWinRate, which all focus on performance analysis and could cause confusion. The remaining tools are clearly differentiated by their specific actions and targets.

Naming Consistency4/5

The naming is mostly consistent with a verb_noun pattern, using camelCase throughout. However, there are minor deviations: 'listAccounts' uses 'list' while others use 'fetch' or 'analyze', and 'calculateWinRate' uses 'calculate' instead of 'analyze' for similar analysis tasks, slightly breaking the pattern.

Tool Count4/5

With 20 tools, the count is on the higher side but reasonable for a cryptocurrency trading server that needs to cover account management, order handling, market data, and performance analysis. It feels slightly heavy but not excessive for the domain's complexity.

Completeness5/5

The tool set provides comprehensive coverage for cryptocurrency trading: it includes account listing and balance fetching, full order lifecycle (create, fetch, cancel, open/closed orders), market data (markets, tickers, trades, OHLCV, order book), deposit/withdrawal history, and performance analysis. No obvious gaps are present for core trading workflows.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A server that provides real-time cryptocurrency data through the Model Context Protocol, allowing access to detailed exchange information and current cryptocurrency rates from the CoinCap API.
    16
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables LLMs to interact with cryptocurrency exchanges through CCXT, allowing for tasks like fetching balances, market data, creating orders, and trading operations in a standardized way.
    8
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that provides a standardized interface for AI models and applications to interact with the Luno cryptocurrency exchange API for trading operations.
    2

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lazy-dinosaur/ccxt-mcp'

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