QuantConnect
OfficialThe QuantConnect MCP Server enables AI agents to interact with the QuantConnect cloud platform for full lifecycle management of algorithmic trading strategies, from development to live deployment.
Account & Organization: Read account status, organization details, and credit balance.
Project Management: Create, read, update, delete, and list projects; manage collaborators (add, update, remove); lock projects for editing.
Node Management: Read and update project compute nodes (backtest, live, research).
File Operations: Create, read, rename, update (content or via unified diff patch), and delete project files.
Compilation: Submit asynchronous compile jobs and read their results.
Backtesting: Create, read, list, update, and delete backtests; read backtest charts, orders, and insights.
Optimization: Estimate time/cost, create, read, list, update, abort, and delete optimizations (supports grid search with targets like Sharpe Ratio, CAR, PSR, Drawdown).
Live Trading: Authorize brokerage connections (Alpaca, TradeStation, Schwab, Tastytrade, etc.); deploy and manage live algorithms across many brokerages (IB, Binance, Coinbase, OANDA, and more); read live charts, logs, portfolio, orders, and insights; stop or liquidate algorithms; send commands to individual or all algorithms in an organization.
Object Store: Upload, read properties, list, download, and delete objects.
Code Assistance: Check initialization errors, provide code completions (Python/C#), enhance error messages, convert code to PEP8, and check syntax.
Search: Search QuantConnect documentation, forums, examples, and stubs.
Server Utilities: List available LEAN engine versions; read current and latest MCP server version.
Provides comprehensive access to QuantConnect's algorithmic trading platform, enabling AI agents to create and manage trading projects, write and backtest strategies, run optimizations, deploy algorithms to live trading, manage files and collaborators, and interact with the Object Store for data management.
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., "@QuantConnectcreate a new project for my momentum trading strategy"
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.
This repository is deprecated for now - the preferred way to use our MCP is through the one embedded in VSCode.
See https://www.quantconnect.com/docs/v2/ai-assistance/mcp-server/key-concepts
QuantConnect MCP Server
The QuantConnect MCP Server is a bridge for AIs (such as Claude and OpenAI o3 Pro) to interact with our cloud platform. When equipped with our MCP, the AI can perform tasks on your behalf through our API such as updating projects, writing strategies, backtesting, and deploying strategies to production live-trading.
This is the OFFICIAL implementation of QuantConnect's MCP, maintained by the QuantConnect team. We recommend using the official version to ensure security of your code and API tokens. Our implementation is tested and dockerized for easy cross-platform deployment.
Getting Started
To connect local MCP clients (like Claude Desktop) to the QC MCP Server, follow these steps:
Install and open Docker Desktop.
Install and open Claude Desktop.
In Claude Desktop, click File > Settings > Developer > Edit Config.
Edit the
claude_desktop_config.jsonfile to include the followingquantconnectconfiguration:
{
"mcpServers": {
"quantconnect": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "QUANTCONNECT_USER_ID",
"-e", "QUANTCONNECT_API_TOKEN",
"-e", "AGENT_NAME",
"--platform", "<your_platform>",
"quantconnect/mcp-server"
],
"env": {
"QUANTCONNECT_USER_ID": "<your_user_id>",
"QUANTCONNECT_API_TOKEN": "<your_api_token>",
"AGENT_NAME": "MCP Server"
}
}
}
}To get your user Id and API token, see Request API Token.
Our MCP server is multi-platform capable. The options are linux/amd64 for Intel/AMD chips and linux/arm64 for ARM chips (for example, Apple's M-series chips).
If you simultaneously run multiple agents, set a unique value for the AGENT_NAME environment variable for each agent to keep record of the request source.
Restart Claude Desktop.
Claude Desktop automatically pulls our MCP server from Docker Hub and connects to it.
To view all the MCP clients and the features they support, see the Feature Support Matrix in the MCP documentation.
To keep the Docker image up-to-date, pull the latest MCP server from Docker Hub in the terminal.
docker pull quantconnect/mcp-serverIf you have an ARM chip, add the --platform linux/arm64 option.
Related MCP server: CCXT MCP Server
Available Tools (64)
Tools provided by this Server | Short Description |
| Read the organization account status. |
| Create a new project in your default organization. |
| List the details of a project or a set of recent projects. |
| List the details of all projects. |
| Update a project's name or description. |
| Delete a project. |
| Add a collaborator to a project. |
| List all collaborators on a project. |
| Update collaborator information in a project. |
| Remove a collaborator from a project. |
| Lock a project so you can edit it. |
| Read the available and selected nodes of a project. |
| Update the active state of the given nodes to true. |
| Asynchronously create a compile job request for a project. |
| Read a compile packet job result. |
| Add a file to a given project. |
| Read a file from a project, or all files in the project if no file name is provided. |
| Update the name of a file. |
| Update the contents of a file. |
| Apply a patch (unified diff) to a file in a project. |
| Delete a file in a project. |
| Create a new backtest request and get the backtest Id. |
| Read the results of a backtest. |
| List all the backtests for the project. |
| Read a chart from a backtest. |
| Read out the orders of a backtest. |
| Read out the insights of a backtest. |
| Update the name or note of a backtest. |
| Delete a backtest from a project. |
| Estimate the execution time of an optimization with the specified parameters. |
| Create an optimization with the specified parameters. |
| Read an optimization. |
| List all the optimizations for a project. |
| Update the name of an optimization. |
| Abort an optimization. |
| Delete an optimization. |
| Authorize an external connection with a live brokerage or data provider. |
| Create a live algorithm. |
| Read details of a live algorithm. |
| List all your past and current live trading deployments. |
| Read a chart from a live algorithm. |
| Get the logs of a live algorithm. |
| Read out the portfolio state of a live algorithm. |
| Read out the orders of a live algorithm. |
| Read out the insights of a live algorithm. |
| Stop a live algorithm. |
| Liquidate and stop a live algorithm. |
| Send a command to a live trading algorithm. |
| Broadcast a live command to all live algorithms in an organization. |
| Upload files to the Object Store. |
| Get Object Store properties of a specific organization and key. |
| Create a job to download files from the Object Store and then read the job Id. |
| Get the URL for downloading files from the Object Store. |
| List the Object Store files under a specific directory in an organization. |
| Delete the Object Store file of a specific organization and key. |
| Returns a list of LEAN versions with basic information for each version. |
| Run a backtest for a few seconds to initialize the algorithm and get inialization errors if any. |
| Show the code completion for a specific text input. |
| Show additional context and suggestions for error messages. |
| Update Python code to follow PEP8 style. |
| Check the syntax of a code. |
| Search for content in QuantConnect. |
| Returns the version of the QC MCP Server that's running. |
| Returns the latest version of the QC MCP Server released. |
Tool Details
Tool: read_account
Read the organization account status.
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: create_project
Create a new project in your default organization.
Parameter | Type | Description |
|
| Project name. |
|
| Programming language to use. |
|
| The organization to create project under. If you don't provide a value, it defaults to your preferred organization. |
This tool modifies it's environment.
This tool doesn't perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: read_project
List the details of a project or a set of recent projects.
Parameter | Type | Description |
|
| Id of the project to read. |
|
| Starting (inclusive, zero-based) index of the projects to fetch. If you provide this property, omit the project Id property. |
|
| Last (exlusive) index of the projects to fetch. If you provide this property, omit the project Id property. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: list_projects
List the details of all projects.
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: update_project
Update a project's name or description.
Parameter | Type | Description |
|
| Project Id to which the file belongs. |
|
| The new name for the project. |
|
| The new description for the project. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: delete_project
Delete a project.
Parameter | Type | Description |
|
| Id of the project to delete. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: create_project_collaborator
Add a collaborator to a project.
Parameter | Type | Description |
|
| Id of the project to add the collaborator to. |
|
| User Id of the collaborator to add. |
|
| Gives the right to deploy and stop live algorithms. |
|
| Gives the right to edit the code. |
This tool modifies it's environment.
This tool doesn't perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: read_project_collaborators
List all collaborators on a project.
Parameter | Type | Description |
|
| Id of the project from which to read the collaborators. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: update_project_collaborator
Update collaborator information in a project.
Parameter | Type | Description |
|
| Id of the project the collaborator is on. |
|
| User Id of the collaborator to update. |
|
| Gives the right to deploy and stop live algorithms. |
|
| Gives the right to edit the code. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: delete_project_collaborator
Remove a collaborator from a project.
Parameter | Type | Description |
|
| Id of the project to remove the collaborator from. |
|
| User Id of the collaborator to remove. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: lock_project_with_collaborators
Lock a project so you can edit it.
Parameter | Type | Description |
|
| Id of the project to edit. |
|
| Name of the environment that's creating the request. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: read_project_nodes
Read the available and selected nodes of a project.
Parameter | Type | Description |
|
| Id of the project to which the nodes refer. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: update_project_nodes
Update the active state of the given nodes to true.
Parameter | Type | Description |
|
| Project Id to which the nodes refer. |
|
| List of node Ids the project may use. If you omit this property or pass an empty list, the best node will be automatically selected for backtest, research, and live trading. |
This tool modifies it's environment.
This tool doesn't perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: create_compile
Asynchronously create a compile job request for a project.
Parameter | Type | Description |
|
| Id of the project to compile. |
This tool modifies it's environment.
This tool doesn't perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: read_compile
Read a compile packet job result.
Parameter | Type | Description |
|
| Id of the project you requested to compile. |
|
| Compile Id returned during the creation request. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: create_file
Add a file to a given project.
Parameter | Type | Description |
|
| Id of the project to add the file. |
|
| The name of the new file. |
|
| The content of the new file. |
|
| Name of the environment that's creating the request. |
This tool modifies it's environment.
This tool doesn't perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: read_file
Read a file from a project, or all files in the project if no file name is provided.
Parameter | Type | Description |
|
| Id of the project that contains the file. |
|
| The name of the file to read. |
|
| Name of the environment that's creating the request. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: update_file_name
Update the name of a file.
Parameter | Type | Description |
|
| Id of the project that contains the file. |
|
| The current name of the file. |
|
| The new name for the file. |
|
| Name of the environment that's creating the request. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: update_file_contents
Update the contents of a file.
Parameter | Type | Description |
|
| Id of the project that contains the file. |
|
| The name of the file to update. |
|
| The new contents of the file. |
|
| Name of the environment that's creating the request. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: patch_file
Apply a patch (unified diff) to a file in a project.
Parameter | Type | Description |
|
| Id of the project that contains the file. |
|
| A patch string in unified diff format (as produced by |
|
| Name of the environment that's creating the request. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: delete_file
Delete a file in a project.
Parameter | Type | Description |
|
| Id of the project that contains the file. |
|
| The name of the file to delete. |
|
| Name of the environment that's creating the request. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: create_backtest
Create a new backtest request and get the backtest Id.
Parameter | Type | Description |
|
| Id of the project to backtest. |
|
| Compile Id for the project to backtest. |
|
| Name for the new backtest. |
|
| Parameters to use for the backtest. |
This tool modifies it's environment.
This tool doesn't perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: read_backtest
Read the results of a backtest.
Parameter | Type | Description |
|
| Id of the project that contains the backtest. |
|
| Id of the backtest to read. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: list_backtests
List all the backtests for the project.
Parameter | Type | Description |
|
| Id of the project from which to read one or multiple backtests. |
|
| If true, the backtests summaries from the response will contain the statistics with their corresponding values. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: read_backtest_chart
Read a chart from a backtest.
Parameter | Type | Description |
|
| Id of the project that contains the backtest. |
|
| Id of the backtest for this chart request. |
|
| The requested chart name. |
|
| The number of data points to request. |
|
| The start timestamp of the request in Unix time. |
|
| The end timestamp of the request in Unix time. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: read_backtest_orders
Read out the orders of a backtest.
Parameter | Type | Description |
|
| Starting index of the orders to be fetched. |
|
| Last index of the orders to be fetched. Note that end - start must be less than 100. |
|
| Id of the project from which to read the backtest. |
|
| Id of the backtest from which to read the orders. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: read_backtest_insights
Read out the insights of a backtest.
Parameter | Type | Description |
|
| Starting index of the insights to be fetched. |
|
| Last index of the insights to be fetched. Note that end - start must be less than 100. |
|
| Id of the project from which to read the backtest. |
|
| Id of the backtest from which to read the insights. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: update_backtest
Update the name or note of a backtest.
Parameter | Type | Description |
|
| Id of the project that contains the backtest. |
|
| Id of the backtest to update. |
|
| Name to assign to the backtest. |
|
| Note to attach to the backtest. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: delete_backtest
Delete a backtest from a project.
Parameter | Type | Description |
|
| Id of the project that contains the backtest. |
|
| Id of the backtest to delete. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: estimate_optimization_time
Estimate the execution time of an optimization with the specified parameters.
Parameter | Type | Description |
|
| Id of the project to optimize. |
|
| Name of the optimization. |
|
| Target statistic of the optimization to minimize or maximize. |
|
| Target extremum of the optimization. |
|
| Desired value for the optimization target statistic. |
|
| Optimization strategy. |
|
| Optimization compile Id. |
|
| Optimization parameters. |
|
| Optimization constraints. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: create_optimization
Create an optimization with the specified parameters.
Parameter | Type | Description |
|
| Id of the project to optimize. |
|
| Name of the optimization. |
|
| Target statistic of the optimization to minimize or maximize. |
|
| Target extremum of the optimization. |
|
| Desired value for the optimization target statistic. |
|
| Optimization strategy. |
|
| Optimization compile Id. |
|
| Optimization parameters. |
|
| Optimization constraints. |
|
| Estimated cost for optimization. |
|
| Optimization node type. |
|
| Number of parallel nodes for optimization. |
This tool modifies it's environment.
This tool doesn't perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: read_optimization
Read an optimization.
Parameter | Type | Description |
|
| Id of the optimization to read. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: list_optimizations
List all the optimizations for a project.
Parameter | Type | Description |
|
| Id of the Project to get a list of optimizations for. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: update_optimization
Update the name of an optimization.
Parameter | Type | Description |
|
| Id of the optimization to update. |
|
| Name to assign to the optimization. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: abort_optimization
Abort an optimization.
Parameter | Type | Description |
|
| Id of the optimization to abort. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: delete_optimization
Delete an optimization.
Parameter | Type | Description |
|
| Id of the optimization to delete. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: authorize_connection
Authorize an external connection with a live brokerage or data provider.
Parameter | Type | Description |
|
| The brokerage to authenticate a connection with. |
This tool modifies it's environment.
This tool doesn't perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: create_live_algorithm
Create a live algorithm.
Parameter | Type | Description |
|
| The version of the Lean used to run the algorithm. -1 is master, however, sometimes this can create problems with live deployments. If you experience problems using, try specifying the version of Lean you would like to use. |
|
| Project Id. |
|
| Compile Id. |
|
| Id of the node that will run the algorithm. |
|
| Brokerage configuration for the live algorithm. |
|
| Dictionary of data provider configurations to be used in the live algorithm. Provide at least one. The order in which you define the providers defines their order of precedence. |
This tool modifies it's environment.
This tool doesn't perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: read_live_algorithm
Read details of a live algorithm.
Parameter | Type | Description |
|
| Id of the project to read. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: list_live_algorithms
List all your past and current live trading deployments.
Parameter | Type | Description |
|
| Id of the project to include in response. If you omit this property, the response includes all your projects. |
|
| Status of the live deployments to include in the response. If you omit this property, the response includes deployments with any status. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: read_live_chart
Read a chart from a live algorithm.
Parameter | Type | Description |
|
| Id of the project that's live trading. |
|
| Name of the chart to read. |
|
| The number of data points to request. |
|
| The unix start time of the request. |
|
| The unix end time of the request. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: read_live_logs
Get the logs of a live algorithm.
Parameter | Type | Description |
| `` optional | Format of the log results. |
|
| Id of the project that contains the live running algorithm. |
|
| Deploy Id (Algorithm Id) of the live running algorithm. |
|
| Start line (inclusive) of logs to read. The lines numbers start at 0. |
|
| End line (exclusive) of logs to read, where endLine - startLine <= 250. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: read_live_portfolio
Read out the portfolio state of a live algorithm.
Parameter | Type | Description |
|
| Id of the project from which to read the live algorithm. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: read_live_orders
Read out the orders of a live algorithm.
Parameter | Type | Description |
|
| Starting index of the orders to be fetched. |
|
| Last index of the orders to be fetched. Note that end - start must be <= 1,000. |
|
| Id of the project from which to read the live algorithm. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: read_live_insights
Read out the insights of a live algorithm.
Parameter | Type | Description |
|
| Starting index of the insights to be fetched. Required if end > 100. |
|
| Last index of the insights to be fetched. Note that end - start must be less than 100. |
|
| Id of the project from which to read the live algorithm. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: stop_live_algorithm
Stop a live algorithm.
Parameter | Type | Description |
|
| Id of the project to stop trading live. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: liquidate_live_algorithm
Liquidate and stop a live algorithm.
Parameter | Type | Description |
|
| Project Id for the live instance to liquidate. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: create_live_command
Send a command to a live trading algorithm.
Parameter | Type | Description |
|
| Project for the live instance we want to run the command against. |
|
| The command to run. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: broadcast_live_command
Broadcast a live command to all live algorithms in an organization.
Parameter | Type | Description |
|
| Organization Id of the projects we would like to broadcast the command to |
|
| Project for the live instance we want to exclude from the broadcast list. If null, all projects will be included. |
|
| The command to run. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: upload_object
Upload files to the Object Store.
Parameter | Type | Description |
|
| Orgainization ID. |
|
| Unique key to access the object in Object Store. |
|
| Object data to be stored. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: read_object_properties
Get Object Store properties of a specific organization and key.
Parameter | Type | Description |
|
| Id of the organization that owns the Object Store. |
|
| Key in the Object Store. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: read_object_store_file_job_id
Create a job to download files from the Object Store and then read the job Id.
Parameter | Type | Description |
|
| Id of the organization that owns the Object Store. |
|
| Keys of the Object Store files. |
This tool modifies it's environment.
This tool doesn't perform destructive updates.
Calling this tool repeatedly with the same arguments has additional effects.
This tool may interact with an "open world" of external entities.
Tool: read_object_store_file_download_url
Get the URL for downloading files from the Object Store.
Parameter | Type | Description |
|
| Id of the organization that owns the Object Store. |
|
| Id of the download job for the files. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: list_object_store_files
List the Object Store files under a specific directory in an organization.
Parameter | Type | Description |
|
| Id of the organization to list the Object Store files from. |
|
| Path to a directory in the Object Store. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: delete_object
Delete the Object Store file of a specific organization and key.
Parameter | Type | Description |
|
| Id of the organization that owns the Object Store. |
|
| Key of the Object Store file to delete. |
This tool modifies it's environment.
This tool may perform destructive updates.
Calling this tool repeatedly with the same arguments has no additional effect.
This tool may interact with an "open world" of external entities.
Tool: read_lean_versions
Returns a list of LEAN versions with basic information for each version.
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: check_initialization_errors
Run a backtest for a few seconds to initialize the algorithm and get inialization errors if any.
Parameter | Type | Description |
|
| Programming language. |
|
| Files to process. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: complete_code
Show the code completion for a specific text input.
Parameter | Type | Description |
|
| Programming language for the code completion. |
|
| Sentence to complete. |
|
| Maximum size of the responses. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: enhance_error_message
Show additional context and suggestions for error messages.
Parameter | Type | Description |
|
| Programming language for the code completion. |
|
| Error message to enhance. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: update_code_to_pep8
Update Python code to follow PEP8 style.
Parameter | Type | Description |
|
| Files of the project. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: check_syntax
Check the syntax of a code.
Parameter | Type | Description |
|
| Programming language. |
|
| Files to process. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: search_quantconnect
Search for content in QuantConnect.
Parameter | Type | Description |
|
| Programming language of the content to search. |
|
| Criteria for the search. |
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: read_mcp_server_version
Returns the version of the QC MCP Server that's running.
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Tool: read_latest_mcp_server_version
Returns the latest version of the QC MCP Server released.
This tool doesn't modify it's environment.
This tool may interact with an "open world" of external entities.
Debugging
Build
To build the Docker image from source, clone this repository and then run docker build -t quantconnect/mcp-server ..
Logs
To log to the mcp-server-quantconnect.log file, import sys and then print("Hello world", file=sys.stderr).
Inspector
To start the inspector, run npx @modelcontextprotocol/inspector uv run src/main.py.
To pass a model to the inspector tool, use JSON (for example, {"name":"My Project","language":"Py"}).
Available Tools
64 toolsabort_optimizationCIdempotent
Abort an optimization.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides no behavioral details beyond the annotation's idempotentHint. It doesn't describe side effects, state changes, or required permissions, leaving the agent uninformed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (4 words), which is efficient, but it sacrifices necessary detail. It is front-loaded but incomplete.
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 simple tool with one parameter and an output schema, the description lacks completeness. It does not mention what the output represents or any contextual information about the optimization lifecycle.
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%, and the tool description does not explain the 'model' parameter or its nested 'optimizationId'. The schema itself provides an example, but the description fails to compensate.
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 'Abort an optimization' clearly states the verb (abort) and resource (optimization), distinguishing it from siblings like 'delete_optimization', 'create_optimization', etc.
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 on when to use this tool versus alternatives. Does not mention prerequisites (e.g., optimization must be running) or differences from delete_optimization.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
authorize_connectionAIdempotent
Authorize an external connection with a live brokerage or data provider.
This tool automatically opens your browser for you to complete the authentication flow. For the flow to work, you must be logged into your QuantConnect account on the browser that opens.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| authorization | No | Authentication information from the data provider or brokerage, including the access token or refresh token. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint but don't cover the interactive browser launch or login requirement. The description adds critical behavioral context beyond annotations, though it could elaborate on success/failure outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and every sentence adds necessary information. No wasted words.
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 and the presence of an output schema, the description covers purpose, side effect, and prerequisite. It lacks details on post-auth behavior but is still fairly complete.
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?
Input schema coverage is 0%, and the description does not explain the parameter 'model' or its nested 'brokerage' field. It only generically mentions 'brokerage or data provider', adding no semantic value beyond the schema's enum values.
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 authorizes an external connection with a live brokerage or data provider, and it distinguishes itself by mentioning the browser-opening behavior, which no sibling tool does.
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?
It provides clear context for use, including the prerequisite of being logged into QuantConnect on the browser. However, it does not explicitly state when not to use it or mention alternatives, though no direct alternatives exist among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcast_live_commandC
Broadcast a live command to all live algorithms in an organization.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations lack readOnlyHint or destructiveHint, so the description must define behavior. It does not disclose that broadcasting a command may be destructive (e.g., running orders), nor mention authentication requirements or side effects. The tool's impact on live algorithms is unspecified.
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 sentence and front-loaded, but it is under-informative for the tool's complexity. Conciseness is good, but it does not earn its place by adding value; it could be more detailed without becoming 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?
Despite having an output schema, the description omits critical context: what happens after broadcasting (e.g., success/failure indication), error states, rate limits, or the effect of excludeProjectId. For a tool affecting all live algorithms, this is insufficient.
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 explain parameters. It mentions none of the three main parameters (organizationId, excludeProjectId, command). The description does not help an agent understand what to provide or how fields like excludeProjectId or command 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 action (broadcast), resource (live command), and scope (all live algorithms in an organization). It implicitly distinguishes from sibling create_live_command which sends a command to a single algorithm, but does not explicitly compare.
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 on when to use this tool versus alternatives like create_live_command. No preconditions or exclusions mentioned. The description is purely declarative without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_initialization_errorsBRead-only
Run a backtest for a few seconds to initialize the algorithm and get inialization errors if any.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | No | State of the backtest. |
| version | No | Version of the response. |
| payload | No | Information about the backtest initialization. |
| payloadType | No | Type of the payload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'run a backtest' which may imply a mutation, but annotations declare readOnlyHint=true, creating a contradiction. The description does not clarify the actual side effects or scope of the initialization check, leaving ambiguity.
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 sentence, concise for the core purpose. However, it could be improved by clarifying the parameters and side effects without adding much length.
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 the input (nested objects) and lack of parameter guidance in the description, the tool is incomplete for an agent. The description does not explain prerequisites or the structure of the required model parameter, despite an output schema existing.
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% description coverage, meaning no parameter info in the schema's top-level description. The tool description fails to mention the required 'model' parameter (with language and files), leaving the agent without guidance on what to provide.
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 action (run a backtest briefly), its purpose (initialize algorithm and get errors), and the result (errors if any). It distinguishes from siblings like check_syntax and create_backtest by focusing specifically on initialization errors from a short run.
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 when to use (to check initialization errors without a full backtest) but lacks explicit guidance on when not to use or how it differs from alternatives like check_syntax or create_backtest.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_syntaxCRead-only
Check the syntax of a code.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | No | State of the syntax check. |
| version | No | Version of the response. |
| payload | No | Code completion suggestions. |
| payloadType | No | Type of the payload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the read-only nature is known. The description adds no further behavioral details (e.g., return format, error reporting), missing an opportunity to add value.
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 very concise (one sentence), but it is under-specified. It sacrifices completeness for brevity, earning a middle score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description omits key context: what happens on syntax errors, whether it returns errors or just a boolean, and how to interpret results. The tool is simple but still incomplete.
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% (top-level parameter has no description). The description fails to explain parameters like 'language' or 'files', which are critical for tool use.
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 checks syntax of code, which distinguishes it from siblings like compilation or execution tools. However, 'a code' is somewhat vague and could be more precise.
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 on when to use this tool versus alternatives (e.g., compiling or running code to check errors). The description does not mention exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_codeCRead-only
Show the code completion for a specific text input.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | No | State of the code completion. |
| version | No | Version of the response. |
| payload | No | Code completion suggestions. |
| payloadType | No | Type of the payload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation 'readOnlyHint: true' already indicates a read operation, and the description 'Show' aligns with that. However, the description adds no additional behavioral context beyond what the annotations provide, such as the fact that completions are returned or that language and sentence are required. With the annotation present, a score of 3 is appropriate.
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 sentence with no unnecessary words. It is concise, but could be structured to include more detail without losing brevity.
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 the nested input schema and the existence of an output schema (not shown), the description is too minimal. It does not explain the return format, behavior when no completions are found, or any constraints like response size limits. More context would help the agent use the tool correctly.
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% description coverage at the top level, and the description does not explain the nested parameters (language, sentence, responseSizeLimit). The description simply says 'for a specific text input', which vaguely references the 'sentence' parameter but fails to mention the language or optional size limit. Since the description does not compensate for the low schema coverage, the score is low.
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 'Show the code completion for a specific text input' clearly indicates the tool's purpose. It specifies a verb ('Show') and a resource ('code completion'), and adds context ('for a specific text input') that hints at the input parameter. While it distinguishes from siblings like 'check_syntax' or 'update_code_to_pep8', it could be more precise about what 'code completion' entails.
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 its siblings, such as 'check_syntax' or 'create_compile'. There are no explicit when-to-use or when-not-to-use instructions, 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.
create_backtestC
Create a new backtest request and get the backtest Id.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| backtest | No | Details on the result of the backtest. |
| debugging | No | Indicates if the backtest is run under debugging mode. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states that it creates and returns an ID. Annotations declare it non-destructive, but no additional behavioral traits are disclosed, such as side effects, speed, or dependencies.
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 13-word sentence, front-loaded with the action. It is appropriately concise and wastes no words.
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?
The description lacks context about the required inputs and the overall workflow. For a creation tool that depends on a compile and project, it would benefit from mentioning these dependencies.
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 does not mention any of the required parameters (projectId, compileId, backtestName) or the optional parameters object. Since the schema coverage is 0%, the agent receives no verbal guidance on what input is needed.
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 backtest request') and the outcome ('get the backtest Id'), distinguishing it from sibling tools like update_backtest or list_backtests.
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 usage context is provided; there is no guidance on when to create a backtest versus update or list, nor any prerequisites like requiring a compileId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_compileB
Asynchronously create a compile job request for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| compileId | No | Compile Id for a successful build. |
| state | No | The current state of the compile job. |
| parameters | No | List of files and their associated parameters detected during compilation. |
| projectId | No | Id of the project you requested to compile. |
| signature | No | Signature key of compilation. |
| signatureOrder | No | Signature order of files to be compiled. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions 'asynchronously' but lacks details on asynchronous behavior, error handling, or required closure via read_compile. Annotations only provide destructiveHint=false, leaving 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?
Single sentence, no redundant words. Efficient but could include more context without becoming 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 the one-parameter schema and existence of read_compile as a sibling, the description minimally explains creation but misses connecting to the asynchronous lifecycle.
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 schema describes projectId. The description adds no extra meaning beyond the schema, failing to compensate for low 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 verb 'create' and resource 'compile job request' for a project, distinguishing it from siblings like create_backtest and create_optimization.
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 on when to use this tool vs alternatives, nor prerequisites like whether the project must exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_fileAIdempotent
Add a file to a given project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, so the description adds little beyond 'add'. It does not mention behavior on duplicate names, authorization needs, or file path handling, but the annotations cover the core safety profile adequately.
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?
A single, front-loaded sentence that efficiently conveys the tool's purpose with no wasted words.
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 existence of an output schema and detailed input schema, the description is complete enough for basic usage but lacks context about behavior on duplicates or file path creation, which would be helpful given the many 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?
The input schema (nested object) has descriptions for all properties (projectId, name, content, codeSourceId), providing adequate parameter meaning. The description adds no extra parameter context beyond the schema, so a baseline score of 3 is appropriate.
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 'Add a file to a given project' clearly states the specific action (add/create) and resource (file), distinguishing it from sibling tools like patch_file or delete_file.
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 patch_file or upload_object, nor are there any exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_live_algorithmD
Create a live algorithm.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| responseCode | No | Response code of the request. |
| source | No | Source of the API call. |
| deployId | No | Id of the live deployment. |
| versionId | No | Id of the LEAN version deployed. |
| projectId | No | Id of the project deployed. |
| live | No | Summary of the algorithm created. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides no behavioral details beyond the name. Annotations indicate non-destructive, but the description does not clarify that creating a live algorithm requires a complex request object with many fields, or that it initiates a live deployment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but fails to provide useful information. It does not earn its place as it adds no value beyond the tool name.
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 the input schema (over 50 nested definitions) and the absence of parameter descriptions, the description is completely inadequate. It should at least mention key required subfields like projectId, compileId, nodeId, and brokerage.
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 coverage is 0% and the description adds no information about the single required 'model' parameter. It does not explain that this parameter is a complex object with many nested required fields, leaving the agent with no guidance.
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 'Create a live algorithm' is a tautology, restating the tool name without adding any specificity. It fails to differentiate from sibling tools like create_backtest or create_compile.
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 on when to use this tool versus alternatives. The description does not mention prerequisites or context, such as needing a project, compile, and node before creating a live algorithm.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_live_commandC
Send a command to a live trading algorithm.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only a title, no readOnlyHint or destructiveHint. The description does not disclose side effects, permission requirements, or the impact on the live algorithm. As a mutation tool, the description should warn about potential risks.
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, concise sentence. It is front-loaded but could include more specific information without becoming 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 the nested input schema and siblings with similar purposes, the description is too minimal. It lacks context on prerequisites (e.g., algorithm must be live) and does not help distinguish from broadcast_live_command.
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 top-level parameter 'model' has no description in the schema (0% coverage), and the tool description does not elaborate on required fields (projectId, command). Although nested definitions provide descriptions, the tool description adds minimal value beyond 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 'Send a command to a live trading algorithm' clearly states the action (send) and the resource (command to a live algorithm). It distinguishes from sibling tools like broadcast_live_command which likely targets multiple algorithms, but lacks explicit 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?
No guidance on when to use this tool versus alternatives such as broadcast_live_command or stop_live_algorithm. No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_optimizationC
Create an optimization with the specified parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| optimizations | No | Collection of summarized optimization objects. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond the annotation (destructiveHint=false). It does not mention idempotency, side effects, or rate limits. For a creation tool, more context is needed, such as whether it replaces an existing optimization or creates a new one.
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 sentence, which is concise, but it lacks structure and is under-specified 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 the complexity of the input schema with many required nested fields and the existence of sibling tools, the description is insufficient. It does not provide context about what an optimization is, how to configure it, or what the output will be.
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 meaning beyond the schema. The top-level parameter 'model' has no description (0% coverage), and the description does not explain the required nested fields or any constraints.
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 verb 'create' and resource 'optimization', making the basic action clear. However, it does not distinguish from sibling tools like 'update_optimization' or 'delete_optimization', and the phrase 'specified parameters' is vague.
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. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectB
Create a new project in your default organization.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| projects | No | List of projects for the authenticated user. |
| versions | No | List of LEAN versions. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=false and idempotentHint=false. Description states creation (mutation) but adds no additional behavior like required permissions or side effects. With annotations present, a 3 is appropriate as it is consistent but not enriching.
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?
Single sentence, front-loaded with verb and object, no redundancy. Optimal conciseness for a simple creation 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?
Despite having an output schema, the description lacks error conditions, uniqueness constraints (e.g., project name), or dependency information. For a creation tool, more context on required fields and their valid values 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 0%, meaning the tool description adds no parameter insights. The schema itself contains descriptions, but the description fails to explain parameter roles or constraints beyond what the schema provides.
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?
Description clearly states verb (create) and resource (project), and scopes it to default organization. It distinguishes from sibling tools like update_project or list_projects, though it could explicitly mention the ability to specify a different organization via the organizationId parameter.
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 on when to use this tool compared to alternatives like update_project or create_project_collaborator. Lacks context on prerequisites or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_project_collaboratorBIdempotent
Add a collaborator to a project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| collaborators | No | List of collaborators. |
| success | No | Indicate if the API request was successful. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=false and idempotentHint=true, which describe core behavioral traits. The description adds nothing beyond that, but does not contradict annotations. It does not disclose edge cases like duplicate collaborator handling, but the annotations carry the burden here.
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, focused sentence with no wasted words. It is front-loaded and easy to parse, effectively conveying the core action.
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 (one parameter but a nested object with four required fields) and the presence of an output schema, the description is minimally adequate. However, it lacks information on error cases, permissions, and behavior when adding an existing collaborator. For a CRUD tool with many siblings, more context would be beneficial.
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% because the tool description does not mention any parameters. The input schema includes a nested object with four required fields, each with its own description. However, the tool description fails to explain the structure or required fields, leaving the agent to rely entirely on 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 'Add a collaborator to a project' clearly states the verb (add), the resource (collaborator), and the scope (to a project). It distinguishes from sibling tools like delete_project_collaborator, update_project_collaborator, and read_project_collaborators, which handle other CRUD 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 no guidance on when to use this tool versus alternatives like update_project_collaborator for modifying permissions or delete_project_collaborator for removal. It also lacks prerequisites, such as whether the caller needs specific permissions or if the project must exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_backtestAIdempotent
Delete a backtest from a project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true, which is a behavioral trait. However, the description adds no additional behavioral context, such as what happens upon deletion (cascading effects, irreversibility) or confirmation. It merely says 'Delete', which is obvious from the name.
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 sentence, concise and to the point. No unnecessary words or 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 simple delete operation, the description covers the basic purpose. The schema and annotations fill in details. However, it does not mention the output or potential side effects, though these are less critical for delete 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?
The input schema details the required parameters (projectId and backtestId) with descriptions and examples. The tool description adds no extra meaning beyond the schema, so the baseline score of 3 is appropriate.
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 'Delete a backtest from a project' clearly states the verb (Delete), the resource (backtest), and the context (from a project). It effectively distinguishes from sibling tools like delete_project or delete_file.
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 explicit guidance on when to use, when not to use, or alternatives. The tool name implies usage for deleting a backtest, but there is no elaboration on prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_fileBIdempotent
Delete a file in a project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation idempotentHint: true is the primary behavioral clue, but the description does not add any extra context beyond stating it deletes a file. No mention of irreversibility or authorization needs.
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?
Single sentence, no redundancy. Efficiently communicates the core action.
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 the tool (delete operation with multiple parameters) and lack of output schema details, the description is too minimal. It should mention consequences (irreversible) or constraints (e.g., file must exist in project).
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?
Although the input schema has descriptions for nested properties, the top-level model parameter lacks description (0% coverage). The tool description does not compensate by explaining the parameter structure.
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 'Delete a file in a project.' uses a specific verb ('Delete') and resource ('file in a project'), clearly distinguishing it from sibling tools like read_file or update_file_contents.
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 on when to use this tool versus alternatives (e.g., patch_file or update_file_contents). Lacks context on prerequisites or when deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_objectBIdempotent
Delete the Object Store file of a specific organization and key.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint: true, but the description does not elaborate on behavioral traits like error handling or side effects. For a destructive operation, details on what happens if the file doesn't exist or permissions are missing are absent.
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 redundant words. It is front-loaded with the verb and resource, making it efficient, though it could be slightly expanded to include parameter structure.
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 delete tool with nested parameters and a sibling list tool, the description is incomplete. It lacks return value details (output schema exists but is not referenced), prerequisites, or error conditions, making it less helpful for an agent to use correctly.
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 full descriptions for the nested properties (organizationId, key), but the top-level 'model' parameter lacks a description. The tool description echoes the schema's concept without adding new information, so it meets the baseline for adequate 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 deletes an Object Store file, specifying the scope ('of a specific organization and key'). This distinguishes it from sibling delete tools like delete_file or delete_optimization.
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, nor does it mention prerequisites or idempotency. The agent is left to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_optimizationBIdempotent
Delete an optimization.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint: true, indicating idempotent behavior, but the description adds no additional context. With annotations present, the description's lack of behavioral details is acceptable, but it does not go beyond what annotations already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at three words, conveying the essential purpose with no wasted words. It is appropriately sized for a simple deletion 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?
For a simple delete operation with an output schema and idempotent annotation, the description is minimal but adequate. However, it lacks information about permanence, error handling, or authentication requirements, leaving gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the top-level parameter 'model', though the nested optimizationId has a description. The tool description does not explain how to specify the optimization ID, adding no value beyond the schema's implicit structure.
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 'Delete an optimization.' clearly states the action and resource, distinguishing it from sibling tools like update_optimization or delete_backtest. It is specific enough for an agent to understand the tool's core function.
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, such as aborting an optimization or updating it. There is no mention of prerequisites (e.g., optimization must exist) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectCIdempotent
Delete a project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the idempotentHint annotation. It does not mention whether the deletion is permanent, what associated resources are affected, or permission requirements.
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 unnecessary words. It is perfectly concise.
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 availability of an output schema and the minimal description, the tool lacks important context such as effect on associated data, required permissions, and how it relates to 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?
The input schema already provides a clear description for the only parameter (projectId). The tool description adds no additional semantic value, resulting in a baseline score of 3.
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 'Delete a project.' clearly states the verb (delete) and resource (project). It is succinct and easily understood, but does not differentiate from other delete siblings (e.g., delete_backtest) or mention scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as delete_project_collaborator or other delete operations. There is no mention of prerequisites or consequences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_project_collaboratorCIdempotent
Remove a collaborator from a project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| collaborators | No | List of collaborators. |
| success | No | Indicate if the API request was successful. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the idempotentHint annotation. It does not disclose permanence, permission requirements, or effects on the project.
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?
Single sentence, front-loaded with purpose. Very concise, though slightly under-specified.
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?
Despite having sibling tools and an output schema, the description lacks prerequisites, result details, or important behavioral notes. Incomplete for a mutation 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 description does not elaborate on parameters; schema provides decent descriptions for projectId and collaboratorId but top-level coverage is 0%. The description fails to compensate.
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 the resource (collaborator from a project). It distinguishes from siblings like create_project_collaborator and update_project_collaborator.
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 on when to use this tool vs alternatives such as update_project_collaborator or read_project_collaborators. No conditions or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enhance_error_messageBRead-only
Show additional context and suggestions for error messages.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | No | State of the code completion. |
| version | No | Version of the response. |
| payload | No | Error message suggestions. |
| payloadType | No | Type of the payload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds minimal behavioral context beyond stating it shows suggestions, but does not contradict annotations. It could better specify the nature of suggestions or limitations.
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 concise sentence with no extraneous words. It is appropriately sized for a simple tool, though it could be slightly more structured 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 the tool's moderate complexity and the existence of an output schema, the description is adequate but vague. It explains the tool's purpose but fails to cover what 'context and suggestions' entail, leaving some gaps in 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 does not mention any parameters, but the input schema provides detailed descriptions for all nested properties (language, error). With high schema coverage, the baseline is 3; the description adds no extra meaning beyond 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 tool shows additional context and suggestions for error messages, which is distinct from sibling tools like check_syntax or complete_code. The verb 'Show' and the resource 'error messages' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lacks explicit context for usage, exclusions, or mention of when not to use it, leaving the agent without comparative direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_optimization_timeCRead-only
Estimate the execution time of an optimization with the specified parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| estimate | No | |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the safe read nature is covered. The description adds no further behavioral traits (e.g., speed, permissions, estimate accuracy).
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?
Single sentence is concise but lacks detail. Could be more informative without losing brevity.
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 the input schema (nested object with many fields), the description is insufficient. It does not explain what parameters to provide or the nature of the estimate.
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 does not mention the complex 'model' parameter or its nested fields. Schema description coverage is 0% for the top-level parameter, and the description fails to compensate.
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 estimates execution time for an optimization, using a specific verb and resource. It distinguishes from sibling tools like create_optimization which actually runs optimizations.
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 on when to use this tool versus alternatives (e.g., create_optimization for actual execution). The description only explains functionality without context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liquidate_live_algorithmCIdempotent
Liquidate and stop a live algorithm.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description merely states the action without disclosing behavioral traits beyond what the annotations provide. The idempotentHint=true annotation suggests idempotency, but the description does not confirm this or discuss side effects, permissions, or data loss. For a liquidation action, more transparency on impact is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (5 words) with no wasted language. However, it is so brief that it sacrifices completeness. Conciseness alone doesn't warrant a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's apparent destructiveness and the presence of an output schema, the description is insufficient. It lacks details about return values, prerequisites, the difference from similar tools, and the exact effect on the live algorithm.
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 does not mention the lone parameter 'projectId' or provide any additional meaning beyond the input schema. Although the schema itself has a description for projectId, the tool description adds no value for parameter 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 ('Liquidate and stop') and the resource ('a live algorithm'). However, it does not distinguish this tool from the sibling 'stop_live_algorithm', which could have overlapping or different behavior. The distinction is unclear.
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_live_algorithm' or 'broadcast_live_command'. The description lacks context on prerequisites, typical scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_backtestsARead-only
List all the backtests for the project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| backtests | No | Collection of backtest summaries for a project. |
| count | No | Number of backtest summaries retrieved in the response. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, indicating a safe read operation. The description adds the scope of listing all backtests for a project but does not disclose potential limitations (e.g., pagination, filtering). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the essential purpose without extraneous information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and annotations, the description is mostly complete for a straightforward list operation. However, it could better clarify that the required input is a project ID within the 'model' object.
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 top-level parameter 'model' has no description in the schema, and the tool description does not explain its usage. Although nested properties have descriptions, the tool description adds no value; schema description coverage is effectively 0% for the main parameter.
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 'list' and resource 'backtests', and specifies the scope 'for the project'. It distinguishes from sibling CRUD tools like 'create_backtest', 'read_backtest', etc.
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 as a list operation but does not explicitly state when to use it versus alternatives, nor does it provide any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_live_algorithmsC
List all your past and current live trading deployments.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| live | No | Live algorithms that pass the filters in the request. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title; no readOnlyHint or destructiveHint is present. The description implies a read operation (list) but does not explicitly confirm safety, rate limits, or side effects. Given the lack of annotation support, the description should provide more behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that is front-loaded and contains no filler. While efficient, it could be slightly expanded to include a note about optional filters 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?
For a simple list tool with two optional filters and an output schema, the description provides the core purpose. However, it omits details like pagination behavior, ordering, or the fact that it is read-only. The presence of an output schema mitigates some return-value documentation burden, but gaps remain.
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 includes detailed descriptions for 'projectId' and 'status' parameters within the $defs, but the top-level description of the input schema is missing (coverage 0%). The tool description adds no parameter information beyond the schema. Since the schema already documents parameters well, a score of 3 is appropriate.
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 'List all your past and current live trading deployments' clearly states the verb 'list' and the resource 'live trading deployments'. It distinguishes from sibling tools like 'read_live_algorithm' which retrieves a single deployment, though it does not explicitly contrast itself with siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention when not to use it, nor does it reference sibling tools such as 'read_live_algorithm' for specific deployments or 'list_backtests' for backtest data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_object_store_filesBRead-only
List the Object Store files under a specific directory in an organization.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | No | Path to the directory in the Object Store. |
| objects | No | List of directories and files stored in the directory at the given path. If the path contains directories, this list of objects doesn't contain the children of those directories. |
| page | No | The current page number in the paginated response. |
| totalPages | No | The total number of pages in the paginated response. |
| objectStorageUsed | No | Size of all objects stored in bytes. |
| objectStorageUsedHuman | No | Size of all the objects stored in human-readable format. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description's 'List' is consistent but adds no additional behavioral context (e.g., pagination, limits, performance impact). The bar is lowered due to annotations, but no extra value beyond stating the obvious.
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?
One-sentence description is efficient and front-loaded with the key action. Could benefit from a slightly more structured format (e.g., bullet points for key details) but remains concise.
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?
With an output schema present, the description does not need to detail return values. However, it lacks context about the 'directory' scope, constraints on organizationId, and how listing behaves with nested folders. Given the number of sibling file-related tools, more context would improve selection accuracy.
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% (top-level parameter 'model' lacks description). The tool description does not explain parameters; it only mentions 'specific directory' which loosely maps to the 'path' parameter. The nested schema has descriptions, but the tool description adds no value beyond what the schema already provides.
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 (Object Store files) with a specific scope (under a directory in an organization). This distinguishes it from sibling tools like read_object_properties or upload_object.
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 on when to use this tool versus alternatives like read_object_store_file_download_url or read_object_properties. No exclusions or context about directory listing depth or permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_optimizationsARead-only
List all the optimizations for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| optimizations | No | Collection of summarized optimization objects. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates no destructive behavior. The description adds the project scope but no additional behavioral traits like pagination, sorting, or performance hints. It is adequate but minimal given the annotation.
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, concise sentence with no unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (list by project ID) and the presence of an output schema, the description is mostly complete. It lacks only minimal behavioral details, but the overall context is sufficient for a straightforward list operation.
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% description coverage for the projectId parameter. The description mentions 'for a project' but does not elaborate on the parameter structure or constraints, failing to compensate for the schema's lack of clarity.
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 'List all the optimizations for a project.' clearly states the action (list) and resource (optimizations), and it distinguishes from sibling tools like create_optimization, update_optimization, delete_optimization, and read_optimization.
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 listing optimizations by project, but does not explicitly state when to use this tool over alternatives, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsARead-only
List the details of all projects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| projects | No | List of projects for the authenticated user. |
| versions | No | List of LEAN versions. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide 'readOnlyHint: true', indicating a safe read operation. The description adds that it lists 'details of all projects', which is consistent. No additional behavioral traits (e.g., pagination, data scope limits) are disclosed, but the tool is simple and the annotations cover safety.
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 sentence, concise and front-loaded. Every word serves a purpose with no superfluous content.
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 (no parameters, read-only, output schema exists), the description provides sufficient information. It could mention that it returns project details for all projects, but it already implies that. The description is complete enough for an agent to understand the tool's function.
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 no parameters, so the description does not need to explain parameter meanings. Schema description coverage is 100% (none). The description does not add semantic value beyond the schema, but since there are no parameters, a baseline of 4 is appropriate.
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 'List the details of all projects' clearly states the verb (list) and resource (projects), making the purpose obvious. However, it does not explicitly distinguish from sibling tools like 'read_project' (which retrieves a single project) or 'list_backtests', so differentiation is implicit rather than explicit.
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. There are no exclusions, prerequisites, or context for usage. The description simply states what it does without any comparative or conditional advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lock_project_with_collaboratorsAIdempotent
Lock a project so you can edit it.
This is necessary when the project has collaborators or when an LLM is editing files on your behalf via our MCP Server.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the tool locks the project, which is a behavioral trait. Annotations provide idempotentHint=true, which is consistent. However, the description does not detail locking semantics (e.g., concurrency, unlocking) or side effects. The addition is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the main action and then add necessary context. Every sentence earns its place with zero waste.
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?
The description covers the purpose and usage context well, but lacks parameter usage hints (e.g., typical value for codeSourceId) and details about locking behavior. Given the output schema exists, return values are covered, but for a tool with one parameter object, more guidance would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no information about the parameters beyond what the input schema provides. The schema includes descriptions for 'projectId' and 'codeSourceId', but the tool description does not elaborate or give usage hints. With 0% schema description coverage on the main parameter, the description should compensate.
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 (lock), object (project), and purpose (to edit). It also provides context about when it's necessary (collaborators or LLM editing), distinguishing it from sibling tools like update_project or read_project.
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 explicitly mentions the conditions when this tool should be used (project has collaborators or LLM editing). This provides clear context, though it does not explicitly name alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_fileAIdempotent
Apply a patch (unified diff) to a file in a project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial detail about the patch format requirements and matching criteria, which is behavioral. Annotations already indicate idempotentHint=true, and the description doesn't conflict. However, it lacks information on failure modes (e.g., what happens if patch doesn't match exactly) or authorization needs.
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 structured with a clear lead sentence followed by detailed format rules and recommended approach. It uses bullet points and examples effectively, though it is somewhat lengthy. Every sentence contributes value for this complex operation.
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 that there is an output schema (not shown), the description does not need to explain return values. However, it fails to address error scenarios (e.g., patch application failure) or success criteria. For a complex tool with critical format requirements, this is a significant gap.
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 already provides detailed descriptions for each parameter, especially 'patch' with format requirements. The tool description does not add new semantics beyond the schema, so it meets the baseline for high 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 verb 'apply' and the resource 'a patch (unified diff) to a file in a project'. It distinguishes itself from sibling tools like update_file_contents (which likely replaces entire file) and create_file, as patching is a specific 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 includes a 'Recommended approach' with steps (read current file first, use 3+ lines context) but does not explicitly state when to use this tool versus alternatives like update_file_contents. No when-not-to-use or exclusion guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_accountARead-only
Read the organization account status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| organizationId | No | The organization Id. |
| creditBalance | No | The current account balance. |
| card | No | The current organizations credit card. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral details beyond what annotations already provide (readOnlyHint, openWorldHint). It does not contradict annotations but offers no additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and resource, with no unnecessary words.
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 simple zero-parameter tool with an output schema, the description is sufficient to inform the agent that it reads account status.
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?
There are no parameters, and schema coverage is 100%. The description does not need to add parameter meaning; baseline of 4 is appropriate.
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 'Read' and the resource 'organization account status', making the tool's purpose unambiguous and distinct from siblings like read_backtest or read_project.
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?
Usage is implied by the name and description; no explicit when-not or alternatives are provided, but the simplicity and uniqueness of the tool make it clear when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_backtestBRead-only
Read the results of a backtest.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| backtest | No | Details on the result of the backtest. |
| debugging | No | Indicates if the backtest is run under debugging mode. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so description adds no further behavioral insight. No contradiction, but no extra context on what 'results' includes or if there are any 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?
Extremely concise (one sentence). Front-loaded verb. However, the brevity sacrifices useful details that could be included without much overhead.
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?
The description omits what 'results' entails (e.g., fields, format). An output schema exists, so the structure is defined elsewhere, but context for typical use is lacking.
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?
Input schema has detailed parameter descriptions for projectId and backtestId, but the tool description ignores them entirely. Schema description coverage is effectively 0% (though schema itself has descriptions), so description fails to add 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?
Description clearly states verb 'Read' and resource 'results of a backtest'. It distinguishes from create/delete/update but not from other read siblings like read_backtest_chart or read_backtest_orders.
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 on when to use this tool versus alternatives such as read_backtest_chart. No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_backtest_chartCRead-only
Read a chart from a backtest.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| chart | No | Chart object requested. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, aligning with 'Read'. However, the description adds no behavioral details (e.g., output format, data point limits). It is minimally informative beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence), which is concise but at the cost of completeness. It lacks necessary detail to be appropriately informative.
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 6 required parameters and an output schema, the description is too sparse. It does not mention what the chart output looks like or any constraints, making it inadequate for an AI agent to fully understand usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the main input schema, and the description does not explain parameters despite 6 required ones. The nested schema definitions provide descriptions, but the tool description itself adds no meaning, failing to compensate for low 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 verb 'Read' and the resource 'a chart from a backtest', making the tool's function unambiguous. Among siblings like read_backtest_insights and read_live_chart, it is distinct in purpose.
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 read_live_chart. The description lacks context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_backtest_insightsCRead-only
Read out the insights of a backtest.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| insights | No | Collection of insights. |
| length | No | Total number of returned insights. |
| success | No | Indicate if the API request was successful. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, indicating a safe read operation. The description adds no additional behavioral context, such as pagination constraints or ordering, which are present in the schema but not inferred.
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 concise sentence that front-loads the purpose with no wasted words. It is appropriately sized but could benefit from slight 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 four parameters and an output schema, the description is too sparse. It fails to mention important constraints like range limits or return format, relying entirely on schema and annotations.
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 schema description coverage at 0%, the description should compensate but does not mention any parameters. The schema provides detailed parameter information, but the tool description adds no value beyond that.
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 reads backtest insights, using a specific verb and resource. However, it does not differentiate from sibling tools like read_backtest or read_live_insights, which could cause 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 provides no guidance on when to use this tool versus alternatives, such as read_live_insights for live algorithms. It simply states the action 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.
read_backtest_ordersBRead-only
Read out the orders of a backtest.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| orders | No | |
| length | No | Total number of returned orders |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations indicate readOnlyHint=true, the description does not disclose any behavioral traits like pagination limits, ordering, or error conditions. It adds nothing beyond the annotation.
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 conveys the essential purpose. It is front-loaded but could include a bit more context without becoming 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?
The description is adequate for a simple read operation with an output schema. However, it omits important constraints (e.g., end - start < 100) and does not mention the response format, which the output schema might cover.
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 high description coverage with each parameter documented (start, end, projectId, backtestId). The tool description adds no extra parameter semantics, so the baseline score of 3 is appropriate.
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 'read' and the resource 'orders of a backtest', making the tool's purpose unambiguous. It also distinguishes from sibling tools like 'read_backtest' and 'read_live_orders'.
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 'read_live_orders' or 'read_backtest'. It lacks context for typical use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_compileBRead-only
Read a compile packet job result.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| compileId | No | Compile Id for a successful build. |
| state | No | The current state of the compile job. |
| logs | No | Logs of the compilation request. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, and the description explicitly uses 'Read', which is consistent. However, the description adds no additional behavioral traits beyond what annotations already convey, such as whether the operation is fast or error-prone.
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 sentence with no filler. It is appropriately concise, though it could include a bit more context without becoming 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 the tool's simplicity and the presence of an output schema, the description is minimally adequate but lacks contextual completeness regarding prerequisites (e.g., needing create_compile first) and relationship to 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 0% for the top-level parameter, but nested properties have descriptions. The tool description does not add semantic meaning to parameters; it only states the overall purpose. The schema descriptions for projectId and compileId are more informative than the tool description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a compile packet job result, using a specific verb and resource. It distinguishes from sibling tools like create_compile (write) and other read tools by focusing on compile results.
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 does not mention that a compile must have been created first or that compileId comes from create_compile. The schema provides some hints, but the description itself lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileARead-only
Read a file from a project, or all files in the project if no file name is provided.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| files | No | List of project file information. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint: true. The description adds valuable behavioral context by specifying that omitting the file name reads all files in the project. This goes beyond the annotation and helps the agent understand 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 extremely concise, comprising two short sentences that convey the essential information without any wasted words. It is front-loaded with the primary action.
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, the presence of an output schema, and annotations, the description is reasonably complete. It explains the core behavior. However, it could be slightly improved by mentioning that the tool returns file content and possibly indicating what happens if the file doesn't exist. Still, it is largely adequate.
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 itself contains descriptions for projectId, name, and codeSourceId within a nested object, so the schema provides parameter meaning. The description adds no additional parameter semantics beyond what the schema offers. With 0% top-level schema description coverage, the description does not compensate.
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 'Read' and the resource 'file from a project', and clarifies the behavior when no file name is provided (reads all files). This distinguishes it from sibling read_* tools like read_backtest or read_live_algorithm.
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 does not provide explicit guidance on when to use this tool versus alternatives or when not to use it. Usage is implied from the tool name and context, but no exclusions or alternative tool mentions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_latest_mcp_server_versionBRead-only
Returns the latest version of the QC MCP Server released.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not add behavioral context beyond the annotation's 'readOnlyHint'. It does not describe potential side effects, network calls, or data freshness guarantees. With annotations already declaring readOnlyHint=true, the description adds minimal value here.
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 sentence with no unnecessary words. It is front-loaded with the purpose and is optimally concise.
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, an output schema exists, and annotations cover readOnly behavior, the description is sufficiently complete for an agent to understand what the tool does.
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 no parameters, and the schema provides 100% coverage of the parameters (none). Therefore, the description does not need to add parameter details, and a baseline score of 4 is appropriate.
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 returns the latest version of the QC MCP Server, with a specific verb ('returns') and resource ('latest version'). However, it does not explicitly differentiate from the sibling tool 'read_mcp_server_version', which might imply a different version retrieval mechanism.
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 'read_mcp_server_version'. There is no mention of when not to use it or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_lean_versionsARead-only
Returns a list of LEAN versions with basic information for each version.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| versions | No | List of LEAN versions with their basic descriptions. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is clear. The description adds minimal behavioral context beyond stating it returns basic information. No contradictions.
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 superfluous words. It is front-loaded and concise.
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 parameterless read-only tool with an output schema, the description sufficiently conveys the purpose. No additional context is needed for selection or invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, and schema coverage is 100%. The description does not need to add param details. 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 tool returns a list of LEAN versions with basic information. The verb 'Returns' and resource 'list of LEAN versions' are specific. While it does not explicitly distinguish from siblings like read_mcp_server_version, the name and context imply uniqueness.
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. No context about prerequisites or when not to use it is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_live_algorithmC
Read details of a live algorithm.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | Error message. |
| deployId | No | Unique live algorithm deployment identifier (similar to a backtest id). |
| status | No | State of the live deployment. |
| cloneId | No | The snapshot project Id for cloning the live development's source code. |
| launched | No | Datetime the algorithm was launched in UTC. |
| stopped | No | Datetime the algorithm was stopped in UTC, null if its still running. |
| brokerage | No | Brokerage |
| securityTypes | No | Security types detected in the algorithm. |
| datacenter | No | Name of the datacenter where the algorithm is physically located. |
| isPublicStreaming | No | Flag to indicate if public streaming is enabled. |
| public | No | Flag to indicate if the algorithm is public. |
| files | No | Files present in the project that contains the algorithm. |
| runtimeStatistics | No | Runtime banner/updating statistics in the title banner of the live algorithm GUI. It can be empty if the algorithm is not running. |
| charts | No | Chart updates for the live algorithm since the last result packet. |
| projectName | No | Name of the project the live algorithm is in. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond the basic read operation. Annotations are minimal (only a title) and do not include readOnlyHint or other safety cues. The tool is likely non-destructive, but the description fails to confirm this or mention any other behavioral aspects like authentication needs or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence, which is generally positive. However, it is under-specified to the point of being unhelpful. Conciseness should not sacrifice completeness, and here the brevity results in missing essential details.
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 (one required parameter) and the presence of an output schema (reducing need for return value explanation), the description should provide context about what 'details' includes, error conditions, or prerequisites. It fails to do so, leaving the tool's behavior underdefined 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?
The input schema has 0% description coverage, and the description adds no information about the parameters. The only parameter ('model') is an object containing 'projectId', but the description does not explain its role, format, or how to use it. This leaves the agent without critical context for correct invocation.
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 ('Read details') and the resource ('live algorithm'), matching the tool name. However, it does not differentiate this tool from sibling read tools like 'read_live_chart' or 'read_live_orders', which also read aspects of live algorithms. The purpose is specific enough for the agent to understand the general function but lacks contrast with 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 other read tools or alternatives. There is no mention of prerequisites, typical use cases, or exclusions. The agent receives no contextual cues to decide between this and similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_live_chartC
Read a chart from a live algorithm.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| chart | No | Chart object requested. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (title only), so the description carries the full burden. It does not disclose any behavioral traits, such as what happens if the algorithm is not live or if the chart is empty, nor does it mention rate limits or other 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 concise (one sentence) and front-loaded, but it lacks structure and omits key details that would aid an AI agent. It is not overly verbose, but the brevity sacrifices 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 complexity (nested parameter, no annotations, but has output schema), the description is insufficient. It does not explain prerequisites or behavior, though the output schema covers return values.
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 contains no information about parameters, despite a schema coverage of 0%. All parameter descriptions are in the schema, but the tool description fails to add any extra meaning or context beyond what the schema provides.
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 (read a chart) and the resource (live algorithm). It distinguishes from sibling tools like read_backtest_chart by specifying 'live', but does not explicitly differentiate from other read 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?
No guidance is provided on when to use this tool versus alternatives, such as when another chart reading method would be more appropriate. No prerequisites or context are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_live_insightsB
Read out the insights of a live algorithm.
The snapshot updates about every 10 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| insights | No | Collection of insights. |
| length | No | Total number of returned insights |
| success | No | Indicate if the API request was successful. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no readOnlyHint or destructiveHint annotations, the description carries the burden. It discloses the update frequency (every 10 minutes) which is useful, but does not explicitly state that the operation is read-only or safe. No contradictions.
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 consists of two short sentences, front-loading the purpose. No unnecessary words; every sentence adds value. Highly concise.
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 there is an output schema, return values are not required. However, the description lacks context about prerequisites (e.g., project must have a live algorithm), common usage patterns, or handling of the required start parameter. Insufficient for a tool with nested parameters.
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% (likely due to $ref), and the description adds no parameter information. While the nested schema has descriptions for start, end, and projectId, the tool description itself does not elaborate on their meaning or usage beyond what is in 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 'Read out the insights of a live algorithm,' specifying the verb and resource. It distinguishes from sibling tools like 'read_live_algorithm' or 'read_backtest_insights' by emphasizing 'live' and 'insights,' but does not explicitly differentiate or mention 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 a contextual hint about snapshot freshness ('updates about every 10 minutes') but offers no explicit guidance on when to use this tool versus siblings, nor any conditions or exclusions. Missing alternatives or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_live_logsA
Get the logs of a live algorithm.
The snapshot updates about every 5 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| logs | No | List of logs from the live algorithm. |
| length | No | Total amount of rows in the logs across all live deployments for this project. |
| deploymentOffset | No | Number of log rows before the given deployment (the `algorithmId` in the request). |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adds one behavioral trait: snapshot updates every 5 minutes. However, it omits other important details like authorization requirements or data staleness implications.
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?
Two efficient sentences conveying the purpose and update frequency with no redundancy. Every sentence adds value.
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 and the presence of an output schema, the description adequately covers purpose and an important timing behavior. Minor missing context about how to ensure fresh logs, but overall sufficient.
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 already provides thorough descriptions for all parameters (projectId, algorithmId, startLine, endLine, format). The description adds no further parameter guidance, so baseline 3 is appropriate.
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?
Description clearly states 'Get the logs of a live algorithm,' which is a specific verb+resource. It distinguishes from sibling tools that deal with other aspects of live algorithms.
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 when logs are needed but provides no explicit guidance on when to use this tool versus alternatives like read_live_algorithm or read_live_chart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_live_ordersA
Read out the orders of a live algorithm.
The snapshot updates about every 10 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| orders | No | Collection of orders. |
| length | No | Total number of returned orders |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the behavioral note that the snapshot updates every 10 minutes. However, no annotations are provided for readOnly or destructive hints, so the description carries the burden but does not fully disclose permissions or limitations.
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?
Two concise sentences, front-loaded with the purpose. No unnecessary words.
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?
The description covers the core purpose and a key behavioral trait (update frequency). While the output schema exists and presumably defines the return structure, the description could briefly mention that it returns order data. Still, it is complete enough for a simple read 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 input schema already provides descriptions for all parameters (start, end, projectId), so the description adds no additional meaning beyond the schema. Baseline 3 is appropriate.
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 'read' and the resource 'orders of a live algorithm', distinguishing it from sibling tools like read_live_algorithm or read_backtest_orders.
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 on when to use this tool vs alternatives such as read_live_insights or read_live_portfolio. The description assumes the agent knows the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_live_portfolioB
Read out the portfolio state of a live algorithm.
The snapshot updates about every 10 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| portfolio | No | |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations (except title), the description must carry the burden. It mentions the snapshot updates every 10 minutes, a useful behavioral detail. However, it does not disclose read-only nature, permissions, or side effects, leaving 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?
Two concise sentences: first states purpose, second adds behavioral context. No redundancy, perfectly front-loaded for quick understanding.
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 simple tool with one parameter and an output schema, the description covers purpose and a key behavioral trait. However, it lacks usage context, parameter details, and description of the output, leaving the agent somewhat in the dark.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter information beyond the schema, which has a description for projectId. Given 0% schema coverage reported, the description should compensate but fails to mention the required projectId or model parameter.
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 reads portfolio state of a live algorithm, which is specific and distinguishes it from siblings like read_live_algorithm. However, it does not explicitly contrast with alternatives, so it falls short of 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 explicit guidance on when to use this tool versus siblings or alternatives. It only implies usage by defining the purpose, but no when-not or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_mcp_server_versionARead-only
Returns the version of the QC MCP Server that's running.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, indicating a safe read operation. The description adds that the tool returns the version, going beyond annotations. It does not conflict with annotations and is consistent.
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 sentence with no waste, front-loading the key information. Every word is necessary and contributes to clarity.
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 an output schema exists, the description is fully sufficient. It states the return value, and no additional details are required for this 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 input schema has no parameters, and schema description coverage is 100%. The description does not need to add parameter details, and the baseline of 4 for 0 parameters is appropriate.
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 'returns' and the resource 'version of the QC MCP Server that's running'. It is specific and distinct from sibling tools like 'read_latest_mcp_server_version', providing no 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 the tool is for retrieving the server version, but it does not provide explicit guidance on when to use it versus alternatives such as 'read_latest_mcp_server_version'. No when-not or context exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_object_propertiesARead-only
Get Object Store properties of a specific organization and key.
It doesn't work if the key is a directory in the Object Store.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| metadata | No | Object Store properties. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds a behavioral constraint (fails on directories) beyond annotations, but lacks details on return format or error handling. The presence of an output schema reduces the need for return value explanation, but the description could better contextualize what 'properties' means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no extraneous text. The first sentence clearly states the action, and the second provides a critical limitation. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with a clear output schema and annotations, the description covers the core behavior and a key limitation. It does not explain what 'properties' includes, but given the output schema likely details that, this is acceptable. The description is largely complete for its simplicity.
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 includes descriptions for both parameters (organizationId and key), achieving high coverage. The description does not add any additional semantic meaning or usage hints beyond what the schema provides, so a baseline score of 3 is appropriate.
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 it retrieves Object Store properties for a given organization and key, using a specific verb ('Get') and resource. It distinguishes from siblings like 'list_object_store_files' by focusing on a single key, but doesn't explicitly contrast with other read operations, so a slight deduction applies.
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 one explicit usage restriction: the tool fails for directory keys. However, it does not specify when to use this tool over alternatives like 'list_object_store_files' or 'read_object_store_file_download_url', nor does it mention prerequisites or success conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_object_store_file_download_urlBRead-only
Get the URL for downloading files from the Object Store.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| jobId | No | Id of the job, which you can use to request a download URL. |
| url | No | The URL to download the object. This can also be null. To download the object, paste the full URL (including the URL parameters) into a browser. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description is consistent. However, no additional behavioral context (e.g., URL expiration, auth requirements) is added, so it meets the baseline without adding value.
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, front-loaded sentence with no wasted words, perfectly concise for its purpose.
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 a nested parameter with two required fields and an output schema, the description lacks details about input requirements and relationships to sibling tools like read_object_store_file_job_id, making it incomplete.
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%, meaning the description does not mention any parameters. The schema itself describes organizationId and jobId, but the description adds no meaning to help the agent understand what to provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'URL for downloading files from the Object Store', distinguishing it from sibling tools like read_object_store_file_job_id.
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 on when to use this tool, prerequisites (e.g., need a job ID), or alternatives are provided. Sibling tools exist but no exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_object_store_file_job_idC
Create a job to download files from the Object Store and then read the job Id.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| jobId | No | Id of the job, which you can use to request a download URL. |
| url | No | The URL to download the object. This can also be null. To download the object, paste the full URL (including the URL parameters) into a browser. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses a creation action (mutation) beyond the destructiveHint: false annotation, but does not mention side effects, permissions, or asynchronous 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 a single concise sentence, but it combines two actions awkwardly and could be clearer.
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?
The description lacks detail about the output (even though an output schema exists) and the relationship between the nested input parameter and the job creation/reading process.
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 provides no information about the parameters, and despite the schema having descriptions, the context indicates 0% schema description coverage, so the description should compensate but does not.
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 it creates a job and reads its ID, but it conflates creation (write) with reading (read) and does not distinguish from sibling tools like 'read_object_store_file_download_url'.
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, nor are there any prerequisites or context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_optimizationCRead-only
Read an optimization.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| optimization | No | Optimization object requested to read. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description merely repeats 'Read' with no additional behavioral context beyond the annotation readOnlyHint=true. It adds no insight into permissions, side effects, or response format.
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?
Extremely concise at one sentence. It is not verbose, but the conciseness comes at the cost of missing useful information. Still, it is well-structured and front-loaded.
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 simplicity of a read operation and the presence of an output schema, the description is minimally adequate. However, it could mention the required optimizationId or hint at the tool's purpose relative to siblings.
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?
Description does not mention the single required parameter (optimizationId) and provides no parameter guidance. Schema coverage is 0%, so the description fails to compensate for missing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Read an optimization' which is a clear verb-resource pair. However, it does not differentiate itself from sibling tools like read_backtest or read_project, which have similar structure.
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 on when to use this tool versus alternatives such as list_optimizations or update_optimization. The description fails to provide any 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.
read_projectBRead-only
List the details of a project or a set of recent projects.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| projects | No | List of projects for the authenticated user. |
| versions | No | List of LEAN versions. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so no contradiction. The description adds no behavioral context beyond 'list details' and 'recent projects'. It does not explain pagination or the relationship between parameters (e.g., id vs start/end). The description adds minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It is front-loaded with the core action. However, it could be slightly more informative without becoming 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?
The description does not mention output format, the relationship between projectId and start/end parameters, or that the tool can fetch a set of projects. Given an output schema exists but is not shown, the description is incomplete for a read tool with multiple modes.
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% (description does not mention parameters), but the input schema itself provides clear descriptions for projectId, start, and end. The tool description fails to add any meaning beyond the schema, which given low coverage should compensate but does not.
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 lists project details, distinguishing it from siblings like 'list_projects' (likely project summaries) and 'read_project_collaborators'. The verb 'list' and resource 'project details' are specific.
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 reading a single project by ID or a range of recent projects, but it does not explicitly state when to use this versus alternatives like 'list_projects' or provide exclusions. No explicit guidance on when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_project_collaboratorsARead-only
List all collaborators on a project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| collaborators | No | List of collaborators on the project. |
| userLiveControl | No | Indicate if the project owner has the right to deploy and stop live algorithms. |
| userPermissions | No | Permissions of the project owner |
| success | No | Indicate if the API request was successful. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the readOnlyHint annotation, and no additional behavioral details are required for this simple read operation. It adds no contradiction.
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?
A single, front-loaded sentence with no unnecessary words or information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, readOnlyHint annotation, output schema), the description fully covers the necessary context for an agent to use it correctly.
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 does not mention the parameter, but the input schema already describes projectId with an example, so the schema carries the semantic weight. Baseline score of 3 is appropriate.
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 'List all collaborators on a project' uses a specific verb (list) and resource (collaborators on a project), clearly distinguishing it from siblings like create_project_collaborator and delete_project_collaborator.
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 vs alternatives such as read_project or list_projects, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_project_nodesARead-only
Read the available and selected nodes of a project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| nodes | No | List of project nodes. |
| autoSelectNode | No | Indicate if the best-performing node is automatically selected. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal context beyond the readOnlyHint annotation, simply stating the read nature. It does not disclose complexities like what 'available and selected' means.
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, front-loaded sentence with no superfluous words, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input and presence of an output schema, the description is mostly complete. It could clarify 'available and selected nodes' but is sufficient.
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 does not mention parameters, but the input schema already describes the single 'projectId' parameter. Baseline is 3 due to 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 'Read the available and selected nodes of a project' uses a specific verb and resource, clearly distinguishing the tool from sibling tools like 'update_project_nodes'.
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, such as 'read_project' or 'update_project_nodes'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_quantconnectBRead-only
Search for content in QuantConnect.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | No | State of the search. |
| version | No | Version of the response. |
| retrivals | No | List of search results. |
| messageId | No | Id of the message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description does not add any behavioral context beyond that, such as which content sources are searched or if there are rate limits. The schema does provide type options (Stubs, Forum, Docs, Examples), but the description omits this.
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. It is concise and to the point, but could benefit from a little more structure or detail about the search 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 the tool's complexity (search across multiple content types with language and criteria arrays) and the presence of an output schema, the description is too minimal. It does not explain the output format, supported types, or how to construct a valid request beyond what the schema provides.
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 only one top-level parameter (model) with no description, but the nested properties (input, type, count, language) have descriptions and examples. The tool description does not add any additional meaning beyond what the schema provides, so a baseline 3 is appropriate.
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 'Search for content in QuantConnect' clearly states the action (search) and resource (QuantConnect content). It distinguishes from siblings because no other tool is named as a search tool, and the title from annotations reinforces the purpose.
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 on when to use this tool over alternatives. There is no mention of limitations, prerequisites, or when not to use it. The agent has to infer based on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_live_algorithmBIdempotent
Stop a live algorithm.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true, indicating safety to retry. The description simply states 'Stop', which implies termination but adds no further behavioral context (e.g., side effects, state changes). With annotations partially covering safety, a score of 3 is appropriate.
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 sentence with no unnecessary words. It is concise and front-loaded, though very brief.
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?
The description is minimal but covers the core action. Given the tool has an output schema and annotations, the description could be slightly more complete (e.g., indicating idempotency). It adequately informs for a simple stop action.
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 does not explain the required parameter 'projectId' beyond what the schema provides. Schema description coverage is 0% at the top level, though the nested schema includes a description for projectId. The tool description adds no additional semantic 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 'Stop a live algorithm' clearly states the action (stop) and the resource (live algorithm). However, it does not differentiate from the sibling tool 'liquidate_live_algorithm', which has a related purpose.
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 'liquidate_live_algorithm', or any prerequisites or context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_backtestAIdempotent
Update the name or note of a backtest.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint: true. Description states 'update', which is consistent and implies mutation, but adds no further behavioral context (e.g., permissions, side effects, or confirmation of idempotency).
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?
Single sentence, 7 words, with no extraneous information. Every word contributes to the purpose.
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?
Output schema exists (not shown), so return value explanation is unnecessary. However, the description omits prerequisites (e.g., needing a valid projectId and backtestId) and error behavior (e.g., if backtest not found). Adequate for a simple update but lacks completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (top-level 'model' parameter lacks description), but the description clarifies that only 'name' and 'note' can be updated, which adds meaning beyond the nested field descriptions. However, it does not reiterate that projectId and backtestId are required.
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 'Update the name or note of a backtest' uses a specific verb 'Update' and resource 'backtest', clearly distinguishing it from siblings like create_backtest, delete_backtest, read_backtest, and list_backtests.
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 on when to use this tool versus alternatives such as create_backtest or read_backtest, nor any conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_code_to_pep8CRead-only
Update Python code to follow PEP8 style.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | No | State of PEP8 conversion. |
| version | No | Version of the response. |
| payload | No | A dictionary where the key is the file name and the value is the PEP8 converted code of that file. |
| payloadType | No | Type of the payload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Update Python code' which implies write/modify, but annotations list readOnlyHint: true, creating a contradiction. No additional behavioral traits disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a single sentence, but it sacrifices essential details for brevity. Could be expanded without becoming 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 the tool accepts nested objects and has an output schema, the description is insufficient. No information about return values, side effects, or prerequisites, making it incomplete for effective 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?
Description adds no parameter meaning beyond the schema. Schema coverage is 0% with the top-level parameter 'model' lacking a description; nested objects have descriptions but not the required parameter. The description does not compensate.
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 updates Python code to PEP8 style, specifying verb and resource. However, it does not differentiate from sibling tools like check_syntax or complete_code, which could also relate to code quality.
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 on when to use this tool versus alternatives (e.g., check_syntax, complete_code). The description lacks explicit usage context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_file_contentsCIdempotent
Update the contents of a file.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| files | No | List of project file information. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description only says 'update contents', which is consistent with idempotentHint but offers no additional behavioral details (e.g., overwrites entire file, permissions needed). Annotations provide minimal context, so description should carry burden but fails.
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?
Extremely concise (one sentence), which is good but at the cost of missing useful content. No wasted words.
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 (nested schema) and many siblings, the description is insufficient. No output schema, no result details, and no guidance on when to choose this 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?
Schema description coverage is low (0% top-level), and the description adds no meaning beyond what the nested schema already provides. Lacks guidance on parameter usage or formatting.
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 (update) and resource (contents of a file), distinguishing it from siblings like 'create_file' or 'patch_file'. However, it lacks specifics like file type or scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., patch_file for partial updates, update_file_name for rename). Missing prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_file_nameBIdempotent
Update the name of a file.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'Update' which implies mutation, but annotations already provide idempotency hint. No additional behavioral details like error conditions or side effects are disclosed beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no unnecessary words, making it highly concise 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?
While the description is minimal, the output schema exists and the schema details are sufficient for a simple rename. However, missing context about prerequisites (e.g., file existence) or constraints (e.g., name uniqueness) reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The top-level schema has 0% description coverage, but the nested $defs fully describe all parameters. The description adds no extra value, but the schema compensates sufficiently.
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 'Update' and the resource 'file name', distinguishing it from sibling tools like 'update_file_contents' and 'delete_file'.
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 on when to use this tool vs alternatives like 'patch_file' or 'update_file_contents'. No conditions or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_optimizationBIdempotent
Update the name of an optimization.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations include idempotentHint:true, which already indicates idempotency. The description adds no additional behavioral context beyond stating the update action, which is consistent. With annotations present, the bar is lower, and the description is adequate but not enriching.
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 is perfectly concise and front-loaded with 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?
The description adequately covers the tool's function for a simple field update. It does not mention output or side effects, but given the presence of an output schema and the straightforward nature, it is mostly complete. Slight improvement possible by noting idempotency or response details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has nested property descriptions for optimizationId and name, so parameters are explained. The tool description does not add any parameter semantics beyond the schema. Given the schema coverage is effectively high (via nested properties), a baseline of 3 is appropriate.
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 'Update the name of an optimization' clearly specifies the action (update) and resource (optimization name). However, it does not differentiate from sibling tools like update_backtest or create_optimization, relying on the tool name for disambiguation.
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 (e.g., create_optimization, delete_optimization). No when-not-to-use or prerequisite information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectAIdempotent
Update a project's name or description.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description only indicates the update operation. Annotations already provide idempotentHint=true, so the description adds minimal behavioral context beyond that. No disclosure of side effects or authorization requirements.
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?
Single sentence that is front-loaded and concise. Every word is necessary.
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 and the presence of output schema and annotations, the description covers the essential purpose. However, it could mention that other fields are not updated.
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?
Input schema has high coverage with descriptions for each parameter (projectId, name, description). The tool description adds little beyond 'name or description', which is already clear 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?
Description clearly states the tool updates a project's name or description. It differentiates from other update tools by specifying the resource (project) but does not explicitly distinguish from siblings like update_backtest.
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 explicit guidance on when to use or when not to use this tool. Usage is implied by the resource name, but no alternatives or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_collaboratorBIdempotent
Update collaborator information in a project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| collaborators | No | List of collaborators. |
| success | No | Indicate if the API request was successful. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation indicates idempotentHint is true, suggesting repeated calls have the same effect. The description does not add any behavioral context beyond this, such as permissions required or side effects. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that efficiently communicates the tool's purpose without unnecessary words.
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 that the tool updates collaborator permissions, the description lacks context about what kinds of updates are possible (e.g., modifying liveControl and write rights). The presence of an output schema and annotations does not fully compensate for this gap.
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 description does not describe any parameters, but the input schema provides detailed descriptions for each nested field (projectId, collaboratorUserId, liveControl, write). The description adds no extra meaning beyond 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 verb 'update' and the resource 'collaborator information in a project', distinguishing it from create and delete sibling tools. However, it does not specify which fields can be updated, leaving some 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?
No guidance is provided on when to use this tool vs alternatives like create_project_collaborator or delete_project_collaborator. There is no mention of prerequisites (e.g., collaborator must already exist) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_nodesCIdempotent
Update the active state of the given nodes to true.
If you don't provide any nodes, all the nodes become inactive
and autoSelectNode is true.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| nodes | No | List of project nodes. |
| autoSelectNode | No | Indicate if the best-performing node is automatically selected. |
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description contradicts itself: updating to 'true' vs 'inactive'. Annotations show destructiveHint=false and idempotentHint=true, which are consistent with a state update, but the self-contradiction reduces transparency. No mention of return values or 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?
Two sentences, fairly concise, but the contradictory statement makes the second sentence confusing and 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?
Lacks return value explanation despite having an output schema. Missing prerequisites, permissions, or error conditions. The complexity of conditional logic is not fully addressed.
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?
Input schema has one parameter 'model' with nested fields; the 'nodes' field has a clear description covering omission behavior. The tool description adds little beyond the schema, and schema description coverage is 0% for the top-level parameter.
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 'Update the active state of the given nodes to true', which specifies a verb and resource, but the following sentence introduces contradictory behavior ('all the nodes become inactive') that undermines clarity. It does not distinguish from siblings like read_project_nodes or update_project.
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 on when to use this tool versus other update or node-related tools. No exclusions or context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_objectCIdempotent
Upload files to the Object Store.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| errors | No | List of errors with the API call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true, but description adds no behavioral context beyond the action. It does not disclose file size limits, permissions needed, or other behavioral traits.
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?
Single sentence is concise but underutilized. Could include useful context like the required fields without sacrificing brevity.
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?
Despite having output schema and parameter schema, the description is too sparse. It does not explain the binary data format, uniqueness of key, or return value expectations.
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 descriptions cover all parameters (organizationId, key, objectData) with examples. Since schema coverage is 100%, baseline is 3. Description adds no extra meaning.
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 'Upload files to the Object Store' clearly states the action and resource. It distinguishes from sibling tools like delete_object and list_object_store_files by specifying the upload function.
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 on when to use this tool versus alternatives. The description does not mention prerequisites, when to use upload vs other object store operations, or any conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes with clear resource-action pairs (e.g., create_backtest vs. read_backtest), but some overlap exists in file operations (create_file, update_file_contents, patch_file) and object store functions (upload_object, read_object_store_file_download_url, delete_object) that could cause minor confusion. The descriptions generally help differentiate them, though the high tool count increases complexity.
Tool names follow a highly consistent verb_noun pattern throughout (e.g., create_backtest, list_projects, read_file, update_optimization). All tools use snake_case with clear action verbs, making the naming predictable and easy to understand. No deviations or mixed conventions are present.
With 64 tools, the count is excessive for a single server, likely overwhelming for agents and indicating poor scoping. While QuantConnect's domain is broad (algorithmic trading platform), many tools could be consolidated (e.g., multiple backtest/live read operations) or split into separate servers for better manageability.
The tool set provides comprehensive coverage for QuantConnect's domain, including full CRUD/lifecycle operations for projects, backtests, optimizations, live algorithms, files, and object storage. It supports development, testing, deployment, and monitoring workflows with no obvious gaps, ensuring agents can handle end-to-end tasks effectively.
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
Alpaca MCP — real-time US stock market data via the Alpaca Market Data API
The official MCP Server for the Mux API
MCP Server for an Agent Task Marketplace
Related MCP Servers
- MIT
- AlicenseBqualityDmaintenanceHigh-performance CCXT MCP server for cryptocurrency exchange integration2478145MIT
- GoMIT
- MIT
Appeared in Searches
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/QuantConnect/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server