> 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/create-test-case.md).

# Create Test Case

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

Creates a new AttackForge **library** test case inside an existing testsuite. A library test case is a reusable unit of testing methodology - it is NOT a per-project test case. This is a **write** operation: it persists a new test case against the target testsuite.

To create an abuse case - a test case belonging to one project only - use `create_abuse_case` instead; this tool refuses abuse-case testsuites.

The shape of `args` is declared inline (see Building args for Write Tools), so no preparatory call is needed. Rich-text fields must use the AttackForge richtext format described in the `richtext_format` block returned by `get_args_schema_for_tool`.

Preconditions: the caller must have permission to create library test cases (Admin or Project Operator), and the target testsuite must exist and be accessible. On success the new 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 `create_testcase` and click `Add`

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

* *Add a test case for SSRF to the web application testsuite.*
* *Create a test case for checking TLS configuration with execution flow steps.*
* *Add an OWASP Top 10 tagged test case to testsuite X.*

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

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

**`args` keys:**

| Key              | Type    | Required | Description                                                                                                            |
| ---------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------- |
| `testsuite_id`   | string  | Yes      | Id (24-hex) of the testsuite the test case will belong to. Source: `find_testsuites`. Must exist and not be deleted.   |
| `title`          | string  | Yes      | 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 attached to this test case.                                                                                |
| `sort_order`     | integer | No       | Default sort order within the AttackForge UI. Omit to append the test case at the end of the testsuite.                |
| `execution_flow` | array   | No       | Ordered execution-flow steps, each `{ title, details }`. `details` is rich-text; both keys are required on every step. |
| `custom_fields`  | array   | No       | Custom field values, each `{ key, value }`. Discover keys via `get_field_structure(model="testcase")`.                 |

#### Example Response

```json
{
  "id": "6981b0c4a1d3e45f77c20981"
}
```


---

# 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/create-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.
