CCXT MCP Server
CCXT MCP 服务器
CCXT MCP 服务器是一个允许 AI 模型通过 模型上下文协议 (MCP) 与加密货币交易所 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-mcp使用 npx 运行
您可以直接运行它而无需安装:
# 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”按钮测试连接
配置方法 - 两种选项
选项 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选项的单独配置文件时,服务器将直接在 JSON 文件的根目录中查找accounts数组,而不是在mcpServers.ccxt-mcp.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-100x)
动态仓位调整(基于波动率)
分批买入/卖出策略实施
风险管理:
基于技术指标的止损设置(例如,5 分钟图上 10 根 K 线中的最低点)
基于波动率的止损/止盈 (ATR 倍数)
最大允许亏损限制(日/周)
动态止盈设置(追踪止盈)
工作原理
User <--> AI Model(Claude/GPT) <--> MCP Protocol <--> CCXT MCP Server <--> Cryptocurrency Exchange API用户:发出如“告诉我比特币价格”或“在我的币安账户上买入以太坊”的请求
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 build在后台启动 MCP 服务器(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_key授权头转发(此文件中已包含)
重载 Nginx:
sudo nginx -t && sudo systemctl reload nginx在您的 MCP 客户端中,将 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 客户端接受基于命令的 MCP 服务器而不是 URL 配置,请使用以下配置 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 构建镜像。
🤝 贡献
欢迎贡献!请随时提交 Pull Request。
📄 许可证
根据 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