Freqtrade-MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Freqtrade-MCPShow me my current profit summary and the status of any open trades."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Freqtrade-MCP
An MCP server that integrates with the Freqtrade cryptocurrency trading bot via its REST API, enabling seamless AI agent interaction for automated trading operation.
For more crypto-related MCP servers, see the Kukapay MCP servers.
Installation
Prerequisites
Python 3.13+: Ensure Python is installed on your system.
Freqtrade: A running Freqtrade instance with the REST API enabled (see Freqtrade Docs).
Git: For cloning the repository.
Steps
Clone the Repository:
git clone https://github.com/kukapay/freqtrade-mcp.git cd freqtrade-mcpInstall Dependencies: Using
pip:pip install freqtrade-client mcp[cli]Or with
uv(optional):uv add freqtrade-client "mcp[cli]"Client Configuration:
"mcpServers": { "freqtrade-mcp": { "command": "uv", "args": [ "--directory", "/your/path/to/freqtrade-mcp", "run", "__main__.py" ], "env": { "FREQTRADE_API_URL": "http://127.0.0.1:8080", "FREQTRADE_USERNAME": "your_username", "FREQTRADE_PASSWORD": "your_password" } } }Freqtrade Configuration:
Enable the rest API by adding the api_server section to your configuration and setting api_server.enabled to true.
Sample configuration:
"api_server": { "enabled": true, "listen_ip_address": "127.0.0.1", "listen_port": 8080, "verbosity": "error", "enable_openapi": false, "jwt_secret_key": "somethingrandom", "CORS_origins": [], "username": "Freqtrader", "password": "SuperSecret1!", "ws_token": "sercet_Ws_t0ken" },Check the document here.
Related MCP server: Dragonglass TradingView MCP
Usage
Available Tools
The server exposes the following Freqtrade API endpoints as MCP tools:
Tool | Description | Parameters |
| Fetch OHLCV data for a pair |
|
| Get open trade status | None |
| Get profit summary | None |
| Get account balance | None |
| Get performance metrics | None |
| Get whitelist of pairs | None |
| Get blacklist of pairs | None |
| Get trade history | None |
| Get bot configuration | None |
| Get trade locks | None |
| Place a buy/sell trade |
|
| Start the bot | None |
| Stop the bot | None |
| Reload bot configuration | None |
| Add pair to blacklist |
|
| Remove pair from blacklist |
|
| Delete a trade lock |
|
| Start backtest via REST API |
|
| Get current backtest status/result | None |
| List backtest history | optional |
| Abort currently running backtest | None |
| Reset backtest state/result | None |
Example Prompts
Fetch Market Data:
"Show me the hourly price data for BTC/USDT."
"What’s the 5-minute chart for ETH/BTC like?"
"Give me the latest candlestick data for XRP/USDT over the past hour."
Fetch Bot Status:
"What’s the current status of my open trades?"
"Are there any active trades right now?"
"Tell me about the bot’s trading activity at the moment."
Fetch Profit:
"How much profit have I made so far?"
"What’s the total profit summary for the bot?"
"Can you show me my trading gains?"
Fetch Balance:
"What’s my account balance?"
"How much money do I have in the trading account?"
"Tell me the current balance of my Freqtrade wallet."
Fetch Performance:
"How well has the bot been performing?"
"What are the performance metrics for my trades?"
"Show me the trading stats."
Fetch Whitelist:
"Which pairs are on the whitelist?"
"What trading pairs is the bot allowed to use?"
"List the whitelisted pairs for me."
Fetch Blacklist:
"Which pairs are blacklisted?"
"What trading pairs are blocked right now?"
"Tell me about the blacklist."
Fetch Trades:
"What’s the history of my closed trades?"
"Show me all the trades the bot has completed."
"Can you list my past trades?"
Fetch Config:
"What’s the current bot configuration?"
"Show me the settings the bot is using."
"Tell me about the Freqtrade config."
Fetch Locks:
"Are there any trade locks active?"
"What locks are currently in place?"
"Show me the list of trading locks."
Place Trade:
"Buy 0.01 BTC/USDT right now."
"Sell 0.05 ETH/USDT immediately."
"Place a buy order for 0.1 XRP/USDT."
Start Bot:
"Start the trading bot."
"Turn on the Freqtrade bot."
"Get the bot running now."
Stop Bot:
"Stop the trading bot."
"Shut down the Freqtrade bot."
"Pause the bot’s trading."
Reload Config:
"Reload the bot’s configuration."
"Update the bot settings."
"Refresh the Freqtrade config."
Add Blacklist:
"Blacklist ETH/USDT."
"Add BTC/ETH to the blacklist."
"Block trading for XRP/USDT."
Delete Blacklist:
"Remove ETH/USDT from the blacklist."
"Unblock BTC/ETH for trading."
"Take XRP/USDT off the blacklist."
Delete Lock:
"Delete the trade lock with ID 123."
"Remove lock number 45."
"Unlock the trade with ID 7."
License
This project is licensed under the MIT License. See the LICENSE file for details.
Available Tools
22 toolsabort_backtestB
Abort currently running backtest task.
| 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 the full burden of behavioral disclosure. It states the action ('abort') but doesn't explain what happens after aborting (e.g., whether data is saved, if the task can be resumed, or error handling). For a mutation tool with zero annotation coverage, this leaves critical behavioral traits unspecified, though it's not misleading.
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, clear sentence with no wasted words. It's front-loaded with the core action and target, making it easy to parse quickly. Every word earns its place by conveying essential information without redundancy.
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 aborting a task (a mutation with potential side effects), no annotations, and no output schema, the description is incomplete. It doesn't cover what the tool returns, error conditions, or behavioral details like whether the abort is immediate or reversible. For a tool with this context, more information is needed to guide safe and 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 tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description appropriately doesn't discuss parameters, which is correct for this case. It doesn't add semantic value beyond the schema, but with no parameters, a baseline of 4 is warranted as there's nothing missing.
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 ('abort') and the target ('currently running backtest task'), making the purpose immediately understandable. It doesn't explicitly distinguish from siblings like 'reset_backtest' or 'stop_bot', but the specificity of 'backtest task' provides reasonable differentiation. This is not a tautology of the name, as it adds context about what is being aborted.
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., that a backtest must be running), exclusions, or comparisons to siblings like 'reset_backtest' or 'stop_bot'. The agent must infer usage from context alone, which is insufficient for clear decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_blacklistC
Add a pair to the blacklist.
Parameters: pair (str): Trading pair to blacklist (e.g., "ETH/USDT"). ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with updated blacklist, or error if failed.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes |
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 mentions logging via 'ctx' and potential errors. It doesn't disclose critical behavioral traits like permissions needed, rate limits, side effects on the system, or what 'blacklist' entails in this context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the main purpose, followed by parameter and return details. It avoids unnecessary fluff, though the mention of 'ctx' not in the schema slightly reduces efficiency.
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 mutation tool (implied by 'Add'), the description is incomplete. It lacks details on what the blacklist is, how it affects the system, error handling specifics, or return format beyond 'stringified JSON', leaving gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics: it explains 'pair' as a trading pair with an example ('ETH/USDT'), and mentions 'ctx' for logging and client access. With 0% schema description coverage and 1 parameter, this compensates well beyond the schema, though 'ctx' is not in the input 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 states the action ('Add a pair to the blacklist') which clarifies the verb and resource, but it doesn't differentiate from sibling tools like 'delete_blacklist' or 'fetch_blacklist'. It's clear what it does but lacks sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'delete_blacklist' or 'fetch_blacklist', nor any context on prerequisites or exclusions. The description only states the basic action without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_blacklistB
Remove a pair from the blacklist.
Parameters: pair (str): Trading pair to remove from blacklist (e.g., "ETH/USDT"). ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with updated blacklist, or error if failed.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only mentions it 'removes' and may return an error if failed. It lacks details on permissions needed, side effects (e.g., if removal affects trading), rate limits, or what 'updated blacklist' entails. This is inadequate for a mutation tool.
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 well-structured with clear sections for action, parameters, and returns, using bullet-like formatting. Every sentence adds value without redundancy, making it efficient and easy to parse.
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 with no annotations and no output schema, the description is incomplete. It doesn't explain behavioral traits like auth needs or what the return value looks like beyond 'stringified JSON', leaving gaps in understanding how 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?
Schema description coverage is 0%, but the description compensates by explaining the 'pair' parameter as 'Trading pair to remove from blacklist' with an example ('ETH/USDT'), adding meaningful context beyond the schema's basic type. Since there's only one parameter, this is sufficient.
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 ('Remove') and resource ('a pair from the blacklist'), making the purpose understandable. However, it doesn't explicitly differentiate from its sibling 'add_blacklist' beyond the opposite action, missing specific contrast about when each is appropriate.
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 like 'add_blacklist' or 'fetch_blacklist', or any prerequisites such as needing the pair to already be blacklisted. The description only states what it does without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_lockB
Delete a specific trade lock by ID.
Parameters: lock_id (int): ID of the trade lock to delete. ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with updated locks, or error if failed.
| Name | Required | Description | Default |
|---|---|---|---|
| lock_id | Yes |
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 insight. It states the action ('Delete') and return type, but lacks critical details: whether deletion is permanent/reversible, required permissions, error conditions (e.g., invalid ID), side effects, or rate limits. This is inadequate for a destructive operation 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 efficiently structured with a clear purpose statement followed by parameter and return sections. Every sentence adds value (purpose, param meaning, return format). It could be slightly more front-loaded by integrating return info into the first sentence, but it avoids redundancy.
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 destructive tool with no annotations, no output schema, and 0% schema coverage, the description is incomplete. It misses behavioral context (e.g., permanence, errors), usage prerequisites, and output details beyond 'stringified JSON'. The agent lacks sufficient information to invoke this safely and 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 meaningful context for the single parameter ('lock_id'), explaining it's 'ID of the trade lock to delete'—clarifying its role beyond the schema's basic 'integer' type. With 0% schema description coverage and only one parameter, this compensates well, though it doesn't detail ID format or sourcing.
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 ('Delete') and resource ('a specific trade lock by ID'), making the purpose unambiguous. It distinguishes from sibling tools like 'fetch_locks' (read) and 'place_trade' (create). However, it doesn't explicitly differentiate from other deletion tools (e.g., 'delete_blacklist'), 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 prerequisites (e.g., needing an existing lock ID from 'fetch_locks'), exclusions (e.g., not for deleting other resources), or comparisons to siblings like 'delete_blacklist'. The agent must 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.
fetch_backtest_historyB
Get backtest result history; optionally filter by filename.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Get' implies a read operation, the description doesn't specify whether this requires authentication, what format the history is returned in, whether results are paginated, or if there are rate limits. For a tool with no 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 perfectly concise at just one sentence that efficiently communicates the core purpose and optional parameter. Every word earns its place with no redundancy or 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's moderate complexity (fetching historical data with optional filtering), no annotations, and no output schema, the description provides a basic but incomplete picture. It covers the main action and parameter purpose but lacks details about return format, error conditions, or how this tool relates to other backtest operations in the sibling set.
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?
With only one parameter and 0% schema description coverage, the description effectively compensates by explaining the parameter's purpose: 'optionally filter by filename.' This adds meaningful context beyond the bare schema, though it doesn't specify filename format or filtering behavior details.
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 ('Get') and resource ('backtest result history'), and includes optional filtering capability. However, it doesn't explicitly differentiate this tool from sibling tools like 'fetch_backtest_status' or 'fetch_performance', which might also retrieve related backtest data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools like 'fetch_backtest_status', 'fetch_performance', and 'fetch_trades' that might retrieve different aspects of backtest data, the description fails to specify what distinguishes this tool's scope or when it should be preferred over other fetch operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_backtest_statusA
Get current backtest execution status and latest result payload.
| 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 the full burden of behavioral disclosure. It indicates a read-only operation ('Get') and specifies the data returned (status and payload), but does not mention potential side effects, error conditions, or response format details. This is adequate but minimal for a tool with zero parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Get current backtest execution status and latest result payload') with zero wasted words. It is appropriately sized for a simple, parameterless tool.
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 (zero parameters, no annotations, no output schema), the description is complete enough for basic understanding. However, it lacks details on the response structure or potential errors, which could be helpful for an agent invoking it without an 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 tool has zero parameters with 100% schema description coverage, so the schema fully documents the input requirements. The description does not add parameter-specific information, which is unnecessary here. A baseline of 4 is appropriate as no parameters exist to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get') and resources ('current backtest execution status and latest result payload'), distinguishing it from siblings like fetch_backtest_history (historical data) or fetch_bot_status (bot status). It precisely identifies what information is retrieved without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking ongoing backtest status, but provides no explicit guidance on when to use this tool versus alternatives like fetch_backtest_history or fetch_performance. It lacks context on prerequisites, timing, or exclusions, leaving the agent to infer appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_balanceB
Fetch the account balance.
Parameters: ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with account balance, or None if failed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'or None if failed' which is useful error behavior disclosure, but doesn't describe authentication requirements, rate limits, whether this is real-time or cached data, what format the balance is returned in, or what might cause failure. For a financial data 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 appropriately concise with clear sections for purpose, parameters, and returns. The 'Fetch the account balance.' opening sentence is front-loaded and direct. The parameter and return documentation is organized but could be slightly more efficient by not documenting the implicit context parameter that's standard in MCP tools.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a financial balance tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'account balance' means in this context (trading balance, available balance, total equity?), doesn't specify currency or format, and provides minimal error handling information. The return format mention ('Stringified JSON response') is helpful but vague about the actual data structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so the schema already fully documents the parameter situation. The description mentions 'ctx (Context): MCP context object for logging and client access' which adds some semantic context about the implicit context parameter, but this is somewhat redundant since MCP tools inherently have context. Baseline for 0 parameters with full schema coverage would be 4.
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', making the purpose immediately understandable. However, it doesn't differentiate this tool from its many siblings (like fetch_profit, fetch_performance, fetch_trades) that also fetch financial data, leaving some ambiguity about what specifically distinguishes this balance fetch operation.
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 about when to use this tool versus alternatives. With multiple fetch-related siblings (fetch_profit, fetch_performance, fetch_trades, etc.), there's no indication whether this should be used for general account status, real-time balances, or specific balance types. No prerequisites, timing, or exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_blacklistB
Get the current blacklist of trading pairs.
Parameters: ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with blacklist data, or None if failed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the return value format ('Stringified JSON response') and error case ('None if failed'), which adds some behavioral context. However, it lacks details on permissions, rate limits, side effects, or what 'failed' entails, leaving gaps for a tool that interacts with sensitive data like a blacklist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by structured sections for parameters and returns. It's efficient with no redundant information, though the parameter section could be omitted since there are no user-facing parameters, making it slightly verbose.
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 0 parameters and no output schema, the description adequately covers the basics: what it does and the return format. However, for a tool fetching a blacklist (a potentially critical data set), it lacks context on data freshness, structure of the JSON, or error handling specifics, which could hinder an agent's 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 0 parameters with 100% coverage, so no parameter documentation is needed. The description correctly notes there are no user-facing parameters by only listing 'ctx' as an internal MCP object, avoiding unnecessary detail. This aligns with the schema and doesn't introduce confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('current blacklist of trading pairs'), making the purpose immediately understandable. It distinguishes itself from siblings like add_blacklist and delete_blacklist by focusing on retrieval rather than modification. However, it doesn't explicitly differentiate from fetch_whitelist in terms of data type beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, timing considerations, or compare it to related tools like fetch_whitelist or other fetch_* siblings. The agent must 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.
fetch_bot_statusB
Retrieve the current status of open trades.
Parameters: ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with open trade status, or None if failed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that it returns 'stringified JSON response with open trade status, or None if failed', which covers basic output behavior. However, it lacks details on error conditions, rate limits, authentication needs, or side effects, which are important for a tool that retrieves data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with clear sections for purpose, parameters, and returns. It uses minimal sentences that directly convey necessary information 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 no parameters and no output schema, the description adequately covers the basics: what it does and what it returns. However, for a data retrieval tool in a trading bot context, it could benefit from more context on what 'open trade status' entails or how it differs from other fetch tools, especially with no annotations to provide additional 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?
The input schema has 0 parameters with 100% coverage, so the schema fully documents the lack of parameters. The description mentions 'ctx (Context): MCP context object for logging and client access', which adds context about an implicit parameter, but this isn't reflected in the schema. Since there are no formal parameters, this extra information is helpful but not critical.
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 ('Retrieve') and resource ('current status of open trades'), making the purpose understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'fetch_trades' or 'fetch_performance', which might also relate to trade 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. With sibling tools like 'fetch_trades' and 'fetch_performance' available, there's no indication of what makes this tool unique or when it should be preferred over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_configB
Retrieve the current bot configuration.
Parameters: ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with configuration data, or None if failed.
| 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 the full burden of behavioral disclosure. It states this is a retrieval operation (implying read-only) and mentions possible failure ('or None if failed'), which adds useful context. However, it doesn't describe authentication needs, rate limits, what specific configuration data is returned, or how failures manifest beyond returning None.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose in the first sentence. The parameter and return sections are structured but slightly verbose for a zero-parameter tool. The mention of 'ctx' parameter that doesn't align with the schema creates minor inefficiency.
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 this is a read operation with no annotations, no output schema, and zero parameters, the description is minimally adequate. It covers the basic purpose and return behavior but lacks details about what configuration data is included, format specifics beyond 'stringified JSON', or error handling beyond returning None. For a configuration retrieval tool, users would benefit from more context about the data structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so the schema fully documents the absence of parameters. The description adds value by explicitly stating there's a 'ctx' parameter (though this appears to be documentation convention rather than an actual parameter based on the schema) and clarifying the return type semantics. Since there are no actual parameters to document, this exceeds the baseline.
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 ('Retrieve') and resource ('current bot configuration'). It distinguishes itself from siblings like 'reload_config' (which likely modifies configuration) and 'fetch_bot_status' (which retrieves operational status rather than configuration). However, it doesn't explicitly differentiate from all possible configuration-related tools.
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. While it's implied this is for reading configuration (vs. 'reload_config' for updating), there's no explicit mention of prerequisites, timing considerations, or comparisons to other fetch tools like 'fetch_bot_status' that might provide overlapping information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_locksB
Get the current trade locks.
Parameters: ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with trade locks data, or None if failed.
| 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 mentions the return format ('Stringified JSON response') and failure case ('or None if failed'), which is helpful. However, it doesn't address important behavioral aspects like whether this is a read-only operation, if it requires authentication, rate limits, or what specific data the trade locks contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately brief and front-loaded with the core purpose. The parameter and return sections are structured but could be more concise since the input schema already documents the absence of parameters. The mention of 'ctx' parameter feels somewhat redundant given the schema coverage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description provides basic information about what the tool does and its return format. However, for a data-fetching tool in a trading context, more context about what 'trade locks' represent and when this operation is needed would be valuable, especially with no annotations to provide safety/behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% description coverage, so the schema fully documents the absence of parameters. The description mentions 'ctx (Context): MCP context object for logging and client access' which adds context about an implicit parameter, though this appears to be standard MCP boilerplate rather than tool-specific semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('current trade locks'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'fetch_balance' or 'fetch_trades' beyond the specific data type being retrieved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. While the tool name suggests it fetches trade locks specifically, there's no explicit mention of when this operation is needed or how it relates to other fetch operations in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_market_dataB
Fetch OHLCV data for a specified trading pair and timeframe.
Parameters: pair (str): Trading pair (e.g., "BTC/USDT"). timeframe (str): Timeframe for the data (e.g., "1h", "5m"). ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response containing OHLCV data, or None if failed.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | ||
| timeframe | Yes |
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 insight. It mentions the tool returns stringified JSON or None if failed, which is useful, but lacks details on rate limits, data sources, latency, error handling, or authentication needs. 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 well-structured with clear sections for purpose, parameters, and returns. It's front-loaded with the core purpose. However, the parameter documentation could be more concise by integrating examples inline rather than in a separate list, and some redundancy exists (e.g., 'str' type is obvious from examples).
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 2 parameters with 0% schema coverage and no output schema, the description does well on parameters but lacks behavioral context. It explains returns but not output structure (e.g., OHLCV format). For a simple data-fetch tool, it's minimally adequate but misses details like data recency or source limitations that would aid the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate fully. It explicitly lists both parameters (pair and timeframe) with clear examples ('BTC/USDT', '1h', '5m') and explains their purpose, adding significant value beyond the bare schema. The ctx parameter is also documented in the description though not in the schema, covering all expected inputs.
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 'OHLCV data', specifying it's for a trading pair and timeframe. It distinguishes from siblings like fetch_balance or fetch_trades by focusing on market data rather than account or trade data. However, it doesn't explicitly contrast with all similar siblings like fetch_backtest_history which might also involve market data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when-not-to-use scenarios, or compare with siblings like fetch_backtest_history that might serve overlapping purposes. The agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_performanceC
Retrieve trading performance metrics.
Parameters: ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with performance metrics, or None if failed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions that the tool 'retrieves' metrics and may return 'None if failed', which implies read-only behavior and error handling. However, it lacks details about authentication needs, rate limits, what specific metrics are included, or whether this is real-time vs historical data - significant gaps for a financial 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 efficiently structured with a clear purpose statement followed by parameter and return documentation. The two-sentence format is appropriately concise for a zero-parameter tool, though the 'Parameters' section could be omitted since there are no user-facing parameters.
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 trading performance tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'performance metrics' include (returns, Sharpe ratio, drawdown, etc.), whether this is for current/live trading or historical periods, or how the stringified JSON is structured. Given the complexity of financial metrics and lack of structured output documentation, this leaves too much ambiguity.
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, and schema description coverage is 100% (though empty). The description correctly notes there are no user-facing parameters beyond the MCP context object, which is appropriate. No additional parameter information is needed or possible.
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 tool 'retrieves trading performance metrics', which is a clear verb+resource combination. However, it doesn't distinguish this from sibling tools like fetch_balance, fetch_profit, or fetch_backtest_history, leaving the specific scope of 'performance metrics' ambiguous compared to these 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?
No guidance is provided about when to use this tool versus alternatives. With multiple fetch_* siblings (fetch_balance, fetch_profit, fetch_backtest_history, etc.), the description offers no context about what distinguishes performance metrics from other retrievable data or when this specific tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_profitB
Get profit summary for the trading bot.
Parameters: ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with profit summary, or None if failed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool returns 'Stringified JSON response with profit summary, or None if failed,' which gives some insight into output behavior. However, it lacks critical details such as whether this is a read-only operation, what data sources it queries, potential rate limits, or error conditions beyond failure. For a 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 appropriately sized and front-loaded, with the core purpose stated first followed by parameter and return details. It uses clear sections ('Parameters:', 'Returns:') for structure. However, the mention of 'ctx' as a parameter could be confusing since it's not in the schema, slightly reducing efficiency.
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 (financial data retrieval), no annotations, no output schema, and 0 parameters, the description is minimally adequate. It explains the purpose and return behavior but lacks details on data format, error handling, or how it differs from siblings. It meets basic needs but has clear gaps for effective agent 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 0 parameters with 100% coverage, so the schema fully documents the lack of inputs. The description mentions 'ctx (Context): MCP context object for logging and client access,' which adds context about an implicit parameter not in the schema, providing useful semantic information. This compensates well for the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get profit summary for the trading bot.' This is a specific verb ('Get') + resource ('profit summary') combination that tells what the tool does. However, it doesn't explicitly distinguish this from similar sibling tools like 'fetch_performance' or 'fetch_balance,' 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 it's appropriate to fetch profit summary versus other financial metrics like balance or performance, nor does it specify any prerequisites or conditions for use. This leaves the agent without contextual usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_tradesB
Fetch the history of closed trades.
Parameters: ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with trade history, or None if failed.
| 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 but offers minimal behavioral insight. It mentions the return type (stringified JSON or None) but doesn't cover critical aspects like whether this is a read-only operation, potential rate limits, authentication requirements, or what 'failed' means in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately brief with two sentences that directly address purpose and return values. The structure with 'Parameters:' and 'Returns:' sections is clear, though the mention of 'ctx' parameter creates minor confusion since it doesn't exist in the schema.
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 tool with 0 parameters, no output schema, and no annotations, the description provides basic purpose and return information. However, it lacks context about what 'closed trades' means in this system, how the data is formatted in the JSON response, or what conditions cause failure - leaving gaps for an AI agent to understand full usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description correctly doesn't waste space on parameters, earning a high baseline score. The mention of 'ctx' in the description is actually misleading since it's not in the schema, but this doesn't significantly detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'fetch' and the resource 'history of closed trades', making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'fetch_backtest_history' or 'fetch_performance' that might also retrieve historical data, 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?
No guidance is provided on when to use this tool versus alternatives like 'fetch_backtest_history' or 'fetch_performance'. The description only states what it does, not when it's appropriate or what distinguishes it from similar tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_whitelistB
Get the current whitelist of trading pairs.
Parameters: ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with whitelist data, or None if failed.
| 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 the full burden of behavioral disclosure. It mentions that the tool returns 'Stringified JSON response with whitelist data, or None if failed', which adds some context about output format and failure handling. However, it doesn't cover critical aspects like rate limits, authentication needs, side effects, or error conditions, leaving significant gaps for a tool in a trading context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise, with a clear purpose statement followed by brief notes on parameters and returns. Every sentence adds value without redundancy, though it could be slightly more front-loaded by integrating the return info into the main statement.
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 adequate but minimal. It explains what the tool does and the return format, but lacks context about the trading environment, data freshness, or how it fits with sibling tools, making it just sufficient for basic 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 0 parameters with 100% coverage, so no parameter documentation is needed. The description correctly omits parameter details, focusing instead on the tool's purpose and return behavior, which is appropriate and earns a baseline score of 4 for zero-parameter tools.
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 ('Get') and resource ('current whitelist of trading pairs'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'fetch_blacklist' or 'add_blacklist', which would require a 5.
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 'fetch_blacklist' or other data-fetching siblings. It lacks context about prerequisites, timing, or exclusions, offering only basic functional information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_tradeC
Place a trade (buy or sell) with the specified pair and amount.
Parameters: pair (str): Trading pair (e.g., "BTC/USDT"). side (str): Trade direction, either "buy" or "sell". stake_amount (float): Amount to trade in the stake currency. ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response with trade result, or error message if failed.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | ||
| side | Yes | ||
| stake_amount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks critical behavioral details. It mentions the tool can fail and return an error message, but doesn't disclose permissions required, rate limits, whether trades are irreversible, confirmation steps, or typical response structure beyond 'stringified JSON'. This is inadequate for a mutation 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 well-structured with clear sections (purpose, parameters, returns) and uses bullet points for readability. It's appropriately sized at 4 sentences, though the parameter explanations could be more detailed without sacrificing conciseness. No redundant information is present.
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 trade execution tool with 3 parameters, no annotations, and no output schema, the description is incomplete. It lacks behavioral context (e.g., risk warnings, idempotency), detailed parameter validation, and output examples. Siblings include fetch_balance and fetch_market_data, suggesting this tool should reference them for prerequisites, but it doesn't.
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 0%, so the description must compensate but only partially does. It explains pair format (e.g., 'BTC/USDT'), side values ('buy' or 'sell'), and stake_amount meaning ('Amount to trade in the stake currency'), adding useful semantics. However, it doesn't clarify units for stake_amount (e.g., USD vs. base currency) or validate pair syntax, leaving gaps given the low 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 tool's purpose with a specific verb ('Place') and resource ('trade'), specifying it handles buy or sell operations. It distinguishes from siblings like fetch_trades (which retrieves) or run_backtest (which simulates), but doesn't explicitly differentiate from other potential trade-related tools not present in the sibling list.
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 sufficient balance), exclusions (e.g., market hours), or comparisons to siblings like start_bot (which might automate trading). Usage is implied only by the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reload_configC
Reload the bot configuration.
Parameters: ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response or success message, or error if failed.
| 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 the full burden of behavioral disclosure. It states the action ('reload') but doesn't explain what this entails—e.g., whether it interrupts bot operations, requires specific permissions, or has side effects like resetting state. The mention of 'error if failed' hints at potential failure modes but lacks detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action but includes unnecessary parameter and return details that don't align with the actual schema (e.g., mentioning 'ctx' parameter and return types). This adds clutter without value, reducing efficiency.
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 configuration reload operation, the description is inadequate. With no annotations, no output schema, and minimal behavioral context, it fails to address key aspects like safety, side effects, or return format. It should explain more about what 'reload' means in this bot context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description includes a 'ctx' parameter in its text, but this is extraneous since the schema shows no parameters. This minor inconsistency doesn't significantly detract, as the baseline for 0 parameters is 4.
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 ('reload') and resource ('bot configuration'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its siblings like 'fetch_config' or 'start_bot/stop_bot', which would require a 5.
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 'fetch_config' or 'start_bot/stop_bot'. It also doesn't mention prerequisites, such as whether the bot must be running or stopped, or if this is safe during active trading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_backtestB
Reset backtest state/result on the API server.
| 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 the full burden of behavioral disclosure. It implies a mutation ('reset') but does not specify if this is destructive, reversible, requires specific permissions, or has side effects like clearing data. This is a significant gap for a mutation 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 purpose without any wasted words. It is appropriately sized and front-loaded, making it easy to understand 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 mutation nature, lack of annotations, and no output schema, the description is incomplete. It does not explain what 'reset' entails (e.g., does it delete data, revert to defaults?), potential impacts, or return values, leaving critical behavioral aspects 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?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description adds no parameter information, but this is acceptable as there are no parameters to explain, aligning with the baseline for zero parameters.
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 ('reset') and target ('backtest state/result'), specifying it occurs 'on the API server'. However, it does not explicitly differentiate from sibling tools like 'abort_backtest' or 'run_backtest', which might have overlapping purposes, so it lacks sibling differentiation for 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 such as 'abort_backtest' or 'run_backtest'. It mentions the context ('on the API server') but offers no explicit when/when-not instructions or prerequisites, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_backtestC
Start a REST backtest job.
Required fields follow freqtrade REST requirements: strategy and enable_protections.
| Name | Required | Description | Default |
|---|---|---|---|
| strategy | Yes | ||
| enable_protections | Yes | ||
| timerange | No | ||
| timeframe | No | ||
| timeframe_detail | No | ||
| max_open_trades | No | ||
| stake_amount | No | ||
| dry_run_wallet | No |
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 tool starts a job, implying an asynchronous operation, but doesn't describe what happens after starting (e.g., job status tracking, completion notification, error handling). It mentions 'freqtrade REST requirements' but doesn't explain authentication needs, rate limits, or potential side effects.
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 brief (two sentences) and front-loaded with the main purpose. Both sentences provide relevant information without unnecessary elaboration, though the second sentence could be more informative about parameter usage.
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 complex tool with 8 parameters, 0% schema coverage, no annotations, and no output schema, the description is inadequate. It doesn't explain the backtest process, expected outputs, error conditions, or how results can be retrieved (likely via sibling tools like 'fetch_backtest_status'). The mention of 'freqtrade REST requirements' assumes external knowledge.
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 0%, so the description must compensate. It mentions 'strategy and enable_protections' as required fields but doesn't explain what these parameters mean, their formats, or how they affect the backtest. The other 6 parameters aren't mentioned at all, leaving significant gaps in understanding.
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 ('Start a REST backtest job') and resource ('backtest job'), making the purpose understandable. It doesn't explicitly differentiate from sibling tools like 'fetch_backtest_history' or 'reset_backtest', but the verb 'Start' distinguishes it from fetch/query operations.
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 by mentioning 'Required fields follow freqtrade REST requirements', but doesn't specify when to use this tool versus alternatives like 'fetch_backtest_status' or 'reset_backtest'. No explicit when/when-not instructions or sibling tool comparisons are included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_botC
Start the Freqtrade bot.
Parameters: ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response or success message, or error if failed.
| 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 but only states the action without disclosing behavioral traits. It doesn't mention permissions needed, whether starting is idempotent, potential side effects (e.g., resuming trading), or error conditions, leaving significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by structured sections for Parameters and Returns. It avoids unnecessary details, though the Parameters section includes 'ctx' which isn't in the schema, slightly reducing efficiency.
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 that likely involves system control. It doesn't explain what 'starting' entails operationally, success/failure states, or return value specifics beyond a vague string, leaving the agent with insufficient context for reliable 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 0 parameters with 100% coverage, so no parameter documentation is needed. The description correctly notes the 'ctx' parameter in its Parameters section, but since parameters are not part of the schema, this adds minimal value. Baseline is 4 for zero parameters, as the description doesn't need to compensate for schema 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 states the action ('Start') and resource ('Freqtrade bot'), which provides a basic understanding of purpose. However, it doesn't differentiate this tool from its sibling 'stop_bot' in terms of what 'starting' entails versus other bot management operations, making it somewhat vague in distinguishing from 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?
No guidance is provided on when to use this tool versus alternatives like 'stop_bot' or 'fetch_bot_status'. The description lacks context about prerequisites (e.g., bot must be stopped) or scenarios where starting is appropriate, offering no usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_botC
Stop the Freqtrade bot.
Parameters: ctx (Context): MCP context object for logging and client access.
Returns: str: Stringified JSON response or success message, or error if failed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool stops the bot and mentions possible return values (success/error), but lacks critical behavioral details: whether this is a graceful or forced stop, if it requires specific permissions, what side effects occur (e.g., cancelling trades), or typical response formats. This is inadequate for a mutation 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 front-loaded with the core purpose but includes unnecessary details: the 'ctx' parameter note is redundant (not in schema) and the return statement is vague. It could be more concise by focusing solely on the tool's action and omitting schema-like annotations.
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 this is a mutation tool (stopping a bot) with no annotations and no output schema, the description is incomplete. It lacks essential context: how the stop operation works, what 'success' entails, error conditions, or integration with sibling tools (e.g., use after 'fetch_bot_status'). The return value description is too generic to be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description includes a 'ctx' parameter note, but since it's not in the schema, this doesn't affect the score. Baseline is 4 for zero-parameter tools, as the description doesn't need to compensate for missing param info.
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 ('Stop') and target ('the Freqtrade bot'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'abort_backtest' or 'reset_backtest' which might also involve stopping operations, though those target different resources.
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., the bot must be running), exclusions, or relationships with sibling tools like 'start_bot' or 'fetch_bot_status', leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
22 tool updates
v0.1.0- First observed
abort_backtest - First observed
add_blacklist - First observed
delete_blacklist - First observed
delete_lock - First observed
fetch_backtest_history - First observed
fetch_backtest_status - First observed
fetch_balance - First observed
fetch_blacklist - First observed
fetch_bot_status - First observed
fetch_config - First observed
fetch_locks - First observed
fetch_market_data - First observed
fetch_performance - First observed
fetch_profit - First observed
fetch_trades - First observed
fetch_whitelist - First observed
place_trade - First observed
reload_config - First observed
reset_backtest - First observed
run_backtest - First observed
start_bot - First observed
stop_bot
TDQS
Most tools have distinct purposes targeting specific resources like blacklist, backtest, or bot operations, with clear boundaries. However, some fetch tools like fetch_bot_status and fetch_trades might be slightly overlapping in providing trade-related information, but descriptions help differentiate them.
Tools follow a highly consistent verb_noun pattern throughout, such as fetch_balance, add_blacklist, and run_backtest. All names use snake_case with clear verbs, making them predictable and easy to understand.
With 22 tools, the count is borderline high for a trading bot server, potentially feeling heavy. While it covers many aspects, some tools might be consolidated or omitted without losing core functionality, indicating a slight over-scoping.
The tool set provides comprehensive coverage for the Freqtrade domain, including CRUD operations for blacklist/locks, bot lifecycle management, data fetching, and backtesting. No obvious gaps are present; agents can handle full workflows from configuration to trading and analysis.
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
Crypto trading intelligence MCP — 34+ endpoints, x402 pay-per-use, AI agent strategy & execution
Trade 16 crypto exchanges + MetaTrader 5 from your AI assistant via one MCP connection.
Trade, monitor portfolios, and build Coinrule strategies by chat.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server that connects AI agents to Freqtrade crypto trading bot via REST API. It provides 15 tools for account stats, trade management, market data, pair lists, and bot lifecycle control.19222MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI co-pilots to interact with TradingView charts, manage alerts via REST API, automate morning briefs with custom trading rules, and perform real-time market analysis.-
- AlicenseNot gradedqualityBmaintenanceAn MCP server for cryptocurrency trading via Freqtrade, enabling trade management, balance checks, strategy configuration, backtesting, and bot lifecycle control from any MCP-compatible AI agent.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI tools to execute trades and fetch market data across six crypto exchanges via natural language or API, with dual Telegram and MCP interfaces.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/worlddebugger/freqtrade-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server