TestCollab MCP Server
Manage TestCollab test cases, test plans, and suites from an MCP-compatible AI client.
Get project context (suite tree, tags, custom fields, requirements, folders, releases, users) to resolve names to IDs.
List, retrieve, create, and update test cases with filtering, sorting, pagination, steps, step patches, tags, requirements, custom fields, and attachments.
List and retrieve test plans with filters (status, priority, release, folder, dates, creator), sorting, pagination, runs, and configurations.
Create, update, and delete test plans, including test case selection by IDs/selector, configurations, assignments, custom fields, release/folder association, and status.
List the suite tree and create, retrieve, update, delete, move, and reorder suites.
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., "@TestCollab MCP ServerShow me all high-priority test cases in the Login suite"
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.
TestCollab MCP Server
Connect your AI coding assistant to TestCollab — manage test cases, test plans, and suites directly from Claude, Cursor, Windsurf, Codex, or any MCP-compatible client.
Quick Start
1. Get your API token
Log in to TestCollab → My Profile Settings → API Token tab → Generate new API token.
2. Add the server to your MCP client
Claude Code — add to .mcp.json in your project root:
{
"mcpServers": {
"testcollab": {
"command": "npx",
"args": ["-y", "@testcollab/mcp-server"],
"env": {
"TC_API_TOKEN": "your-api-token",
"TC_API_URL": "https://api.testcollab.io",
"TC_DEFAULT_PROJECT": "16"
}
}
}
}Claude Desktop — add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"testcollab": {
"command": "npx",
"args": ["-y", "@testcollab/mcp-server"],
"env": {
"TC_API_TOKEN": "your-api-token",
"TC_API_URL": "https://api.testcollab.io",
"TC_DEFAULT_PROJECT": "16"
}
}
}
}Codex - register TestCollab from the command line:
codex mcp add testcollab \
--env TC_API_TOKEN=your-api-token \
--env TC_API_URL=https://api.testcollab.io \
--env TC_DEFAULT_PROJECT=16 \
-- npx -y @testcollab/mcp-serverOr add the server to ~/.codex/config.toml for all projects, or .codex/config.toml in a trusted project:
[mcp_servers.testcollab]
command = "npx"
args = ["-y", "@testcollab/mcp-server"]
[mcp_servers.testcollab.env]
TC_API_TOKEN = "your-api-token"
TC_API_URL = "https://api.testcollab.io"
TC_DEFAULT_PROJECT = "16"Run codex mcp list to confirm the server is configured. See the official Codex MCP documentation for configuration scopes and additional options.
Cursor — add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"testcollab": {
"command": "npx",
"args": ["-y", "@testcollab/mcp-server"],
"env": {
"TC_API_TOKEN": "your-api-token",
"TC_API_URL": "https://api.testcollab.io",
"TC_DEFAULT_PROJECT": "16"
}
}
}
}Manual Testing
TC_API_TOKEN=your-token npm startRelated MCP server: Testmo MCP Server
Available Tools
list_test_cases
List test cases from a project with optional filtering.
Parameters:
Name | Type | Required | Description |
| number | No* | Project ID (*required if |
| number|string | No | Filter by suite ID or title |
| object | No | Filter conditions |
| array | No | Sort specification |
| number | No | Max results (1-100, default: 50) |
| number | No | Skip N results (default: 0) |
3. Verify
Restart your client, then ask: "What tools do you have for TestCollab?"
You should see the TestCollab tools listed. Try: "Show me all test cases".
Configuration
Variable | Required | Default | Description |
| Yes | — | API token from your TestCollab profile |
| No |
| TestCollab API base URL |
| No | — | Default project ID (makes |
EU region: If your TestCollab account is hosted in the EU, use
https://api-eu.testcollab.ioas yourTC_API_URL.
What You Can Do
Tool | Description |
get_project_context | Get suites, tags, custom fields, requirements, test plan folders, releases, users — call this first |
list_test_cases | Query test cases with filtering, sorting, and pagination |
get_test_case | Fetch a test case with full step details |
create_test_case | Create a test case with steps, tags, custom fields |
update_test_case | Update any test case field |
list_test_plans | List test plans with filtering/sorting (including release ID/title filters) |
get_test_plan | Fetch one test plan with included test cases count, configurations, runs, current progress status, and release info |
create_test_plan | Create a test plan with cases selected by IDs, selectors, or tag ID/name; preserve default assignees unless overridden |
get_test_plan_cases | Get case steps, expected results, configuration statuses and assigned execution IDs for a run |
report_test_case_result | Record one execution with status, comments, milliseconds, step results and evidence files |
report_results | Report a structured batch, set plan custom fields and optionally skip omitted assignments |
update_test_plan | Update test plan metadata, status, assignment, and release association |
delete_test_plan | Delete a test plan |
list_suites | List all test suites in a project (supports |
get_suite | Get suite details |
create_suite | Create a new suite |
update_suite | Update a suite |
delete_suite | Delete a suite |
move_suite | Move a suite to a different parent |
reorder_suites | Reorder suites within a parent |
Example Prompts
"Show me all high-priority test cases in the Login suite"
"Create a test case for verifying password reset with 5 steps"
"List all test plans created this week"
"Create a regression test plan with all test cases tagged 'smoke'"
"Move the Payment suite under the Checkout suite"See Use Cases for detailed workflows.
Execute a plan through MCP
Create a tagged plan using the existing creation flow:
{
"title":"Smoke tests",
"test_cases":{"tag_name":"Smoke","assignee":"me"},
"override_assignees":false
}test_cases.tag_id selects a numeric project tag instead. Use one tag reference;
tag selection can include additional selector filters, and is separate from
explicit test_case_ids. Existing case, configuration, assignment, release,
folder and custom-field options remain available. With override_assignees
omitted or false, default case assignees are kept and the supplied assignee fills
only unassigned cases. Set it to true to replace defaults.
Call get_test_plan_cases with test_plan_id. Also supply run_id to get the
token owner's assigned execution IDs and the run's revision steps. The response
includes testCases, configurations, statuses with active systemName values,
and executions. Use these internal IDs; TC- display numbers are different IDs.
For data-driven cases, each case includes datasets with id, name,
parameters and rows (index plus values). Each execution includes its saved
datasets and datasetResults. Use the execution's snapshots for a run; later
library edits can change the case's current datasets.
Report one assigned execution with report_test_case_result:
{
"run_id":365,
"executed_test_case_id":53404,
"status":"passed",
"comment":"Login succeeded",
"time_taken":1200,
"step_results":[{
"step":"Sign in","expected_result":"Home page appears","status":"passed",
"attachments":[{"file_name":"step.log","content_base64":"T2sK"}]
}],
"attachments":[{"file_name":"run.log","content_base64":"T2sK"}]
}step_results are matched to the run's steps by position: each saved step keeps its
text and expected result, and takes the status and comment you send. A step you do not
send takes the case status. Send at most one result per step. Status uses an active system name, including custom statuses. time_taken adds
milliseconds (the CLI's tc reportCase --time-taken takes seconds). The token determines the executor;
results record execution_source: agent ("Agent" in the Run Mode column) and
execution_context.tool: tc-mcp-server. TestCollab counts an agent result as machine-executed.
Each step_results item accepts an optional attachments list in the same format
as the top-level list. Step files appear under that step, and previously saved
step files are kept. Top-level files belong to the whole result.
Attachments allow up to 10 files per call, across the result, steps and dataset rows. In stdio mode, use
{"file_path":"/path/to/screenshot.png"} for a local regular file up to 10 MB.
You can also use file_name plus standard padded content_base64 for
up to 1 MB decoded per file. Omit data-URL prefixes. Optional mime_type overrides
file-extension detection.
For a data-driven execution, send dataset_results instead of step_results:
{
"run_id":365,
"executed_test_case_id":53404,
"status":"failed",
"dataset_results":[
{"dataset_id":7,"dataset_row_index":0,"step_index":0,"status":"passed"},
{"dataset_id":7,"dataset_row_index":1,"step_index":0,"status":"failed",
"comment":"This account could not sign in",
"attachments":[{"file_name":"failure.log","content_base64":"T2sK"}]}
]
}Copy dataset_id, dataset_row_index and step_index from the execution's
datasetResults; indexes start at zero. Each supplied entry changes that row
and step only. Unreported entries keep their status, comment and files. New files
are added to existing files on the selected entry. The 10-file limit covers
top-level, step and row files together. The case status must rank at least as high
as all saved row statuses in the project's status vocabulary. Duplicate or
unknown coordinates and inactive statuses are refused before uploads or writes.
Row files are uploaded and linked to the execution before saving their IDs in
the row results. If the result write then fails, those files remain linked to
the execution and no time has been added.
Invalid evidence is checked before result writes. Errors after a saved result identify a failed time/evidence update; repeating the time update can add it twice. Step files are uploaded and linked to the execution before their IDs are saved on the steps. If that upload or link fails, the result and time are not updated.
For report_results, pass test_plan_id and a nonempty results array:
{
"test_plan_id":131,
"results":[{"test_case_id":1724,"configuration_id":9,"status":"passed","time_taken":1200}],
"skip_missing":true,
"custom_fields":[{"id":5,"name":"environment_text","value":"staging","valueLabel":"staging"}]
}Optional run_id selects a run; otherwise the latest run is used. The caller's
assigned executions are matched by internal case and configuration IDs.
configuration_id is required when more than one assigned execution matches.
Invalid and duplicate targets are refused before writes. Custom fields use API
IDs, system names and typed values; unspecified existing values are kept.
skip_missing marks omitted caller assignments skipped after supplied results
succeed. The response lists confirmed results, skipped IDs and per-execution
errors. Check it before retrying a partial failure. Batch evidence can be attached
through report_test_case_result. File parsing, auto-create and builds are outside
this execution flow.
See execution architecture and verification.
Local Development Setup
If you're contributing or want to run from source instead of npx:
git clone <repo-url>
cd tc-mcp-server
npm install
npm run buildThen point your MCP client to the built file:
{
"mcpServers": {
"testcollab": {
"command": "node",
"args": ["/path/to/tc-mcp-server/dist/index.js"],
"env": {
"TC_API_TOKEN": "your-api-token",
"TC_API_URL": "http://localhost:1337",
"TC_DEFAULT_PROJECT": "16"
}
}
}
}Dev Commands
npm run dev # Watch mode with hot reload
npm run build # Compile TypeScript
npm test # Run tests
npm run typecheck # Type check
npm run lint # LintTroubleshooting
Server not appearing in your client
Restart the client after adding the config
Verify Node.js 20+ is installed:
node --versionTest manually:
TC_API_TOKEN=your-token npx @testcollab/mcp-server
Authentication errors
Verify your API token is valid and not expired
Check that
TC_API_URLpoints to the correct server
"project_id is required" error
Set
TC_DEFAULT_PROJECTin your env config, orSpecify the project in your prompt: "Show me test cases in project 16"
License
MIT
Available Tools
20 toolscreate_suiteA
Create a new test suite in TestCollab. Tip: Call get_project_context first to see existing suites and resolve parent suite names to IDs.
Required: title Optional: project_id, parent (suite ID or title), description
Examples: Root suite: { "title": "Authentication" } Child suite: { "title": "Login", "parent": "Authentication" } With description: { "title": "API Tests", "description": "Tests for REST API endpoints" }
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Suite title (required) | |
| parent | No | Parent suite ID or title. Omit for a root-level suite. | |
| project_id | No | Project ID (optional if TC_DEFAULT_PROJECT is set) | |
| description | No | Suite description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It explains parent parameter accepts ID or title and references default project for project_id. However, it does not disclose side effects, error handling, or idempotency, leaving gaps in 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?
Concise with a clear structure: single-line purpose, a practical tip, required/optional breakdown, and three illustrative examples. No unnecessary words, and 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 4 parameters, no output schema, and sibling tools like get_project_context, the description provides all necessary context: parameter roles, example payloads, and a helpful reference. Complete for its complexity level.
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 100%, so baseline is 3. Description adds value by providing usage context for project_id (optional if default set), examples demonstrating title and parent as string or number, and a tip to resolve parent titles, going beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new test suite in TestCollab' with specific verb and resource. Examples and parameter lists reinforce purpose, distinguishing it from sibling tools like update_suite, delete_suite, and move_suite.
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?
Includes a tip to call get_project_context first to resolve parent suite names. Lists required and optional parameters, with examples for root and child suites. Does not explicitly exclude scenarios or mention alternatives, but context is sufficient for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_test_caseA
Create a new test case in TestCollab. Tip: Call get_project_context first to resolve suite/tag/custom field names to IDs.
Required: title Optional: project_id, suite (ID or title), description, priority (0=Low, 1=Normal, 2=High), steps, tags, requirements, custom_fields, attachments
Steps format: [{ "step": "action", "expected_result": "result" }]
Custom fields format: [{ "id": 5, "name": "field_name", "value": "value", "valueLabel": "display" }]
Example: { "title": "Verify login", "priority": 2, "steps": [ { "step": "Navigate to login", "expected_result": "Page loads" }, { "step": "Enter credentials", "expected_result": "Login succeeds" } ] }
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Array of tag IDs or names | |
| steps | No | Array of test steps | |
| suite | No | Suite ID or suite title | |
| title | Yes | Test case title (required) | |
| priority | No | Priority: 0=Low, 1=Normal, 2=High | |
| project_id | No | Project ID (optional if TC_DEFAULT_PROJECT is set) | |
| attachments | No | Array of attachment file IDs | |
| description | No | Test case description (HTML supported) | |
| requirements | No | Array of requirement IDs or names | |
| custom_fields | No | Array of custom field values (id optional if name provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It correctly indicates a creation operation (write) but does not disclose any side effects, permissions needed, or the response format. The description is adequate but could be more transparent about what happens after creation.
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 fairly concise given the complexity (10 parameters). It front-loads the purpose, then groups required/optional, and provides structured examples. Minor redundancy exists but overall 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 tool's complexity (10 params, no output schema), the description covers parameters, formats, and a cross-tool tip. It lacks what the response will be (e.g., created test case ID), but still provides sufficient context for correct 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?
Input schema coverage is 100%, so baseline is 3. The description adds significant value by providing step and custom field formats, an example usage, and clarifying that suite can be an ID or title. This enriches the semantic understanding 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 explicitly states 'Create a new test case in TestCollab.' This is a specific verb-resource pair that clearly distinguishes it from sibling tools like create_suite or create_test_plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a helpful tip to call get_project_context first to resolve names to IDs, providing clear usage guidance. It also lists required and optional parameters. However, it does not explicitly contrast with alternatives like update_test_case or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_test_planA
Create a test plan in TestCollab using a single MCP tool call.
Before calling this tool:
Ask follow-up questions for missing required information.
Do not infer or auto-generate required values like project_id.
Execution flow:
POST /testplans
POST /testplantestcases/bulkAdd (optional)
POST /testplanconfigurations (optional)
POST /testplans/assign (optional)
Optional:
project_id
title (defaults to "Test Plan DD Month YYYY HH:mm:ss" if omitted)
description
priority (0=Low, 1=Normal, 2=High)
test_plan_folder (ID or title)
release (ID or title)
start_date, end_date
custom_fields
test_cases (test_case_ids/selector/tag_id/tag_name/assignee; assignee supports user ID/"me"/name)
override_assignees (default false: keeps default case assignees, assigns only cases with none)
configurations
assignment (supports user IDs/"me"/names; if user says "assign to me", use "me")
Example: { "project_id": 16, "title": "Release 2.9 Regression", "priority": 1, "test_cases": { "test_case_ids": [101, 102, 103] }, "configurations": [ [{ "field": "Browser", "value": "Chrome" }, { "field": "OS", "value": "Windows" }] ], "assignment": { "executor": "team", "assignment_criteria": "testCase", "assignment_method": "automatic", "user_ids": [27, 31] } }
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Test plan title (optional; defaults to "Test Plan DD Month YYYY HH:mm:ss") | |
| release | No | Release ID or title | |
| end_date | No | Planned end date (YYYY-MM-DD) | |
| priority | No | Priority: 0=Low, 1=Normal, 2=High | |
| assignment | No | Assignment payload to execute after creation | |
| project_id | No | Project ID (optional if TC_DEFAULT_PROJECT is set) | |
| start_date | No | Planned start date (YYYY-MM-DD) | |
| test_cases | No | Test cases to bulk-add immediately after plan creation | |
| description | No | Test plan description (HTML supported) | |
| custom_fields | No | Array of test plan custom field values | |
| configurations | No | Configuration matrix to attach to the test plan | |
| test_plan_folder | No | Test plan folder ID or title (null to place at root) | |
| override_assignees | No | Override inherited default assignees with the supplied assignment; false keeps defaults and fills unassigned cases |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full load and does well: it discloses the four-step execution flow, which steps are optional, defaulting behavior (title default, override_assignees default false and what that means, assignee triggering assignment), and the 'assign to me' convention. It omits permission requirements, idempotency, and crucially what happens on partial failure after step 1 succeeds.
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?
Well front-loaded: purpose first, then preconditions, then flow, then options and an example. The optional-parameters bullet list is almost a verbatim echo of the 100%-covered schema and adds length without information, which keeps it from a 5.
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 13-parameter, deeply nested orchestration tool with no annotations and no output schema, the description covers inputs and sequencing but says nothing about what is returned (plan ID? partial results?), how partial failures are surfaced, or permission prerequisites. Those are real gaps for an agent that must decide whether to retry or chain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter and the baseline is 3. The description largely restates the schema's optional-field list, but it does add some value through the end-to-end example that shows how nested test_cases, configurations and assignment compose.
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?
States a specific verb and resource ('Create a test plan in TestCollab') and clarifies that plan creation plus optional test-case addition, configurations and assignment all happen in one call, which meaningfully separates it from update_test_plan/get_test_plan. It never names those siblings explicitly, so an agent must still infer that modifications go elsewhere.
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 'Before calling this tool' block gives concrete pre-call rules: ask follow-ups for missing required info and never infer values like project_id. That is strong guidance for a create tool, though it stops short of naming alternatives (e.g., use update_test_plan to modify an existing plan).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_suiteA
Delete a test suite from TestCollab.
WARNING: This will delete the suite and may affect child suites and test cases. Use with caution.
Required: id (suite ID) Optional: project_id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Suite ID to delete (required) | |
| project_id | No | Project ID (optional if TC_DEFAULT_PROJECT is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description warns that deletion 'may affect child suites and test cases', which is a key behavioral trait. However, it does not disclose whether deletion is reversible, requires specific permissions, or what happens to the test cases. Since no annotations are provided, the description partially addresses behavior but lacks completeness.
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: three sentences covering action, warning, and parameter summary. It is front-loaded with the primary purpose and uses clear, direct language without superfluous 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 (two parameters, no output schema), the description covers the essential: what it does, a critical warning about cascading effects, and parameter identification. It does not mention return values or error handling, which are minor omissions for a delete 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?
With 100% schema coverage, the baseline is 3. The description repeats parameter roles ('Required: id (suite ID)', 'Optional: project_id') without adding new meaning beyond the schema's type and description. No additional constraints or usage hints are provided, so it adds minimal 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 clearly states 'Delete a test suite from TestCollab', using a specific verb and resource. It distinguishes itself from sibling tools like create_suite, update_suite, and get_suite, leaving no ambiguity about its 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?
The description lacks guidance on when to use this tool versus alternatives such as update_suite or move_suite. The warning to 'Use with caution' is generic and does not specify prerequisites or scenarios where deletion is appropriate, leaving the agent without decision context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_test_planA
Delete a test plan from TestCollab.
WARNING: This permanently deletes the test plan and related execution data.
Required: id (test plan ID) Optional: project_id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Test plan ID to delete (required) | |
| project_id | No | Project ID (optional if TC_DEFAULT_PROJECT is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explicitly warns about permanent deletion of the test plan and related execution data, which is critical behavioral information. However, it does not describe return values or error conditions.
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 plus a parameter line, with no wasted words. The purpose is front-loaded and the warning is prominently placed.
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 (2 parameters, no output schema), the description covers the key aspects: purpose, permanence warning, and parameter list. It could mention return behavior, but is otherwise 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?
Schema description coverage is 100%, so baseline is 3. The description repeats the required/optional nature of the parameters without adding additional semantics 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 'Delete' and the resource 'a test plan from TestCollab'. It is specific and distinguishes from sibling tools like delete_suite.
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 deleting a test plan, but does not explicitly state when to use this tool versus alternatives or when not to use it. The warning about permanence provides context, but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_contextA
Get project context including project name, description, application type, suite tree, tags, test_case_custom_fields, test_plan_custom_fields, requirements, test plan folders, releases, and project users. Returns the metadata needed to resolve human-readable names (e.g. suite titles, tag names, folder titles, release titles, user names) to numeric IDs used by other tools. Also returns the project description and app_type (web_app, mobile_app, api, desktop_app, other) which should inform the style of test steps you generate.
IMPORTANT: Call this tool at the start of every conversation before using any other TestCollab tool. This avoids errors from unresolved suite names, tag names, or custom field references.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Project ID (optional — uses default project if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details what is returned (project name, description, app_type, etc.) and explains that it helps resolve names to IDs. It also notes that app_type should inform test step generation. No annotations exist, so the description carries the burden, and it does well, though it does not explicitly state that the tool has no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is informative but not excessively long. It uses a clear structure with a list of returned items and an important usage callout in bold. Every sentence serves a 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's simplicity (one optional param, no output schema), the description is comprehensive. It covers the purpose, output, usage context, and even cues the agent on how to use the returned app_type. No gaps identified.
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 single parameter (project_id) has 100% schema coverage. The description does not add significant meaning beyond the schema's note about optionality. Baseline 3 is appropriate since the schema already documents the parameter adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves project context including metadata for name-to-ID resolution. It lists specific items like suite tree, tags, custom fields, etc., and distinguishes itself from siblings by emphasizing its role as a prerequisite for other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs the agent to call this tool 'at the start of every conversation before using any other TestCollab tool' to avoid errors. This provides clear when-to-use guidance and implies exclusion of other tools for this purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_suiteA
Get details of a specific test suite by ID. Returns the suite's title, description, parent_id, and other metadata.
Required: id (suite ID) Optional: project_id
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Suite ID to retrieve (required) | |
| project_id | No | Project ID (optional if TC_DEFAULT_PROJECT is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read-only operation by stating 'Get details' and 'Returns...'. Since annotations are not provided, the description bears the full burden. It is clear that the tool does not mutate data, and it specifies the return fields. Although it does not explicitly state idempotency or lack of side effects, the wording strongly implies a safe fetch.
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, consisting of three short sentences. The first sentence states the primary purpose, the second lists return fields, and the third specifies parameter usage. No extraneous information is present, and every sentence contributes 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?
For a simple read tool with two parameters and no output schema or annotations, the description covers essential aspects: what it does, what it returns, and parameter roles. It lacks details about error handling or response structure beyond listed fields, but it is generally adequate for an agent to understand how to invoke 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 already provides complete descriptions for both parameters (100% coverage). The description merely repeats the schema information (e.g., 'Required: id (suite ID) Optional: project_id'). It adds no additional meaning beyond what the schema offers, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get details of a specific test suite by ID.' It also lists the specific fields returned (title, description, parent_id, and other metadata), which helps the agent understand exactly what data to expect. This differentiates it from sibling tools like create_suite, delete_suite, and list_suites.
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 identifies required and optional parameters: 'Required: id (suite ID) Optional: project_id'. However, it does not provide guidance on when to use this tool versus alternatives like list_suites (which lists all suites) or get_test_plan (which retrieves a different resource). There is no explicit 'when-to-use' or 'when-not-to-use' context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_caseA
Fetch a single test case with full details, including steps and expected results.
Required: id (test case ID) Optional: project_id, parse_reusable_steps (default: true)
Example: { "id": 1835, "parse_reusable_steps": true }
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Test case ID to retrieve (required) | |
| project_id | No | Project ID (uses default if not specified) | |
| parse_reusable_steps | No | Parse reusable steps into full steps (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description indicates a read operation ('fetch') but lacks explicit mention of side effects, rate limits, or full return structure beyond mentioning 'steps and expected results'.
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?
Description is concise, front-loaded with the action and resource, includes example, and contains 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?
Given no output schema, the description provides some return context (steps, expected results) but could be more detailed about the full response structure. Still adequate for a simple retrieval 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 coverage is 100%, so baseline 3; the description adds an example and clarifies required/optional, but does not significantly enhance understanding 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 fetches a single test case with full details including steps and expected results, distinguishing it from list_test_cases which returns multiple cases.
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 specifies required and optional parameters with defaults, and provides an example, but does not explicitly indicate when to prefer this over sibling tools like list_test_cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_planA
Fetch a single test plan with summary details:
Included test cases count
Test plan configurations
Test plan runs
Current execution progress status
Required: id or title Optional: project_id, include_configurations, include_runs, runs_limit, runs_offset, runs_sort
Example: { "id": 812, "project_id": 16 }
or
{ "title": "Release 3.0 Regression", "project_id": 16 }
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Test plan ID to retrieve. Accepts numeric ID or title string. | |
| title | No | Test plan title to retrieve (alternative to id). | |
| runs_sort | No | Run sort expression (default: "id:desc") | id:desc |
| project_id | No | Project ID (uses default if not specified) | |
| runs_limit | No | Maximum number of runs to return (1-100, default: 20) | |
| runs_offset | No | Number of runs to skip (default: 0) | |
| include_runs | No | Include test plan runs in the response (default: true) | |
| include_configurations | No | Include test plan configurations in the response (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It mentions the tool fetches data (read operation) and lists what is included, but does not disclose error handling, authentication requirements, rate limits, or what happens if the plan does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a clear introductory sentence, bullet points listing included details, parameter guidance, and a code example. Every sentence earns its place with no redundancy or verbosity.
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 8 parameters (most with defaults), no output schema, and no annotations, the description covers core functionality and parameter usage well. It explains what the response includes (test cases count, configurations, runs, progress) but does not detail the response structure or error scenarios.
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 100%, baseline 3. The description adds value by stating that 'id' accepts numeric ID or title string, providing explicit examples, and clarifying optional parameters like include_configurations and include_runs, which goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch a single test plan with summary details' and enumerates specific included data. This distinguishes it from siblings like list_test_plans (which returns multiple) and get_test_case/get_suite (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 specifies required parameters (id or title) and optional ones, with examples showing usage. While it doesn't explicitly compare with alternatives, the context of sibling tools and the phrase 'single test plan' implies when to use this versus list_test_plans.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_plan_casesA
Get all cases in a plan with steps, expected results, linked datasets (parameters and indexed rows), active status system names and per-configuration status. Provide run_id to get the token owner's assigned execution IDs, revision steps, saved datasets and datasetResults row/step coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No | Include the token owner's assigned execution IDs for this plan run | |
| project_id | No | Project ID; falls back to the transport's default project | |
| test_plan_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it enumerates exactly what comes back (steps, expected results, datasets with parameters and indexed rows, active status names, per-configuration status) and what run_id augments. It stops short of stating read-only semantics, permission requirements, or result-size 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?
Two sentences, front-loaded with the core read, second sentence scoped to the optional run_id behavior. Dense with domain jargon ("datasetResults row/step coordinates") but no filler sentences.
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?
No output schema exists, so the description must describe the return payload, and it does so thoroughly; no annotations exist, so the omission of read-only/permission notes is the main remaining gap. For a 3-param read tool this is close to 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?
Schema coverage is 67%, with run_id already documented in the schema; the description only restates its effect by naming the extra fields it unlocks. test_plan_id and project_id get no semantic treatment in the description, and the $ref-shared description for test_plan_id is inherited awkwardly. Mid-range, baseline-level 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?
Specific verb+resource ("Get all cases in a plan") followed by an enumeration of the payload (steps, expected results, linked datasets, statuses). It is distinguishable from get_test_plan (plan metadata) and list_test_cases (project-wide cases) by implication, but never names those siblings explicitly.
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?
"Provide run_id to get the token owner's assigned execution IDs..." is a clear conditional trigger for the optional parameter. However, there is no guidance on when to use this instead of get_test_case or list_test_cases, and no exclusions or cost/pagination caveats.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_suitesA
List all test suites in a TestCollab project as a hierarchical tree. Returns the complete suite tree with parent-child relationships.
Each suite node includes: id, title, parent_id, children (nested suites).
Optional filter:
title: Filter suites by title substring.
title_contains: Filter suites by title substring (applied at API level).
parent: Filter suites by parent suite ID.
description: Filter suites by description substring.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Filter suites whose title contains this string | |
| parent | No | Filter suites by parent suite ID | |
| project_id | No | Project ID (optional if TC_DEFAULT_PROJECT is set) | |
| description | No | Filter suites whose description contains this string | |
| title_contains | No | Alias of title (contains match) | |
| description_contains | No | Alias of description (contains match) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description partially covers behavioral traits by mentioning the hierarchical tree output and filter options. However, it does not disclose potential performance issues, pagination, authorization needs, or what happens if the project has many suites. The description adds some value but misses important behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with core purpose ('List all test suites in a TestCollab project as a hierarchical tree') and then details filters. It is efficient, though the filter list slightly duplicates schema info. Overall, every sentence contributes, but minor redundancy keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers output structure (id, title, parent_id, children) and lists filters, which is adequate for a list tool. However, no output schema exists, so the description should also mention default ordering, pagination, and additional fields (e.g., updated_at). This gap in completeness gives a score of 3.
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 100%, so baseline is 3. The description adds value by explaining that title_contains is an alias for title and applied at the API level, and describes the output structure (node fields). This goes beyond simply repeating schema information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all test suites in a project as a hierarchical tree with parent-child relationships. The verb 'list' and resource 'suites' are specific, and the hierarchical tree detail distinguishes it from a flat list. Sibling tools like get_suite (single) and list_test_cases (different resource) further clarify 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 implies usage for retrieving all suites in a tree format, but lacks explicit guidance on when to use this tool versus alternatives like get_suite. No exclusions or prerequisites are mentioned. The filters provide context for narrowing results but not when to choose this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_test_casesA
List test cases from a TestCollab project with optional filtering, sorting, and pagination. Tip: Call get_project_context first to resolve suite/tag/custom field names to IDs. Note: list_test_cases may omit full step details; use get_test_case for a complete test case with steps.
Filter fields include:
id, title, description, steps, priority (0=Low, 1=Normal, 2=High)
suite (ID or title), created_by, reviewer, poster (user IDs)
created_at, updated_at, last_run_on (dates)
tags, requirements (arrays of IDs or names)
under_review, is_automated (0 or 1)
run_count, avg_execution_time, failure_rate
Filter types:
text: equals, notEqual, contains, notContains, startsWith, endsWith, isBlank
number: equals, notEqual, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual, inRange
date: equals, notEqual, greaterThan, lessThan, inRange
Example filter: { "priority": { "filterType": "number", "type": "greaterThanOrEqual", "filter": 1 }, "title": { "filterType": "text", "type": "contains", "filter": "login" } }
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort specification array, e.g. [{ colId: 'updated_at', sort: 'desc' }] | |
| limit | No | Maximum results to return (1-100, default: 50) | |
| suite | No | Filter by suite ID or title | |
| filter | No | Filter conditions object | |
| offset | No | Number of results to skip (default: 0) | |
| project_id | No | Project ID (optional if TC_DEFAULT_PROJECT env var is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It discloses that the tool may omit full step details, which is a key behavioral trait. However, it does not mention authentication, rate limits, or error handling, which would further enhance 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 well-structured and appropriately sized: a concise summary sentence, followed by tips, a structured list of filter fields, filter types, an example, and parameter defaults. Every sentence adds value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (nested objects, no output schema), the description covers filtering, sorting, and pagination thoroughly, and includes usage tips. However, it lacks explicit description of the output format or list of returned fields, which would make it more 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?
Despite 100% schema coverage, the description adds substantial value: it lists all filter fields with types, provides filter type categories (text, number, date), gives a concrete example filter, explains sort syntax, and specifies default values for limit and offset. This goes far 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 'List test cases from a TestCollab project with optional filtering, sorting, and pagination,' specifying the verb, resource, and scope. It also distinguishes from sibling tools by noting that list_test_cases may omit full step details, guiding users to use get_test_case for complete details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises calling get_project_context first to resolve IDs, and provides a note that list_test_cases may omit step details, recommending get_test_case for full details. This gives clear when-to-use and when-not-to-use guidance with specific alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_test_plansA
List test plans from a TestCollab project with optional filtering, sorting, and pagination.
Optional filters:
title_contains
status: 0/1/2/3 or draft/ready/finished/finished_with_failures
priority: 0/1/2 or low/normal/high
archived: true/false
created_by: creator user ID
test_plan_folder: folder ID or folder title
release: release ID or release title
created_at_from/to, updated_at_from/to, start_date_from/to, end_date_from/to, last_run_from/to
filter: raw filter object for advanced keys (merged with explicit filters)
Example: { "project_id": 16, "title_contains": "Release", "status": "ready", "priority": "high", "created_by": 27, "sort_by": "updated_at", "sort_order": "desc", "limit": 25, "offset": 0 }
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (1-100, default: 25) | |
| filter | No | Advanced raw filter object (Strapi-style query keys, e.g. title_contains, created_at_gte, created_by, test_plan_folder, release) | |
| offset | No | Number of results to skip (default: 0) | |
| status | No | Filter by status: 0/"draft", 1/"ready", 2/"finished", 3/"finished_with_failures" | |
| release | No | Filter by release ID or release title | |
| sort_by | No | Sort field (default: updated_at) | updated_at |
| archived | No | Filter by archived state | |
| priority | No | Filter by priority: 0/"low", 1/"normal", 2/"high" | |
| created_by | No | Filter by creator user ID | |
| project_id | No | Project ID (uses TC_DEFAULT_PROJECT env var if not specified) | |
| sort_order | No | Sort order (default: desc) | desc |
| end_date_to | No | Filter by end_date <= this date (YYYY-MM-DD) | |
| last_run_to | No | Filter by last_run <= this ISO date/time | |
| created_at_to | No | Filter by created_at <= this ISO date/time | |
| end_date_from | No | Filter by end_date >= this date (YYYY-MM-DD) | |
| last_run_from | No | Filter by last_run >= this ISO date/time | |
| start_date_to | No | Filter by start_date <= this date (YYYY-MM-DD) | |
| updated_at_to | No | Filter by updated_at <= this ISO date/time | |
| title_contains | No | Filter plans whose title contains this string | |
| created_at_from | No | Filter by created_at >= this ISO date/time | |
| start_date_from | No | Filter by start_date >= this date (YYYY-MM-DD) | |
| updated_at_from | No | Filter by updated_at >= this ISO date/time | |
| test_plan_folder | No | Filter by test plan folder ID or folder title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It lists filters and provides an example but does not disclose behavioral traits such as read-only nature, authorization requirements, rate limits, or error behavior. The example and filter details add some transparency, but there is room for improvement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose sentence, a bulleted filter list, and a JSON example. While slightly verbose at around 150 words, every sentence contributes meaning. It could be a bit more concise without losing 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 23 parameters (all optional), no output schema, and no annotations, the description covers the filter parameters thoroughly and includes an example. However, it lacks explanation of the return format or behavior when no results are found. The tool is a list operation, so return structure is important context missing here.
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 100%, so the baseline is 3. The description adds a brief listing of filters and an example, which provides some additional context but largely mirrors the schema descriptions. The value added is modest.
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', the resource 'test plans', and the context 'from a TestCollab project'. It distinguishes from siblings like list_suites and list_test_cases by being specific to test plans with filtering, sorting, and pagination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions optional filtering, sorting, and pagination, and provides an example. However, it does not explicitly state when to use this tool versus alternatives like get_test_plan for a single plan or create_test_plan for creating. The usage context is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_suiteA
Move a test suite to a different parent suite, or to root level. Tip: Call get_project_context first to see the current suite tree.
Required: id (suite ID), parent (new parent ID, title, or null for root) Optional: project_id
Examples: Move under a parent: { "id": 10, "parent": "Authentication" } Move to root level: { "id": 10, "parent": null }
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Suite ID to move (required) | |
| parent | Yes | New parent suite ID, title, or null to move to root level (required) | |
| project_id | No | Project ID (optional if TC_DEFAULT_PROJECT is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks behavioral details beyond the move action. With no annotations, it should disclose effects on child suites, permissions needed, validation behavior, and whether the operation is reversible or idempotent.
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: a one-line action, a tip, then parameter list with clear required/optional labels and two illustrative examples. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers the essential information needed to call the tool correctly (params, examples, tip). It falls slightly short on behavioral transparency, but is otherwise 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?
Schema description coverage is 100%, but the description adds value with examples showing that 'parent' can be a suite title (string) or null. This clarifies usage beyond the schema's type union.
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 'Move' and the resource 'test suite', with specific scope to 'a different parent suite, or to root level'. This distinguishes it from siblings like create_suite, delete_suite, and reorder_suites.
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 practical usage tip ('Call get_project_context first') and explicitly lists required and optional parameters with examples. However, it does not explicitly state when not to use this tool or mention alternatives beyond the tip.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_suitesA
Set the sort order of sibling suites under a given parent. Tip: Call get_project_context or list_suites first to see current suite IDs and order.
Required: parent (parent suite ID, title, or null for root), suite_ids (ordered array of suite IDs) Optional: project_id
Example - reorder root-level suites: { "parent": null, "suite_ids": [5, 3, 8, 1] }
Example - reorder children of "Authentication": { "parent": "Authentication", "suite_ids": [12, 10, 15] }
| Name | Required | Description | Default |
|---|---|---|---|
| parent | Yes | Parent suite ID, title, or null for root-level suites (required) | |
| suite_ids | Yes | Ordered array of suite IDs representing the desired sort order (required) | |
| project_id | No | Project ID (optional if TC_DEFAULT_PROJECT is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It specifies the required parameters and gives examples, but it does not disclose any behavioral traits such as authorization requirements, side effects, or what happens if invalid IDs are provided. The description is clear enough for a straightforward set operation, but lacks deeper behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of a single-line purpose statement, a brief tip, a list of required/optional parameters, and two examples. Every sentence adds value, and there is no redundant or extraneous 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 low complexity (3 parameters, no nested objects) and no output schema, the description is largely complete. It covers the purpose, usage guidance, parameter semantics, and examples. However, it does not mention the return value (e.g., a success indicator), which would be beneficial for an operation that modifies data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all three parameters (100% coverage). The description adds value by repeating the required parameters, clarifying that 'parent' can be null for root or a string title, and providing concrete examples that demonstrate how to pass the parameters. This aids interpretation beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Set the sort order of sibling suites under a given parent.' It uses a specific verb ('Set') and resource ('sort order of sibling suites'), distinguishing it from sibling tools like move_suite (which changes parent) and list_suites (which reads).
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 helpful tip to call get_project_context or list_suites first to see current suite IDs, guiding when to use this tool. It also includes examples that clarify usage. However, it does not explicitly state when not to use the tool (e.g., if the goal is to move suites to a different parent, use move_suite instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_resultsA
Report a structured list of results for the caller's assigned executions in a plan. Defaults to the latest run; configuration_id selects matrix executions. Optionally set plan custom_fields and mark omitted assigned executions skipped after all supplied results succeed. Records MCP provenance; no report-file parsing, auto-create or builds.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No | Run to report; defaults to the latest run, as tc report does | |
| results | Yes | ||
| project_id | No | Project ID; falls back to the transport's default project | |
| skip_missing | No | Mark the caller's assigned executions omitted from results as skipped; only after all supplied results succeed | |
| test_plan_id | Yes | ||
| custom_fields | No | Test-plan field values in API format; other existing values are preserved |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose mutations: plan custom_fields are written ('other existing values are preserved' is in schema, not description), omitted assigned executions can be marked skipped, and 'only after all supplied results succeed' signals partial-failure ordering. It also rules out adjacent behaviors ('no report-file parsing, auto-create or builds') and mentions MCP provenance recording. Remaining gaps are permissions/auth and re-report overwrite semantics.
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?
Three tight sentences with the core action front-loaded and constraints packed into semicolon clauses; little waste. The run-on 'Defaults to the latest run; configuration_id selects matrix executions' slightly compresses two unrelated facts into one line, but nothing is filler.
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 6-parameter mutation tool with no annotations and no output schema, the description covers scope, defaults, and skip semantics reasonably well. It stops short of telling the agent what a call returns (counts, per-result status, error shape) and whether re-reporting the same case overwrites prior results, both of which matter given there is no output schema to fall back on.
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 67%, so the schema already documents most parameters (run_id default, skip_missing, custom_fields preservation, configuration_id). The description mostly restates those and adds only the matrix-execution framing for configuration_id, which is confusingly stated as if top-level when it is actually nested in each result item.
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?
States a specific verb+resource ('Report a structured list of results') scoped to 'the caller's assigned executions in a plan', which implicitly distinguishes it from the singular sibling report_test_case_result. It does not name that sibling explicitly, so the differentiation rests on the agent noticing 'list' vs. one-case reporting.
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 scope ('caller's assigned executions') and defaults ('Defaults to the latest run; configuration_id selects matrix executions') give useful context for when this applies. However, it never states the exclusion the siblings demand: when to call this batch tool versus report_test_case_result, or what preconditions (plan assignment) must hold before calling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_test_case_resultA
Report one executed_test_case_id in a run, with a status system name (custom statuses supported), comment, additional time in milliseconds, step_results or dataset_results by dataset ID and zero-based row/step indexes. Up to 10 attachments across the call, including step and row files. file_path: stdio only, 10 MB/file. file_name plus content_base64: 1 MB decoded/file. The API token determines the executor.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| status | Yes | Active status system name, including custom statuses; see get_test_plan_cases.statuses | |
| comment | No | ||
| project_id | No | Project ID; falls back to the transport's default project | |
| time_taken | No | Additional execution time in milliseconds | |
| attachments | No | Up to 10 files total, including step and dataset row attachments. file_path: stdio only, max 10 MB. file_name + content_base64: max 1 MB decoded per file | |
| step_results | No | ||
| dataset_results | No | Results by dataset ID and zero-based row/step indexes from get_test_plan_cases. Unreported entries are preserved. The case status must rank at least as high as every row status. Files count toward the 10-file call limit | |
| executed_test_case_id | Yes | Execution ID returned by get_test_plan_cases; this is not a test case ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description still discloses meaningful behavior beyond structure: file_path is stdio-only, per-file size caps (10 MB path / 1 MB base64), a 10-file call-wide limit, the API token determining the executor, and that unreported dataset entries are preserved. It stops short of explaining what happens on a repeated report or how the response looks, but the disclosure load is solid.
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, front-loaded with the core action, and no filler. They are dense and pack many constraints, with the attachment limits partly duplicating the schema text, but nothing is wasted.
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 9-parameter mutation-style tool with no annotations and no output schema, the description covers attachment mechanics, executor identity, index sourcing, and the case-vs-row status ranking rule. Remaining gaps are the return value and repeat-report semantics, which are minor given the rest of the coverage.
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 67%, so the description needs to add value, and it does: status is an active status-system name with custom-status support, time_taken is 'additional' time in ms, and dataset_results keys off dataset ID plus zero-based row/step indexes from get_test_plan_cases. It largely restates the attachment limits already in the schema, which keeps it from a 5.
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 opens with a specific verb and resource ('Report one executed_test_case_id in a run') and clarifies that the ID is an execution ID, not a test case ID. It is distinguishable from most siblings, but never explicitly contrasts itself with the sibling report_results, so an agent must infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied through the attachment constraints and the note that step/dataset indexes come from get_test_plan_cases, which gives a hint about prerequisite calls. However, there is no explicit statement of when to use this rather than report_results, nor any when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_suiteA
Update an existing test suite in TestCollab. Only provided fields will be updated.
Required: id (suite ID) Optional: project_id, title, description
Note: To move a suite to a different parent, use the move_suite tool instead.
Example: { "id": 42, "title": "Renamed Suite", "description": "Updated description" }
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Suite ID to update (required) | |
| title | No | New suite title | |
| project_id | No | Project ID (optional if TC_DEFAULT_PROJECT is set) | |
| description | No | New suite description (null to clear) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that only provided fields are updated (partial update behavior). Provides an example. However, without annotations, it does not mention any side effects, permissions, or error handling. Still, the key behavioral trait is covered.
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?
Three concise sentences plus an example. No wasted words. Important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers input well but omits return value and error behavior. With no output schema and no annotations, the description could be more complete by stating what is returned (e.g., the updated suite object). Adequate but not outstanding.
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 100%, so baseline is 3. The description adds the partial update concept and the move_suite distinction but does not significantly enhance parameter understanding beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates an existing test suite, with the specific verb 'update' and resource 'test suite'. It distinguishes from siblings like move_suite by explicitly directing the user to a different tool for moving suites.
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?
Provides explicit guidance on when to use this tool: to update a suite, and when not to: to move a suite, directing to move_suite. Lists required and optional parameters, including the note about project_id being optional if TC_DEFAULT_PROJECT is set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_test_caseA
Update an existing test case in TestCollab. Only provided fields will be updated. Tip: Call get_project_context first to resolve suite/tag/custom field names to IDs. Tip: If you need existing steps (e.g., to fill missing expected results), call get_test_case first and then use steps_patch.
Required: id (test case ID)
Optional fields:
title: New title
suite: Move to different suite
description: New description (HTML)
priority: 0 (Low), 1 (Normal), 2 (High)
steps: Replaces all existing steps
steps_patch: Patch steps by step number (1-based) without replacing all steps
tags: Replaces all existing tags
requirements: Replaces all existing requirements
custom_fields: Update specific custom fields
Example: { "id": 1712, "title": "Updated login test", "priority": 2 }
Example - patch a single step: { "id": 1714, "steps_patch": [ { "step_number": 1, "expected_result": "Appropriate expected result" } ] }
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Test case ID to update (required) | |
| tags | No | Replace tags with these IDs or names | |
| steps | No | Replace all steps | |
| suite | No | Move to a different suite by ID or title (null to remove) | |
| title | No | New test case title | |
| priority | No | New priority: 0=Low, 1=Normal, 2=High | |
| project_id | No | Project ID (optional if default is set) | |
| attachments | No | Replace attachments with these file IDs | |
| description | No | New description (HTML supported) | |
| steps_patch | No | Patch steps by step number (1-based) without replacing all steps | |
| requirements | No | Replace requirements with these IDs or names | |
| custom_fields | No | Update custom field values (id optional if name provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It explains partial update semantics and the behavior of steps_patch (patch by step number without replacing all steps). Examples illustrate usage. However, it does not describe return values, error scenarios, or auth requirements, which would improve 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 fairly long but well-structured: purpose sentence, tips, field list, and examples. Every sentence adds value, but it could be slightly more compact. However, given the complexity, it is appropriately sized.
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 12 parameters, nested objects, and no output schema, the description is comprehensive. It covers all fields, includes usage examples, and provides integration tips with other tools. It is sufficient for an agent to correctly invoke the tool without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant value: it organizes fields, clarifies priority values (0=Low, etc.), explains the difference between steps and steps_patch, and provides examples. This helps the agent select and fill parameters 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 clearly states the action ('Update'), resource ('test case'), and scope ('in TestCollab'). It also explicitly says only provided fields will be updated, which distinguishes it from full-replace operations. Sibling tools like create_test_case and get_test_case are different in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit tips: call get_project_context to resolve IDs, and call get_test_case to get existing steps for patching. This guides the agent on prerequisites and alternatives. It also lists required and optional fields, making usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_test_planA
Update an existing test plan in TestCollab.
Required:
id (test plan ID)
All other fields are optional and only provided fields are updated.
Fields:
title
description (null to clear)
priority: 0/1/2 or low/normal/high
status: 0/1/2/3 or draft/ready/finished/finished_with_failures
test_plan_folder: ID/title/null
release: ID/title/null
start_date, end_date (null to clear)
archived
custom_fields (null/[] to clear)
assignee (single-user convenience)
assignment (advanced assignment payload)
Example: { "id": 812, "title": "Release 3.0 Regression", "status": "ready", "test_plan_folder": "Mobile", "assignee": "me" }
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Test plan ID to update (required) | |
| title | No | New test plan title | |
| status | No | Status: 0/1/2/3 or "draft"/"ready"/"finished"/"finished_with_failures" | |
| release | No | Release ID or title (null to clear) | |
| archived | No | Archive/unarchive this test plan | |
| assignee | No | Convenience field to assign plan to one user (user ID, "me", name, username, or email) | |
| end_date | No | Planned end date (YYYY-MM-DD, null to clear) | |
| priority | No | Priority: 0/1/2 or "low"/"normal"/"high" | |
| assignment | No | Assignment payload to execute after update | |
| project_id | No | Project ID (optional if TC_DEFAULT_PROJECT is set) | |
| start_date | No | Planned start date (YYYY-MM-DD, null to clear) | |
| description | No | New test plan description (HTML supported, null to clear) | |
| custom_fields | No | Array of test plan custom field values (null/[] to clear) | |
| test_plan_folder | No | Test plan folder ID or title (null to place at root) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It discloses that only provided fields are updated (partial update), supports null to clear fields, and lists possible values for enums. However, it doesn't mention authorization, side effects, rate limits, or what happens on conflict. Given the tool's complexity (14 params, nested objects), the description is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a clear introductory sentence, a required field note, a block listing optional fields with explanations, and an example. Each sentence adds value, and the length is appropriate for the number of parameters. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers most important aspects: required and optional fields, null behavior, example usage. However, it lacks explicit mention of the return value (output) upon update. With no output schema, the description should ideally state what is returned. Despite this, the description is fairly complete for a complex 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 100%, so baseline is 3. The description adds value by summarizing fields, explaining null behavior, and providing a concrete example. It also clarifies convenience fields like assignee and assignment. This goes beyond the raw 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 'Update an existing test plan in TestCollab.' This distinguishes it from sibling tools like create_test_plan, get_test_plan, list_test_plans, and delete_test_plan. The verb 'update' and resource 'test plan' 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 specifies that 'id' is required and that 'all other fields are optional and only provided fields are updated.' This implies partial update behavior and hints at when to use this tool (modify existing plan). While it doesn't explicitly state alternatives for creating or reading, the sibling tool names provide enough context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.4- Changed
create_test_plan3 fields changed- added
Input schema / properties / override_assigneesAdded value: +{ + "default": false, + "description": "Override inherited default assignees with the supplied assignment; false keeps defaults and fills unassigned cases", + "type": "boolean" +} - added
Input schema / properties / test_cases / properties / tag_idAdded value: +{ + "description": "Project tag ID to select cases; use tag_id or tag_name", + "exclusiveMinimum": 0, + "type": "integer" +} - added
Input schema / properties / test_cases / properties / tag_nameAdded value: +{ + "description": "Exact project tag name to select cases; use tag_id or tag_name", + "minLength": 1, + "type": "string" +}
- Added
get_test_plan_cases - Added
report_results - Added
report_test_case_result
17 tool updates
v1.0.0- First observed
create_suite - First observed
create_test_case - First observed
create_test_plan - First observed
delete_suite - First observed
delete_test_plan - First observed
get_project_context - First observed
get_suite - First observed
get_test_case - First observed
get_test_plan - First observed
list_suites - First observed
list_test_cases - First observed
list_test_plans - First observed
move_suite - First observed
reorder_suites - First observed
update_suite - First observed
update_test_case - First observed
update_test_plan
TDQS
Scored across 20 tools
Most tools have clearly distinct resource/action targets, such as suite CRUD versus plan CRUD versus case read/write. The main ambiguity is between report_test_case_result and report_results, which both report execution results but at different granularity; descriptions help, though an agent could still hesitate between them.
Tool names consistently use snake_case with a verb_noun pattern: get_test_case, create_test_plan, update_suite, delete_suite, move_suite, reorder_suites, report_results, and get_project_context. Singular/plural variation follows the operation (get_suite vs list_suites), which is predictable and readable.
Twenty tools is somewhat heavy but reasonable for a test-management surface spanning cases, plans, suites, execution reporting, and project context. Each tool broadly earns its place, though the two reporting tools add some redundancy.
Suite lifecycle coverage is strong, and plans and cases have substantial create/read/update coverage. However, test cases lack a delete operation, and there is no clear tool for adding or removing cases from an existing plan after creation, which are notable lifecycle gaps.
Maintenance
Related MCP Connectors
Create and manage test cases, test runs and results in Testiny from your AI assistant.
Direct access to Cypress tests results and accessibility reports in your AI workflow.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Run, debug, and triage tests from your IDE using natural language, no dashboard switching, no manual data transfers. The TestMu AI (formerly LambdaTest) MCP Server is a single remote server exposing four tool suites: HyperExecute — analyze your project, generate YAML configs and test runner commands, then monitor jobs and sessions. Automation — pull a TestID's details plus command, network, and console logs into one chat for instant root-cause analysis. Includes mobile app upload. SmartUI — explain pixel, layout, DOM, and perceptual changes in a visual regression run, with context-aware React/HTML/CSS fixes. Accessibility — audit any public URL or a local React app against WCAG and get ready-to-apply remediation steps. Connects over https://mcp.lambdatest.com/mcp using OAuth 2.1 — no API keys in your config. One-click install in Cursor; works with Claude, GitHub Copilot, Cline, and any MCP client. Tests execute on the TestMu AI cloud: 3,000+ browsers and 10,000+ real devices.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with TestRail test management systems through comprehensive API integration. Supports retrieving and updating test cases, projects, suites, runs, and results, plus adding attachments and managing test data through natural language commands.1814 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Testmo test management platform for creating, reading, updating, and deleting test cases, managing folders, and organizing test runs through natural language.4MIT
- AlicenseAqualityCmaintenanceConnect your AI coding assistant to TestRail to manage test cases, runs, results, and more directly from VS Code, Cursor, Claude Desktop, or Claude Code.501MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with TestRail test management system, supporting full CRUD operations on projects, suites, sections, test cases, runs, results, plans, and milestones.3561 npm1MIT