# Lucius MCP (oci · ghcr.io/ivanostanin/lucius-mcp:0.14.0)

MCP server for managing Allure TestOps tests, launches, plans, defects, and metadata.

- Trust score: 35/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- mcpb · `lucius-mcp-0.14.0-python.mcpb`: 13/100, [markdown](https://verifymcp.io/servers/ivanostanin-lucius-mcp/https-github-com-ivanostanin-lucius-mcp-releases-download-v0-14-0-lucius-mcp-0-1.md), [page](https://verifymcp.io/servers/ivanostanin-lucius-mcp/https-github-com-ivanostanin-lucius-mcp-releases-download-v0-14-0-lucius-mcp-0-1)
- mcpb · `lucius-mcp-0.14.0-uv.mcpb`: 17/100, [markdown](https://verifymcp.io/servers/ivanostanin-lucius-mcp/https-github-com-ivanostanin-lucius-mcp-releases-download-v0-14-0-lucius-mcp-0-1-2.md), [page](https://verifymcp.io/servers/ivanostanin-lucius-mcp/https-github-com-ivanostanin-lucius-mcp-releases-download-v0-14-0-lucius-mcp-0-1-2)
- oci · `ghcr.io/ivanostanin/lucius-mcp:0.14.0`: 35/100 (this document), [markdown](https://verifymcp.io/servers/ivanostanin-lucius-mcp/ghcr-io-ivanostanin-lucius-mcp-0-14-0.md), [page](https://verifymcp.io/servers/ivanostanin-lucius-mcp/ghcr-io-ivanostanin-lucius-mcp-0-14-0)
- pypi · `lucius-mcp`: 25/100, [markdown](https://verifymcp.io/servers/ivanostanin-lucius-mcp/lucius-mcp.md), [page](https://verifymcp.io/servers/ivanostanin-lucius-mcp/lucius-mcp)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/ivanostanin/lucius-mcp:0.14.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 0/100
  - Malware scan not yet available for this package.
  - CVE data not yet available for this package.
  - Install-script risk not yet assessed.
  - Dependency-health data not yet available.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: no license is declared.
  - Actively maintained (last published 4 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 66/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 8396 tokens (~127/item across 66 items; 66 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 2 categories.** Categories scored 0 because we could not verify them: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add ivanostanin-lucius-mcp -- docker run --rm -i ghcr.io/ivanostanin/lucius-mcp:0.14.0
```

### Codex

```bash
codex mcp add ivanostanin-lucius-mcp -- docker run --rm -i ghcr.io/ivanostanin/lucius-mcp:0.14.0
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ivanostanin-lucius-mcp": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/ivanostanin/lucius-mcp:0.14.0"
      ],
      "enabled": true
    }
  }
}
```

### Hermes

```yaml
mcp_servers:
  ivanostanin-lucius-mcp:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/ivanostanin/lucius-mcp:0.14.0"]
```

### Other

```json
{
  "mcpServers": {
    "ivanostanin-lucius-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/ivanostanin/lucius-mcp:0.14.0"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-01 (score 35, −4)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-31 (score 39, +31)

- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: good
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 100
- [functional] First check of Tool coverage: 100
- [functional] First check of Schema quality: fail

### 2026-07-30 (score 8)

First indexed and scored.

## MCP tools (66)

### `create_test_case` (~370 tokens)

Create Test Case

Create a new test case in Allure TestOps.

Input parameters:

- `attachments`: List 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':…
- `custom_fields`: Dictionary of custom field names and their values (string or list of strings).Example: {'Layer': 'UI', 'Components': ['Auth', 'DB']}
- `description`: A markdown description of the test case.
- `integration_id`: Optional integration ID for issue linking (use list_integrations to find IDs). Required when multiple integrations exist. Mutually exclusive with integration_name.
- `integration_name`: Optional integration name for issue linking (exact case-sensitive match). Required when multiple integrations exist. Mutually exclusive with integration_id.
- `issues`: Optional list of issue keys to link (e.g., ['PROJ-123']).
- `name` (string, required): The name of the test case.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.
- `steps`: List of steps. Each step must be a dict with 'action' and 'expected' keys. Example: [{'action': 'Login', 'expected': 'Dashboard visible'}]
- `tags`: List of tag names.
- `test_layer_id`: Optional test layer ID to assign (use list_test_layers to find IDs). If provided, the layer must exist in the project.
- `test_layer_name`: Optional test layer name to assign (exact case-sensitive match). Mutually exclusive with test_layer_id.

Output parameters:

- `id`
- `issues`
- `name`
- `url`

### `get_test_case_details` (~105 tokens)

Get Test Case Details

Get complete details of a specific test case.

Retrieves all information about a test case including its steps, tags,
custom fields, and attachments. Use this before updating a test case to
understand its current state.

Input parameters:

- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Allure TestOps project ID to list test cases from.
- `test_case_id` (integer, required): ID of the test case to retrieve.

Output parameters:

- `attachments`
- `custom_fields`
- `description`
- `id`
- `name`
- `precondition`
- `status`
- `steps`
- `tags`
- `url`

### `update_test_case` (~471 tokens)

Update Test Case

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.

Input parameters:

- `attachments`: New list of global attachments. Each dict has 'name' and 'content' (base64) or 'url'.
- `automated`: Set whether the test case is automated
- `clear_issues`: If True, remove ALL issues from the test case.
- `confirm` (boolean): Must be set to True to proceed with update. Safety measure.
- `custom_fields`: Dictionary of custom fields to update (Name -> Value or list of values)
- `description`: New description
- `expected_result`: Global expected result for the test case
- `integration_id`: Optional integration ID for issue linking (use list_integrations to find IDs). Required when multiple integrations exist and adding issues. Mutually exclusive with integration_name.
- `integration_name`: Optional integration name for issue linking (exact case-sensitive match). Required when multiple integrations exist and adding issues. Mutually exclusive with integration_id.
- `issues`: List of issue keys to ADD (e.g. ['PROJ-123']).
- `links`: New list of external links. Each dict has 'name', 'url', and optional 'type'.
- `name`: New name for the test case
- `output_format`: Output format: 'json' (default) or 'plain'.
- `precondition`: New precondition
- `project_id`: Optional override for the default Project ID.
- `remove_issues`: List of issue keys to REMOVE.
- `status_id`: ID of the test case status
- `steps`: New list of steps. Each step is a dict with 'action', 'expected', and optional 'attachments' list.
- `tags`: New list of tags
- `test_case_id` (integer, required): The ID of the test case to update
- `test_layer_id`: ID of the test layer
- `test_layer_name`: Name of the test layer
- `workflow_id`: ID of the workflow

Output parameters:

- `action`: Requested operation name.
- `changes`
- `id`
- `name`
- `requires_confirmation`
- `summary`
- `test_case_id`
- `url`

### `delete_test_case` (~142 tokens)

Delete Test Case

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.

Input parameters:

- `confirm` (boolean): Must be set to True to proceed with deletion. Safety measure.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional Allure TestOps project ID override.
- `test_case_id` (integer, required): The Allure test case ID to archive.

Output parameters:

- `action`: Requested operation name.
- `error`
- `name`
- `requires_confirmation`
- `status`
- `test_case_id`
- `url`

### `delete_archived_test_cases` (~71 tokens)

Delete Archived Test Cases

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

Input parameters:

- `confirm` (boolean): Must be set to True to proceed.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional Allure TestOps project ID override.

Output parameters:

- `action`: Requested operation name.
- `deleted_count`
- `requires_confirmation`

### `list_test_cases` (~140 tokens)

List Test Cases

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.

Input parameters:

- `name_filter`: Optional name/description search.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `page` (integer): Zero-based page index.
- `project_id`: Allure TestOps project ID to list test cases from.
- `size` (integer): Number of results per page (max 100).
- `status`: Optional status filter (exact match).
- `tags`: Optional tag filters (exact match).

Output parameters:

- `items`: Entity-specific collection entries.
- `page`
- `size`
- `total`
- `total_pages`

### `get_custom_fields` (~130 tokens)

Get Custom Fields

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.

Input parameters:

- `name`: Optional case-insensitive name filter to search for specific custom fields.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Allure TestOps project ID to fetch custom fields from.

Output parameters:

- `filter_name`
- `items`: Entity-specific collection entries.
- `total`

### `delete_unused_custom_fields` (~71 tokens)

Delete Unused Custom Fields

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

Input parameters:

- `confirm` (boolean): Must be set to True to proceed.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional Allure TestOps project ID override.

Output parameters:

- `action`: Requested operation name.
- `deleted_count`
- `requires_confirmation`

### `list_custom_field_values` (~165 tokens)

List Custom Field Values

List available values for a custom field.

Input parameters:

- `custom_field_id`: Project-scoped custom field ID to list values for.
- `custom_field_name`: Custom field name to resolve when custom_field_id is not provided.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `page`: Zero-based page index.
- `project_id`: Optional override for the default Project ID.
- `query`: Optional search query to filter values.
- `size`: Number of items per page.
- `sort`: Optional sort criteria, e.g. ['name,asc', 'id,desc']
- `test_case_search`: Optional test case search filter to match values in test cases.
- `var_global`: Optional filter for global values.

Output parameters:

- `items`: Entity-specific collection entries.
- `page`
- `size`
- `total`
- `total_pages`

### `create_custom_field_value` (~100 tokens)

Create Custom Field Value

Create a new custom field value option.

Input parameters:

- `custom_field_id`: Project-scoped custom field ID to create a value for.
- `custom_field_name`: Custom field name to resolve when custom_field_id is not provided.
- `name` (string, required): Name for the new custom field value.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.

Output parameters:

- `custom_field_id`
- `custom_field_name`
- `id`
- `name`

### `update_custom_field_value` (~145 tokens)

Update Custom Field Value

Update an existing custom field value.
⚠️ CAUTION: Destructive.

Input parameters:

- `cfv_id` (integer, required): Custom field value ID to update.
- `confirm` (boolean): Must be set to True to proceed with update. Safety measure.
- `custom_field_id`: Project-scoped custom field ID (optional, resolves by name if missing).
- `custom_field_name`: Custom field name to resolve when custom_field_id is not provided.
- `name` (string, required): New name for the custom field value.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.

Output parameters:

- `action`: Requested operation name.
- `cfv_id`
- `custom_field_id`
- `custom_field_name`
- `id`
- `name`
- `requires_confirmation`

### `delete_custom_field_value` (~130 tokens)

Delete Custom Field Value

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

Input parameters:

- `cfv_id` (integer, required): Custom field value ID to delete.
- `confirm` (boolean): Must be set to True to proceed with deletion. Safety measure.
- `custom_field_id`: Project-scoped custom field ID (optional, resolves by name if missing).
- `custom_field_name`: Custom field name to resolve when custom_field_id is not provided.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.

Output parameters:

- `action`: Requested operation name.
- `cfv_id`
- `id`
- `requires_confirmation`
- `status`

### `get_test_case_custom_fields` (~72 tokens)

Get Test Case Custom Fields

Retrieve custom field values for a specific test case.

Input parameters:

- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.
- `test_case_id` (integer, required): The ID of the test case to retrieve custom fields for

Output parameters:

- `custom_fields`: Custom-field values as named entries or a value map.
- `test_case_id`

### `search_test_cases` (~477 tokens)

Search Test Cases

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

Input parameters:

- `aql`: Raw 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…
- `output_format`: Output format: 'json' (default) or 'plain'.
- `page` (integer): Zero-based page index.
- `project_id`: Allure TestOps project ID to list test cases from.
- `query`: Simple search query. Examples: 'login flow', 'tag:smoke', 'tag:smoke tag:regression', 'authentication tag:security'. Ignored when 'aql' is provided.
- `size` (integer): Number of results per page (max 100).

Output parameters:

- `items` (array): Matching test cases.
- `page` (integer): Zero-based result page.
- `query` (string): Query that produced these results.
- `size` (integer): Requested page size.
- `total` (integer): Total matching test cases.
- `total_pages` (integer): Number of result pages.

### `generate_test_code` (~225 tokens)

Generate Test Code

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.

Input parameters:

- `framework` (string, required): Required framework compatible with language. TypeScript choices: CodeceptJS, Cucumber, Jasmine, Jest, Mocha, Playwright, Vitest, WebdriverIO, ZeroStep. Compatibility is language-specific.
- `language` (string, required): Required target language. Choose Java, Python, TypeScript, JavaScript, Kotlin, PHP, or .NET. Backward-compatible aliases: java, python, ts, js, and dotnet.
- `metadata`: Optional metadata to synchronize: Name, Tags, Custom fields, Members, Issues, Scenario. Omit for Name, Tags, Custom fields, Scenario; use [] to disable all.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `test_case_id` (integer, required): ID of the TestOps test case to generate code for.

Output parameters:

- `code`: Generated source-code snippet.
- `framework`: Requested target testing framework.
- `language`: Requested target programming language.
- `metadata`: Canonical test-case metadata selections included in generated code.
- `test_case_id`

### `create_launch` (~117 tokens)

Create Launch

Create a new launch in Allure TestOps.

Input parameters:

- `autoclose`: Whether the launch auto-closes.
- `external`: Whether the launch is external.
- `issues`: Optional list of issue dictionaries.
- `links`: Optional list of external links (name, url, type).
- `name` (string, required): Launch name (required).
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.
- `tags`: Optional list of tags.

Output parameters:

- `autoclose`
- `closed`
- `created_date`
- `external`
- `id`
- `known_defects_count`
- `last_modified_date`
- `manual_execution_guidance`
- `name`
- `new_defects_count`
- `operation`
- `project_id`
- `url`

### `get_launch` (~60 tokens)

Get Launch

Retrieve a specific launch and summarize its details.

Input parameters:

- `launch_id` (integer, required): Launch ID (required).
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.

Output parameters:

- `autoclose`
- `closed`
- `created_by`
- `created_date`
- `environment`
- `external`
- `id`
- `issues`
- `jobs`
- `known_defects_count`
- `last_modified_by`
- `last_modified_date`
- `links`
- `manual_execution_guidance`
- `name`
- `new_defects_count`
- `project_id`
- `statistic`
- `tags`
- `url`

### `get_project` (~102 tokens)

Get Project

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.

Input parameters:

- `name`: Project name to resolve. Omit it to list all projects available to the authenticated user.
- `output_format`: Output format: 'json' (default) or 'plain'.

Output parameters:

- `abbr`: Project abbreviation.
- `description`
- `id`
- `is_public`: Whether the project is publicly visible.
- `items`: Entity-specific collection entries.
- `name`
- `total`

### `list_launches` (~115 tokens)

List Launches

List launches in a project.

Input parameters:

- `filter_id`: Optional filter ID.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `page` (integer): Zero-based page index.
- `project_id`: Optional override for the default Project ID.
- `search`: Optional name search.
- `size` (integer): Number of results per page (max 100).
- `sort`: Sorting criteria in the format: property(,asc|desc). Example: ['createdDate,DESC']

Output parameters:

- `items`
- `page`
- `size`
- `total`
- `total_pages`

### `list_launch_test_results` (~184 tokens)

List Launch Test Results

List test results inside a launch, including manual execution metadata.

Input parameters:

- `failed_only` (boolean): When true, return only failed or broken results. Filtering is handled for you.
- `filter_id`: Optional saved filter ID from TestOps.
- `launch_id` (integer, required): Launch ID (required).
- `manual_only` (boolean): When true, return only manual results. Filtering is handled for you.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `page` (integer): Zero-based page index after optional filtering.
- `project_id`: Optional override for the default Project ID.
- `search`: Optional result-name search term.
- `size` (integer): Number of results per page (max 100).
- `sort`: Optional sort directives such as ['name,ASC'] or ['createdDate,DESC'].

Output parameters:

- `failed_only`
- `items`: Entity-specific collection entries.
- `launch_id`
- `manual_only`
- `page`
- `size`
- `total`
- `total_pages`

### `rerun_test_results_manually` (~123 tokens)

Rerun Test Results Manually

Schedule manual reruns for selected launch results.

Input parameters:

- `assignees`: Optional usernames to assign during manual rerun scheduling.
- `force_manual` (boolean): Force manual rerun mode when the upstream API supports it.
- `launch_id` (integer, required): Launch ID containing the failed results (required).
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.
- `result_ids` (array, required): One or more launch result IDs to schedule for manual rerun.

Output parameters:

- `assignees`
- `force_manual`
- `launch_id`
- `result_ids`
- `scheduled_count`

### `start_manual_test_session` (~77 tokens)

Start Manual Test Session

Start a manual execution session for a launch.

Input parameters:

- `environment`: Optional environment variables as [{key, value}, ...].
- `launch_id` (integer, required): Launch ID (required).
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.

Output parameters:

- `environment`
- `job_id`
- `job_run_id`
- `launch_id`
- `project_id`
- `test_session_id`

### `submit_manual_test_results` (~199 tokens)

Submit Manual Test Results

Submit manual execution results for a manual session.

Input parameters:

- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.
- `results` (array, required): Manual 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 rer…
- `test_session_id` (integer, required): Manual test session ID (required).

Output parameters:

- `result_ids`
- `submitted_count`
- `test_session_id`

### `upload_test_results` (~131 tokens)

Upload Test Results

Upload external test results to an existing launch.

Input parameters:

- `launch_id` (integer, required): Launch ID to receive the results (required).
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.
- `results` (array, required): Result 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 ful…

Output parameters:

- `failures`
- `launch_id`
- `requested_count`
- `result_ids`
- `uploaded_count`

### `add_test_result_attachment` (~90 tokens)

Add Test Result Attachment

Upload evidence to a manual test result.

Input parameters:

- `attachment` (object, required): Attachment payload using the repo-standard pattern: {name, content_type, content? | url?}.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.
- `test_result_id` (integer, required): Manual test result ID (required).

Output parameters:

- `file_names`
- `status_code`
- `target_id`
- `target_kind`

### `add_test_step_attachment` (~205 tokens)

Add Test Step Attachment

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

Input parameters:

- `attachment` (object, required): Attachment payload using the repo-standard pattern: {name, content_type, content? | url?}.
- `attachment_id`: Optional explicit manual step attachment ID resolved from the test result execution.
- `fixture_name`: Optional fixture name used only for the legacy fixture-step fallback.
- `fixture_result_id`: Optional explicit fixture result ID for legacy fixture-step fallback.
- `fixture_type`: Optional fixture type hint for the legacy fixture-step fallback: 'before' or 'after'.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.
- `step_index`: Optional zero-based manual step index to resolve within the test result execution.
- `step_name`: Optional attachment-step name to resolve within the manual test result.
- `test_result_id` (integer, required): Parent test result ID (required).

Output parameters:

- `file_names`
- `status_code`
- `target_id`
- `target_kind`

### `delete_launch` (~68 tokens)

Delete Launch

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

Input parameters:

- `launch_id` (integer, required): Launch ID to delete (required).
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.

Output parameters:

- `launch_id`
- `message`
- `status`

### `close_launch` (~71 tokens)

Close Launch

Close a launch and return updated launch details.

Input parameters:

- `api_token`: Optional runtime API token override.
- `launch_id` (integer, required): Launch ID (required).
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.

Output parameters:

- `autoclose`
- `closed`
- `created_date`
- `external`
- `id`
- `known_defects_count`
- `last_modified_date`
- `manual_execution_guidance`
- `name`
- `new_defects_count`
- `operation`
- `project_id`
- `url`

### `reopen_launch` (~72 tokens)

Reopen Launch

Reopen a launch and return updated launch details.

Input parameters:

- `api_token`: Optional runtime API token override.
- `launch_id` (integer, required): Launch ID (required).
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.

Output parameters:

- `autoclose`
- `closed`
- `created_date`
- `external`
- `id`
- `known_defects_count`
- `last_modified_date`
- `manual_execution_guidance`
- `name`
- `new_defects_count`
- `operation`
- `project_id`
- `url`

### `list_integrations` (~99 tokens)

List Integrations

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.

Input parameters:

- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID. When provided (or from environment default), integrations are filtered to those available for that project.

Output parameters:

- `items`: Entity-specific collection entries.
- `total`

### `create_shared_step` (~159 tokens)

Create Shared Step

Create a new reusable Shared Step.

Input parameters:

- `name` (string, required): The name of the shared step (e.g., "Login as Admin").
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.
- `steps`: Optional 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], opti…

Output parameters:

- `id`
- `name`
- `project_id`
- `url`

### `list_shared_steps` (~110 tokens)

List Shared Steps

List shared steps in a project to find existing ones.

Input parameters:

- `archived` (boolean): Whether to include archived steps (default False).
- `output_format`: Output format: 'json' (default) or 'plain'.
- `page` (integer): Page number (0-based, default 0).
- `project_id`: Optional override for the default Project ID.
- `search`: Optional search query to filter by name.
- `size` (integer): Number of items per page (default 100).

Output parameters:

- `items`: Entity-specific collection entries.
- `page`
- `size`
- `total`
- `total_pages`

### `update_shared_step` (~152 tokens)

Update Shared Step

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.

Input parameters:

- `confirm` (boolean): Must be set to True to proceed with update. Safety measure.
- `description`: New description (optional).
- `name`: New name for the shared step (optional).
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.
- `step_id` (integer, required): The shared step ID to update (required).

Output parameters:

- `action`: Requested operation name.
- `changed`
- `id`
- `name`
- `requires_confirmation`
- `step_id`
- `updated_fields`
- `url`

### `delete_shared_step` (~113 tokens)

Delete Shared Step

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.

Input parameters:

- `confirm` (boolean): Must be True to proceed (safety measure).
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.
- `step_id` (integer, required): The shared step ID to delete (required).

Output parameters:

- `action`: Requested operation name.
- `id`
- `requires_confirmation`
- `status`
- `step_id`
- `url`

### `delete_archived_shared_steps` (~69 tokens)

Delete Archived Shared Steps

Permanently delete all archived shared steps in the current project.

Input parameters:

- `confirm` (boolean): Must be set to True to proceed.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional Allure TestOps project ID override.

Output parameters:

- `action`: Requested operation name.
- `deleted_count`
- `requires_confirmation`

### `link_shared_step` (~185 tokens)

Link Shared Step

Link a shared step to a test case.
⚠️ CAUTION: Destructive.

Adds a reference to the shared step in the test case's step list.
The shared step's actions will expand at execution time.

Input parameters:

- `confirm` (boolean): Must be set to True to proceed with linking. Safety measure.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `position`: Where to insert the shared step (0-indexed, optional). 0 = Insert at beginning None = Append to end (default) N = Insert after step N (so it becomes the (N+1)th step)
- `project_id`: Optional override for the default Project ID.
- `shared_step_id` (integer, required): The ID of shared step to link.
- `test_case_id` (integer, required): The ID of test case to modify.

Output parameters:

- `action`: Requested operation name.
- `error`
- `requires_confirmation`
- `shared_step_id`
- `shared_step_url`
- `status`
- `steps`: Serialized scenario steps.
- `test_case_id`
- `test_case_url`

### `unlink_shared_step` (~130 tokens)

Unlink Shared Step

Remove a shared step reference from a test case.
⚠️ CAUTION: Destructive.

Removes the link to the shared step. The test case will no longer
include those steps at execution time.

Input parameters:

- `confirm` (boolean): Must be set to True to proceed with unlinking. Safety measure.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional override for the default Project ID.
- `shared_step_id` (integer, required): The shared step to unlink.
- `test_case_id` (integer, required): The test case to modify.

Output parameters:

- `action`: Requested operation name.
- `error`
- `requires_confirmation`
- `shared_step_id`
- `shared_step_url`
- `status`
- `steps`: Serialized scenario steps.
- `test_case_id`
- `test_case_url`

### `list_test_layers` (~109 tokens)

List Test Layers

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.

Input parameters:

- `output_format`: Output format: 'json' (default) or 'plain'.
- `page` (integer): Page number (0-based). Default is 0.
- `size` (integer): Page size (max 100). Default is 100.

Output parameters:

- `items`: Entity-specific collection entries.
- `page`
- `size`
- `total`
- `total_pages`

### `create_test_layer` (~115 tokens)

Create Test Layer

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.

Input parameters:

- `name` (string, required): Name of the test layer (e.g., 'Unit', 'Integration', 'E2E').
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Allure TestOps project ID to create the test layer in.

Output parameters:

- `id`
- `name`

### `update_test_layer` (~103 tokens)

Update Test Layer

Update an existing test layer's name.
⚠️ CAUTION: Destructive.

Input parameters:

- `confirm` (boolean): Must be set to True to proceed with update. Safety measure.
- `layer_id` (integer, required): ID of the test layer to update.
- `name` (string, required): New name for the test layer.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Allure TestOps project ID.

Output parameters:

- `action`: Requested operation name.
- `changed`
- `id`
- `layer_id`
- `name`
- `requires_confirmation`

### `delete_test_layer` (~92 tokens)

Delete Test Layer

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

Input parameters:

- `confirm` (boolean): Must be set to True to proceed with deletion. Safety measure.
- `layer_id` (integer, required): ID of the test layer to delete.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Allure TestOps project ID.

Output parameters:

- `action`: Requested operation name.
- `id`
- `layer_id`
- `requires_confirmation`
- `status`

### `list_test_layer_schemas` (~120 tokens)

List Test Layer Schemas

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.

Input parameters:

- `output_format`: Output format: 'json' (default) or 'plain'.
- `page` (integer): Page number (0-based). Default is 0.
- `project_id`: Allure TestOps project ID to fetch test layer schemas from.
- `size` (integer): Page size (max 100). Default is 100.

Output parameters:

- `items`: Entity-specific collection entries.
- `page`
- `size`
- `total`
- `total_pages`

### `create_test_layer_schema` (~142 tokens)

Create Test Layer Schema

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.

Input parameters:

- `key` (string, required): The schema key (e.g., custom field name like 'layer' or 'test_layer').
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id` (integer, required): Allure TestOps project ID to create the schema in.
- `test_layer_id` (integer, required): ID of the test layer to link to this schema.

Output parameters:

- `id`
- `key`
- `test_layer_id`
- `test_layer_name`

### `update_test_layer_schema` (~113 tokens)

Update Test Layer Schema

Update an existing test layer schema.
⚠️ CAUTION: Destructive.

Input parameters:

- `confirm` (boolean): Must be set to True to proceed with update. Safety measure.
- `key`: New schema key.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Allure TestOps project ID.
- `schema_id` (integer, required): ID of the test layer schema to update.
- `test_layer_id`: New test layer ID to link to.

Output parameters:

- `action`: Requested operation name.
- `changed`
- `id`
- `key`
- `requires_confirmation`
- `schema_id`
- `test_layer_name`

### `delete_test_layer_schema` (~93 tokens)

Delete Test Layer Schema

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

Input parameters:

- `confirm` (boolean): Must be set to True to proceed with deletion. Safety measure.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Allure TestOps project ID.
- `schema_id` (integer, required): ID of the test layer schema to delete.

Output parameters:

- `action`: Requested operation name.
- `id`
- `requires_confirmation`
- `schema_id`
- `status`

### `create_test_suite` (~98 tokens)

Create Test Suite

Create a new test suite node in the hierarchy tree.

Input parameters:

- `name` (string, required): Suite name to create in hierarchy.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `parent_suite_id`: Parent suite/group node ID for nested suite creation.
- `project_id`: Allure TestOps project ID.
- `tree_id`: Target hierarchy tree ID. If omitted, default project tree is used.

Output parameters:

- `id`
- `name`
- `parent_suite_id`
- `tree_id`

### `list_test_suites` (~89 tokens)

List Test Suites

List hierarchy suites for a project tree.

Input parameters:

- `include_empty` (boolean): Whether to include suites that have no nested child suites. Default is True.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Allure TestOps project ID.
- `tree_id`: Target hierarchy tree ID. If omitted, default project tree is used.

Output parameters:

- `items`
- `total`
- `tree`

### `assign_test_cases_to_suite` (~123 tokens)

Assign Test Cases To Suite

Assign test cases to a suite path in hierarchy.

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

Input parameters:

- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Allure TestOps project ID.
- `suite_id` (integer, required): Target suite/group node ID for assignment.
- `test_case_ids` (array, required): List of test case IDs to assign to the suite.
- `tree_id`: Target hierarchy tree ID. If omitted, default project tree is used.

Output parameters:

- `assigned_count`
- `suite_id`
- `test_case_ids`
- `tree_id`

### `delete_test_suite` (~119 tokens)

Delete Test Suite

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.

Input parameters:

- `confirm` (boolean): Must be set to True to proceed with deletion. Safety measure.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `project_id`: Optional Allure TestOps project ID override.
- `suite_id` (integer, required): Suite/group node ID to delete from hierarchy.

Output parameters:

- `action`: Requested operation name.
- `requires_confirmation`
- `status`
- `suite_id`

### `create_test_plan` (~152 tokens)

Create Test Plan

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).

Input parameters:

- `aql_filter`: AQL query to select test cases
- `name` (string, required): Name of the test plan
- `output_format`: Output format: 'json' (default) or 'plain'.
- `test_case_ids`: List of Test Case IDs to include

Output parameters:

- `aql_filter`
- `id`
- `name`
- `test_case_ids`
- `test_case_urls`
- `url`

### `update_test_plan` (~66 tokens)

Update Test Plan

Update the metadata of an existing Test Plan.

Currently, supports updating the name of the plan.

Input parameters:

- `name`: New name
- `output_format`: Output format: 'json' (default) or 'plain'.
- `plan_id` (integer, required): ID of the test plan

Output parameters:

- `id`
- `name`
- `url`

### `manage_test_plan_content` (~119 tokens)

Manage Test Plan Content

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.

Input parameters:

- `add_test_case_ids`: List of Test Case IDs to add
- `output_format`: Output format: 'json' (default) or 'plain'.
- `plan_id` (integer, required): ID of the test plan
- `remove_test_case_ids`: List of Test Case IDs to remove
- `update_aql_filter`: Update the AQL filter string

Output parameters:

- `add_test_case_ids`
- `add_test_case_urls`
- `aql_filter`
- `plan_id`
- `remove_test_case_ids`
- `remove_test_case_urls`
- `url`

### `list_test_plans` (~82 tokens)

List Test Plans

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.

Input parameters:

- `output_format`: Output format: 'json' (default) or 'plain'.
- `page` (integer): Page number (0-based)
- `size` (integer): Page size

Output parameters:

- `items`: Entity-specific collection entries.
- `page`
- `size`
- `total`
- `total_pages`

### `delete_test_plan` (~106 tokens)

Delete Test Plan

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.

Input parameters:

- `confirm` (boolean): Must be set to True to proceed with deletion. Safety measure.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `plan_id` (integer, required): ID of the test plan to delete

Output parameters:

- `action`: Requested operation name.
- `plan_id`
- `requires_confirmation`
- `status`

### `create_defect` (~83 tokens)

Create Defect

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).

Input parameters:

- `description`: Optional markdown description
- `name` (string, required): Name / title of the defect
- `output_format`: Output format: 'json' (default) or 'plain'.

Output parameters:

- `description`
- `id`
- `name`
- `url`

### `get_defect` (~49 tokens)

Get Defect

Retrieve detailed information about a specific defect.

Input parameters:

- `defect_id` (integer, required): ID of the defect to retrieve
- `output_format`: Output format: 'json' (default) or 'plain'.

Output parameters:

- `closed`
- `description`
- `id`
- `name`
- `status`
- `url`

### `link_defect_to_test_case` (~168 tokens)

Link Defect To Test Case

Link a defect to a test case through a shared issue mapping.

This operation ensures defect governance and test coverage are connected:
the issue is linked to the defect and to the specified test case.

Input parameters:

- `defect_id` (integer, required): ID of the defect to link
- `integration_id`: Optional integration ID for issue mapping. Mutually exclusive with integration_name.
- `integration_name`: Optional integration name for issue mapping. Mutually exclusive with integration_id.
- `issue_key`: Issue key to use for linking (for example, PROJ-123). If omitted, the defect's existing issue mapping is reused.
- `output_format`: Output format: 'json' (default) or 'plain'.
- `test_case_id` (integer, required): ID of the test case to link

Output parameters:

- `already_linked`
- `defect_id`
- `defect_url`
- `integration_id`
- `issue_key`
- `test_case_id`
- `test_case_url`

### `list_defect_test_cases` (~81 tokens)

List Defect Test Cases

List test cases currently linked to a defect.

Input parameters:

- `defect_id` (integer, required): ID of the defect whose linked test cases should be listed
- `output_format`: Output format: 'json' (default) or 'plain'.
- `page` (integer): Zero-based page index
- `size` (integer): Page size (1..100)

Output parameters:

- `defect_id`
- `defect_url`
- `items`: Entity-specific collection entries.
- `page`
- `size`
- `total`
- `total_pages`

### `unlink_issue_from_test_case` (~121 tokens)

Unlink Issue From Test Case

Unlink an issue from a test case.

This operation is idempotent: if the issue is already unlinked, it still
returns a successful confirmation. Supply the issue key (for example,
\``PROJ-123``) or the internal issue-link ID returned by Allure TestOps.

Input parameters:

- `issue_id` (required): Issue key or internal issue-link ID to unlink
- `output_format`: Output format: 'json' (default) or 'plain'.
- `test_case_id` (integer, required): ID of the test case to unlink from

Output parameters:

- `already_unlinked`
- `issue_id`
- `status`
- `test_case_id`

### `update_defect` (~102 tokens)

Update Defect

Update an existing defect's name, description, or status.

At least one field must be provided. Fields set to null/None are
left unchanged.

Input parameters:

- `closed`: Set to true to close, false to reopen
- `defect_id` (integer, required): ID of the defect to update
- `description`: New markdown description
- `name`: New defect name
- `output_format`: Output format: 'json' (default) or 'plain'.

Output parameters:

- `closed`
- `description`
- `id`
- `name`
- `status`
- `url`

### `delete_defect` (~96 tokens)

Delete Defect

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.

Input parameters:

- `confirm` (boolean): Safety flag — must be set to true to confirm deletion
- `defect_id` (integer, required): ID of the defect to delete
- `output_format`: Output format: 'json' (default) or 'plain'.

Output parameters:

- `defect_id`
- `id`
- `status`

### `list_defects` (~35 tokens)

List Defects

List all defects in the current project.

Input parameters:

- `output_format`: Output format: 'json' (default) or 'plain'.

Output parameters:

- `items`: Entity-specific collection entries.
- `page`
- `size`
- `total`
- `total_pages`

### `create_defect_matcher` (~137 tokens)

Create Defect Matcher

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.

Input parameters:

- `defect_id` (integer, required): ID of the parent defect
- `message_regex`: Regex to match against error messages
- `name` (string, required): Human-readable matcher rule name
- `output_format`: Output format: 'json' (default) or 'plain'.
- `trace_regex`: Regex to match against stack traces

Output parameters:

- `defect_id`
- `id`
- `message_regex`
- `name`
- `trace_regex`

### `update_defect_matcher` (~87 tokens)

Update Defect Matcher

Update a defect matcher's name or regex patterns.

At least one field must be provided.

Input parameters:

- `matcher_id` (integer, required): ID of the matcher to update
- `message_regex`: New message regex
- `name`: New matcher name
- `output_format`: Output format: 'json' (default) or 'plain'.
- `trace_regex`: New trace regex

Output parameters:

- `id`
- `message_regex`
- `name`
- `trace_regex`

### `delete_defect_matcher` (~96 tokens)

Delete Defect Matcher

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.

Input parameters:

- `confirm` (boolean): Safety flag — must be set to true to confirm deletion
- `matcher_id` (integer, required): ID of the matcher to delete
- `output_format`: Output format: 'json' (default) or 'plain'.

Output parameters:

- `id`
- `matcher_id`
- `status`

### `list_defect_matchers` (~55 tokens)

List Defect Matchers

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

Input parameters:

- `defect_id` (integer, required): ID of the parent defect
- `output_format`: Output format: 'json' (default) or 'plain'.

Output parameters:

- `defect_id`
- `items`
- `page`
- `size`
- `total`
- `total_pages`

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/ivanostanin-lucius-mcp/ghcr-io-ivanostanin-lucius-mcp-0-14-0#diagnostics

## Score history

- 2026-08-03: 35
- 2026-08-02: 35
- 2026-08-01: 35
- 2026-07-31: 39
- 2026-07-30: 8

## Links

- Repository: https://github.com/ivanostanin/lucius-mcp
- Changelog RSS feed: https://verifymcp.io/servers/ivanostanin-lucius-mcp/ghcr-io-ivanostanin-lucius-mcp-0-14-0/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/ivanostanin-lucius-mcp/ghcr-io-ivanostanin-lucius-mcp-0-14-0/changelog.json
- HTML version of this page: https://verifymcp.io/servers/ivanostanin-lucius-mcp/ghcr-io-ivanostanin-lucius-mcp-0-14-0
