CCXT MCP Server
CCXT MCPサーバー
CCXT MCPサーバーは、Model Context Protocol (MCP) を通じてAIモデルが暗号資産取引所のAPIと対話できるようにするサーバーです。このサーバーは CCXTライブラリ を使用して、100以上の暗号資産取引所とその取引機能へのアクセスを提供します。
🚀 クイックスタート
# Install the package globally
npm install -g @lazydino/ccxt-mcp
# Run with default settings
ccxt-mcp
# or run without installation
npx @lazydino/ccxt-mcpRelated MCP server: CCXT MCP Server
インストールと使用方法
グローバルインストール
# Install the package globally
npm install -g @lazydino/ccxt-mcpnpxでの実行
インストールせずに直接実行することも可能です:
# Using default settings
npx @lazydino/ccxt-mcp
# Using custom configuration file
npx @lazydino/ccxt-mcp --config /path/to/config.jsonヘルプを表示:
npx @lazydino/ccxt-mcp --help設定
Claude DesktopへのMCPサーバーの登録
Claude Desktopの設定を開く:
Claude Desktopアプリの設定メニューに移動します
「MCP Servers」セクションを探します
新しいMCPサーバーを追加する:
「Add Server」ボタンをクリックします
サーバー名:
ccxt-mcpコマンド:
npx @lazydino/ccxt-mcp追加の引数(オプション):
--config /path/to/config.json
サーバーを保存してテストする:
設定を保存します
「Test Connection」ボタンで接続をテストします
設定方法 - 2つのオプション
オプション1: Claude Desktopの設定にアカウント情報を直接含める(基本方法)
この方法は、CCXTのアカウント情報をClaude Desktopの設定ファイル(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"
}
]
}
}
}この方法を使用する場合、個別の設定ファイルは不要です。すべての設定がClaude Desktopの設定ファイルに統合されます。
オプション2: 個別の設定ファイルを使用する(高度な方法)
アカウント情報を別の設定ファイルに分離するには、以下のように設定します:
個別の設定ファイルを作成する(例:
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"
}
]
}重要: 設定ファイルには、上記のようにルートレベルで
accounts配列が含まれている必要があります。
重要: HTTP+SSEモード(
--sse)でサーバーを実行する場合は、同じ設定ファイル内にmcpBearerTokenを設定してください。クライアントはリクエスト時にAuthorization: Bearer <mcpBearerToken>を送信する必要があります。
Claude Desktopの設定で設定ファイルのパスを指定する:
{
"mcpServers": {
"ccxt-mcp": {
"command": "npx",
"args": [
"-y",
"@lazydino/ccxt-mcp",
"--config",
"/path/to/ccxt-config.json"
]
}
}
}注意:
--configオプションを使用して個別の設定ファイルを使用する場合、サーバーはmcpServers.ccxt-mcp.accountsパスではなく、JSONファイルのルートにあるaccounts配列を直接参照します。
コマンドラインから外部設定ファイルで実行する:
# Using custom configuration file
npx @lazydino/ccxt-mcp --config /path/to/ccxt-config.json設定ファイルの例は、リポジトリ内の config/ccxt-config.example.json にあります。
個別の設定ファイルを使用する理由:
再帰的な参照問題を回避できる
APIキーなどの機密情報を分離できる
マルチ環境(開発、テスト、本番)の設定が容易になる
設定ファイルのバージョン管理が向上する
主な機能
市場情報の取得:
取引所の一覧表示
取引所ごとの市場情報の表示
特定のシンボルの価格情報の取得
特定のシンボルの板情報の表示
過去のOHLCVデータの検索
取引機能:
成行/指値注文の作成
注文のキャンセルとステータスの確認
口座残高の表示
取引履歴の確認
取引分析:
日次/週次/月次のパフォーマンス分析
勝率計算(過去7日間、30日間、全期間)
平均損益比(R-multiple)
最大連続損失/利益シリーズの分析
資産変動の追跡
包括的なパフォーマンス指標
取引パターンの認識
期間ベースの収益計算
ポジション管理:
資本比率取引(例: 口座資本の5%でエントリー)
先物市場のレバレッジ設定(1-100倍)
動的なポジションサイジング(ボラティリティベース)
分割売買戦略の実装
リスク管理:
テクニカル指標ベースのストップロス設定(例: 5分足チャートの10ローソク足の最安値)
ボラティリティベースのストップロス/テイクプロフィット(ATR倍数)
最大許容損失制限(日次/週次)
動的なテイクプロフィット設定(トレーリングプロフィット)
仕組み
User <--> AI Model(Claude/GPT) <--> MCP Protocol <--> CCXT MCP Server <--> Cryptocurrency Exchange APIユーザー: 「ビットコインの価格を教えて」や「Binanceアカウントでイーサリアムを買って」といったリクエスト
AIモデル: ユーザーのリクエストを理解し、使用するMCPツール/リソースを決定
MCPプロトコル: AIとCCXT MCPサーバー間の標準化された通信
CCXT MCPサーバー: CCXTライブラリを使用して暗号資産取引所のAPIと通信
取引所API: 実際のデータを提供し、取引注文を実行
AIモデルでの使用
Claude Desktopに登録すると、AIモデルに対して以下のようなリクエストを行うことができます:
注意事項と推奨プロンプト
AIモデルを使用する際は、以下の注意事項を考慮し、効果的な取引のために以下のプロンプトを使用してください:
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注意点:
AIモデルは、先物取引と現物取引を混同することがあります。
取引資本のサイズに関する明確なガイダンスがないと、AIが混乱する可能性があります。
上記のプロンプトを使用すると、取引の意図を明確に伝えるのに役立ちます。
基本的なクエリ例
Check and compare the current Bitcoin price on binance and coinbase.高度な取引クエリ例
ポジション管理
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.パフォーマンス分析
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.詳細な取引分析
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.開発
ソースからのビルド
# 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 buildDocker
Docker Composeでのビルドと実行
設定ファイルを作成します:
cp config/ccxt-config.example.json config/ccxt-config.json次に、config/ccxt-config.json に実際のAPIキーを入力します。
また、同じ設定ファイル内に mcpBearerToken を設定してください。
2. イメージをビルドします:
docker compose buildMCPサーバーをバックグラウンドで起動します(localhost:2298でSSEモード):
docker compose up -dローカルのヘルスエンドポイントを確認します:
curl -H "Authorization: Bearer YOUR_MCP_TOKEN" http://127.0.0.1:2298/healthzこのCompose設定は、リバースプロキシ用にlocalhost:2298でHTTP+SSE(/sse + /messages)経由でMCPを実行します。
リモートMCPクライアントの設定
MCPクライアントが別のホストで実行されている場合は、このマシンでNginxリバースプロキシを使用してください。
ccxt-mcp.nginxをNginxの設定場所にコピーし、証明書のパスを更新します:
sudo cp ccxt-mcp.nginx /etc/nginx/conf.d/ccxt-mcp.conf/etc/nginx/conf.d/ccxt-mcp.confを編集し、以下を設定します:
ssl_certificatessl_certificate_keyAuthorizationヘッダーの転送(このファイルには既に含まれています)
Nginxをリロードします:
sudo nginx -t && sudo systemctl reload nginxMCPクライアントで、MCPサーバーのURLをTLSエンドポイントに設定します:
SSE URL:
https://YOUR_HOSTNAME_OR_IP:42299/sseMessages URL:
https://YOUR_HOSTNAME_OR_IP:42299/messagesHeader:
Authorization: Bearer YOUR_MCP_TOKEN
強力なトークンは以下で生成できます:
openssl rand -hex 32設定例:
{
"mcpBearerToken": "YOUR_MCP_TOKEN",
"accounts": [
{
"name": "bybit_main",
"exchangeId": "bybit",
"apiKey": "YOUR_API_KEY",
"secret": "YOUR_SECRET_KEY"
}
]
}ポートに関する注意:
42298はHTTP(リダイレクトのみ)42299はHTTPS2298は電話のキーパッドのCCXTから来ています
MCPクライアントがURL設定ではなくコマンドベースのMCPサーバーを受け入れる場合は、ccxt-mcp を以下のように設定してください:
コマンド:
docker引数:
[
"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"
]先に docker compose build でイメージをビルドしてください。
🤝 貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。
📄 ライセンス
MITライセンスの下で配布されています。詳細はLICENSEファイルを参照してください。
❤️ サポート
このプロジェクトが役に立った場合は、GitHubで ⭐️ を付けていただけると幸いです!
Available Tools
20 toolsanalyzeConsecutiveProfitLossC
Analyze consecutive winning and losing trades
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') | |
| symbol | No | Optional trading symbol (e.g., 'BTC/USDT') to filter trades | |
| period | No | Analysis period: '30d' or 'all' | all |
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 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') | |
| symbol | No | Optional trading symbol (e.g., 'BTC/USDT') to filter trades | |
| period | No | Analysis period: '30d', '90d', '180d', or '1y' | 90d |
| interval | No | Return calculation interval | daily |
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 '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') | |
| symbol | No | Optional trading symbol (e.g., 'BTC/USDT') to filter trades | |
| period | No | Analysis period: '7d', '30d', '90d', or 'all' | 30d |
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 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') | |
| symbol | No | Optional trading symbol (e.g., 'BTC/USDT') to filter trades | |
| period | No | Analysis period: '7d', '30d', or 'all' | 30d |
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 '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') | |
| id | Yes | Order ID to cancel | |
| symbol | Yes | Trading symbol (e.g., 'BTC/USDT') | |
| params | No | Additional exchange-specific parameters |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') | |
| symbol | Yes | Trading symbol (e.g., 'BTC/USDT') | |
| type | Yes | Order type: 'market' or 'limit' | |
| side | Yes | Order side: 'buy' or 'sell' | |
| amount | Yes | Amount of base currency to trade | |
| price | No | Price per unit (required for limit orders) | |
| params | No | Additional exchange-specific 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 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') |
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 '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') | |
| symbol | No | Trading symbol (e.g., 'BTC/USDT') | |
| since | No | Timestamp in ms to fetch orders since (optional) | |
| limit | No | Limit the number of orders returned (optional) | |
| params | No | Additional exchange-specific parameters |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') | |
| code | No | Currency code (e.g., 'BTC', 'ETH') | |
| since | No | Timestamp in ms to fetch deposits since (optional) | |
| limit | No | Limit the number of deposits returned (optional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchangeId | Yes | Exchange ID (e.g., 'binance', 'coinbase') |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') | |
| symbol | No | Trading symbol (e.g., 'BTC/USDT') | |
| since | No | Timestamp in ms to fetch trades since (optional) | |
| limit | No | Limit the number of trades returned (optional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchangeId | Yes | Exchange ID (e.g., 'binance', 'coinbase') | |
| symbol | Yes | Trading symbol (e.g., 'BTC/USDT') | |
| timeframe | No | Timeframe (e.g., '1m', '5m', '1h', '1d') | 1h |
| since | No | Timestamp in ms to fetch data since (optional) | |
| limit | No | Limit the number of candles returned (optional) |
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 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') | |
| symbol | No | Trading symbol (e.g., 'BTC/USDT') | |
| since | No | Timestamp in ms to fetch orders since (optional) | |
| limit | No | Limit the number of orders returned (optional) | |
| params | No | Additional exchange-specific parameters |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') | |
| id | Yes | Order ID to fetch | |
| symbol | Yes | Trading symbol (e.g., 'BTC/USDT') | |
| params | No | Additional exchange-specific 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 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchangeId | Yes | Exchange ID (e.g., 'binance', 'coinbase') | |
| symbol | Yes | Trading symbol (e.g., 'BTC/USDT') | |
| limit | No | Limit the number of orders returned (optional) |
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 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchangeId | Yes | Exchange ID (e.g., 'binance', 'coinbase') | |
| symbol | Yes | Trading symbol (e.g., 'BTC/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 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchangeId | Yes | Exchange ID (e.g., 'binance', 'coinbase') | |
| symbols | No | Optional list of specific symbols to fetch |
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 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchangeId | Yes | Exchange ID (e.g., 'binance', 'coinbase') | |
| symbol | Yes | Trading symbol (e.g., 'BTC/USDT') | |
| since | No | Timestamp in ms to fetch trades since (optional) | |
| limit | No | Limit the number of trades returned (optional) |
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 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| accountName | Yes | Account name defined in the configuration file (e.g., 'bybit_main') | |
| code | No | Currency code (e.g., 'BTC', 'ETH') | |
| since | No | Timestamp in ms to fetch withdrawals since (optional) | |
| limit | No | Limit the number of withdrawals returned (optional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v1.0.0- Changed
listAccounts1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
20 tool updates
- First observed
analyzeConsecutiveProfitLoss - First observed
analyzePeriodicReturns - First observed
analyzeTradingPerformance - First observed
calculateWinRate - First observed
cancelOrder - First observed
createOrder - First observed
fetchBalance - First observed
fetchClosedOrders - First observed
fetchDeposits - First observed
fetchMarkets - First observed
fetchMyTrades - First observed
fetchOHLCV - First observed
fetchOpenOrders - First observed
fetchOrder - First observed
fetchOrderBook - First observed
fetchTicker - First observed
fetchTickers - First observed
fetchTrades - First observed
fetchWithdrawals - First observed
listAccounts
TDQS
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.
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.
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.
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
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
Trade 16 crypto exchanges + MetaTrader 5 from your AI assistant via one MCP connection.
MCP server for Mudrex futures trading enabling AI agents to securely access data and risk tools.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for OpenMM — exposes market data, account, trading, and strategy tools to AI agents
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA 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.161MIT
- AlicenseNot gradedqualityDmaintenanceA 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.8MIT
- AlicenseNot gradedqualityDmaintenanceA server that implements the Model Context Protocol, providing a standardized way to connect AI models to different data sources and tools.1511MIT
- FlicenseNot gradedqualityDmaintenanceA 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
- 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/lazy-dinosaur/ccxt-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server