QuantConnect MCP Server
Provides comprehensive tools for algorithmic trading development including project management, backtesting, optimization, live trading deployment, file management, and strategy development through the QuantConnect cloud platform API.
Click on "Deploy 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., "@QuantConnect MCP Servercreate a backtest for my momentum strategy on SPY"
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.
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.
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>",
"--name",
"quantconnect-mcp-server",
"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: Alpaca MCP Server
Available Tools (60)
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. |
| 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. |
| 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. |
| 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 initialization 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. |
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.
Parameter | Type | Description |
|
| Id of the project. If not provided the API will return a details list of all projects. |
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: 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: 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 |
|
| Status of the live algorithms to include in the response. |
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. Required if end > 1,000. |
|
| Last index of the orders to be fetched. Note that end - start must be less than 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.
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"}).
Force redeploy Thu Aug 14 23:50:18 PDT 2025
Available Tools
63 toolsabort_optimizationCIdempotent
Abort an optimization.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | List of errors with the API call. |
| 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 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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| authorization | No | Authentication information from the data provider or brokerage, including the access token or refresh token. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
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. |
| payload | No | Information about the backtest initialization. |
| version | No | Version of the response. |
| 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. |
| payload | No | Code completion suggestions. |
| version | No | Version of the response. |
| 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. |
| payload | No | Code completion suggestions. |
| version | No | Version of the response. |
| 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_backtestB
Create a new backtest request and get the backtest Id.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| backtest | No | Details on the result of the backtest. |
| debugging | No | Indicates if the backtest is run under debugging mode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate 'destructiveHint: false', which the description doesn't contradict (it describes a creation operation, not destruction). However, the description adds minimal behavioral context beyond annotations—it mentions getting a backtest ID as output, but doesn't cover aspects like rate limits, authentication needs, or what happens if the backtest 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?
The description is a single, efficient sentence that front-loads the key action and outcome. There's no wasted verbiage, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there's an output schema (which likely covers the backtest ID), the description doesn't need to detail return values. However, for a creation tool with 0% schema coverage and no behavioral annotations beyond destructiveness, the description is too sparse—it doesn't explain prerequisites, error conditions, or how it relates to sibling tools, leaving 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?
Schema description coverage is 0%, meaning parameters are undocumented in the schema. The description provides no information about parameters, not even hinting at required fields like 'projectId' or 'compileId'. With 1 parameter (a nested object), the baseline is 4 for zero parameters, but here the description fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('create a new backtest request') and the outcome ('get the backtest Id'), which distinguishes it from sibling tools like 'list_backtests' or 'read_backtest'. However, it doesn't specify what a 'backtest' is in this context, which could help differentiate from similar tools like '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 is provided on when to use this tool versus alternatives like 'create_optimization' or 'create_live_algorithm', nor are prerequisites mentioned (e.g., needing a compiled project). The description only states what it does, not when it's appropriate.
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 |
|---|---|---|
| state | No | The current state of the compile job. |
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| compileId | No | Compile Id for a successful build. |
| projectId | No | Id of the project you requested to compile. |
| signature | No | Signature key of compilation. |
| parameters | No | List of files and their associated parameters detected during compilation. |
| signatureOrder | No | Signature order of files to be compiled. |
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_fileBIdempotent
Add a file to a given project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| files | No | List of project file information. |
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true and destructiveHint=false, indicating safe, repeatable operations. The description adds minimal context about adding a file but doesn't elaborate on permissions, file type restrictions, or error conditions. It doesn't contradict annotations, but offers little behavioral insight beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's front-loaded and efficiently conveys the core action, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (file creation with multiple parameters) and the presence of an output schema (which handles return values), the description is minimally adequate. However, it lacks details on usage context, parameter meanings, and behavioral nuances, leaving gaps for an AI agent to infer correct 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 description coverage is 0%, but the description doesn't compensate by explaining parameters. It mentions 'a given project' (hinting at projectId) but ignores name, content, and codeSourceId. With no parameter details in the description and low schema coverage, the baseline score of 3 reflects adequate but incomplete 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?
The description 'Add a file to a given project' clearly states the action (add/upload) and resource (file to project), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'update_file_contents' or 'upload_object', which might have overlapping functionality.
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_file_contents' or 'upload_object'. It mentions the target (a given project) but offers no context about prerequisites, constraints, or when other tools might be more appropriate.
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 |
|---|---|---|
| live | No | Summary of the algorithm created. |
| errors | No | List of errors with the API call. |
| source | No | Source of the API call. |
| success | No | Indicate if the API request was successful. |
| deployId | No | Id of the live deployment. |
| projectId | No | Id of the project deployed. |
| versionId | No | Id of the LEAN version deployed. |
| responseCode | No | Response code of the request. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| optimizations | No | Collection of summarized optimization objects. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| projects | No | List of projects for the authenticated user. |
| versions | No | List of LEAN versions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate 'destructiveHint: false' and 'idempotentHint: false', which the description doesn't contradict—it describes a creation action without implying destruction. However, the description adds little beyond annotations: it doesn't clarify what 'default organization' means, whether creation requires authentication, or if there are rate limits. With annotations covering basic safety, this earns a baseline score for minimal added 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, clear sentence with no wasted words—it directly states the tool's purpose and context. It's front-loaded and efficiently conveys the essential information without unnecessary elaboration, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (creation action with nested parameters) and the presence of an output schema (which reduces the need to describe return values), the description is minimally adequate. However, it lacks details on parameter usage, organizational defaults, or error conditions, leaving gaps that could hinder correct tool invocation despite the structured data support.
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, but the description provides no parameter details beyond implying an organizational context. It doesn't explain the required 'model' parameter, its nested fields (name, language, organizationId), or their purposes. Since schema coverage is low, the description fails to compensate, resulting in a baseline score due to inadequate parameter clarification.
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 project') and specifies the context ('in your default organization'), which distinguishes it from other project-related tools like 'create_project_collaborator' or 'update_project'. However, it doesn't explicitly differentiate from 'create_file' or 'create_live_algorithm', which are also creation tools but for different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal guidance by mentioning 'default organization', but offers no explicit advice on when to use this tool versus alternatives like 'update_project' or 'create_project_collaborator'. There's no mention of prerequisites, such as needing an existing organization or specific permissions, which are common in project creation contexts.
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 |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| collaborators | No | List of collaborators. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| 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 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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| 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 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 |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| collaborators | No | List of collaborators. |
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. |
| payload | No | Error message suggestions. |
| version | No | Version of the response. |
| 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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| estimate | No |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| 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 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_backtestsBRead-only
List all the backtests for the project.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | Number of backtest summaries retrieved in the response. |
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| backtests | No | Collection of backtest summaries for a project. |
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 no behavioral context beyond this, such as pagination, rate limits, or authentication needs. It doesn't contradict annotations, but provides minimal extra value given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has annotations (readOnlyHint) and an output schema (which handles return values), the description is minimally adequate. However, it lacks context on usage, parameters, and behavioral details, making it incomplete for optimal agent understanding despite the structured support.
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 schema provides no parameter descriptions. The tool description mentions no parameters at all, failing to compensate for the coverage gap. However, there is only 1 parameter (a nested object with 'projectId' and 'includeStatistics'), and the baseline is 3 when schema coverage is low but the description doesn't add meaningful param details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('all the backtests for the project'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'read_backtest' (which likely reads a single backtest) or 'list_optimizations' (which lists a different resource type), missing explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid project ID), exclusions, or compare to similar tools like 'read_backtest' for single backtests or 'list_optimizations' for other listings, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_live_algorithmsB
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. |
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title, so the description carries the burden of behavioral disclosure. It implies a read-only operation by using 'List', but doesn't specify aspects like pagination, sorting, or rate limits. No contradictions exist with annotations, but additional context is needed for full transparency.
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, making it easy to parse. It efficiently conveys the core purpose without unnecessary elaboration, fitting the tool's straightforward nature.
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 an output schema, the description doesn't need to detail return values. However, with 0% schema coverage and no annotations beyond a title, the description is too minimal—it lacks parameter guidance and behavioral context, making it incomplete for effective use despite the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, with one parameter 'model' that includes a 'status' field with an enum. The description mentions 'past and current' deployments, hinting at status filtering, but fails to explain the parameter's purpose or how to use the status options, leaving significant gaps in understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('past and current live trading deployments'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'list_backtests' or 'list_optimizations' beyond the resource type, missing explicit distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'read_live_algorithm' for detailed views or other list tools. The description lacks context on prerequisites or typical use cases, offering minimal usage direction.
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 |
|---|---|---|
| page | No | The current page number in the paginated response. |
| path | No | Path to the directory in the Object Store. |
| errors | No | List of errors with the API call. |
| 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. |
| success | No | Indicate if the API request was successful. |
| 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. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| optimizations | No | Collection of summarized optimization objects. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| projects | No | List of projects for the authenticated user. |
| versions | No | List of LEAN versions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, which the description aligns with by implying a read operation ('List'). The description adds minimal behavioral context beyond annotations—it specifies 'details of all projects' but doesn't cover pagination, sorting, or response format. With annotations handling safety, this earns a baseline score for slight added 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, clear sentence with no wasted words. It's front-loaded with the core action and resource, making it efficient and easy to parse for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, read-only per annotations, and an output schema exists), the description is reasonably complete. It states what the tool does, though it could benefit from slight elaboration on usage context. The output schema likely covers return values, reducing the need for more detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here, earning a high score as it avoids redundancy and the tool is simple.
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 ('projects'), specifying it retrieves 'details of all projects'. However, it doesn't differentiate from sibling tools like 'read_project' (which likely fetches a single project) or 'list_backtests'/'list_optimizations' (which list other resource types), missing explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer 'list_projects' over 'read_project' for individual details, or how it relates to other list tools like 'list_backtests', leaving the agent with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lock_project_with_collaboratorsBIdempotent
Lock a project that has collaborators so you can edit it.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true, indicating safe retries, but no readOnlyHint or destructiveHint. The description adds context: it's a lock operation for editing, implying a state change that might restrict access. However, it doesn't disclose behavioral traits like side effects (e.g., blocking collaborators), auth needs, or rate limits. No contradiction with annotations exists, but the description carries some burden due to limited 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, clear sentence that efficiently conveys the core purpose without unnecessary details. It's front-loaded with the main action and context, making it easy to parse. No wasted words or redundant 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?
Given the tool's complexity (state-changing lock operation), annotations are minimal (only idempotentHint), schema coverage is 0%, and an output schema exists (not provided here). The description is too brief: it doesn't cover prerequisites, effects, error conditions, or return values. For a tool that likely involves permissions and collaboration dynamics, this is inadequate.
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%, with parameters 'projectId' and 'codeSourceId' undocumented in the schema. The description adds no parameter information beyond implying 'project' context. It fails to explain what 'projectId' or 'codeSourceId' mean or how they're used, leaving significant gaps in understanding the inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Lock') and resource ('a project that has collaborators'), with a specific purpose ('so you can edit it'). It distinguishes from generic lock operations by specifying the collaborator context, though it doesn't explicitly differentiate from sibling tools like 'update_project' or 'create_project_collaborator' which might have overlapping contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal guidance: it implies usage when a project has collaborators and needs editing. However, it lacks explicit when-to-use criteria, prerequisites (e.g., permissions), or alternatives (e.g., vs. 'update_project' or other project management tools). No exclusions or comparisons to sibling tools are mentioned.
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 |
|---|---|---|
| card | No | The current organizations credit card. |
| creditBalance | No | The current account balance. |
| organizationId | No | The organization Id. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| backtest | No | Details on the result of the backtest. |
| debugging | No | Indicates if the backtest is run under debugging mode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, indicating a safe read operation. The description adds minimal behavioral context beyond this—it specifies 'results' but doesn't detail what those results include (e.g., performance metrics, logs) or any constraints (e.g., authentication needs, rate limits). Since annotations cover the safety aspect, the description gets a baseline score but lacks enrichment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse. Every part of the sentence contributes to understanding the tool's purpose efficiently.
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 (reading specific backtest results), the description is minimal but functional. Annotations cover read-only safety, and an output schema exists (implied by context signals), so the description doesn't need to explain return values. However, it lacks details on result scope or error conditions, leaving gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage (no parameter descriptions in the schema itself), but the description provides no parameter information. However, the schema defines a nested object with 'projectId' and 'backtestId', which are self-explanatory to some degree. The description doesn't add meaning beyond the schema's structure, but since the schema is clear, it meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Read the results of a backtest' clearly states the verb ('Read') and resource ('results of a backtest'), making the purpose evident. It distinguishes from siblings like 'list_backtests' (which lists multiple) and 'read_backtest_chart' (which reads specific chart data). However, it doesn't explicitly differentiate from all similar siblings (e.g., 'read_backtest_insights', 'read_backtest_orders'), so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a backtest ID), contrast with siblings like 'list_backtests' for discovery, or specify use cases (e.g., retrieving summary results vs. detailed data). Without any usage context, the agent must infer from tool names alone.
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. |
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, so the agent knows it's a safe read operation. The description adds minimal context beyond this, specifying it reads a 'chart' but not detailing behavioral traits like data format, permissions, or rate limits. It doesn't contradict annotations, as 'read' aligns with readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded and appropriately sized for the tool's purpose, though it could benefit from more detail. Every word earns its place by stating 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 tool has annotations (readOnlyHint) and an output schema (implied by context signals), the description is minimally complete but lacks depth. It doesn't explain the chart's nature, return format, or error conditions, leaving gaps despite structured data support. For a tool with 1 parameter (though nested with 6 sub-parameters), more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter descriptions. The description adds no parameter information beyond implying a chart is read from a backtest. It doesn't explain what parameters like 'model', 'projectId', or 'name' mean, failing to compensate for the 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 'Read a chart from a backtest' clearly states the action (read) and resource (chart from a backtest), but it's vague about what 'chart' entails (e.g., visual data, metrics) and doesn't differentiate from siblings like 'read_backtest' or 'read_backtest_insights'. It avoids tautology by not just restating the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a backtest ID), exclusions, or compare to sibling tools like 'read_backtest' for general data or 'read_live_chart' for live algorithms. Usage is implied only by the name and description.
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 |
|---|---|---|
| length | No | Total number of returned insights. |
| success | No | Indicate if the API request was successful. |
| insights | No | Collection of insights. |
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_ordersCRead-only
Read out the orders of a backtest.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| length | No | Total number of returned orders |
| orders | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, indicating this is a safe read operation. The description adds no behavioral details beyond this, such as rate limits, authentication needs, or what happens if parameters are invalid. Since annotations cover the safety aspect, the bar is lower, but the description could have added useful context like pagination behavior (implied by start/end parameters) or data format. No contradiction with annotations exists.
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, straightforward sentence with no wasted words, making it easy to parse. It's front-loaded with the core action. However, it's arguably too concise, as it omits necessary details about parameters and usage, which reduces its overall helpfulness despite the efficient 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?
Given the tool has annotations (readOnlyHint) and an output schema (implied by context signals), the description doesn't need to cover safety or return values. However, it's a read operation with 4 nested parameters (start, end, projectId, backtestId) that are undocumented in the description, and it lacks usage context among siblings. This makes it minimally adequate but incomplete for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (parameters are nested under 'model' without descriptions in the top-level schema), so the description must compensate. However, it mentions no parameters at all, failing to explain what 'model' contains or the meaning of start, end, projectId, and backtestId. This leaves critical input semantics undocumented, making it harder for an agent to invoke the tool correctly.
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 out the orders of a backtest' clearly states the verb ('read out') and resource ('orders of a backtest'), making the purpose understandable. However, it doesn't distinguish this tool from sibling tools like 'read_backtest', 'read_backtest_chart', or 'read_backtest_insights', which all involve reading backtest data but different aspects. The description is vague about what 'orders' specifically refer to in this context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a backtest ID), compare it to similar tools like 'read_live_orders' or 'read_backtest', or specify use cases. Without this context, an agent might struggle to select this tool appropriately among the many read-related siblings.
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 |
|---|---|---|
| logs | No | Logs of the compilation request. |
| state | No | The current state of the compile job. |
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| compileId | No | Compile Id for a successful build. |
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. |
| errors | No | List of errors with the API call. |
| 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 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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| versions | No | List of LEAN versions with their basic descriptions. |
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 |
|---|---|---|
| files | No | Files present in the project that contains the algorithm. |
| charts | No | Chart updates for the live algorithm since the last result packet. |
| errors | No | List of errors with the API call. |
| public | No | Flag to indicate if the algorithm is public. |
| status | No | State of the live deployment. |
| cloneId | No | The snapshot project Id for cloning the live development's source code. |
| message | No | Error message. |
| stopped | No | Datetime the algorithm was stopped in UTC, null if its still running. |
| success | No | Indicate if the API request was successful. |
| deployId | No | Unique live algorithm deployment identifier (similar to a backtest id). |
| launched | No | Datetime the algorithm was launched in UTC. |
| brokerage | No | Brokerage |
| datacenter | No | Name of the datacenter where the algorithm is physically located. |
| projectName | No | Name of the project the live algorithm is in. |
| securityTypes | No | Security types detected in the algorithm. |
| isPublicStreaming | No | Flag to indicate if public streaming is enabled. |
| 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. |
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title ('Read live chart'), which doesn't convey behavioral traits like read-only status, destructive potential, or authentication needs. The description adds minimal value beyond this, stating it 'Reads' a chart but not disclosing rate limits, error conditions, or what 'live' entails (e.g., real-time data vs. historical). With annotations lacking critical hints, the description fails to compensate adequately for a tool that likely interacts with live systems.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words: 'Read a chart from a live algorithm.' It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place by conveying essential information without redundancy or fluff.
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 (interacting with live algorithms and charts) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations covering safety or behavior and a schema lacking parameter descriptions, the description doesn't provide enough context for safe and effective use. It meets a bare minimum by stating the action but leaves critical gaps in understanding how and when to apply it.
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 parameter descriptions are absent in the schema itself. The tool description provides no additional parameter information beyond the tool name, which implies parameters like 'model' but doesn't explain their semantics or relationships. Since the schema lacks descriptions, the description should compensate but doesn't, resulting in a baseline score due to the schema's failure to document parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Read a chart from a live algorithm' clearly states the verb ('Read') and resource ('chart from a live algorithm'), making the basic purpose understandable. However, it doesn't distinguish this tool from sibling tools like 'read_backtest_chart' or 'read_live_algorithm', leaving ambiguity about when to use this specific chart-reading tool versus others. The purpose is clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'read_backtest_chart' for non-live charts or 'read_live_algorithm' for general live algorithm data, nor does it specify prerequisites such as requiring a live algorithm to be running. Without any usage context or exclusions, the agent must infer when this tool is appropriate.
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 |
|---|---|---|
| length | No | Total number of returned insights |
| success | No | Indicate if the API request was successful. |
| insights | No | Collection of insights. |
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. |
| errors | No | List of errors with the API call. |
| length | No | Total amount of rows in the logs across all live deployments for this project. |
| success | No | Indicate if the API request was successful. |
| deploymentOffset | No | Number of log rows before the given deployment (the `algorithmId` in the request). |
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_ordersC
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 |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the important behavioral detail that 'The snapshot updates about every 10 minutes,' which is valuable operational context not captured in annotations. However, with no annotations provided, the description doesn't address other key behavioral aspects like whether this is a read-only operation, potential rate limits, authentication requirements, or error conditions. The description partially compensates for missing annotations but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just two sentences that both earn their place. The first sentence states the core purpose, and the second provides important behavioral context about update frequency. There's no wasted language, repetition, or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there's an output schema (which handles return values) and the nested parameter object has good descriptions, the description's main gaps are in usage guidance and top-level parameter explanation. For a tool that reads live data, the description provides basic purpose and update frequency but misses important context about when to use it, authentication needs, and how the 'model' parameter works. It's minimally adequate but with clear deficiencies.
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 zero information about parameters, while the schema has 0% description coverage for the top-level 'model' parameter. The nested object 'ReadLiveOrdersRequest' has good parameter descriptions (start, end, projectId), but the description doesn't mention any parameters, explain what 'model' contains, or provide context about how to use the tool. With 0% schema coverage at the top level and no parameter information in the description, this is inadequate.
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 out' and resource 'orders of a live algorithm', making the purpose specific and understandable. It distinguishes from siblings like 'read_live_algorithm' or 'read_live_portfolio' by focusing specifically on orders. However, it doesn't explicitly differentiate from 'read_backtest_orders' which might be a similar sibling operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., requires a live algorithm to be running), doesn't specify when this should be used instead of other order-related tools, and offers no exclusion criteria. The only contextual information is the update frequency, which doesn't help with tool selection.
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| portfolio | No |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| metadata | No | Object Store properties. |
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 |
|---|---|---|
| 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. |
| jobId | No | Id of the job, which you can use to request a download URL. |
| errors | No | List of errors with the API call. |
| 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 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 |
|---|---|---|
| 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. |
| jobId | No | Id of the job, which you can use to request a download URL. |
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| optimization | No | Optimization object requested to read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, indicating this is a safe read operation. The description doesn't contradict this but adds minimal behavioral context beyond annotations—it doesn't disclose rate limits, authentication needs, or what data is returned. Since annotations cover the safety profile, the bar is lower, but the description could still add more operational 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 extremely concise—a single three-word sentence—with zero wasted words. It's front-loaded and efficiently states the core action, though this brevity comes at the cost of completeness. No structural issues are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter with 0% schema coverage, an output schema exists (which helps), but the description is inadequate. It doesn't explain what an 'optimization' is in this context, how to use the tool, or what to expect in return. For a read operation with a required ID parameter, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter descriptions. The tool description doesn't mention parameters at all, failing to compensate for the schema gap. It doesn't explain what 'optimizationId' represents, its format, or where to obtain it, leaving the agent with minimal 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 'Read an optimization' is a tautology that restates the tool name without adding meaningful context. It doesn't specify what 'optimization' refers to in this domain or what aspects are being read. While it includes a verb ('Read') and resource ('optimization'), it lacks the specificity needed to distinguish it from sibling tools like 'list_optimizations' or 'update_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. It doesn't mention prerequisites (e.g., needing an optimization ID), differentiate from 'list_optimizations' (which likely lists multiple optimizations), or specify use cases. The agent must infer usage solely from the tool name and schema.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| projects | No | List of projects for the authenticated user. |
| versions | No | List of LEAN versions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, which the description doesn't contradict. The description adds minimal behavioral context beyond annotations—it implies retrieval of details but doesn't specify format, pagination, or error handling. With annotations covering safety, this 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 a single, clear sentence with no wasted words. It's front-loaded with the core action and resource, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has annotations (readOnlyHint) and an output schema, the description is reasonably complete for a simple read operation. It could improve by clarifying scope versus siblings, but the structured data reduces the burden on the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides no parameter information beyond what's implied by 'project'. The schema's 'projectId' parameter is documented with a description, so the baseline is 3 as the schema compensates for the description's lack of detail.
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 ('project details'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'list_projects' or 'read_project_collaborators', which would require more specificity to earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_projects' or other read_* tools. It lacks any context about prerequisites, exclusions, or comparative use cases, leaving the agent without direction.
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 |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| 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 |
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. |
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| autoSelectNode | No | Indicate if the best-performing node is automatically selected. |
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. |
| messageId | No | Id of the message. |
| retrivals | No | List of search results. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
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. |
| payload | No | A dictionary where the key is the file name and the value is the PEP8 converted code of that file. |
| version | No | Version of the response. |
| 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. |
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| 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 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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
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 |
|---|---|---|
| success | No | Indicate if the API request was successful. |
| collaborators | No | List of collaborators. |
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. |
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
| autoSelectNode | No | Indicate if the best-performing node is automatically selected. |
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 |
|---|---|---|
| errors | No | List of errors with the API call. |
| success | No | Indicate if the API request was successful. |
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
63 tool updates
v0.1.0- First observed
abort_optimization - First observed
authorize_connection - First observed
broadcast_live_command - First observed
check_initialization_errors - First observed
check_syntax - First observed
complete_code - First observed
create_backtest - First observed
create_compile - First observed
create_file - First observed
create_live_algorithm - First observed
create_live_command - First observed
create_optimization - First observed
create_project - First observed
create_project_collaborator - First observed
delete_backtest - First observed
delete_file - First observed
delete_object - First observed
delete_optimization - First observed
delete_project - First observed
delete_project_collaborator - First observed
enhance_error_message - First observed
estimate_optimization_time - First observed
liquidate_live_algorithm - First observed
list_backtests - First observed
list_live_algorithms - First observed
list_object_store_files - First observed
list_optimizations - First observed
list_projects - First observed
lock_project_with_collaborators - First observed
read_account - First observed
read_backtest - First observed
read_backtest_chart - First observed
read_backtest_insights - First observed
read_backtest_orders - First observed
read_compile - First observed
read_file - First observed
read_latest_mcp_server_version - First observed
read_lean_versions - First observed
read_live_algorithm - First observed
read_live_chart - First observed
read_live_insights - First observed
read_live_logs - First observed
read_live_orders - First observed
read_live_portfolio - First observed
read_mcp_server_version - First observed
read_object_properties - First observed
read_object_store_file_download_url - First observed
read_object_store_file_job_id - First observed
read_optimization - First observed
read_project - First observed
read_project_collaborators - First observed
read_project_nodes - First observed
search_quantconnect - First observed
stop_live_algorithm - First observed
update_backtest - First observed
update_code_to_pep8 - First observed
update_file_contents - First observed
update_file_name - First observed
update_optimization - First observed
update_project - First observed
update_project_collaborator - First observed
update_project_nodes - First observed
upload_object
TDQS
Scored across 63 tools
Most tools have distinct purposes with clear resource-action pairs (e.g., create_backtest vs. read_backtest vs. delete_backtest). However, some overlap exists in object store operations (read_object_properties, read_object_store_file_download_url, read_object_store_file_job_id) and live algorithm monitoring tools (read_live_insights, read_live_orders, read_live_portfolio) that could cause minor confusion about which to use for specific queries.
Tool names follow a highly consistent verb_noun pattern throughout (e.g., create_backtest, list_backtests, read_backtest, delete_backtest). All tools use snake_case with clear action verbs (create, read, update, delete, list, etc.) and specific nouns, making them predictable and easy to parse.
With 63 tools, the count is excessive for typical MCP server purposes, making it overwhelming for agents to navigate. While the domain (QuantConnect platform) is broad, many tools could be consolidated (e.g., multiple object store read operations) or omitted to reduce cognitive load and improve usability.
The tool set provides comprehensive coverage for the QuantConnect domain, including full CRUD operations for projects, backtests, optimizations, files, and live algorithms. It also includes specialized tools for syntax checking, code completion, error enhancement, and platform-specific features like object store management and node selection, leaving no obvious gaps for core workflows.
Maintenance
Related MCP Connectors
- CPZAIOAuthcom.cpz-lab.mcp
Build, backtest, and deploy quantitative trading strategies from your AI agent.
Unified financial infrastructure connecting AI agents directly to trade live/demo brokerage accounts, Web3 non-custodial wallets, real-time market data across equities, ETFs, crypto, forex, options, DeFi swaps, and prediction markets, institutional research feeds, and algorithmic strategy backtesters.
Automate trading on your own Alpaca account - build, backtest and run strategies via your AI.
Evidence-gated quant research for TradingView Pine Script strategies, run from your AI client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with QuantConnect's algorithmic trading platform to create projects, write trading strategies, run backtests, perform optimizations, and deploy algorithms to live trading through the QuantConnect API.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables natural language trading operations through AI assistants using Alpaca's Trading API. Supports stocks, options, crypto trading, portfolio management, and real-time market data access.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude to run backtests, fetch market data, list strategies, and analyze trading algorithms via natural language.1,081GPL 3.0

panther-mcpofficial
AlicenseAqualityDmaintenanceEnables AI assistants to backtest trading strategies described in plain English, providing access to market data, technical indicators, and comprehensive performance reports.131MIT