> For the complete documentation index, see [llms.txt](https://support.attackforge.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.attackforge.com/app/modules/ai-mcp-and-skills/patch-test-case.md).

# Patch Test Case

#### Description <a href="#description" id="description"></a>

Patches an existing AttackForge test case - the record carrying the **descriptive** fields (`title`, `details`, `code`, `tags`, `sort_order`, `execution_flow`). This is NOT the per-project test case that carries testing state; patch that with `patch_project_testcase`.

Two kinds of test case are patchable here, and which one it is determines what the caller needs:

* A **library test case** (source: `find_testcases`) - requires permission to patch library test cases (Admin or Project Operator).
* A **project abuse case** (source: the `testcase_id` on a project test case from `find_project_testcases`, resolvable via `find_testcases` `testcase_ids`) - requires Edit access to the owning project plus access to its test cases, and is refused while the project test case is **locked**.

The shape of `args` is declared inline (see Building args for Write Tools), so no preparatory call is needed. Only the fields supplied in `args` are changed; omitted fields are left untouched. On success the patched test case id is returned.

#### How To Enable <a href="#how-to-enable" id="how-to-enable"></a>

1. Go to `Users`
2. Select the user you would like to provide access to this tool
3. Click on `Access > MCP`
4. Click on `Add Tools`
5. Select the tool `patch_testcase` and click `Add`

#### Example Prompts <a href="#example-prompts" id="example-prompts"></a>

* *Update the details on the SQL injection test case.*
* *Rename test case X.*
* *Add an execution flow step to this test case.*
* *Tag this test case as PCI relevant.*
* *Set the CWE custom field on test case X to CWE-89.*

#### Parameters <a href="#parameters" id="parameters"></a>

| Parameter | Type   | Required | Description                                       |
| --------- | ------ | -------- | ------------------------------------------------- |
| `args`    | object | Yes      | The test-case-patch payload - see the keys below. |

**`args` keys:**

| Key              | Type    | Required | Description                                                                                                                                                                                     |
| ---------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `testcase_id`    | string  | Yes      | Id (24-hex) of the test case to patch - either a library test case (source: `find_testcases`) or a project abuse case (source: the `testcase_id` on a project test case).                       |
| `title`          | string  | No       | New title of the test case.                                                                                                                                                                     |
| `details`        | string  | No       | Details / description. Rich-text - use the AttackForge richtext format.                                                                                                                         |
| `code`           | string  | No       | Arbitrary code associated with this test case.                                                                                                                                                  |
| `tags`           | array   | No       | String tags. **Replaces** the existing tags when supplied.                                                                                                                                      |
| `sort_order`     | integer | No       | Default sort order within the AttackForge UI.                                                                                                                                                   |
| `execution_flow` | array   | No       | Ordered execution-flow steps, each `{ title, details }`. **Replaces** the existing execution flow when supplied.                                                                                |
| `custom_fields`  | array   | No       | Custom field values, each `{ key, value }`. Supplying a custom field replaces its current value; supplying an empty value clears it. Discover keys via `get_field_structure(model="testcase")`. |

#### Example Response

```json
{
  "id": "656168055d7035a12ade4cb3"
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://support.attackforge.com/app/modules/ai-mcp-and-skills/patch-test-case.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
