Update a test case
case.updateChanges dataCreates, updates or deletes something in your workspace.What it does
Changes an existing test case, for example to fill in the steps and expected result of a draft, or to archive it with status INACTIVE. Get the internal id from case.list (read the case with testcase.get if you need its current content). Send only what you want to change: every field you leave out keeps its stored value, including the steps, the human caseId label (e.g. "GenTC-0001"), the owner and the creator. If you send steps, that list replaces all existing steps, so include the unchanged ones too. Returns { success, message, data } with the updated fields.
Ask your agent
You don’t call case.update yourself. Say something like this to Claude Code, Cursor or another MCP-connected agent:
- “Fill in the missing steps for the checkout test”
- “Change the expected result of the login test to show the dashboard”
- “Archive the old coupon test, we removed that feature”
Inputs
| Name | Type | Description |
|---|---|---|
caseIdrequired | string | Internal test case id: the id field from case.list (e.g. "AAtc-kzqd-mwpe-rtya-hbnc-xufo-lgsi"). Despite the parameter name, this is NOT the human caseId like "GenTC-0001". |
titleoptional | string | New title, e.g. "Guest can check out without an account". Omit to keep the current title. |
descriptionoptional | string | New longer explanation of the scenario. Omit to keep the current one. |
priorityoptional | enum | How important the case is. P0 = must never break (core flow), P1 = high, P2 = normal, P3 = trivial. Omit to keep. Allowed: P0P1P2P3 |
preConditionoptional | string | Same as on case.create. System state required BEFORE the test runs. Omit to keep. |
expectedResultoptional | string | Same as on case.create. The observable assertion at the end of the steps. Omit to keep. |
postConditionoptional | string | Same as on case.create. System state AFTER completion — persistence + side-effects. Required for CI hygiene; declare "No persistent state change." for read-only cases. |
stepsoptional | string[] | The COMPLETE step list in order, one instruction per string, e.g. ["Open /login", "Enter email and password", "Click Sign in"]. It replaces all existing steps. Omitting it deletes the current steps, so resend them (from testcase.get) even when you only change another field. |
statusoptional | enum | ACTIVE = in the library and usable in suites and runs. INACTIVE = archived: hidden from pickers but not deleted. The safe alternative to case.delete. Omit to keep. Allowed: ACTIVEINACTIVE |
severityoptional | enum | How bad a failure would be: blocker, critical, major, minor, trivial (see case.create). Omit to keep. Allowed: blockercriticalmajorminortrivial |
automationStatusoptional | enum | Automation label: manual, planned, automated, flaky, deprecated (see case.create). Omit to keep. Allowed: manualplannedautomatedflakydeprecated |
The MCP call
What the agent’s MCP client sends (placeholders in angle brackets):
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "case.update",
"arguments": {
"caseId": "<caseId>"
}
}
}Connect your agent
npx -y @testmaze/mcp init tmt_xxx claude mcp add tm --scope project -- npx -y @testmaze/mcp
Create the token in your Test Maze workspace under Settings → MCP. Setup for Cursor, Cline, Gemini CLI and Codex CLI is shown there too.
More test cases tools
- List test cases
case.list - Get one test case
testcase.get - Create a test case
case.create - Create several test cases at once
case.create_batch - Waive an acceptance criterion
case.waive_ac - Delete a test case
case.delete - Delete several test cases
case.delete_batch - Remove a waiver
case.unwaive_ac