Skip to main content
Glama

PyPI Version PyPI Python Version PyPI Downloads GitHub License

Allure TestOps MCP Server

Lucius is a specialized Model Context Protocol (MCP) server for Allure TestOps, built with FastMCP and Starlette.

🎯 Motivation

Allure TestOps is a powerful tool with a huge API. When you're using an AI agent to manage your tests, it can easily get lost in the details or fail because of a small technical mistake.

Lucius makes this easier by giving your AI tools that are simple to use and hard to break:

  • Clear Tools: Every tool is designed for a specific task, like "finding a test case" or "updating a launch".

  • Helpful Errors: If an AI makes a mistake, Lucius doesn't just return a codeβ€”it provides an "Agent Hint" that explains exactly what went wrong and how to fix it.

  • Solid Foundation: We follow a clean "Thin Tool" structure, meaning the logic is consistent and easy for both humans and AI to follow.

Related MCP server: Allure TestOps MCP

πŸ› οΈ Supported Tools

See the full reference in Tool Reference.

Tool Category

Description

All Tools

Test Case Mgmt

Full lifecycle for test documentation.

create_test_case, update_test_case, delete_test_case, delete_archived_test_cases, get_test_case_details, get_test_case_custom_fields

Automation Generation

Generate framework-specific code from existing test cases.

generate_test_code

Search & Discovery

Advanced search and project metadata discovery.

list_test_cases, search_test_cases, get_custom_fields, list_integrations, get_project

Shared Steps

Create and manage reusable step sequences.

create_shared_step, list_shared_steps, update_shared_step, delete_shared_step, delete_archived_shared_steps, link_shared_step, unlink_shared_step

Test Layers

Manage test taxonomy and auto-mapping schemas.

list_test_layers, create_test_layer, update_test_layer, delete_test_layer, list_test_layer_schemas, create_test_layer_schema, update_test_layer_schema, delete_test_layer_schema

Test Hierarchy

Organize suites and assign tests in tree paths.

create_test_suite, list_test_suites, assign_test_cases_to_suite, delete_test_suite

Custom Fields

Project-level management of custom field values.

list_custom_field_values, create_custom_field_value, update_custom_field_value, delete_custom_field_value, delete_unused_custom_fields

Launch Management

Manage launches, result uploads, manual execution, reruns, and attachments.

create_launch, list_launches, get_launch, list_launch_test_results, upload_test_results, rerun_test_results_manually, start_manual_test_session, submit_manual_test_results, add_test_result_attachment, add_test_step_attachment

Test Result Management

Inspect one exact TestOps result and prepare verified evidence downloads.

get_test_result, prepare_attachment_download

Test Plans

Manage test plans and their content.

create_test_plan, update_test_plan, delete_test_plan, list_test_plans, manage_test_plan_content

Defect Mgmt

Track defects, linkage, and automation rules.

create_defect, get_defect, update_defect, delete_defect, list_defects, link_defect_to_test_case, unlink_issue_from_test_case, list_defect_test_cases, create_defect_matcher, list_defect_matchers, update_defect_matcher, delete_defect_matcher

πŸš€ Quick Start

  1. Install uv: curl -LsSf https://astral.sh/uv/install.sh | sh

  2. Setup Credentials: Create a .env file with the variables below, or save CLI auth with lucius auth.

  3. Run Server: uv run start

Basic .env for Quick Start

Variable

Description

Example

ALLURE_ENDPOINT

Allure TestOps base URL

https://example.testops.cloud

ALLURE_PROJECT_ID

Default Allure project ID (optional for get_project; required by project-scoped tools)

123

ALLURE_API_TOKEN

Allure API token

<your_api_token>

MCP_MODE

MCP transport mode for Lucius runtime

stdio

πŸ”Œ Claude Desktop Integration

The easiest way to use Lucius in Claude Desktop is via the .mcpb bundle:

  1. Download the latest lucius-mcp.mcpb from Releases.

  2. Open with Claude Desktop.

  3. Configure your Allure credentials in the UI.

πŸ’» Claude Code Integration

To add Lucius to Claude Code, use the following command from within your project directory:

claude mcp add --transport stdio --scope project \
  --env ALLURE_ENDPOINT=https://example.testops.cloud \
  --env ALLURE_PROJECT_ID=123 \
  --env ALLURE_API_TOKEN=<your_api_token> \
  --env MCP_MODE=stdio \
  testops-mcp -- uvx --from lucius-mcp --refresh start

Project-scoped text config example (.mcp.json):

{
  "mcpServers": {
    "testops-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "lucius-mcp",
        "--refresh",
        "start"
      ],
      "env": {
        "ALLURE_ENDPOINT": "https://example.testops.cloud",
        "ALLURE_PROJECT_ID": "123",
        "ALLURE_API_TOKEN": "<your_api_token>",
        "MCP_MODE": "stdio"
      }
    }
  }
}

🧠 Codex Integration

To add Lucius to Codex (CLI or IDE extension), use:

codex mcp add testops-mcp \
  --env ALLURE_ENDPOINT=https://example.testops.cloud \
  --env ALLURE_PROJECT_ID=123 \
  --env ALLURE_API_TOKEN=<your_api_token> \
  --env MCP_MODE=stdio \
  -- uvx --from lucius-mcp --refresh start

Text config example (~/.codex/config.toml or project .codex/config.toml):

[mcp_servers.testops-mcp]
command = "uvx"
args = ["--from", "lucius-mcp", "--refresh", "start"]

[mcp_servers.testops-mcp.env]
ALLURE_ENDPOINT = "https://example.testops.cloud"
ALLURE_PROJECT_ID = "123"
ALLURE_API_TOKEN = "<your_api_token>"
MCP_MODE = "stdio"

For detailed setup, including Claude Desktop (MCPB) integration, see Setup Guide.

🐍 Supported Python versions

Lucius supports Python 3.10 through 3.14 for runtime use. The generated MCPB manifests and the representative Nuitka CLI compiler matrix validate the same range. Python 3.9 remains unsupported because the pinned starlette==1.3.1 requires Python 3.10 or newer; Python 3.15 is deferred because the current native dependency set does not build for it.

πŸ’» Command-Line Interface (CLI)

Lucius also provides a universal CLI entry point for direct tool execution from the command line:

# List available actions for an entity
uv run lucius test_case

# Execute an action
uv run lucius test_case get --args '{"test_case_id": 1234}'

# Show help for a specific entity/action
uv run lucius test_case get --help

# Save reusable CLI auth
uv run lucius auth --url https://example.testops.cloud --token <your_api_token> --project 123
uv run lucius auth status
uv run lucius auth clear

CLI Features:

  • 🎯 Type-safe entity/action invocation with validation

  • πŸ” Optional persistent CLI auth with native per-user config storage

  • πŸ“Š Multiple output formats (JSON, table, csv, plain)

  • πŸ” Per-action help with parameters and examples

  • πŸ›‘οΈ Clean error messages with guidance

  • πŸ“¦ Standalone binaries for Linux, macOS, and Windows

CLI auth precedence is:

  1. Explicit tool args such as api_token or project_id

  2. Environment variables

  3. Saved CLI auth config from uv run lucius auth

  4. Defaults

Saved CLI auth uses native config locations:

  • Linux/Unix: $XDG_CONFIG_HOME/lucius/auth.json or ~/.config/lucius/auth.json

  • macOS: ~/Library/Application Support/lucius/auth.json unless XDG overrides are explicitly set

  • Windows: %LOCALAPPDATA%\lucius\auth.json

For full CLI documentation and installation instructions, see CLI Guide.

πŸ“‘ Telemetry

Lucius collects privacy-preserving usage telemetry to improve tool quality. Telemetry is enabled by default and sends metadata to https://stats.ostanin.me, an endpoint operated by the project owner (no third party has access to this endpoint).

If this is acceptable in your environment, staying opted in helps improve Lucius over time. If you want to opt out, set TELEMETRY_ENABLED=false in your environment.

No API tokens, test content, or tool arguments are sent.

See Telemetry & Privacy for the full data dictionary and telemetry behavior details.

πŸ“‚ Documentation

Full documentation is available in the docs/ folder:

🀝 Contributing

Contributions are welcome! Please see the Contribution Guidelines and the Development Guide for more details.

Available Tools

69 tools
add_test_result_attachmentAdd Test Result AttachmentC

Upload evidence to a manual test result.

ParametersJSON Schema
NameRequiredDescriptionDefault
attachmentYesAttachment payload using the repo-standard pattern: {name, content_type, content? | url?}.
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.
test_result_idYesManual test result ID (required).

Output Schema

ParametersJSON Schema
NameRequiredDescription
target_idNo
file_namesNo
status_codeNo
target_kindNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=false, destructiveHint=false, the description confirms a write operation ('Upload'). However, it adds no additional behavioral context such as idempotency, side effects, or authentication requirements. Annotations are minimal, and the description does not compensate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. However, it could be slightly expanded to include useful context without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 4 parameters, nested objects, and an output schema, the description is minimal. It does not explain the attachment payload pattern, response format, or any constraints. More context is needed for an AI agent to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds nothing beyond the schema's parameter descriptions. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Upload evidence to a manual test result' clearly states the action (upload) and the target resource (evidence to manual test result). It distinguishes from sibling tools like 'add_test_step_attachment' by specifying 'test result' rather than 'test step', but lacks explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'add_test_step_attachment' or 'upload_test_results'. There is no mention of prerequisites, when not to use it, or context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_test_step_attachmentAdd Test Step AttachmentB

Upload evidence to a manual attachment step inside a test result.

ParametersJSON Schema
NameRequiredDescriptionDefault
step_nameNoOptional attachment-step name to resolve within the manual test result.
attachmentYesAttachment payload using the repo-standard pattern: {name, content_type, content? | url?}.
project_idNoOptional override for the default Project ID.
step_indexNoOptional zero-based manual step index to resolve within the test result execution.
fixture_nameNoOptional fixture name used only for the legacy fixture-step fallback.
fixture_typeNoOptional fixture type hint for the legacy fixture-step fallback: 'before' or 'after'.
attachment_idNoOptional explicit manual step attachment ID resolved from the test result execution.
output_formatNoOutput format: 'json' (default) or 'plain'.
test_result_idYesParent test result ID (required).
fixture_result_idNoOptional explicit fixture result ID for legacy fixture-step fallback.

Output Schema

ParametersJSON Schema
NameRequiredDescription
target_idNo
file_namesNo
status_codeNo
target_kindNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a write operation (readOnlyHint=false). Description adds that it targets 'manual attachment steps', but doesn't disclose additional behavioral traits like error handling or step resolution logic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with action and target. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite high parameter count (10) and complex step resolution logic (step_name, step_index, attachment_id, fixture fallback), the description provides no explanation of how these parameters interact or the expected attachment payload format. Output schema exists but doesn't compensate for missing usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema describes all parameters. The description adds no extra meaning beyond the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Upload evidence') and the target ('manual attachment step inside a test result'). It distinguishes from similar tools like 'add_test_result_attachment' by specifying step-level attachment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., 'add_test_result_attachment'). No mention of prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assign_test_cases_to_suiteAssign Test Cases To SuiteA
DestructiveIdempotent

Assign test cases to a suite path in hierarchy.

⚠️ CAUTION: Destructive. Reassigning test cases changes their hierarchy location.

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_idNoTarget hierarchy tree ID. If omitted, default project tree is used.
suite_idYesTarget suite/group node ID for assignment.
project_idNoAllure TestOps project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.
test_case_idsYesList of test case IDs to assign to the suite.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tree_idNo
suite_idNo
test_case_idsNo
assigned_countNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already include destructiveHint=true. The description adds context by stating 'reassigning test cases changes their hierarchy location,' which is helpful but not extensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words: first states purpose, second provides a crucial caution. Efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of annotations, full schema coverage, and an output schema, the description is adequate. It covers the destructive nature and the core function, though it could expand on hierarchy implications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage with descriptions for all 5 parameters. The description does not add additional semantic meaning beyond what the schema provides, so baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action (assign) and resources (test cases to a suite path). Distinguishes itself from sibling tools like create_test_case or manage_test_plan_content by focusing on hierarchical assignment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool over alternatives. The caution about destructiveness hints at a downside but does not provide decision criteria or compare with related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_launchClose LaunchA
DestructiveIdempotent

Close a launch and return updated launch details.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_tokenNoOptional runtime API token override.
launch_idYesLaunch ID (required).
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo
closedNo
externalNo
autocloseNo
operationNo
project_idNo
created_dateNo
new_defects_countNo
last_modified_dateNo
known_defects_countNo
manual_execution_guidanceNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds that it returns updated launch details, providing extra context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the action and result. No extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although the tool has an output schema and annotated traits, the description lacks guidance on when to use it among sibling tools. It is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description does not add meaning beyond what the schema already provides. It meets the baseline but does not enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'close' and the resource 'launch', and it adds that it returns updated details, distinguishing it from related tools like delete_launch or reopen_launch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like delete_launch or reopen_launch. The description is minimal and does not provide context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_custom_field_valueCreate Custom Field ValueC

Create a new custom field value option.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new custom field value.
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.
custom_field_idNoProject-scoped custom field ID to create a value for.
custom_field_nameNoCustom field name to resolve when custom_field_id is not provided.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
custom_field_idNo
custom_field_nameNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate it's not read-only or destructive. The description adds no extra behavioral context, such as side effects or authorization needs, so it doesn't add value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short (one sentence), which is concise but lacks structure. It could be expanded with a brief sentence about usage context without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with 5 parameters and an output schema, the description is too minimal. It doesn't explain the purpose of the custom field value or how to specify the custom field (id vs name). Incomplete for an agent to use confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 does not add any parameter meaning beyond what the schema already provides (e.g., name, project_id, etc.).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'create' and the resource 'custom field value option', distinguishing it from sibling tools like update and delete. However, it could be more specific about the context (e.g., 'for a specific custom field').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like list_custom_field_values or update_custom_field_value. No prerequisites (e.g., need to specify custom_field_id or name) mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_defectCreate DefectA

Create a new defect in the current project.

Use this tool to register a known defect that can later be linked to failing test results through defect matchers (automation rules).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName / title of the defect
descriptionNoOptional markdown description
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo
descriptionNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a write operation (readOnlyHint=false, destructiveHint=false) align with 'create'. Description adds context about linking to test results but doesn't disclose missing details like duplicate handling or project scope. With annotations present, the description is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences front-load the purpose and provide usage context without unnecessary words. Efficient for a tool with few parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's core responsibility and usage context. With an output schema present, no need to detail return values. Sufficiently complete for a create operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so description adds no new parameter details beyond the schema. The description mentions 'known defect' but doesn't elaborate on parameters like name, description, or output_format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a new defect in the current project and explains its purpose for linking to failing test results via defect matchers. It distinguishes from sibling tools like update_defect, list_defects, and create_defect_matcher.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear usage scenario (registering a defect for future linking) without explicitly stating when not to use or listing alternatives. The context is sufficient given the sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_defect_matcherCreate Defect MatcherA

Create a defect matcher (automation rule) for a defect.

Matchers automatically link future failing test results to a defect when the test failure's error message or stack trace matches the provided regex patterns.

At least one of message_regex or trace_regex must be supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable matcher rule name
defect_idYesID of the parent defect
trace_regexNoRegex to match against stack traces
message_regexNoRegex to match against error messages
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
defect_idNo
trace_regexNo
message_regexNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate the tool is not read-only, not idempotent, and not destructive. The description adds behavioral context beyond annotations by explaining how matchers work (matching error messages/stack traces) and the requirement for at least one regex, which is a behavioral constraint not captured in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of three concise sentences that are front-loaded: first states the main action, second explains the mechanism, and third gives a key constraint. Every sentence adds essential information with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, 2 required, no enums) and the presence of an output schema, the description adequately explains the tool's function and key constraints. It covers the core behavior and the important 'at least one' rule, which is sufficient for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds value by explicitly stating the business rule that at least one of message_regex or trace_regex must be supplied, and by providing context on how these regex patterns are used (matching error messages or stack traces).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create' and the resource 'defect matcher', and explains its purpose as an automation rule that links future failing test results to a defect based on regex patterns. This distinguishes it from siblings like create_defect or update_defect_matcher.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: to set up automatic linking of test failures to a defect. It also explicitly states the constraint that at least one regex must be supplied. However, it does not explicitly mention alternatives or when not to use it, but the naming and sibling list make it clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_launchCreate LaunchB

Create a new launch in Allure TestOps.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLaunch name (required).
tagsNoOptional list of tags.
linksNoOptional list of external links (name, url, type).
issuesNoOptional list of issue dictionaries.
externalNoWhether the launch is external.
autocloseNoWhether the launch auto-closes.
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo
closedNo
externalNo
autocloseNo
operationNo
project_idNo
created_dateNo
new_defects_countNo
last_modified_dateNo
known_defects_countNo
manual_execution_guidanceNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not disclose any behavioral traits beyond the annotation flags (all false). It fails to mention side effects (e.g., whether a new launch affects existing test runs), required permissions, or the impact of optional parameters like `autoclose` or `external`. With no annotations providing additional context, the description leaves the agent underinformed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no wasted words. It clearly identifies the action and target, making it easy for an AI agent to quickly grasp the tool's primary function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters and an output schema, the description is too sparse. It does not explain what a 'launch' represents in Allure TestOps, how it relates to test cases or plans, or how the optional parameters affect behavior. The agent lacks context to use the tool effectively alongside the many sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides descriptions for all 8 parameters (100% coverage), so the description does not need to repeat them. However, the description adds no extra meaning beyond the schema, such as clarifying the relationship between parameters (e.g., how `tags`, `links`, and `issues` interact). A score of 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create') and the resource ('a new launch'), and specifies the system ('Allure TestOps'). It effectively distinguishes this tool from siblings like `delete_launch`, `close_launch`, and `reopen_launch` by indicating its purpose as creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., `upload_test_results` or `submit_manual_test_results`). It lacks any 'when-to-use' or 'when-not-to-use' context, and does not mention prerequisites or common scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_shared_stepCreate Shared StepC

Create a new reusable Shared Step.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the shared step (e.g., "Login as Admin").
stepsNoOptional list of steps. Each step is a dictionary with: - action (str): The step description (e.g., "Enter username"). - expected (str, optional): The expected result. - attachments (list[dict], optional): List of attachments containing: - content (str): Base64 encoded content. - name (str): Filename. - steps (list[dict], optional): Nested steps (recursive structure).
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo
project_idNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral context beyond what annotations already provide (readOnlyHint=false indicates creation). It does not disclose side effects, permissions, or output format, which is important for a creation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, but it is too terse for a tool with 4 parameters and a complex nested structure. Conciseness is achieved at the cost of completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and complex parameters, the description fails to provide sufficient context about the tool's role in test management or how it relates to siblings like link_shared_step. An agent would lack essential selection cues.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage with detailed explanations for each parameter. The description adds no additional meaning, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create') and resource ('reusable Shared Step'). It is specific but does not differentiate from siblings like update_shared_step or delete_shared_step beyond the verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., searching or updating shared steps). The description provides no context for selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_test_caseCreate Test CaseB

Create a new test case in Allure TestOps.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the test case.
tagsNoList of tag names.
stepsNoList of steps. Each step must be a dict with 'action' and 'expected' keys. Example: [{'action': 'Login', 'expected': 'Dashboard visible'}]
issuesNoOptional list of issue keys to link (e.g., ['PROJ-123']).
project_idNoOptional override for the default Project ID.
attachmentsNoList of attachments.Example Base64: [{'name': 's.png', 'content': '<base64>', 'content_type': 'image/png'}]Example URL: [{'name': 'report.pdf', 'url': 'http://example.com/report.pdf', 'content_type': 'application/pdf'}]
descriptionNoA markdown description of the test case.
custom_fieldsNoDictionary of custom field names and their values (string or list of strings).Example: {'Layer': 'UI', 'Components': ['Auth', 'DB']}
output_formatNoOutput format: 'json' (default) or 'plain'.
test_layer_idNoOptional test layer ID to assign (use list_test_layers to find IDs). If provided, the layer must exist in the project.
integration_idNoOptional integration ID for issue linking (use list_integrations to find IDs). Required when multiple integrations exist. Mutually exclusive with integration_name.
test_layer_nameNoOptional test layer name to assign (exact case-sensitive match). Mutually exclusive with test_layer_id.
integration_nameNoOptional integration name for issue linking (exact case-sensitive match). Required when multiple integrations exist. Mutually exclusive with integration_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo
issuesNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description adds no behavioral context beyond annotations. Annotations indicate readOnly=false, but no details on permissions, idempotency, or side effects. Description does not disclose any traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, efficiently front-loaded with verb and resource. However, could be slightly more informative given tool complexity, but still concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 13 parameters and availability of output schema, description covers only basic purpose. Lacks context on return value or action outcome, but output schema presumably covers return. Adequate but minimal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage, so baseline is 3. Description does not add semantic information for parameters beyond what schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Create' and resource 'test case' with location 'Allure TestOps'. It clearly distinguishes from sibling tools for other operations (e.g., update, delete) and other entities (e.g., defects, test suites).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. Does not mention prerequisites, context, or exclusions despite many sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_test_layerCreate Test LayerB

Create a new test layer in Allure TestOps.

Test layers define taxonomy for categorizing test cases. Common examples include 'Unit', 'Integration', 'E2E', 'UI', 'API', etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the test layer (e.g., 'Unit', 'Integration', 'E2E').
project_idNoAllure TestOps project ID to create the test layer in.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Minimal behavioral disclosure beyond creating a layer. Annotations are non-informative (no readOnly, idempotent, or destructive hints). Description does not state side effects, required permissions, or whether the layer is immediately usable. Context beyond schema is lacking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no fluff. First sentence states the action clearly; second provides context about what test layers are. Information is front-loaded and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adquately covers purpose and one parameter hint, but lacks details on when project_id is needed and output_format effects. Output schema exists, so return values are not required. Overall minimal but meets basic needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. The description reinforces the name parameter with examples but adds no additional meaning to project_id or output_format. Since schema already explains, description adds marginal value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool creates a test layer, defines what test layers are (taxonomy for categorizing test cases), and provides concrete examples ('Unit', 'Integration'). Distinguishes from sibling tools like update_test_layer and delete_test_layer by focusing on creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. Does not mention prerequisites (e.g., requires a project) or when not to use it. Implied usage only from the purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_test_layer_schemaCreate Test Layer SchemaA

Create a new test layer schema to map a custom field key to a test layer.

Test layer schemas define the mapping between custom field keys and test layers. This allows test cases with specific custom field values to be automatically assigned to the correct test layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesThe schema key (e.g., custom field name like 'layer' or 'test_layer').
project_idYesAllure TestOps project ID to create the schema in.
output_formatNoOutput format: 'json' (default) or 'plain'.
test_layer_idYesID of the test layer to link to this schema.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
keyNo
test_layer_idNo
test_layer_nameNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate the tool is not read-only, idempotent, or destructive. The description adds no further behavioral details (e.g., error handling, permissions, conflicts). With annotations present, the bar is lower, but description could still be more informative.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two paragraphs sum up the purpose and function without redundancy. Every sentence contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, no nested objects, existence of output schema), the description adequately explains the concept of test layer schemas and their role. It provides sufficient context for an agent to decide to use this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description repeats the general concept (mapping key to layer) but does not add specific parameter-level semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a new test layer schema that maps a custom field key to a test layer. It distinguishes from sibling tools like create_test_layer (which creates layers) and other schema tools (list, update, delete) by focusing on the creation of mappings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that schemas allow automatic assignment of test cases to layers based on custom fields, giving context for when to use this tool. However, it lacks explicit statements about when not to use it or alternatives (e.g., if schema already exists).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_test_planCreate Test PlanA

Create a new Test Plan in Allure TestOps.

This tool allows creating a Test Plan, which is a collection of Test Cases to be executed. You can define the content of the plan either by:

  1. Explicitly listing Test Case IDs (test_case_ids).

  2. Providing an AQL (Allure Query Language) filter (aql_filter).

  3. Both (explicit selection + dynamic filter).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the test plan
aql_filterNoAQL query to select test cases
output_formatNoOutput format: 'json' (default) or 'plain'.
test_case_idsNoList of Test Case IDs to include

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo
aql_filterNo
test_case_idsNo
test_case_urlsNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false, which are consistent with creating a non-destructive entity. The description adds behavioral context by explaining that the tool can create a plan using explicit IDs, an AQL filter, or both. This goes beyond the annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the primary action and resource. It efficiently covers purpose and methods without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the existence of an output schema, the description provides sufficient context: it identifies required parameter (name), explains optional parameters, and outlines the two content selection strategies. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the dual approaches (test_case_ids and aql_filter) and their combined use, enhancing understanding beyond the schema. Output_format is well-described in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create' and the resource 'Test Plan in Allure TestOps'. It differentiates from siblings like 'manage_test_plan_content' and 'update_test_plan' by focusing on creation, and explains the two primary methods for defining content (test_case_ids and aql_filter).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (to create a new test plan) and outlines the two content selection methods. It does not explicitly state when not to use it or name alternatives, but the context implies it is for creation only, which is clear from the purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_test_suiteCreate Test SuiteB

Create a new test suite node in the hierarchy tree.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSuite name to create in hierarchy.
tree_idNoTarget hierarchy tree ID. If omitted, default project tree is used.
project_idNoAllure TestOps project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.
parent_suite_idNoParent suite/group node ID for nested suite creation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
tree_idNo
parent_suite_idNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description does not need to restate. However, it adds the context of a hierarchy tree, which is helpful. But it doesn't disclose any additional behavioral traits like idempotency, handling of duplicate names, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear sentence with no extraneous words. It is concise and front-loaded. However, it could be slightly more informative without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters (1 required) and an output schema exists, the description is minimally adequate. It states the purpose but does not explain the hierarchy concept, return value, or error conditions. With an output schema, the agent can infer return format, but more context would help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the input schema already describes all parameters. The description does not add any extra meaning beyond what is in the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action ('Create'), the resource ('new test suite node'), and the context ('in the hierarchy tree'). It effectively distinguishes from sibling tools like list_test_suites and delete_test_suite.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., create_test_case, manage_test_plan_content). No exclusions or prerequisites mentioned. The description is purely functional without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_archived_shared_stepsDelete Archived Shared StepsA
DestructiveIdempotent

Permanently delete all archived shared steps in the current project.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be set to True to proceed.
project_idNoOptional Allure TestOps project ID override.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
actionNoRequested operation name.
deleted_countNo
requires_confirmationNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description's 'permanently delete' aligns. However, it does not elaborate on idempotency (idempotentHint=true) or other behavioral traits like potential data loss, so it adds limited value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with no wasted words, front-loading the action and resource for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With full schema coverage and an output schema, the description covers the core intent. It could mention the confirm parameter requirement for destructive operations, but overall it provides sufficient context for a bulk deletion tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description does not add extra meaning beyond what the schema provides, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (permanently delete), the resource (archived shared steps), and the scope (all in current project). This distinguishes it from sibling tools like delete_shared_step (which deletes a single step) and delete_archived_test_cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., delete_shared_step for individual deletion), nor does it mention prerequisites or contexts where it should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_archived_test_casesDelete Archived Test CasesA
DestructiveIdempotent

Permanently delete all archived/deleted test cases in the current project.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be set to True to proceed.
project_idNoOptional Allure TestOps project ID override.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
actionNoRequested operation name.
deleted_countNo
requires_confirmationNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds context by specifying the permanence and scope ('permanently delete all archived/deleted test cases'). It does not contradict annotations. However, it could warn about the lack of recovery or mention that the confirm parameter safeguards the action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the core action. No unnecessary words or information, making it highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple destructive bulk action, annotations (destructiveHint), input schema, and presence of an output schema, the description covers the essential behavioral and usage context. No gaps are apparent for this tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds no additional explanation for parameters. The schema already defines confirm, project_id, and output_format with descriptions. Baseline 3 is appropriate as the description does not enrich parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool permanently deletes all archived/deleted test cases within the current project. It uses a specific verb ('delete') and resource, distinguishing it from siblings like delete_test_case (single) or delete_archived_shared_steps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention that this is for bulk cleanup of archived items, nor does it exclude scenarios where delete_test_case is more appropriate. Sibling tools exist for single deletion, but no comparison is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_custom_field_valueDelete Custom Field ValueB
DestructiveIdempotent

Delete a custom field value. ⚠️ CAUTION: Destructive.

ParametersJSON Schema
NameRequiredDescriptionDefault
cfv_idYesCustom field value ID to delete.
confirmNoMust be set to True to proceed with deletion. Safety measure.
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.
custom_field_idNoProject-scoped custom field ID (optional, resolves by name if missing).
custom_field_nameNoCustom field name to resolve when custom_field_id is not provided.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
actionNoRequested operation name.
cfv_idNo
statusNo
requires_confirmationNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint=true and idempotentHint=true. The description adds a caution emoji but does not elaborate on behavior such as error handling, deletion consequences, or idempotency effects. It adds minimal beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (one sentence plus a caution line) and front-loaded. For a simple delete operation, this conciseness is appropriate, though it could include more context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 6 parameters and existence of output schema, the description is minimal. It does not explain post-deletion behavior or potential side effects. However, annotations cover the destructive nature, so it is moderately complete for a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The tool description does not add any additional semantic information about parameters beyond what is already in the schema, so baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair 'Delete a custom field value,' clearly identifying the action and object. Among sibling tools, it is distinct from create/update/list operations for custom field values.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., delete_unused_custom_fields or other delete tools). The description only states the action and a caution, lacking context for appropriate usage or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_defectDelete DefectA
DestructiveIdempotent

Permanently delete a defect and all its associated matchers.

This is a destructive operation. The confirm parameter must be set to true to actually perform the deletion.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSafety flag β€” must be set to true to confirm deletion
defect_idYesID of the defect to delete
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
statusNo
defect_idNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, and the description adds useful context: the operation is permanent and affects both the defect and associated matchers. There is no contradiction with annotations. The description does not cover all behavioral nuances (e.g., error handling), but it provides meaningful additional information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise at two sentences, with no wasted words. It front-loads the core action and immediately follows with the critical usage condition, making it efficient for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low tool complexity and comprehensive schema and annotations, the description is largely complete. It covers the destructive nature and the required confirmation flag. The presence of an output schema alleviates the need to explain return values, but a brief note on prerequisites or error cases would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the baseline is 3. The description emphasizes the importance of the 'confirm' parameter, which is already documented in the schema, but does not add new meaning for the other parameters ('defect_id' and 'output_format').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: permanently delete a defect and all its associated matchers. This is a specific verb+resource combination that distinguishes it from siblings like 'delete_defect_matcher' (only deletes a single matcher) and 'update_defect' (modifies instead of deletes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance on the required condition: the 'confirm' parameter must be set to 'true' to actually perform the deletion. However, it does not explicitly mention when not to use this tool or suggest alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_defect_matcherDelete Defect MatcherA
DestructiveIdempotent

Permanently delete a defect matcher (automation rule).

This is a destructive operation. The confirm parameter must be set to true to actually perform the deletion.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSafety flag β€” must be set to true to confirm deletion
matcher_idYesID of the matcher to delete
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
statusNo
matcher_idNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds clarity by explicitly stating it is destructive and explaining the confirm parameter as a safety net, which goes beyond the hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-loaded with the action and then the safety requirement. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a delete tool with annotations and output schema, the description covers the basic usage and safety flag. However, it omits what happens if the matcher_id is invalid or if confirm is false (e.g., error vs no-op), which could be important for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 each parameter. The description only mentions the confirm parameter, adding no new information beyond what is in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (permanently delete) and the resource (defect matcher). It distinguishes itself from sibling tools like create_defect_matcher, update_defect_matcher, and list_defect_matchers, and other deletion tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the destructive nature and the need to set 'confirm' to true, but it does not provide guidance on when to use this tool versus alternatives (e.g., disabling via update_defect_matcher) or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_launchDelete LaunchC
DestructiveIdempotent

Delete a launch by ID. ⚠️ CAUTION: Destructive.

ParametersJSON Schema
NameRequiredDescriptionDefault
launch_idYesLaunch ID to delete (required).
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
messageNo
launch_idNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds a caution about destructiveness, but annotations already declare destructiveHint=true. It does not disclose idempotency, return values, or consequences beyond what annotations provide. Minimal added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence with a caution symbol, very concise with no wasted words. However, it could be structured to highlight key points like idempotency or parameter hints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description does not mention return values (though output schema exists), optional parameters like project_id and output_format, or side effects beyond destructiveness. For a destructive tool with optional parameters, more context would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema describes all 3 parameters with 100% coverage. The description does not mention any parameters or add meaning beyond the schema, so baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a launch by ID', using a specific verb and resource. This distinguishes it from sibling tools like close_launch or delete_test_case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance provided on when to use this tool versus alternatives, prerequisites, or whether to close the launch first. The description is silent on usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_shared_stepDelete Shared StepA
DestructiveIdempotent

Delete a shared step from the library. ⚠️ CAUTION: Destructive.

⚠️ CAUTION: If this shared step is used by test cases, deleting it will break those references.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be True to proceed (safety measure).
step_idYesThe shared step ID to delete (required).
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
actionNoRequested operation name.
statusNo
step_idNo
requires_confirmationNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveness, but the description adds specific warnings about breaking references in test cases. This provides valuable behavioral context beyond what annotations convey, without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences and two caution notices. It is front-loaded with purpose and wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and full parameter descriptions, the description sufficiently covers purpose and key side effects. It is complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description does not need to add parameter details. It does not provide additional meaning beyond the schema, earning a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Delete', the resource 'shared step', and the location 'library'. It distinguishes the tool from siblings like 'delete_test_case' and 'delete_archived_shared_steps'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context for when to use (to delete a shared step) but lacks explicit guidance on when not to use it or alternatives. The caution about breaking references implies careful usage but no direct comparison to other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_test_caseDelete Test CaseA
DestructiveIdempotent

Archive an obsolete test case. ⚠️ CAUTION: Destructive.

This performs a SOFT DELETE (archive). The test case can typically be recovered from the Allure UI if needed.

⚠️ CAUTION: This action removes the test case from active views. Historical data and launch associations may be affected.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be set to True to proceed with deletion. Safety measure.
project_idNoOptional Allure TestOps project ID override.
test_case_idYesThe Allure test case ID to archive.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
nameNo
errorNo
actionNoRequested operation name.
statusNo
test_case_idNo
requires_confirmationNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses soft delete nature and recovery option, adding context beyond destructive annotation. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise with front-loaded action, though caution messages are slightly repetitive; overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With output schema present, description adequately covers behavior and side effects; could mention idempotency hinted by annotation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all parameters with descriptions; description adds no additional parameter-specific meaning, meeting baseline for 100% coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool archives an obsolete test case via soft delete, distinguishing it from siblings like delete_archived_test_cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes when to use (obsolete test cases) and effects on historical data, but lacks explicit comparison to alternatives like delete_archived_test_cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_test_layerDelete Test LayerB
DestructiveIdempotent

Delete a test layer from Allure TestOps. ⚠️ CAUTION: Destructive.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be set to True to proceed with deletion. Safety measure.
layer_idYesID of the test layer to delete.
project_idNoAllure TestOps project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
actionNoRequested operation name.
statusNo
layer_idNo
requires_confirmationNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, so the caution emoji and 'Destructive' are redundant. The description does not mention the required confirm parameter or other behavioral traits like permanent deletion or cascading effects, which are not covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short (one sentence) but omits critical details like the confirm parameter requirement. It is concise but under-informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, an output schema, and required confirmation, the description fails to mention the need to set confirm=true or the effect of output_format. It is not complete enough for safe usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all 4 parameters have descriptions). The tool description adds no additional parameter details beyond what the schema provides, scoring baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Delete a test layer from Allure TestOps' uses a specific verb ('Delete') and resource ('test layer'), clearly distinguishing it from siblings like create_test_layer, update_test_layer, and list_test_layers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., delete_test_case, delete_test_layer_schema) or any prerequisites. The description only states the action without contextual usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_test_layer_schemaDelete Test Layer SchemaB
DestructiveIdempotent

Delete a test layer schema from the project. ⚠️ CAUTION: Destructive.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be set to True to proceed with deletion. Safety measure.
schema_idYesID of the test layer schema to delete.
project_idNoAllure TestOps project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
actionNoRequested operation name.
statusNo
schema_idNo
requires_confirmationNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Caution about destructiveness adds no value beyond the already present destructiveHint annotation. No disclosure of side effects (e.g., cascade delete, permissions) or required confirmation steps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with clear purpose and warning. Front-loaded but could be slightly more informative without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool, missing context about the confirm parameter (important for safety) and what happens after deletion. Output schema exists but not referenced.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. Description adds no extra meaning to parameters like confirm, project_id, or output_format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'Delete' and resource 'test layer schema' directly state the action. Distinguishes from sibling tools that operate on different entities (test cases, test layers, etc.).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternative actions like update or list. Lack of context on prerequisites or when deletion is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_test_planDelete Test PlanA
DestructiveIdempotent

Delete a Test Plan. ⚠️ CAUTION: Destructive.

Permanently removes the Test Plan from Allure TestOps. The operation is idempotent: if the plan does not exist, it returns success.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be set to True to proceed with deletion. Safety measure.
plan_idYesID of the test plan to delete
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
actionNoRequested operation name.
statusNo
plan_idNo
requires_confirmationNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint=true and idempotentHint=true. The description adds context by stating 'Permanently removes' and explaining idempotent behavior ('if the plan does not exist, it returns success'), enhancing transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the action, uses a caution emoji for emphasis, and contains no unnecessary words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple deletion tool with a safety confirm parameter, the description covers core behavior, permanence, and idempotency. It does not mention permissions or cascading effects, but given the tool's simplicity and presence of an output schema, it is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all three parameters described. The description does not add parameter-specific information beyond the schema; e.g., it doesn't mention the confirm safety flag. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a Test Plan' with the verb 'Delete' and resource 'Test Plan'. It further clarifies with 'Permanently removes the Test Plan from Allure TestOps', distinguishing it from sibling tools like delete_test_case or delete_launch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a caution about destructiveness and mentions idempotency, but does not explicitly state when to use this tool versus alternatives (e.g., manage_test_plan_content, update_test_plan) or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_test_suiteDelete Test SuiteA
DestructiveIdempotent

Delete a test suite node from hierarchy. ⚠️ CAUTION: Destructive.

This operation removes a hierarchy suite/group node. Allure TestOps handles nested entities according to its API behavior for tree groups.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be set to True to proceed with deletion. Safety measure.
tree_idNoOptional hierarchy tree ID. Use when the suite belongs to a non-default tree.
suite_idYesSuite/group node ID to delete from hierarchy.
project_idNoOptional Allure TestOps project ID override.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
actionNoRequested operation name.
statusNo
suite_idNo
requires_confirmationNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description reinforces this with an explicit CAUTION warning. It adds the useful caveat that nested entities are handled according to Allure TestOps's tree-group API behavior, though it stops short of explaining exactly what happens to those nested items. No contradiction with the annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded: the core action and a danger warning appear in the first two lines, followed by the nested-entity caveat. There is no filler or repetition, though the final sentence is somewhat vague and could be more specific without hurting conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a destructive tool with detailed per-parameter schema descriptions and an output schema, the description is reasonably complete: it states what is removed, warns about destructiveness, and flags nested-entity behavior. It does not need to repeat the confirm flag or output format details already in the schema. The main gap is the unspecified effect on child nodes, but the API-behavior caveat at least acknowledges this nuance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all five parameters, including the confirm safety measure and optional tree_id/project_id. The description adds only a slight reinforcement that suite_id targets a suite/group node, but does not need to explain parameter semantics further. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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: 'Delete a test suite node from hierarchy.' It further defines the target as a 'suite/group node,' which distinguishes it clearly from sibling deletion tools like delete_test_case, delete_test_plan, and delete_launch. The purpose is immediately identifiable and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes clear context: this tool is for removing hierarchy suite/group nodes, so it is appropriate when deleting a test suite node rather than a test case, plan, launch, or shared step. It does not explicitly name alternatives or when-not conditions, but the resource scoping is sufficient for correct routing in most cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_unused_custom_fieldsDelete Unused Custom FieldsA
DestructiveIdempotent

Delete custom fields that are unused by any test case in the current project.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be set to True to proceed.
project_idNoOptional Allure TestOps project ID override.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
actionNoRequested operation name.
deleted_countNo
requires_confirmationNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructiveHint=true, idempotentHint=true), description adds the specific 'unused' condition and scope 'in the current project'. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, clear sentence. No waste, front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has output schema, so return values are covered. Description covers purpose, condition, and scope. Complete for this use case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so description adds little beyond schema's parameter descriptions. Description does not elaborate on confirm or output_format beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (delete), resource (custom fields), and condition (unused by any test case). It distinguishes from sibling tools like delete_custom_field_value or delete_test_case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for removing orphaned custom fields but lacks explicit when-to-use or when-not-to-use guidance, and does not mention alternatives like get_custom_fields or delete_custom_field_value.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_test_codeGenerate Test CodeA
Read-onlyIdempotent

Generate a current, framework-specific test snippet from a TestOps test case.

Both target selections are required. The tool validates verified TestOps language/framework compatibility locally and synchronizes only requested test-case metadata before generation.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageYesRequired target language. Choose Java, Python, TypeScript, JavaScript, Kotlin, PHP, or .NET. Backward-compatible aliases: java, python, ts, js, and dotnet.
metadataNoOptional metadata to synchronize: Name, Tags, Custom fields, Members, Issues, Scenario. Omit for Name, Tags, Custom fields, Scenario; use [] to disable all.
frameworkYesRequired framework compatible with language. TypeScript choices: CodeceptJS, Cucumber, Jasmine, Jest, Mocha, Playwright, Vitest, WebdriverIO, ZeroStep. Compatibility is language-specific.
test_case_idYesID of the TestOps test case to generate code for.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoGenerated source-code snippet.
languageNoRequested target programming language.
metadataNoCanonical test-case metadata selections included in generated code.
frameworkNoRequested target testing framework.
test_case_idNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description's value is limited. It adds that validation is performed locally and only requested metadata is synchronized, which provides useful but not critical behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, front-loading the main action. It efficiently communicates purpose and key requirements without unnecessary verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With five parameters including enums and an output schema, the description covers the core concept but lacks details on the generated output format, error cases, or specific behavior for edge cases. It is adequate but leaves room for more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal extra meaning (e.g., 'Both target selections are required') 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Generate' and the resource 'test snippet from a TestOps test case', making the tool's primary function immediately obvious. It distinguishes itself from sibling tools like create_test_case or get_test_case_details by focusing on code generation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions that both target selections (language and framework) are required, giving some usage context. However, it does not explicitly state when to use this tool vs alternatives, nor does it provide scenarios where it would not be appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_custom_fieldsGet Custom FieldsA
Read-onlyIdempotent

Get available custom fields and their allowed values for the project.

Use this tool to discover what custom fields are available (e.g., 'Layer', 'Priority') and what values are valid for them (e.g., 'UI', 'High'). This is essential before creating or updating test cases to ensure you use valid field names and values.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional case-insensitive name filter to search for specific custom fields.
project_idNoAllure TestOps project ID to fetch custom fields from.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsNoEntity-specific collection entries.
totalNo
filter_nameNo

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the description's job is lighter. It adds that the tool returns 'allowed values,' which is not in annotations or schema. However, it does not disclose other behavioral traits like data source or limitations. This is adequate but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences. The first states the core purpose, and the second provides usage guidance. Every sentence adds value, with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and annotations, the description provides sufficient context for the agent: it explains the tool's role in the workflow (discovery before creation/update) and its input/output nature. No critical gaps exist for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers all 3 parameters with full descriptions, achieving 100% coverage. The description does not add new parameter semantics beyond what is in the schema. According to rules, baseline is 3 when coverage is high, and no extra value is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves available custom fields and their allowed values for a project. It uses specific verbs and resources ('Get available custom fields') and differentiates itself from sibling tools like list_custom_field_values and create_custom_field_value by emphasizing it is used to discover fields before creating or updating test cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Use this tool to discover what custom fields are available... essential before creating or updating test cases.' This provides clear context and implies when not to use it (when not needing discovery). It also hints at the prerequisite nature for other operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_defectGet DefectA
Read-onlyIdempotent

Retrieve detailed information about a specific defect.

ParametersJSON Schema
NameRequiredDescriptionDefault
defect_idYesID of the defect to retrieve
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo
closedNo
statusNo
descriptionNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description simply says 'retrieve', which is consistent but adds no extra behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that states the action and resource. It is front-loaded and efficient, though slightly brief.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with an output schema present, the description is adequate. However, it lacks usage guidance and could mention output_format options, but the schema compensates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are documented in the schema. The description adds no additional meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'retrieve' and resource 'defect', clearly indicating a read operation for a single defect. It distinguishes from siblings like list_defects (listing) and create_defect (creation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives like list_defects. Usage is implied by the name and schema but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_launchGet LaunchB
Read-onlyIdempotent

Retrieve a specific launch and summarize its details.

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_idNoOptional project tree ID to expand; requires include_execution_results=true.
launch_idYesLaunch ID (required).
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.
include_execution_resultsNoOpt in to complete compact execution results, project trees, and snapshot diagnostics.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
jobsNo
nameNo
tagsNo
linksNo
treesNo
closedNo
issuesNo
defectsNo
partialNo
retriesNo
testersNo
durationNo
externalNo
progressNo
assigneesNo
autocloseNo
statisticNo
variablesNo
created_byNo
project_idNo
environmentNo
created_dateNo
member_statsNo
muted_resultsNo
result_timelineNo
last_modified_byNo
flat_test_resultsNoCompact rows; each row id is the Test Result ID for get_test_result.
new_defects_countNo
execution_snapshotNo
last_modified_dateNo
result_defect_treeNo
unresolved_resultsNo
known_defects_countNo
unavailable_sectionsNo
core_test_result_indexNo
manual_execution_guidanceNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read. The description adds minimal behavioral context beyond that, mainly the 'summarize' aspect, but does not meaningfully expand on what the agent should expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It communicates the core operation efficiently enough for a simple get-by-ID tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the vague 'summarize' wording, the tool is adequately contextualized for a read-only retrieval: annotations cover safety, the schema covers all parameters, and an output schema exists. The main missing piece is usage guidance relative to sibling launch tools, but that is already penalized in usage_guidelines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already documented. The description adds little beyond implying that launch_id identifies the specific launch to retrieve, which is already clear from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource: retrieving a specific launch. The use of 'specific' slightly differentiates it from list_launches, but it does not explicitly name or contrast any sibling tool, and 'summarize its details' is somewhat vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as list_launches or get_launch_test_results. The only implicit cue is 'specific launch', but no explicit context, prerequisites, or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_projectGet ProjectA
Read-onlyIdempotent

Retrieve one project by name or list accessible projects.

Name matching is case-insensitive. An exact match is preferred; an unambiguous partial match is accepted. Omit name to discover the available project IDs and names before making project-scoped calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoProject name to resolve. Omit it to list all projects available to the authenticated user.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
abbrNoProject abbreviation.
nameNo
itemsNoEntity-specific collection entries.
totalNo
is_publicNoWhether the project is publicly visible.
descriptionNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint as true. The description adds useful behavioral details like case-insensitive matching and partial match acceptance, which go beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, covering all necessary aspects without verbosity. It effectively prioritizes key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with an output schema, the description is complete. It covers both usage modes (single project retrieval and listing) and provides sufficient context for an agent to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by explaining the name parameter's matching behavior (case-insensitive, partial match) and clarifying the output format default ('json' instead of null). This provides extra context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool retrieves a specific project by name or lists all accessible projects. This distinguishes it from sibling tools like create_test_case or get_test_case_details, which operate on different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description explains when to omit the name parameter (to discover project IDs) and details name matching behavior (case-insensitive, exact match preferred). However, it does not explicitly mention when not to use this tool or provide alternatives, but context makes it clear as a read-only tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_test_case_custom_fieldsGet Test Case Custom FieldsB
Read-onlyIdempotent

Retrieve custom field values for a specific test case.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoOptional override for the default Project ID.
test_case_idYesThe ID of the test case to retrieve custom fields for
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
test_case_idNo
custom_fieldsNoCustom-field values as named entries or a value map.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds minimal behavioral detail beyond what annotations imply (retrieve operation). No contradiction, but no extra context about error behavior or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence (8 words). It is front-loaded but could include a brief note about optional parameters or output format. However, it is not wasteful and fits a simple read tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of output schema, full schema coverage, and annotations, the description is minimally adequate. However, it lacks context about when to use this tool vs. similar custom field tools, which would improve completeness for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all parameters. The description does not add any additional meaning beyond what the schema already provides. Baseline 3 is appropriate since the schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (retrieve), the resource (custom field values), and the scope (for a specific test case). This differentiates it from sibling tools like get_custom_fields (which retrieves definitions) or list_custom_field_values (which may list all values).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There are many sibling tools related to custom fields (e.g., list_custom_field_values, create_custom_field_value), but no explicit context or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_test_case_detailsGet Test Case DetailsA
Read-onlyIdempotent

Get complete details of a specific test case.

Retrieves all information about a test case including its steps, tags, custom fields, and attachments. For each attachment, call prepare_attachment_download with its attachment_id, attachment_kind, and test_case_id, then HTTP GET the returned Lucius URL. Use this before updating a test case to understand its current state.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoAllure TestOps project ID to list test cases from.
test_case_idYesID of the test case to retrieve.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo
tagsNo
stepsNo
statusNo
attachmentsNo
descriptionNo
preconditionNo
custom_fieldsNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, and non-destructive nature. The description adds valuable behavioral context beyond annotations: attachments are not directly returned but require a separate prepare_attachment_download call followed by an HTTP GET to a Lucius URL. This is important for correct usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core purpose. The attachment workflow sentence earns its place. The opening sentence is slightly redundant with the title, but overall the structure is clear and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, full parameter schema coverage, and annotations describing the safety profile, the description covers the essential behavior, attachment handling workflow, and a relevant use case. Nothing critical is missing for an agent to invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters. The description does not add much parameter-level detail beyond clarifying that test_case_id is also needed in the attachment download workflow. This meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves complete details of a specific test case, listing the included components (steps, tags, custom fields, attachments). This distinguishes it from sibling tools like list_test_cases, get_test_case_custom_fields, and prepare_attachment_download.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use this before updating a test case to understand its current state, and it gives a concrete follow-up workflow for downloading attachments. It provides clear context but does not explicitly state when not to use it or compare it to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_test_resultGet Test ResultA
Read-onlyIdempotent

Retrieve one complete TestOps result without recursively reading related results.

Attachment references identify their verified owner. Call prepare_attachment_download with an attachment's attachment_id, attachment_kind, and owner context, then HTTP GET the returned Lucius URL before it expires.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or plain agent-readable detail.
test_result_idYesExact Test Result ID from the /tree/{test_result_id} URL path; ignore treeId query state.

Output Schema

ParametersJSON Schema
NameRequiredDescription
coreNo
issuesNo
defectsNo
membersNo
partialNo
fixturesNo
test_caseNo
test_keysNo
launch_urlNo
project_idNo
result_urlNo
environmentNo
custom_fieldsNo
test_result_idNo
execution_stepsNo
related_resultsNo
actual_launch_idNo
result_attachmentsNo
unavailable_sectionsNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive. The description adds meaningful context beyond that: the result is non-recursive, attachment references identify their verified owner, and downloads require calling prepare_attachment_download and using the returned Lucius URL before expiry. This is valuable behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose. The second sentence adds an actionable attachment workflow that is directly relevant. No filler is present, though the second sentence is dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the annotations, full schema coverage, and output schema, the description covers the essential behavior, scope exclusion, and attachment handling without missing anything needed for correct invocation. The tool is simple and the description completes it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains test_result_id, project_id, and output_format precisely. The description adds no additional parameter-level meaning, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Retrieve') and a specific resource ('one complete TestOps result'), and adds an explicit scope limitation ('without recursively reading related results'). This distinguishes it from sibling list/search tools and makes the tool's purpose immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first sentence gives clear context for when to use this tool: retrieving a single complete result, not recursively related results. The attachment guidance also routes the agent to prepare_attachment_download when needed, though it does not explicitly name alternatives for retrieving multiple results.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_test_suite_contentsGet Test Suite ContentsA
Read-onlyIdempotent

Get test cases directly assigned to one test suite.

This is a targeted hierarchy read. It does not enumerate unrelated suites or recursively traverse the project tree.

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_idNoOptional hierarchy tree ID. If omitted, the default project tree is used.
suite_idYesSuite/group node ID to inspect in hierarchy.
project_idNoOptional Allure TestOps project ID override.
output_formatNoOutput format: 'json' (default) or 'plain'.
expected_suite_nameNoOptional exact suite name used to confirm the target before reading its contents.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tree_idNo
suite_idNo
test_case_idsNo
assigned_countNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds useful behavioral context by clarifying that this is a targeted, non-recursive read and that it only returns directly assigned test cases, which is beyond what the annotations or schema alone convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no wasted words. The core purpose is front-loaded, and the second sentence adds only the scoping details needed to avoid misuse with broader read tools.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only, idempotent tool, the description combined with the fully described schema and existing output schema is complete. The agent has everything needed to call it correctly: required parameter, optional parameters, output format, and behavioral boundaries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all five parameters. The description does not add meaning about parameters beyond what the input schema already provides; therefore 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.

Purpose5/5

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: 'Get test cases directly assigned to one test suite.' It distinguishes itself from broader enumeration and recursive traversal by calling itself a 'targeted hierarchy read,' which differentiates it from sibling tools like list_test_cases and list_test_suites.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use it: when the agent needs only test cases directly assigned to a single suite. It also states exclusionsβ€”does not enumerate unrelated suites or recursively traverse the project treeβ€”but it does not explicitly name an alternative tool for recursive traversal, so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_custom_field_valuesList Custom Field ValuesA
Read-onlyIdempotent

List available values for a custom field.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page index.
sizeNoNumber of items per page.
sortNoOptional sort criteria, e.g. ['name,asc', 'id,desc']
queryNoOptional search query to filter values.
project_idNoOptional override for the default Project ID.
var_globalNoOptional filter for global values.
output_formatNoOutput format: 'json' (default) or 'plain'.
custom_field_idNoProject-scoped custom field ID to list values for.
test_case_searchNoOptional test case search filter to match values in test cases.
custom_field_nameNoCustom field name to resolve when custom_field_id is not provided.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNo
sizeNo
itemsNoEntity-specific collection entries.
totalNo
total_pagesNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the tool's safety profile is clear. The description does not add behavioral context beyond these annotations, but also does not contradict them. It mentions listing but not pagination or filtering specifics, which are covered by the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no wasted words. It is front-loaded and directly states the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full schema coverage, the description is minimally viable but could provide more context about pagination, filtering, or the typical return format. It does not explain the nature of 'available values' further.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 10 parameters with descriptions. The tool description adds no additional parameter-level meaning, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and the resource (available values for a custom field). It effectively distinguishes itself from sibling tools like get_custom_fields which list fields themselves, and create/update/delete custom field values.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as when to list values versus create or update them. No context about prerequisites or typical use cases is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_defect_matchersList Defect MatchersA
Read-onlyIdempotent

List all matchers (automation rules) for a given defect.

ParametersJSON Schema
NameRequiredDescriptionDefault
defect_idYesID of the parent defect
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNo
sizeNo
itemsNo
totalNo
defect_idNo
total_pagesNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds that it lists 'all matchers' but does not disclose pagination, sorting, error handling, or other behaviors beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence that front-loads the purpose. Could be slightly more structured (e.g., mentioning output), but it earns its place with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with output schema and clear annotations, the description is fairly complete. It explains the domain (automation rules) but lacks mention of potential error conditions or pagination behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. Description adds context by defining matchers as 'automation rules', but adds no further meaning to the parameters beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'List' and resource 'matchers (automation rules)' for a given defect, clearly distinguishing from sibling tools like create/update/delete_defect_matcher.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use versus alternatives (e.g., list_defects or other list tools). Usage is implied by the name and parent defect requirement, but lacks exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_defectsList DefectsB
Read-onlyIdempotent

List all defects in the current project.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNo
sizeNo
itemsNoEntity-specific collection entries.
totalNo
total_pagesNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, destructiveHint. Description adds no further behavioral context (e.g., pagination, sorting, filtering). No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with key information. Could include brief mention of output details but remains concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool, missing details on pagination, sorting, or filtering. Output schema exists but description doesn't elaborate on what is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (one optional parameter). Description does not explain 'output_format' beyond what the schema already provides; no added semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List'), the resource ('defects'), and the scope ('in the current project'). It differentiates from sibling tools like 'get_defect' (single) and 'list_defect_matchers' (different resource).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., 'get_defect' for a single defect). No exclusions or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_defect_test_casesList Defect Test CasesA
Read-onlyIdempotent

List test cases currently linked to a defect.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page index
sizeNoPage size (1..100)
defect_idYesID of the defect whose linked test cases should be listed
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNo
sizeNo
itemsNoEntity-specific collection entries.
totalNo
defect_idNo
defect_urlNo
total_pagesNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description's role is minimal. It confirms the read behavior and adds that only test cases currently linked are listed, but doesn't disclose details like pagination limits or rate handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no fluff. Every word earns its place, and it avoids unnecessary detail given the rich schema and annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the annotations (read-only, idempotent, non-destructive) and the presence of an output schema, the description is adequate. It could mention pagination or output format defaults, but the schema handles those. The description is sufficient for a simple read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 4 parameters are fully described in the schema with defaults and ranges (100% coverage). The description adds no extra semantic context beyond what the schema provides, so it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List test cases currently linked to a defect' uses a specific verb ('list') and resource ('test cases') with clear scope ('linked to a defect'), distinguishing it from siblings like 'list_test_cases' (lists all test cases) and 'link_defect_to_test_case' (creates a link).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly guide when to use this tool versus alternatives. Usage is implied by the name and description, but no exclusions or context are provided, such as when to use 'list_test_cases' instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_integrationsList IntegrationsA
Read-onlyIdempotent

List available integrations (issue trackers) in Allure TestOps.

Use this tool to discover which integrations (Jira, GitHub, etc.) are configured and available for linking issues to test cases.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoOptional override for the default Project ID. When provided (or from environment default), integrations are filtered to those available for that project.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsNoEntity-specific collection entries.
totalNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, destructiveHint, so the description carries low burden. It adds minimal behavioral context beyond stating the tool lists integrations, which is consistent with the annotations. No extra details on rate limits or auth are provided, but the annotations cover the key traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. The purpose and usage are front-loaded, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists (not shown but stated) and the tool is simple, the description sufficiently explains what the tool does and why to use it. No additional context is needed for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters having descriptions. The tool description does not add further parameter information, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists available integrations (issue trackers) in Allure TestOps and explains the purpose: to discover which integrations are configured for linking issues. It distinguishes itself from sibling tools by being the only integration-listing tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly guides when to use: 'Use this tool to discover which integrations ... are configured and available.' While it doesn't mention when not to use, there are no alternative tools for this task among siblings, so the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_launchesList LaunchesC
Read-onlyIdempotent

List launches in a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page index.
sizeNoNumber of results per page (max 100).
sortNoSorting criteria in the format: property(,asc|desc). Example: ['createdDate,DESC']
searchNoOptional name search.
filter_idNoOptional filter ID.
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNo
sizeNo
itemsNo
totalNo
total_pagesNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, making the tool's safety profile clear. The description adds no behavioral context beyond the name, such as pagination default or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded and contains no unnecessary words. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description fails to mention the default behavior (e.g., which project is used, pagination defaults, result ordering). For a listing tool with 7 optional parameters, more context would be valuable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description does not need to explain parameters. Baseline is 3, and the description adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and resource 'launches in a project', distinguishing it from sibling tools like create_launch or get_launch. However, it lacks specificity about scope or filtering beyond what parameters provide.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as get_launch for a single launch or list_launch_test_results for test results. No context on prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_launch_test_resultsList Launch Test ResultsB
Read-onlyIdempotent

List test results inside a launch, including manual execution metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page index after optional filtering.
sizeNoNumber of results per page (max 100).
sortNoOptional sort directives such as ['name,ASC'] or ['createdDate,DESC'].
searchNoOptional result-name search term.
filter_idNoOptional saved filter ID from TestOps.
launch_idYesLaunch ID (required).
project_idNoOptional override for the default Project ID.
failed_onlyNoWhen true, return only failed or broken results. Filtering is handled for you.
manual_onlyNoWhen true, return only manual results. Filtering is handled for you.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNo
sizeNo
itemsNoEntity-specific collection entries.
totalNo
launch_idNo
failed_onlyNo
manual_onlyNo
total_pagesNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds a minor behavioral detail ('including manual execution metadata') beyond annotations. However, it does not disclose pagination, filtering behavior, or error conditions, which are not covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the key action. Every word is necessary, with no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the presence of an output schema and comprehensive parameter descriptions, the tool has 10 parameters and the description is very brief. It lacks context on what test results are, how manual execution metadata relates, or how the various filtering and pagination parameters should be used.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The tool description adds no additional meaning to the parameters; it does not mention any parameter or usage hints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists test results inside a launch, including manual execution metadata. It uses a specific verb and resource, and while it doesn't explicitly contrast with sibling tools, the focus on 'test results' distinguishes it from tools like 'list_test_cases' or 'get_launch'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no when-to-use or when-not-to-use guidance. It does not mention alternatives or context for choosing this tool over similar list tools such as 'list_test_cases' or 'list_defects'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_shared_stepsList Shared StepsA
Read-onlyIdempotent

List shared steps in a project to find existing ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (0-based, default 0).
sizeNoNumber of items per page (default 100).
searchNoOptional search query to filter by name.
archivedNoWhether to include archived steps (default False).
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNo
sizeNo
itemsNoEntity-specific collection entries.
totalNo
total_pagesNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds minimal context ('find existing ones') but does not contradict annotations. It provides no additional behavioral details beyond what annotations offer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with action and resource. No extraneous words. Efficiently conveys purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a simple read-only list with pagination and filtering, and full schema coverage plus annotations exist, the description is sufficient for an agent to understand its basic function. An output schema also exists, reducing the need to explain return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all parameters are documented. The description does not add extra meaning or context for parameters beyond the schema. Baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and resource 'shared steps' with context 'in a project'. It effectively distinguishes from sibling tools like create_shared_step or update_shared_step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives, no exclusions or prerequisites mentioned. Only says 'to find existing ones', which does not differentiate from other listing tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_test_casesList Test CasesA
Read-onlyIdempotent

List all test cases in a project.

Returns a paginated list of test cases with their IDs, names, and tags. Use this to review existing test documentation in a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page index.
sizeNoNumber of results per page (max 100).
tagsNoOptional tag filters (exact match).
statusNoOptional status filter (exact match).
project_idNoAllure TestOps project ID to list test cases from.
name_filterNoOptional name/description search.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNo
sizeNo
itemsNoEntity-specific collection entries.
totalNo
total_pagesNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the tool's safety is clear. The description adds context about paginated results and returned fields (IDs, names, tags), but does not reveal any additional behavioral traits beyond what annotations and schema imply. This is adequate but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the core function, the second adds purpose. No wasted words, front-loaded with key information. It is appropriately sized and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and high parameter coverage, the description is largely sufficient. It explains the tool's purpose and pagination, but could mention default behavior (e.g., returns all cases if no filters applied) or the fact that page/size defaults are 0 and 20 (though already in schema). Overall, complete enough for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description does not add parameter-specific meaning beyond what the schema already provides. It mentions pagination and returned fields but does not elaborate on how parameters like 'tags' or 'status' work (exact match is already in schema). Thus, no extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists test cases in a project, specifying the verb 'List' and resource 'test cases'. It mentions the return fields (IDs, names, tags) and pagination. However, it does not explicitly differentiate from the sibling tool 'search_test_cases', which could be seen as a more filtered variant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises 'Use this to review existing test documentation', giving a general usage context. But it lacks explicit when-not-to-use guidance or mention of alternatives like 'search_test_cases' for complex filtering or 'get_test_case_details' for single case details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_test_layersList Test LayersA
Read-onlyIdempotent

List test layers to discover available test layer taxonomy.

Test layers define the taxonomy for categorizing test cases (e.g., Unit, Integration, E2E). Use this to find layer IDs and names before creating or updating test cases.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (0-based). Default is 0.
sizeNoPage size (max 100). Default is 100.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNo
sizeNo
itemsNoEntity-specific collection entries.
totalNo
total_pagesNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, establishing the tool as safe and read-only. The description adds context about the taxonomy purpose but no additional behavioral traits beyond what annotations convey. This is adequate but not enhanced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise with three sentences across two paragraphs. Every sentence adds value: first states action, second explains purpose, third gives usage guidance. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description need not detail return values. It adequately explains the taxonomy concept and provides sufficient context for using the tool. With annotations and output schema, the description is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and each parameter has a clear description. The tool description does not add any extra meaning beyond the schema, only referencing output (layer IDs and names). Per guidelines, baseline 3 is appropriate when schema covers parameters well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists test layers to discover available taxonomy. It explains the purpose (categorizing test cases) and explicitly notes it is used to find layer IDs and names before creating or updating test cases, distinguishing it from sibling tools like create_test_layer, update_test_layer, and list_test_layer_schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'Use this to find layer IDs and names before creating or updating test cases,' providing clear context for when to use the tool. It does not specify when not to use or name alternatives, but the sibling set includes related tools, making the usage guidance clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_test_layer_schemasList Test Layer SchemasA
Read-onlyIdempotent

List test layer schemas for a project.

Test layer schemas map custom field keys to test layers within a project. They determine which test layer is assigned when a specific custom field value is used.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (0-based). Default is 0.
sizeNoPage size (max 100). Default is 100.
project_idNoAllure TestOps project ID to fetch test layer schemas from.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNo
sizeNo
itemsNoEntity-specific collection entries.
totalNo
total_pagesNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, indicating a safe read operation. The description adds context about the mapping between custom fields and test layers, which is valuable beyond the annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, using only two sentences to convey the purpose and a brief explanation. Every sentence adds value with no extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and comprehensive parameter descriptions, the description covers the essential aspects. It explains the concept of test layer schemas, which adds completeness. Missing explicit usage guidelines slightly reduces the score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The description does not add further meaning to the parameters beyond what the schema already provides, so it meets the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists test layer schemas for a project, with an explanation of what these schemas are. It distinguishes itself from sibling tools like 'create_test_layer_schema' or 'list_test_layers' by focusing on schemas that map custom fields to layers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving mapping information but does not explicitly state when to use this tool instead of alternatives like 'list_test_layers' or provide context such as prerequisites or typical workflow scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_test_plansList Test PlansA
Read-onlyIdempotent

List Test Plans for the current project.

Retrieves a paginated list of Test Plans, showing their IDs, names, and the number of test cases they contain.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (0-based)
sizeNoPage size
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNo
sizeNo
itemsNoEntity-specific collection entries.
totalNo
total_pagesNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive. Description adds pagination behavior and return fields (IDs, names, test case count), providing useful 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no unnecessary words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, input schema fully described, annotations cover safety. Description adds pagination and return field info. Complete for agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. Description adds no new parameter details beyond mentioning pagination, which is already implied by page/size.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states action (List), resource (Test Plans), and scope (current project). It distinguishes from sibling tools like list_test_cases or list_defects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. Only implies project context. Does not mention alternatives or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_test_suitesList Test SuitesB
Read-onlyIdempotent

List hierarchy suites for a project tree.

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_idNoTarget hierarchy tree ID. If omitted, default project tree is used.
project_idNoAllure TestOps project ID.
include_emptyNoWhether to include suites that have no nested child suites. Default is True.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
treeNo
itemsNo
totalNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint, so the agent knows it's a safe read operation. The description does not add behavioral insights beyond that (e.g., pagination, filtering behavior). It neither contradicts nor significantly enhances the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no extraneous information. It is concise, though arguably too minimal. Front-loading is adequate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters and an output schema, the description is quite sparse. It omits context about the hierarchy concept, how the output relates to the tree, or when to use optional parameters. While the schema and output schema fill some gaps, the description could be more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions, so baseline is 3. The description adds no additional meaning beyond the schema; it does not clarify parameter usage or defaults beyond what is already in the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'List hierarchy suites for a project tree,' clearly identifying the verb (List) and resource (hierarchy suites) with scope (project tree). It distinguishes from sibling tools like create_test_suite and delete_test_suite, though it could be more specific about what 'hierarchy suites' entails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as when to list all test cases vs. suites. The description does not mention any prerequisites, exclusion conditions, or contextual cues for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_test_plan_contentManage Test Plan ContentA
DestructiveIdempotent

Modify the content (Test Cases) of an existing Test Plan.

Allows adding or removing specific Test Cases by ID, or updating the underlying AQL filter query.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYesID of the test plan
output_formatNoOutput format: 'json' (default) or 'plain'.
add_test_case_idsNoList of Test Case IDs to add
update_aql_filterNoUpdate the AQL filter string
remove_test_case_idsNoList of Test Case IDs to remove

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
plan_idNo
aql_filterNo
add_test_case_idsNo
add_test_case_urlsNo
remove_test_case_idsNo
remove_test_case_urlsNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive (destructiveHint=true) and idempotent behavior. The description adds value by enumerating the three types of modifications (add, remove, update filter), which is beyond what annotations provide. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action. Every sentence adds value with no fluff. The structure efficiently conveys the tool's purpose and capabilities.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, output schema present, annotations), the description covers the main operations. However, the 'or' in 'adding or removing... or updating' could be misinterpreted as mutually exclusive, whereas the schema allows combining operations. Minor ambiguity keeps it from being a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for each parameter. The tool description groups the parameters into operations but does not add new constraints or details beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Modify the content (Test Cases) of an existing Test Plan' and lists specific operations: adding/removing Test Cases by ID or updating the AQL filter. This distinguishes it from sibling tools like update_test_plan which likely handles other attributes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates when to use the tool (modifying test plan content) but does not explicitly mention alternatives or when not to use it. The specificity of operations provides implicit guidance, but explicit exclusion of other update tools would improve clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_attachment_downloadPrepare Attachment DownloadA
Read-onlyIdempotent

Prepare one verified attachment download, then HTTP GET its returned Lucius URL.

Call this after get_test_result or get_test_case_details provides an attachment ID, kind, and owner context. The returned download URL is one-time and short-lived: HTTP GET it before expires_at without an Allure bearer token. Prepare again if the URL expires or was already retrieved.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoOptional override for the default Project ID.
test_case_idNoRequired owner ID for test_case attachments.
attachment_idYesAttachment ID discovered from a readable result or test case.
output_formatNoOutput format: 'json' (default) or 'plain'.
test_result_idNoRequired owner ID for test_result or fixture_result attachments.
attachment_kindYesVerified attachment kind: test_result, fixture_result, or test_case.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesSanitized attachment filename.
expires_atYesUTC expiry timestamp for the one-time download URL.
content_typeYesAttachment MIME type.
download_urlYesOpaque Lucius URL to HTTP GET before expires_at; no Allure bearer token is needed.
test_case_idNoOwner context for test-case attachments.
attachment_idYesVerified attachment identifier.
content_lengthYesPrepared attachment byte length.
test_result_idNoOwner context for result or fixture attachments.
attachment_kindYesVerified attachment owner kind.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already mark this as read-only and idempotent, so the description adds valuable non-obvious behavior: the returned URL is one-time and short-lived, must be GET before expires_at without an Allure bearer token, and preparation should be repeated if the URL expires or was already retrieved. This is exactly the kind of behavioral context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences carry the full workflow: the action, the prerequisite call sites, and the URL expiry/recovery behavior. Every sentence contributes essential information with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complete schema, the presence of an output schema, and annotations that establish safety, the description covers everything else needed for correct invocation: prerequisite context, one-time URL handling, auth requirements, and failure recovery. No important call-time behavior is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents each parameter. The description adds mild context by mentioning 'attachment ID, kind, and owner context,' but it does not materially enrich the parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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: 'Prepare one verified attachment download, then HTTP GET its returned Lucius URL.' It clearly identifies the tool's two-step purpose and differentiates it from upload-focused siblings like add_test_result_attachment and retrieval tools like get_test_result.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to call this tool: 'Call this after get_test_result or get_test_case_details provides an attachment ID, kind, and owner context.' It also advises when to re-invoke the tool after expiry or prior retrieval. It does not name alternatives or exclusions, so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reopen_launchReopen LaunchA
DestructiveIdempotent

Reopen a launch and return updated launch details.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_tokenNoOptional runtime API token override.
launch_idYesLaunch ID (required).
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo
closedNo
externalNo
autocloseNo
operationNo
project_idNo
created_dateNo
new_defects_countNo
last_modified_dateNo
known_defects_countNo
manual_execution_guidanceNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include idempotentHint=true and destructiveHint=true, which the description does not elaborate on. The description adds 'return updated launch details' but omits details about side effects or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words, front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and annotations, the description is adequate but does not mention prerequisites or caution about destructive effects, which would be helpful for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds no additional meaning beyond the schema's parameter descriptions. The baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Reopen'), the resource ('launch'), and the outcome ('return updated launch details'). It distinguishes from sibling tools like close_launch and delete_launch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide when to use this tool vs alternatives, nor does it specify prerequisites (e.g., launch must be closed). Some context is implied but no explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rerun_test_results_manuallyRerun Test Results ManuallyB

Schedule manual reruns for selected launch results.

ParametersJSON Schema
NameRequiredDescriptionDefault
assigneesNoOptional usernames to assign during manual rerun scheduling.
launch_idYesLaunch ID containing the failed results (required).
project_idNoOptional override for the default Project ID.
result_idsYesOne or more launch result IDs to schedule for manual rerun.
force_manualNoForce manual rerun mode when the upstream API supports it.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
assigneesNo
launch_idNo
result_idsNo
force_manualNo
scheduled_countNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate mutation (readOnlyHint=false) but description adds no further behavioral context (e.g., async, side effects). Adequate given annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single, concise sentence. However, it might be too brief for a tool with 6 parameters; could include slightly more context without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Does not explain what 'scheduling manual reruns' entails (e.g., triggers immediate execution or queues, impact on existing results). An output schema exists but description doesn't leverage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters have descriptions in the schema (100% coverage). The description adds no extra value beyond what schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it schedules manual reruns for launch results. It distinguishes from sibling tools like submit_manual_test_results by the 'rerun' focus, but lacks explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like submit_manual_test_results or upload_test_results. Missing context on prerequisites or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_test_casesSearch Test CasesA
Read-onlyIdempotent

Search for test cases by name, tag, or AQL query.

Find test cases matching your search criteria. Supports simple name/tag search or advanced AQL (Allure Query Language) for complex filtering.

Simple Query Syntax (use 'query' parameter):

  • Plain text: Searches in test case names (case-insensitive)

  • tag:value: Filters by exact tag match

  • Combined: "login tag:smoke" finds test cases with "login" in name AND "smoke" tag

Important: see https://docs.qameta.io/allure-testops/advanced/aql/ for the full AQL syntax reference. AQL Syntax (use 'aql' parameter):

  • Operators: and, or, not

  • Precedence: and binds tighter than or; use parentheses to group

  • Strings are double-quoted; numbers are unquoted; booleans are true/false

  • Comparison operators: =, !=, ~= (contains), in, not in

  • Field examples: status, tag, name, createdBy, automated, layer

ParametersJSON Schema
NameRequiredDescriptionDefault
aqlNoRaw AQL (Allure Query Language) for complex searches. Important: see https://docs.qameta.io/allure-testops/advanced/aql/ for the full AQL syntax reference.Supports AND, OR, NOT operators, parentheses for grouping, and field filters. Strings must be double-quoted. Examples: - 'status="failed" and tag="regression"' - '(createdBy = "John" or createdBy = "Jane") and name ~= "test"' - 'tag in ["smoke", "e2e"] and automated = true' - 'not status = "Draft" and layer = "API"'
pageNoZero-based page index.
sizeNoNumber of results per page (max 100).
queryNoSimple search query. Examples: 'login flow', 'tag:smoke', 'tag:smoke tag:regression', 'authentication tag:security'. Ignored when 'aql' is provided.
project_idNoAllure TestOps project ID to list test cases from.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesZero-based result page.
sizeYesRequested page size.
itemsYesMatching test cases.
queryYesQuery that produced these results.
totalYesTotal matching test cases.
total_pagesYesNumber of result pages.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds behavioral details: case-insensitive name search, exact tag match, combined queries, and the precedence of 'aql' over 'query'. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections and examples. Slightly repetitive with AQL reference appearing both in description and schema. Efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, full schema coverage, and an existing output schema, the description adequately covers search modes, parameter interactions, and external references. Complete for use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds extra context beyond schema: explains simple query syntax with examples, clarifies interaction between 'query' and 'aql' parameters. Baseline is 3; description earns a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'Search' and resource 'test cases' with explicit search methods (name, tag, AQL). Distinguishes from siblings like 'list_test_cases' and 'get_test_case_details'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains two search modes (simple query vs AQL) with syntax examples and a link to AQL docs. Notes that 'query' is ignored when 'aql' is provided. However, does not explicitly contrast with 'list_test_cases' for unfiltered listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_manual_test_sessionStart Manual Test SessionB

Start a manual execution session for a launch.

ParametersJSON Schema
NameRequiredDescriptionDefault
launch_idYesLaunch ID (required).
project_idNoOptional override for the default Project ID.
environmentNoOptional environment variables as [{key, value}, ...].
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
job_idNo
launch_idNo
job_run_idNo
project_idNo
environmentNo
test_session_idNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=false, idempotentHint=false, destructiveHint=false, the description carries the burden but only says 'start a session'. It fails to disclose whether this creates a state, requires permissions, or has side effects beyond initiation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no unnecessary words. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite a descriptive output schema, the description lacks context about prerequisites (e.g., launch state), what a 'manual execution session' entails, or how it relates to sibling tools like close_launch or submit_manual_test_results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 4 parameters have descriptions in the schema (100% coverage), so the description adds no param info. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Start a manual execution session for a launch' is a specific verb+resource phrase that clearly states the tool's action. It distinguishes itself from siblings like create_launch or submit_manual_test_results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or constraints. For example, it doesn't indicate whether the launch must be open or if this tool should precede submit_manual_test_results.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_manual_test_resultsSubmit Manual Test ResultsA

Submit manual execution results for a manual session.

ParametersJSON Schema
NameRequiredDescriptionDefault
resultsYesManual result payloads. When an item includes result_id from list_launch_test_results, the service resolves that existing launch result in place through TestOps' test-result run controller. After rerun_test_results_manually, re-list launch results and submit against the newly visible active result for that test case. The returned result_ids are the resolved result IDs to use for follow-up attachments and reads. As a lower-level fallback, you may still provide launch_id + test_case_id + name/full_name explicitly to create a standalone manual result. Optional fields include status/start/stop/duration/message/trace/description/precondition/expected_result/steps.
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.
test_session_idYesManual test session ID (required).

Output Schema

ParametersJSON Schema
NameRequiredDescription
result_idsNo
submitted_countNo
test_session_idNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a write operation (readOnlyHint=false), but the description does not add behavioral details beyond the basic action. It does not mention side effects, permissions, or error states. Given annotations exist, the description's contribution is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The main description is only one sentence, which is concise but too brief. It could be more structured to include key usage points without becoming verbose. The schema descriptions compensate somewhat, but the tool-level description is minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is incomplete given the complexity of the tool. It does not explain prerequisites (e.g., having a test session ID from 'start_manual_test_session'), typical workflow steps, or what the tool returns. The existence of an output schema does not fully mitigate this lack of context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, and the description for the 'results' parameter adds significant value by explaining two submission modes (using result_id or fallback), which is crucial for correct usage. Other parameters are well-described and clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'submit' and the resource 'manual execution results' for a manual session. It distinguishes from sibling tools like 'start_manual_test_session' and 'rerun_test_results_manually' by focusing on submission of results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'upload_test_results' (for automated results) or other manual testing tools. The description lacks context on prerequisites or typical workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_custom_field_valueUpdate Custom Field ValueB
DestructiveIdempotent

Update an existing custom field value. ⚠️ CAUTION: Destructive.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew name for the custom field value.
cfv_idYesCustom field value ID to update.
confirmNoMust be set to True to proceed with update. Safety measure.
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.
custom_field_idNoProject-scoped custom field ID (optional, resolves by name if missing).
custom_field_nameNoCustom field name to resolve when custom_field_id is not provided.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
actionNoRequested operation name.
cfv_idNo
custom_field_idNo
custom_field_nameNo
requires_confirmationNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The 'CAUTION: Destructive' note adds limited value beyond the annotations, which already set destructiveHint: true. The description does not elaborate on what 'destructive' entails, nor does it mention side effects, required permissions, or the idempotent nature hinted in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short (two sentences) and front-loaded. The caution sentence is useful but could be more compact. Every sentence serves a purpose, though the description could be expanded to cover more context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters and an output schema, the description is minimal. It does not explain return values, prerequisites, or how to use optional parameters, leaving gaps in completeness despite the presence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 no additional meaning to parameters; it only states the tool's purpose without referencing any input specifics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update an existing custom field value', specifying both the verb and resource. It distinguishes from sibling tools like create_custom_field_value and delete_custom_field_value.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for updating existing custom field values but does not explicitly state when to use this tool over alternatives or when not to use it. No exclusions or context for choice are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_defectUpdate DefectA
DestructiveIdempotent

Update an existing defect's name, description, or status.

At least one field must be provided. Fields set to null/None are left unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew defect name
closedNoSet to true to close, false to reopen
defect_idYesID of the defect to update
descriptionNoNew markdown description
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo
closedNo
statusNo
descriptionNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true and idempotentHint=true, so the description doesn't need to reiterate that. It adds value by explaining null handling: 'Fields set to null/None are left unchanged.' This clarifies idempotent behavior. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. The first sentence states the purpose and scope; the second provides a critical usage rule. Perfectly front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and 100% schema parameter coverage, the description covers all necessary context: what the tool does, required fields, and null behavior. No gaps remain for an AI agent to misunderstand.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already well-documented. The description adds a behavioral constraint not present in the schema: at least one field must be provided beyond defect_id. This compensates for the schema's lack of that constraint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update'), the resource ('existing defect'), and the specific fields that can be updated (name, description, or status). This distinguishes it from siblings like create_defect, get_defect, and delete_defect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a key usage condition: 'At least one field must be provided.' It doesn't explicitly state when to use this tool versus alternatives, but the condition is helpful. A more explicit comparison or exclusion would warrant a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_defect_matcherUpdate Defect MatcherA
DestructiveIdempotent

Update a defect matcher's name or regex patterns.

At least one field must be provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew matcher name
matcher_idYesID of the matcher to update
trace_regexNoNew trace regex
message_regexNoNew message regex
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
trace_regexNo
message_regexNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds that at least one field is required, but does not elaborate on specific behaviors like error conditions or result format. With annotations present, the bar is lower, but some added context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at two sentences with no redundant information. It is front-loaded with the action 'Update', making it easy for an agent to quickly grasp the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (5 parameters, output schema exists) and the presence of annotations, the description is fairly complete. It covers the essential purpose and constraint. However, a brief note about idempotency or the effect on existing data could enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter having a description. The description only mentions 'name or regex patterns', which aligns with the schema but adds no new meaning beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'update' and the resource 'defect matcher', specifying that it modifies name or regex patterns. This distinguishes it from siblings like create_defect_matcher and delete_defect_matcher.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes that at least one field must be provided, giving a clear usage condition. However, it does not explicitly state when not to use this tool or compare it to alternatives like create_defect_matcher for new matchers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_shared_stepUpdate Shared StepA
DestructiveIdempotent

Update an existing shared step. ⚠️ CAUTION: Destructive.

⚠️ IMPORTANT: Changes propagate to ALL test cases using this shared step.

Only provided fields will be updated. Omitted fields remain unchanged. Repeated calls with the same data are idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the shared step (optional).
confirmNoMust be set to True to proceed with update. Safety measure.
step_idYesThe shared step ID to update (required).
project_idNoOptional override for the default Project ID.
descriptionNoNew description (optional).
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo
actionNoRequested operation name.
changedNo
step_idNo
updated_fieldsNo
requires_confirmationNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructiveHint, idempotentHint), the description adds critical context: changes propagate to ALL test cases, only provided fields are updated, and confirm must be True. This significantly informs the agent's usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the action, and uses warnings effectively. Every sentence adds value with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description adequately covers key behaviors: propagation, idempotency, partial updates, and safety confirm. It lacks information about error handling or required permissions but is generally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions. The description adds minimal extra meaning, only reinforcing the confirm parameter's role as a safety measure. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update an existing shared step,' specifying a concrete action and resource, distinguishing it from sibling tools like create_shared_step, delete_shared_step, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear warnings about destructive impact and propagation to all test cases, emphasizes the need for confirm=True, and notes idempotency. While not explicitly contrasting with alternatives, the guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_test_caseUpdate Test CaseA
DestructiveIdempotent

Update an existing test case in Allure TestOps. ⚠️ CAUTION: Destructive.

Performs a partial update: only supplied fields are sent to the API. When provided, steps replace all existing steps, and attachments replace all existing global attachments. Omit a field to preserve its current value.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the test case
tagsNoNew list of tags
linksNoNew list of external links. Each dict has 'name', 'url', and optional 'type'.
stepsNoNew list of steps. Each step is a dict with 'action', 'expected', and optional 'attachments' list.
issuesNoList of issue keys to ADD (e.g. ['PROJ-123']).
confirmNoMust be set to True to proceed with update. Safety measure.
automatedNoSet whether the test case is automated
status_idNoID of the test case status
project_idNoOptional override for the default Project ID.
attachmentsNoNew list of global attachments. Each dict has 'name' and 'content' (base64) or 'url'.
descriptionNoNew description
workflow_idNoID of the workflow
clear_issuesNoIf True, remove ALL issues from the test case.
preconditionNoNew precondition
test_case_idYesThe ID of the test case to update
custom_fieldsNoDictionary of custom fields to update (Name -> Value or list of values)
output_formatNoOutput format: 'json' (default) or 'plain'.
remove_issuesNoList of issue keys to REMOVE.
test_layer_idNoID of the test layer
integration_idNoOptional integration ID for issue linking (use list_integrations to find IDs). Required when multiple integrations exist and adding issues. Mutually exclusive with integration_name.
expected_resultNoGlobal expected result for the test case
test_layer_nameNoName of the test layer
integration_nameNoOptional integration name for issue linking (exact case-sensitive match). Required when multiple integrations exist and adding issues. Mutually exclusive with integration_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo
actionNoRequested operation name.
changesNo
summaryNo
test_case_idNo
requires_confirmationNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds value beyond annotations by explaining destructive nature, partial update, and that steps/attachments replace existing ones. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short and focused: states purpose, caution, and key behaviors in a few lines. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given output schema exists, description covers all necessary aspects: partial update, destructive, idempotent, and replacement semantics. Complete for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3). Description adds context about partial update behavior and confirms safety measure, going beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Update an existing test case in Allure TestOps' with a specific verb and resource. It distinguishes from siblings like create_test_case and delete_test_case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on partial update behavior and when to omit fields to preserve values. Implicitly differentiates from create/delete but does not explicitly list alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_test_layerUpdate Test LayerB
DestructiveIdempotent

Update an existing test layer's name. ⚠️ CAUTION: Destructive.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew name for the test layer.
confirmNoMust be set to True to proceed with update. Safety measure.
layer_idYesID of the test layer to update.
project_idNoAllure TestOps project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
actionNoRequested operation name.
changedNo
layer_idNo
requires_confirmationNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true. The description adds a caution about destructiveness, which is consistent but adds little new information. No behavioral traits beyond annotations are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one sentence plus a caution emoji. Every word earns its place. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite high schema coverage and annotations, the description is minimal and only mentions updating name, while the schema includes other parameters. The caution is the only extra context. Output schema exists but is not leveraged. Overall adequate for a simple update but lacks completeness for all parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions (e.g., confirm: 'Must be set to True to proceed'). The description adds no additional meaning beyond the name parameter being implied. Baseline 3 is appropriate for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'Update an existing test layer's name' which clearly identifies the action and the resource. However, it only mentions name while the schema includes other parameters (project_id, output_format), making it slightly incomplete but still distinct from siblings like create_test_layer or delete_test_layer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is provided. The caution 'Destructive' is generic and does not help distinguish from alternatives like create_test_layer or update_test_layer_schema. No explicit context about prerequisites or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_test_layer_schemaUpdate Test Layer SchemaB
DestructiveIdempotent

Update an existing test layer schema. ⚠️ CAUTION: Destructive.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoNew schema key.
confirmNoMust be set to True to proceed with update. Safety measure.
schema_idYesID of the test layer schema to update.
project_idNoAllure TestOps project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.
test_layer_idNoNew test layer ID to link to.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
keyNo
actionNoRequested operation name.
changedNo
schema_idNo
test_layer_nameNo
requires_confirmationNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds 'CAUTION: Destructive' but does not elaborate on the nature of the destruction (e.g., irreversible changes). It adds minimal value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with two fragments. It is efficient but lacks structure; a single sentence or bullet points would improve readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, destructive nature) and the presence of an output schema, the description is minimal but sufficient. It covers the core purpose and the caution, but could mention the confirm parameter's role.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter information, meeting the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an existing test layer schema' clearly states the verb (update) and resource (test layer schema), distinguishing it from sibling tools like create, list, and delete test layer schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, when not to use, or which sibling tools to choose instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_test_planUpdate Test PlanB
DestructiveIdempotent

Update the metadata of an existing Test Plan.

Currently, supports updating the name of the plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name
plan_idYesID of the test plan
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
nameNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive and idempotent behavior. The description adds that currently only the name can be updated, which is a useful limitation, but does not elaborate on side effects, permissions, or other behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loading the main purpose and adding a clarifying limitation. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks information about return values, error conditions, or required permissions. Even though an output schema exists, the description does not mention what the tool returns or how to handle failures.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% parameter description coverage, so the description adds minimal extra meaning. It reinforces that name is the primary updatable field, but does not explain output_format beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates metadata of a Test Plan and specifically mentions it supports updating the name. This distinguishes it from create, delete, or list operations among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives, such as when to create a new plan or use other update tools. The description only states what it does without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_test_resultsUpload Test ResultsA

Upload external test results to an existing launch.

ParametersJSON Schema
NameRequiredDescriptionDefault
resultsYesResult objects to append to the launch. Every item requires test_case_id (int) and status (passed, failed, broken, skipped, or unknown). Optional fields: start, stop, duration, message, name, and full_name. A maximum of 1000 results is accepted per call.
launch_idYesLaunch ID to receive the results (required).
project_idNoOptional override for the default Project ID.
output_formatNoOutput format: 'json' (default) or 'plain'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
failuresNo
launch_idNo
result_idsNo
uploaded_countNo
requested_countNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate the tool modifies data but is not destructive. The description implies appending results but does not add behavioral details beyond the schema, such as permissions or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It front-loads the action and resource effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters and an output schema, the description is minimal. It does not mention the maximum results limit (in schema) or return format, but it adequately covers the core operation for a simple upload.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 no extra meaning beyond the schema's parameter descriptions, simply restating the core action.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'upload' and the resource 'external test results to an existing launch'. It uses a specific verb and distinguishes from sibling tools that involve manual submission or listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives like 'submit_manual_test_results'. There is no explicit when/when-not or mention of appropriate contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv0.15.1
    • Changeddelete_test_suite1 field changed
      • addedInput schema / properties / tree_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional hierarchy tree ID. Use when the suite belongs to a non-default tree."
        +}
    • Addedget_test_suite_contents
  2. 4 tool updatesv0.15.0
    • Changedget_launch27 fields changed
      • addedInput schema / properties / include_execution_results
        Added value: +{
        +  "default": false,
        +  "description": "Opt in to complete compact execution results, project trees, and snapshot diagnostics.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / tree_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional project tree ID to expand; requires include_execution_results=true."
        +}
      • addedOutput schema / $defs
        Added value: +{
        +  "LaunchDefectOutput": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "closed": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Closed"
        +      },
        +      "count": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Count"
        +      },
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Id"
        +      },
        +      "issue": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/LaunchIssue"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      }
        +    },
        +    "title": "LaunchDefectOutput",
        +    "type": "object"
        +  },
        +  "LaunchDurationOutput": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "count": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Count"
        +      },
        +      "duration": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Duration"
        +      }
        +    },
        +    "title": "LaunchDurationOutput",
        +    "type": "object"
        +  },
        +  "LaunchEnvironmentValue": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Id"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "variable": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/LaunchEnvironmentVariable"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      }
        +    },
        +    "title": "LaunchEnvironmentValue",
        +    "type": "object"
        +  },
        +  "LaunchEnvironmentVariable": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Id"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      }
        +    },
        +    "title": "LaunchEnvironmentVariable",
        +    "type": "object"
        +  },
        +  "LaunchExecutionResultOutput": {
        +    "additionalProperties": false,
        +    "description": "Curated, non-recursive launch-result row shared by result-bearing sections.",
        +    "properties": {
        +      "assignee": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Assignee"
        +      },
        +      "created_date": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Created Date"
        +      },
        +      "duration": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Duration"
        +      },
        +      "flaky": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Flaky"
        +      },
        +      "hidden": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Hidden"
        +      },
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Exact Test Result ID for get_test_result.",
        +        "title": "Id"
        +      },
        +      "job_run": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/LaunchJobRun"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Job-run metadata. Its id is a job-run ID, not a Test Result ID."
        +      },
        +      "last_modified_date": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Last Modified Date"
        +      },
        +      "layer_name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Layer Name"
        +      },
        +      "manual": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Manual"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "previous_retry": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/LaunchResultReferenceOutput"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "start": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Start"
        +      },
        +      "status": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Status"
        +      },
        +      "stop": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Stop"
        +      },
        +      "test_case_id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Test Case Id"
        +      },
        +      "tested_by": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Tested By"
        +      },
        +      "total_retries": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Total Retries"
        +      }
        +    },
        +    "title": "LaunchExecutionResultOutput",
        +    "type": "object"
        +  },
        +  "LaunchExecutionSnapshotOutput": {
        +    "additionalProperties": false,
        +    "description": "Point-in-time state for the opt-in execution aggregate.",
        +    "properties": {
        +      "captured_at": {
        +        "title": "Captured At",
        +        "type": "string"
        +      },
        +      "closed": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Closed"
        +      },
        +      "message": {
        +        "title": "Message",
        +        "type": "string"
        +      },
        +      "mutable": {
        +        "title": "Mutable",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "captured_at",
        +      "mutable",
        +      "message"
        +    ],
        +    "title": "LaunchExecutionSnapshotOutput",
        +    "type": "object"
        +  },
        +  "LaunchIssue": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "closed": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Closed"
        +      },
        +      "display_name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Display Name"
        +      },
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Id"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "status": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Status"
        +      },
        +      "summary": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Summary"
        +      },
        +      "url": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Url"
        +      }
        +    },
        +    "title": "LaunchIssue",
        +    "type": "object"
        +  },
        +  "LaunchJob": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Id"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "type": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Type"
        +      },
        +      "url": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Url"
        +      }
        +    },
        +    "title": "LaunchJob",
        +    "type": "object"
        +  },
        +  "LaunchJobRun": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "error_message": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Error Message"
        +      },
        +      "external_id": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "External Id"
        +      },
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Id"
        +      },
        +      "job": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/LaunchJob"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "stage": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Stage"
        +      },
        +      "status": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Status"
        +      },
        +      "url": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Url"
        +      }
        +    },
        +    "title": "LaunchJobRun",
        +    "type": "object"
        +  },
        +  "LaunchLink": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "type": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Type"
        +      },
        +      "url": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Url"
        +      }
        +    },
        +    "title": "LaunchLink",
        +    "type": "object"
        +  },
        +  "LaunchMemberStatsOutput": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "assignee": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Assignee"
        +      },
        +      "defects_count": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Defects Count"
        +      },
        +      "duration_sum": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Duration Sum"
        +      },
        +      "first_name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "First Name"
        +      },
        +      "last_name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Last Name"
        +      },
        +      "muted_count": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Muted Count"
        +      },
        +      "retried_count": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Retried Count"
        +      },
        +      "statistic": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "$ref": "#/$defs/LaunchStatisticItem"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Statistic"
        +      }
        +    },
        +    "title": "LaunchMemberStatsOutput",
        +    "type": "object"
        +  },
        +  "LaunchProgressOutput": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "ready": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Ready"
        +      }
        +    },
        +    "title": "LaunchProgressOutput",
        +    "type": "object"
        +  },
        +  "LaunchResultReferenceOutput": {
        +    "additionalProperties": false,
        +    "description": "Compact result reference; ``id`` is the exact Test Result ID for ``get_test_result``.",
        +    "properties": {
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Exact Test Result ID for get_test_result.",
        +        "title": "Id"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "status": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Status"
        +      }
        +    },
        +    "title": "LaunchResultReferenceOutput",
        +    "type": "object"
        +  },
        +  "LaunchResultTreeGroupOutput": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "context_key": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Context Key"
        +      },
        +      "context_value": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Context Value"
        +      },
        +      "leafs": {
        +        "items": {
        +          "$ref": "#/$defs/LaunchExecutionResultOutput"
        +        },
        +        "title": "Leafs",
        +        "type": "array"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "uid": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Uid"
        +      }
        +    },
        +    "title": "LaunchResultTreeGroupOutput",
        +    "type": "object"
        +  },
        +  "LaunchResultTreeViewOutput": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "context_key": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Context Key"
        +      },
        +      "context_value": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Context Value"
        +      },
        +      "groups": {
        +        "items": {
        +          "$ref": "#/$defs/LaunchResultTreeGroupOutput"
        +        },
        +        "title": "Groups",
        +        "type": "array"
        +      },
        +      "leafs": {
        +        "items": {
        +          "$ref": "#/$defs/LaunchExecutionResultOutput"
        +        },
        +        "title": "Leafs",
        +        "type": "array"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "shown": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Shown"
        +      },
        +      "total": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Total"
        +      },
        +      "uid": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Uid"
        +      }
        +    },
        +    "title": "LaunchResultTreeViewOutput",
        +    "type": "object"
        +  },
        +  "LaunchStatisticItem": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "count": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Count"
        +      },
        +      "status": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Status"
        +      }
        +    },
        +    "title": "LaunchStatisticItem",
        +    "type": "object"
        +  },
        +  "LaunchTag": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Id"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      }
        +    },
        +    "title": "LaunchTag",
        +    "type": "object"
        +  },
        +  "LaunchTreeMetadataOutput": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Id"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "project_id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Project Id"
        +      }
        +    },
        +    "title": "LaunchTreeMetadataOutput",
        +    "type": "object"
        +  },
        +  "LaunchTreeNodeOutput": {
        +    "additionalProperties": false,
        +    "description": "Recursive tree node; group IDs are hierarchy IDs and leaf IDs are result IDs.",
        +    "properties": {
        +      "assignee": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Assignee"
        +      },
        +      "children": {
        +        "items": {
        +          "$ref": "#/$defs/LaunchTreeNodeOutput"
        +        },
        +        "title": "Children",
        +        "type": "array"
        +      },
        +      "created_date": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Created Date"
        +      },
        +      "custom_field_id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Custom Field Id"
        +      },
        +      "duration": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Duration"
        +      },
        +      "flaky": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Flaky"
        +      },
        +      "hidden": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Hidden"
        +      },
        +      "id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Exact Test Result ID for get_test_result.",
        +        "title": "Id"
        +      },
        +      "job_run": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/LaunchJobRun"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Job-run metadata. Its id is a job-run ID, not a Test Result ID."
        +      },
        +      "last_modified_date": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Last Modified Date"
        +      },
        +      "layer_name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Layer Name"
        +      },
        +      "manual": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Manual"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "previous_retry": {
        +        "anyOf": [
        +          {
        +            "$ref": "#/$defs/LaunchResultReferenceOutput"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "start": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Start"
        +      },
        +      "statistic": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "$ref": "#/$defs/LaunchStatisticItem"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Statistic"
        +      },
        +      "status": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Status"
        +      },
        +      "stop": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Stop"
        +      },
        +      "test_case_id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Test Case Id"
        +      },
        +      "tested_by": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Tested By"
        +      },
        +      "total_retries": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Total Retries"
        +      },
        +      "type": {
        +        "enum": [
        +          "GROUP",
        +          "LEAF"
        +        ],
        +        "title": "Type",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "type"
        +    ],
        +    "title": "LaunchTreeNodeOutput",
        +    "type": "object"
        +  },
        +  "LaunchTreeOutput": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "hierarchy": {
        +        "items": {
        +          "$ref": "#/$defs/LaunchTreeNodeOutput"
        +        },
        +        "title": "Hierarchy",
        +        "type": "array"
        +      },
        +      "metadata": {
        +        "$ref": "#/$defs/LaunchTreeMetadataOutput"
        +      },
        +      "statistic_widget": {
        +        "items": {
        +          "$ref": "#/$defs/LaunchTreeStatisticWidgetOutput"
        +        },
        +        "title": "Statistic Widget",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "metadata"
        +    ],
        +    "title": "LaunchTreeOutput",
        +    "type": "object"
        +  },
        +  "LaunchTreeStatisticWidgetOutput": {
        +    "additionalProperties": false,
        +    "description": "One tree-statistics widget row, distinct from a Test Result row.",
        +    "properties": {
        +      "name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "statistic": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "$ref": "#/$defs/LaunchStatisticItem"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Statistic"
        +      },
        +      "uid": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Uid"
        +      }
        +    },
        +    "title": "LaunchTreeStatisticWidgetOutput",
        +    "type": "object"
        +  },
        +  "LaunchUnavailableSectionOutput": {
        +    "additionalProperties": false,
        +    "description": "Sanitized optional-read completeness diagnostic.",
        +    "properties": {
        +      "items_retrieved": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Items Retrieved"
        +      },
        +      "message": {
        +        "title": "Message",
        +        "type": "string"
        +      },
        +      "reason": {
        +        "title": "Reason",
        +        "type": "string"
        +      },
        +      "section": {
        +        "title": "Section",
        +        "type": "string"
        +      },
        +      "status_code": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Status Code"
        +      }
        +    },
        +    "required": [
        +      "section",
        +      "reason",
        +      "message"
        +    ],
        +    "title": "LaunchUnavailableSectionOutput",
        +    "type": "object"
        +  },
        +  "LaunchVariableOutput": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "key": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Key"
        +      },
        +      "values": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Values"
        +      }
        +    },
        +    "title": "LaunchVariableOutput",
        +    "type": "object"
        +  }
        +}
      • addedOutput schema / properties / assignees
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Assignees"
        +}
      • addedOutput schema / properties / core_test_result_index
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "$ref": "#/$defs/LaunchExecutionResultOutput"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Core Test Result Index"
        +}
      • addedOutput schema / properties / defects
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "$ref": "#/$defs/LaunchDefectOutput"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Defects"
        +}
      • addedOutput schema / properties / duration
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "$ref": "#/$defs/LaunchDurationOutput"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Duration"
        +}
      • changedOutput schema / properties / environment / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Id"
        -        },
        -        "name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Name"
        -        },
        -        "variable": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "id": {
        -                  "anyOf": [
        -                    {
        -                      "type": "integer"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null,
        -                  "title": "Id"
        -                },
        -                "name": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null,
        -                  "title": "Name"
        -                }
        -              },
        -              "title": "LaunchEnvironmentVariable",
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        }
        -      },
        -      "title": "LaunchEnvironmentValue",
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "$ref": "#/$defs/LaunchEnvironmentValue"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / execution_snapshot
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/LaunchExecutionSnapshotOutput"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / flat_test_results
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "$ref": "#/$defs/LaunchExecutionResultOutput"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Compact rows; each row id is the Test Result ID for get_test_result.",
        +  "title": "Flat Test Results"
        +}
      • changedOutput schema / properties / issues / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "closed": {
        -          "anyOf": [
        -            {
        -              "type": "boolean"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Closed"
        -        },
        -        "display_name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Display Name"
        -        },
        -        "id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Id"
        -        },
        -        "name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Name"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Status"
        -        },
        -        "summary": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Summary"
        -        },
        -        "url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Url"
        -        }
        -      },
        -      "title": "LaunchIssue",
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "$ref": "#/$defs/LaunchIssue"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / jobs / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "error_message": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Error Message"
        -        },
        -        "external_id": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "External Id"
        -        },
        -        "id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Id"
        -        },
        -        "job": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "id": {
        -                  "anyOf": [
        -                    {
        -                      "type": "integer"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null,
        -                  "title": "Id"
        -                },
        -                "name": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null,
        -                  "title": "Name"
        -                },
        -                "type": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null,
        -                  "title": "Type"
        -                },
        -                "url": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "default": null,
        -                  "title": "Url"
        -                }
        -              },
        -              "title": "LaunchJob",
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null
        -        },
        -        "name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Name"
        -        },
        -        "stage": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Stage"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Status"
        -        },
        -        "url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Url"
        -        }
        -      },
        -      "title": "LaunchJobRun",
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "$ref": "#/$defs/LaunchJobRun"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / links / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Name"
        -        },
        -        "type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Type"
        -        },
        -        "url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Url"
        -        }
        -      },
        -      "title": "LaunchLink",
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "$ref": "#/$defs/LaunchLink"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / member_stats
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "$ref": "#/$defs/LaunchMemberStatsOutput"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Member Stats"
        +}
      • addedOutput schema / properties / muted_results
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "$ref": "#/$defs/LaunchExecutionResultOutput"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Muted Results"
        +}
      • addedOutput schema / properties / partial
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Partial"
        +}
      • addedOutput schema / properties / progress
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/LaunchProgressOutput"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / result_defect_tree
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/LaunchResultTreeViewOutput"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / result_timeline
        Added value: +{
        +  "anyOf": [
        +    {
        +      "$ref": "#/$defs/LaunchResultTreeViewOutput"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedOutput schema / properties / retries
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "$ref": "#/$defs/LaunchExecutionResultOutput"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Retries"
        +}
      • changedOutput schema / properties / statistic / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "count": {
        -          "anyOf": [
        -            {
        -              "minimum": 0,
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Count"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Status"
        -        }
        -      },
        -      "title": "LaunchStatisticItem",
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "$ref": "#/$defs/LaunchStatisticItem"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / tags / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "id": {
        -          "anyOf": [
        -            {
        -              "type": "integer"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Id"
        -        },
        -        "name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "default": null,
        -          "title": "Name"
        -        }
        -      },
        -      "title": "LaunchTag",
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "$ref": "#/$defs/LaunchTag"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / testers
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Testers"
        +}
      • addedOutput schema / properties / trees
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "$ref": "#/$defs/LaunchTreeOutput"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Trees"
        +}
      • addedOutput schema / properties / unavailable_sections
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "$ref": "#/$defs/LaunchUnavailableSectionOutput"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Unavailable Sections"
        +}
      • addedOutput schema / properties / unresolved_results
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "$ref": "#/$defs/LaunchExecutionResultOutput"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Unresolved Results"
        +}
      • addedOutput schema / properties / variables
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "$ref": "#/$defs/LaunchVariableOutput"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Variables"
        +}
    • Changedget_test_case_details3 fields changed
      • removedOutput schema / $defs / Attachment
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "A lightweight attachment reference.",
        -  "properties": {
        -    "id": {
        -      "anyOf": [
        -        {
        -          "type": "string"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "default": null,
        -      "description": "Attachment identifier.",
        -      "title": "Id"
        -    },
        -    "name": {
        -      "description": "Attachment filename or display name.",
        -      "title": "Name",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "name"
        -  ],
        -  "title": "Attachment",
        -  "type": "object"
        -}
      • addedOutput schema / $defs / TestCaseAttachmentOutput
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "A test-case attachment reference safe to pass to the preparation tool.",
        +  "properties": {
        +    "attachment_id": {
        +      "anyOf": [
        +        {
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Attachment identifier for preparation.",
        +      "title": "Attachment Id"
        +    },
        +    "attachment_kind": {
        +      "const": "test_case",
        +      "default": "test_case",
        +      "description": "Verified attachment owner kind for prepare_attachment_download.",
        +      "title": "Attachment Kind",
        +      "type": "string"
        +    },
        +    "content_length": {
        +      "anyOf": [
        +        {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Attachment byte length when available.",
        +      "title": "Content Length"
        +    },
        +    "content_type": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Attachment MIME type when available.",
        +      "title": "Content Type"
        +    },
        +    "name": {
        +      "description": "Attachment filename or display name.",
        +      "title": "Name",
        +      "type": "string"
        +    },
        +    "test_case_id": {
        +      "anyOf": [
        +        {
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Required owner context for preparation.",
        +      "title": "Test Case Id"
        +    }
        +  },
        +  "required": [
        +    "name"
        +  ],
        +  "title": "TestCaseAttachmentOutput",
        +  "type": "object"
        +}
      • changedOutput schema / properties / attachments / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "$ref": "#/$defs/Attachment"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "$ref": "#/$defs/TestCaseAttachmentOutput"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Addedget_test_result
    • Addedprepare_attachment_download
  3. 66 tool updatesv0.14.0
    • Addedadd_test_result_attachment
    • Addedadd_test_step_attachment
    • Addedassign_test_cases_to_suite
    • Addedclose_launch
    • Addedcreate_custom_field_value
    • Addedcreate_defect
    • Addedcreate_defect_matcher
    • Changedcreate_launch1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "description": "Stable compact launch fields emitted by create and lifecycle tools.",
        +  "properties": {
        +    "autoclose": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Autoclose"
        +    },
        +    "closed": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Closed"
        +    },
        +    "created_date": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Created Date"
        +    },
        +    "external": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "External"
        +    },
        +    "id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Id"
        +    },
        +    "known_defects_count": {
        +      "anyOf": [
        +        {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Known Defects Count"
        +    },
        +    "last_modified_date": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Last Modified Date"
        +    },
        +    "manual_execution_guidance": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Manual Execution Guidance"
        +    },
        +    "name": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Name"
        +    },
        +    "new_defects_count": {
        +      "anyOf": [
        +        {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "New Defects Count"
        +    },
        +    "operation": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Operation"
        +    },
        +    "project_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Project Id"
        +    },
        +    "url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Url"
        +    }
        +  },
        +  "title": "LaunchMutationSummary",
        +  "type": "object"
        +}
    • Changedcreate_shared_step1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Id"
        +    },
        +    "name": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Name"
        +    },
        +    "project_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Project Id"
        +    },
        +    "url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Url"
        +    }
        +  },
        +  "title": "CreateSharedStepOutput",
        +  "type": "object"
        +}
    • Changedcreate_test_case1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Id"
        +    },
        +    "issues": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Issues"
        +    },
        +    "name": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Name"
        +    },
        +    "url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Url"
        +    }
        +  },
        +  "title": "CreateTestCaseOutput",
        +  "type": "object"
        +}
    • Addedcreate_test_layer
    • Addedcreate_test_layer_schema
    • Addedcreate_test_plan
    • Addedcreate_test_suite
    • Addeddelete_archived_shared_steps
    • Changeddelete_archived_test_cases1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "action": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Requested operation name.",
        +      "title": "Action"
        +    },
        +    "deleted_count": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Deleted Count"
        +    },
        +    "requires_confirmation": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Requires Confirmation"
        +    }
        +  },
        +  "title": "DeleteArchivedTestCasesOutput",
        +  "type": "object"
        +}
    • Changeddelete_custom_field_value1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "action": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Requested operation name.",
        +      "title": "Action"
        +    },
        +    "cfv_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Cfv Id"
        +    },
        +    "id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Id"
        +    },
        +    "requires_confirmation": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Requires Confirmation"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Status"
        +    }
        +  },
        +  "title": "DeleteCustomFieldValueOutput",
        +  "type": "object"
        +}
    • Changeddelete_defect1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "defect_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Defect Id"
        +    },
        +    "id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Id"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Status"
        +    }
        +  },
        +  "title": "DeleteDefectOutput",
        +  "type": "object"
        +}
    • Addeddelete_defect_matcher
    • Addeddelete_launch
    • Addeddelete_shared_step
    • Changeddelete_test_case1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "action": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Requested operation name.",
        +      "title": "Action"
        +    },
        +    "error": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Error"
        +    },
        +    "name": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Name"
        +    },
        +    "requires_confirmation": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Requires Confirmation"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Status"
        +    },
        +    "test_case_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Test Case Id"
        +    },
        +    "url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Url"
        +    }
        +  },
        +  "title": "DeleteTestCaseOutput",
        +  "type": "object"
        +}
    • Addeddelete_test_layer
    • Addeddelete_test_layer_schema
    • Addeddelete_test_plan
    • Addeddelete_test_suite
    • Addeddelete_unused_custom_fields
    • Addedgenerate_test_code
    • Addedget_custom_fields
    • Addedget_defect
    • Changedget_launch1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "description": "Rich exact-ID launch fields, with explicit stable nested projections.",
        +  "properties": {
        +    "autoclose": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Autoclose"
        +    },
        +    "closed": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Closed"
        +    },
        +    "created_by": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Created By"
        +    },
        +    "created_date": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Created Date"
        +    },
        +    "environment": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "id": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Id"
        +              },
        +              "name": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Name"
        +              },
        +              "variable": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "properties": {
        +                      "id": {
        +                        "anyOf": [
        +                          {
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null,
        +                        "title": "Id"
        +                      },
        +                      "name": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null,
        +                        "title": "Name"
        +                      }
        +                    },
        +                    "title": "LaunchEnvironmentVariable",
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              }
        +            },
        +            "title": "LaunchEnvironmentValue",
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Environment"
        +    },
        +    "external": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "External"
        +    },
        +    "id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Id"
        +    },
        +    "issues": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "closed": {
        +                "anyOf": [
        +                  {
        +                    "type": "boolean"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Closed"
        +              },
        +              "display_name": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Display Name"
        +              },
        +              "id": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Id"
        +              },
        +              "name": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Name"
        +              },
        +              "status": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Status"
        +              },
        +              "summary": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Summary"
        +              },
        +              "url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Url"
        +              }
        +            },
        +            "title": "LaunchIssue",
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Issues"
        +    },
        +    "jobs": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "error_message": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Error Message"
        +              },
        +              "external_id": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "External Id"
        +              },
        +              "id": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Id"
        +              },
        +              "job": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": false,
        +                    "properties": {
        +                      "id": {
        +                        "anyOf": [
        +                          {
        +                            "type": "integer"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null,
        +                        "title": "Id"
        +                      },
        +                      "name": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null,
        +                        "title": "Name"
        +                      },
        +                      "type": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null,
        +                        "title": "Type"
        +                      },
        +                      "url": {
        +                        "anyOf": [
        +                          {
        +                            "type": "string"
        +                          },
        +                          {
        +                            "type": "null"
        +                          }
        +                        ],
        +                        "default": null,
        +                        "title": "Url"
        +                      }
        +                    },
        +                    "title": "LaunchJob",
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null
        +              },
        +              "name": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Name"
        +              },
        +              "stage": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Stage"
        +              },
        +              "status": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Status"
        +              },
        +              "url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Url"
        +              }
        +            },
        +            "title": "LaunchJobRun",
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Jobs"
        +    },
        +    "known_defects_count": {
        +      "anyOf": [
        +        {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Known Defects Count"
        +    },
        +    "last_modified_by": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Last Modified By"
        +    },
        +    "last_modified_date": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Last Modified Date"
        +    },
        +    "links": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "name": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Name"
        +              },
        +              "type": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Type"
        +              },
        +              "url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Url"
        +              }
        +            },
        +            "title": "LaunchLink",
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Links"
        +    },
        +    "manual_execution_guidance": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Manual Execution Guidance"
        +    },
        +    "name": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Name"
        +    },
        +    "new_defects_count": {
        +      "anyOf": [
        +        {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "New Defects Count"
        +    },
        +    "project_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Project Id"
        +    },
        +    "statistic": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Count"
        +              },
        +              "status": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Status"
        +              }
        +            },
        +            "title": "LaunchStatisticItem",
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Statistic"
        +    },
        +    "tags": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "id": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Id"
        +              },
        +              "name": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Name"
        +              }
        +            },
        +            "title": "LaunchTag",
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Tags"
        +    },
        +    "url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Url"
        +    }
        +  },
        +  "title": "LaunchDetailOutput",
        +  "type": "object"
        +}
    • Addedget_project
    • Changedget_test_case_custom_fields1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "custom_fields": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "description": "A named custom-field value exposed by test-case details.",
        +            "properties": {
        +              "name": {
        +                "description": "Custom field name.",
        +                "title": "Name",
        +                "type": "string"
        +              },
        +              "value": {
        +                "description": "Rendered custom field value.",
        +                "title": "Value",
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "value"
        +            ],
        +            "title": "CustomFieldEntry",
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "additionalProperties": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Custom-field values as named entries or a value map.",
        +      "title": "Custom Fields"
        +    },
        +    "test_case_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Test Case Id"
        +    }
        +  },
        +  "title": "GetTestCaseCustomFieldsOutput",
        +  "type": "object"
        +}
    • Changedget_test_case_details1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "Attachment": {
        +      "additionalProperties": false,
        +      "description": "A lightweight attachment reference.",
        +      "properties": {
        +        "id": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Attachment identifier.",
        +          "title": "Id"
        +        },
        +        "name": {
        +          "description": "Attachment filename or display name.",
        +          "title": "Name",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "name"
        +      ],
        +      "title": "Attachment",
        +      "type": "object"
        +    },
        +    "CustomFieldEntry": {
        +      "additionalProperties": false,
        +      "description": "A named custom-field value exposed by test-case details.",
        +      "properties": {
        +        "name": {
        +          "description": "Custom field name.",
        +          "title": "Name",
        +          "type": "string"
        +        },
        +        "value": {
        +          "description": "Rendered custom field value.",
        +          "title": "Value",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "value"
        +      ],
        +      "title": "CustomFieldEntry",
        +      "type": "object"
        +    },
        +    "Step": {
        +      "additionalProperties": false,
        +      "description": "A serialized scenario step, including recursive shared-step children.",
        +      "properties": {
        +        "action": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Inline step action.",
        +          "title": "Action"
        +        },
        +        "expected": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Expected result for an inline step.",
        +          "title": "Expected"
        +        },
        +        "index": {
        +          "description": "One-based step index.",
        +          "minimum": 1,
        +          "title": "Index",
        +          "type": "integer"
        +        },
        +        "shared_step_id": {
        +          "anyOf": [
        +            {
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Referenced shared-step identifier.",
        +          "title": "Shared Step Id"
        +        },
        +        "shared_step_url": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Referenced shared-step URL.",
        +          "title": "Shared Step Url"
        +        },
        +        "steps": {
        +          "anyOf": [
        +            {
        +              "items": {
        +                "$ref": "#/$defs/Step"
        +              },
        +              "type": "array"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Nested shared-step children.",
        +          "title": "Steps"
        +        },
        +        "type": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Step kind, such as shared_step.",
        +          "title": "Type"
        +        }
        +      },
        +      "required": [
        +        "index"
        +      ],
        +      "title": "Step",
        +      "type": "object"
        +    }
        +  },
        +  "additionalProperties": false,
        +  "description": "Structured details for one test case.",
        +  "properties": {
        +    "attachments": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "$ref": "#/$defs/Attachment"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Attachments"
        +    },
        +    "custom_fields": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "$ref": "#/$defs/CustomFieldEntry"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Custom Fields"
        +    },
        +    "description": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Description"
        +    },
        +    "id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Id"
        +    },
        +    "name": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Name"
        +    },
        +    "precondition": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Precondition"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Status"
        +    },
        +    "steps": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "$ref": "#/$defs/Step"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Steps"
        +    },
        +    "tags": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Tags"
        +    },
        +    "url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Url"
        +    }
        +  },
        +  "title": "TestCaseDetailsOutput",
        +  "type": "object"
        +}
    • Addedlink_defect_to_test_case
    • Addedlink_shared_step
    • Addedlist_custom_field_values
    • Addedlist_defect_matchers
    • Addedlist_defect_test_cases
    • Addedlist_defects
    • Addedlist_integrations
    • Changedlist_launch_test_results1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "failed_only": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Failed Only"
        +    },
        +    "items": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "description": "Closed common vocabulary for collection entries across Lucius tools.",
        +            "properties": {
        +              "assignee": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Assignee"
        +              },
        +              "closed": {
        +                "anyOf": [
        +                  {
        +                    "type": "boolean"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Closed"
        +              },
        +              "id": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Id"
        +              },
        +              "key": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Key"
        +              },
        +              "manual": {
        +                "anyOf": [
        +                  {
        +                    "type": "boolean"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Manual"
        +              },
        +              "name": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Name"
        +              },
        +              "project_id": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Project Id"
        +              },
        +              "required": {
        +                "anyOf": [
        +                  {
        +                    "type": "boolean"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Required"
        +              },
        +              "result_id": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Result Id"
        +              },
        +              "status": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Status"
        +              },
        +              "steps_count": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Steps Count"
        +              },
        +              "tags": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Tags"
        +              },
        +              "test_case_id": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Test Case Id"
        +              },
        +              "test_cases_count": {
        +                "anyOf": [
        +                  {
        +                    "minimum": 0,
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Test Cases Count"
        +              },
        +              "test_layer_id": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Test Layer Id"
        +              },
        +              "test_layer_name": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Test Layer Name"
        +              },
        +              "tested_by": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Tested By"
        +              },
        +              "type": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Type"
        +              },
        +              "url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Url"
        +              },
        +              "values": {
        +                "anyOf": [
        +                  {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Values"
        +              }
        +            },
        +            "title": "EntitySummary",
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Entity-specific collection entries.",
        +      "title": "Items"
        +    },
        +    "launch_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Launch Id"
        +    },
        +    "manual_only": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Manual Only"
        +    },
        +    "page": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Page"
        +    },
        +    "size": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Size"
        +    },
        +    "total": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Total"
        +    },
        +    "total_pages": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Total Pages"
        +    }
        +  },
        +  "title": "ListLaunchTestResultsOutput",
        +  "type": "object"
        +}
    • Changedlist_launches1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "description": "Paginated compact launches.",
        +  "properties": {
        +    "items": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "description": "Compact launch fields emitted only for collection discovery.",
        +            "properties": {
        +              "autoclose": {
        +                "anyOf": [
        +                  {
        +                    "type": "boolean"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Autoclose"
        +              },
        +              "closed": {
        +                "anyOf": [
        +                  {
        +                    "type": "boolean"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Closed"
        +              },
        +              "created_date": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Created Date"
        +              },
        +              "external": {
        +                "anyOf": [
        +                  {
        +                    "type": "boolean"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "External"
        +              },
        +              "id": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Id"
        +              },
        +              "last_modified_date": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Last Modified Date"
        +              },
        +              "name": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Name"
        +              },
        +              "project_id": {
        +                "anyOf": [
        +                  {
        +                    "type": "integer"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Project Id"
        +              },
        +              "url": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ],
        +                "default": null,
        +                "title": "Url"
        +              }
        +            },
        +            "title": "LaunchListItem",
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Items"
        +    },
        +    "page": {
        +      "anyOf": [
        +        {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Page"
        +    },
        +    "size": {
        +      "anyOf": [
        +        {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Size"
        +    },
        +    "total": {
        +      "anyOf": [
        +        {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Total"
        +    },
        +    "total_pages": {
        +      "anyOf": [
        +        {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Total Pages"
        +    }
        +  },
        +  "title": "ListLaunchesOutput",
        +  "type": "object"
        +}
    • Addedlist_shared_steps
    • Addedlist_test_cases
    • Addedlist_test_layer_schemas
    • Addedlist_test_layers
    • Addedlist_test_plans
    • Addedlist_test_suites
    • Addedmanage_test_plan_content
    • Addedreopen_launch
    • Changedrerun_test_results_manually1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "assignees": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Assignees"
        +    },
        +    "force_manual": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Force Manual"
        +    },
        +    "launch_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Launch Id"
        +    },
        +    "result_ids": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "type": "integer"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Result Ids"
        +    },
        +    "scheduled_count": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Scheduled Count"
        +    }
        +  },
        +  "title": "RerunTestResultsManuallyOutput",
        +  "type": "object"
        +}
    • Changedsearch_test_cases1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "description": "Paginated output for ``search_test_cases``.",
        +  "properties": {
        +    "items": {
        +      "description": "Matching test cases.",
        +      "items": {
        +        "additionalProperties": false,
        +        "description": "A compact test-case entry returned by search and list tools.",
        +        "properties": {
        +          "id": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Test case identifier.",
        +            "title": "Id"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Test case name.",
        +            "title": "Name"
        +          },
        +          "status": {
        +            "description": "Test case status label.",
        +            "title": "Status",
        +            "type": "string"
        +          },
        +          "tags": {
        +            "description": "Test case tags.",
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Tags",
        +            "type": "array"
        +          },
        +          "url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "description": "Canonical TestOps URL.",
        +            "title": "Url"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "status",
        +          "tags"
        +        ],
        +        "title": "TestCaseSummary",
        +        "type": "object"
        +      },
        +      "title": "Items",
        +      "type": "array"
        +    },
        +    "page": {
        +      "description": "Zero-based result page.",
        +      "minimum": 0,
        +      "title": "Page",
        +      "type": "integer"
        +    },
        +    "query": {
        +      "description": "Query that produced these results.",
        +      "title": "Query",
        +      "type": "string"
        +    },
        +    "size": {
        +      "description": "Requested page size.",
        +      "minimum": 0,
        +      "title": "Size",
        +      "type": "integer"
        +    },
        +    "total": {
        +      "description": "Total matching test cases.",
        +      "minimum": 0,
        +      "title": "Total",
        +      "type": "integer"
        +    },
        +    "total_pages": {
        +      "description": "Number of result pages.",
        +      "minimum": 0,
        +      "title": "Total Pages",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "total",
        +    "page",
        +    "size",
        +    "total_pages",
        +    "query",
        +    "items"
        +  ],
        +  "title": "SearchTestCasesOutput",
        +  "type": "object"
        +}
    • Changedstart_manual_test_session1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "environment": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "description": "A string key/value pair, for example a manual-session environment entry.",
        +            "properties": {
        +              "key": {
        +                "description": "Variable name.",
        +                "title": "Key",
        +                "type": "string"
        +              },
        +              "value": {
        +                "description": "Variable value.",
        +                "title": "Value",
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "key",
        +              "value"
        +            ],
        +            "title": "KeyValue",
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Environment"
        +    },
        +    "job_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Job Id"
        +    },
        +    "job_run_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Job Run Id"
        +    },
        +    "launch_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Launch Id"
        +    },
        +    "project_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Project Id"
        +    },
        +    "test_session_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Test Session Id"
        +    }
        +  },
        +  "title": "StartManualTestSessionOutput",
        +  "type": "object"
        +}
    • Changedsubmit_manual_test_results1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "result_ids": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "type": "integer"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Result Ids"
        +    },
        +    "submitted_count": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Submitted Count"
        +    },
        +    "test_session_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Test Session Id"
        +    }
        +  },
        +  "title": "SubmitManualTestResultsOutput",
        +  "type": "object"
        +}
    • Addedunlink_issue_from_test_case
    • Changedunlink_shared_step1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "Step": {
        +      "additionalProperties": false,
        +      "description": "A serialized scenario step, including recursive shared-step children.",
        +      "properties": {
        +        "action": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Inline step action.",
        +          "title": "Action"
        +        },
        +        "expected": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Expected result for an inline step.",
        +          "title": "Expected"
        +        },
        +        "index": {
        +          "description": "One-based step index.",
        +          "minimum": 1,
        +          "title": "Index",
        +          "type": "integer"
        +        },
        +        "shared_step_id": {
        +          "anyOf": [
        +            {
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Referenced shared-step identifier.",
        +          "title": "Shared Step Id"
        +        },
        +        "shared_step_url": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Referenced shared-step URL.",
        +          "title": "Shared Step Url"
        +        },
        +        "steps": {
        +          "anyOf": [
        +            {
        +              "items": {
        +                "$ref": "#/$defs/Step"
        +              },
        +              "type": "array"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Nested shared-step children.",
        +          "title": "Steps"
        +        },
        +        "type": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "Step kind, such as shared_step.",
        +          "title": "Type"
        +        }
        +      },
        +      "required": [
        +        "index"
        +      ],
        +      "title": "Step",
        +      "type": "object"
        +    }
        +  },
        +  "additionalProperties": false,
        +  "properties": {
        +    "action": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Requested operation name.",
        +      "title": "Action"
        +    },
        +    "error": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Error"
        +    },
        +    "requires_confirmation": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Requires Confirmation"
        +    },
        +    "shared_step_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Shared Step Id"
        +    },
        +    "shared_step_url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Shared Step Url"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Status"
        +    },
        +    "steps": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "$ref": "#/$defs/Step"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Serialized scenario steps.",
        +      "title": "Steps"
        +    },
        +    "test_case_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Test Case Id"
        +    },
        +    "test_case_url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Test Case Url"
        +    }
        +  },
        +  "title": "UnlinkSharedStepOutput",
        +  "type": "object"
        +}
    • Changedupdate_custom_field_value1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "action": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Requested operation name.",
        +      "title": "Action"
        +    },
        +    "cfv_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Cfv Id"
        +    },
        +    "custom_field_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Custom Field Id"
        +    },
        +    "custom_field_name": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Custom Field Name"
        +    },
        +    "id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Id"
        +    },
        +    "name": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Name"
        +    },
        +    "requires_confirmation": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Requires Confirmation"
        +    }
        +  },
        +  "title": "UpdateCustomFieldValueOutput",
        +  "type": "object"
        +}
    • Addedupdate_defect
    • Addedupdate_defect_matcher
    • Addedupdate_shared_step
    • Changedupdate_test_case1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "action": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Requested operation name.",
        +      "title": "Action"
        +    },
        +    "changes": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Changes"
        +    },
        +    "id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Id"
        +    },
        +    "name": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Name"
        +    },
        +    "requires_confirmation": {
        +      "anyOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Requires Confirmation"
        +    },
        +    "summary": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Summary"
        +    },
        +    "test_case_id": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Test Case Id"
        +    },
        +    "url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Url"
        +    }
        +  },
        +  "title": "UpdateTestCaseOutput",
        +  "type": "object"
        +}
    • Addedupdate_test_layer
    • Addedupdate_test_layer_schema
    • Addedupdate_test_plan
    • Addedupload_test_results
  4. 45 tool updatesv0.12.1
    • Removedadd_test_result_attachment
    • Removedadd_test_step_attachment
    • Removedassign_test_cases_to_suite
    • Removedclose_launch
    • Removedcreate_custom_field_value
    • Removedcreate_defect
    • Removedcreate_defect_matcher
    • Removedcreate_test_layer
    • Removedcreate_test_layer_schema
    • Removedcreate_test_plan
    • Removedcreate_test_suite
    • Removeddelete_archived_shared_steps
    • Removeddelete_defect_matcher
    • Removeddelete_launch
    • Removeddelete_shared_step
    • Removeddelete_test_layer
    • Removeddelete_test_layer_schema
    • Removeddelete_test_plan
    • Removeddelete_test_suite
    • Removeddelete_unused_custom_fields
    • Removedget_custom_fields
    • Removedget_defect
    • Removedlink_defect_to_test_case
    • Removedlink_shared_step
    • Removedlist_custom_field_values
    • Removedlist_defect_matchers
    • Removedlist_defect_test_cases
    • Removedlist_defects
    • Removedlist_integrations
    • Removedlist_shared_steps
    • Removedlist_test_cases
    • Removedlist_test_layer_schemas
    • Removedlist_test_layers
    • Removedlist_test_plans
    • Removedlist_test_suites
    • Removedmanage_test_plan_content
    • Removedreopen_launch
    • Removedunlink_issue_from_test_case
    • Removedupdate_defect
    • Removedupdate_defect_matcher
    • Removedupdate_shared_step
    • Removedupdate_test_layer
    • Removedupdate_test_layer_schema
    • Removedupdate_test_plan
    • Removedupload_test_results
  5. 1 tool updatev0.12.0
    • Addedunlink_issue_from_test_case
  6. 63 tool updatesv0.11.0
    • First observedadd_test_result_attachment
    • First observedadd_test_step_attachment
    • First observedassign_test_cases_to_suite
    • First observedclose_launch
    • First observedcreate_custom_field_value
    • First observedcreate_defect
    • First observedcreate_defect_matcher
    • First observedcreate_launch
    • First observedcreate_shared_step
    • First observedcreate_test_case
    • First observedcreate_test_layer
    • First observedcreate_test_layer_schema
    • First observedcreate_test_plan
    • First observedcreate_test_suite
    • First observeddelete_archived_shared_steps
    • First observeddelete_archived_test_cases
    • First observeddelete_custom_field_value
    • First observeddelete_defect
    • First observeddelete_defect_matcher
    • First observeddelete_launch
    • First observeddelete_shared_step
    • First observeddelete_test_case
    • First observeddelete_test_layer
    • First observeddelete_test_layer_schema
    • First observeddelete_test_plan
    • First observeddelete_test_suite
    • First observeddelete_unused_custom_fields
    • First observedget_custom_fields
    • First observedget_defect
    • First observedget_launch
    • First observedget_test_case_custom_fields
    • First observedget_test_case_details
    • First observedlink_defect_to_test_case
    • First observedlink_shared_step
    • First observedlist_custom_field_values
    • First observedlist_defect_matchers
    • First observedlist_defect_test_cases
    • First observedlist_defects
    • First observedlist_integrations
    • First observedlist_launch_test_results
    • First observedlist_launches
    • First observedlist_shared_steps
    • First observedlist_test_cases
    • First observedlist_test_layer_schemas
    • First observedlist_test_layers
    • First observedlist_test_plans
    • First observedlist_test_suites
    • First observedmanage_test_plan_content
    • First observedreopen_launch
    • First observedrerun_test_results_manually
    • First observedsearch_test_cases
    • First observedstart_manual_test_session
    • First observedsubmit_manual_test_results
    • First observedunlink_shared_step
    • First observedupdate_custom_field_value
    • First observedupdate_defect
    • First observedupdate_defect_matcher
    • First observedupdate_shared_step
    • First observedupdate_test_case
    • First observedupdate_test_layer
    • First observedupdate_test_layer_schema
    • First observedupdate_test_plan
    • First observedupload_test_results

TDQS

B3.4/5.0
Disambiguation4/5

Most tools target distinct resources (test cases, defects, launches, etc.) with clear boundaries. Minor ambiguity exists between soft delete and permanent archive operations, but descriptions clarify the difference.

Naming Consistency3/5

The majority of tools follow a consistent verb_noun pattern (e.g., create_test_case, list_defects). However, some deviate with longer phrases (e.g., rerun_test_results_manually, link_defect_to_test_case), introducing inconsistency.

Tool Count3/5

With 66 tools, the server is on the heavy side. While the domain (test management) justifies many operations, the count is at the upper limit of reasonable scope, potentially overwhelming for agents.

Completeness4/5

The toolset covers CRUD and lifecycle operations for most entities (test cases, defects, plans, layers, etc.) and includes advanced features like defect matchers and manual sessions. A minor gap is the lack of individual step manipulation within test cases.

Maintenance

ActivityActive
ResponsivenessSlow

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ivanostanin/lucius-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server