create_test_case_draft
Adds a test case as a draft with its steps, filed in a suite when one is named, so a QA agent writes the cases a story's criteria call for and a tester reviews them.
Add a test case: project_id and title are required; suite_id files it in a suite, objective and preconditions (HTML) say what it proves and what must be true first, type (functional by default), priority (medium by default), automation_status (manual by default; automated needs automation_ref), automation_ref, estimated_minutes, owner_id (a member of the team), test_data (HTML) and environment_requirements fill in the record, and steps lays down the script in one go, each row with action (required), expected and test_data. The case takes the next number of its sequence, starts as a draft, writes its first version and is announced as test_case.created.
A case reaches in review and active through submit_for_review and the approvers, never by hand. A staff token with test-case:create on the project is needed.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Annotations
A client that honours annotations asks a person before running it.
Arguments
project_id*stringUUID of the project.
title*stringWhat the case is called, 3 to 200 characters.
suite_idstringoptionalUUID of the suite to file the case in.
objectivestringoptionalWhat the case proves, as HTML.
preconditionsstringoptionalWhat must be true before it starts, as HTML.
typestringoptionalWhat kind of check it is; functional by default.
functionalregressionsmokesanityintegrationend_to_endapiperformancesecurityusabilityaccessibilityexploratoryprioritystringoptionalHow much it matters when time is short; medium by default.
criticalhighmediumlowautomation_statusstringoptionalWhether a person or a script runs it; manual by default, and automated needs automation_ref.
manualcandidateautomateddeprecatedautomation_refstringoptionalThe test in the automation suite that runs it.
estimated_minutesintegeroptionalHow long a tester needs for it, in minutes.
1max9999owner_idstringoptionalUUID of the person who owns the case, a member of the team.
test_datastringoptionalThe data the case needs, as HTML.
environment_requirementsstringoptionalWhat the environment must offer, in a line.
stepsarrayoptionalThe steps replacing the list, in order: objects with action (required), expected and test_data; a row with an id keeps that step.
What it returns
{ "data": { "id": "b7c8d9e0-f1a2-4b3c-8d4e-5f6a7b8c9d0e", "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "suite_id": "a9b8c7d6-e5f4-4a3b-9c2d-1e0f9a8b7c6d", "suite_name": "Vouchers", "number": 46, "reference": "CRM-TC-46", "title": "Redeem a valid voucher at checkout", "objective": "<p>A voucher in date takes its value off the basket.</p>", "preconditions": "<p>A member is signed in with a valid voucher in the wallet.</p>", "type": "smoke", "priority": "high", "automation_status": "candidate", "automation_ref": null, "estimated_minutes": 3, "owner_id": null, "owner_name": null, "status": "draft", "test_data": null, "environment_requirements": null, "last_result": null, "last_executed_at": null, "steps": [ { "id": "f3a4b5c6-d7e8-4f9a-8b0c-1d2e3f4a5b6c", "test_case_id": "b7c8d9e0-f1a2-4b3c-8d4e-5f6a7b8c9d0e", "position": 0, "action": "Open the checkout with an item in the basket", "expected": "The basket and the vouchers in the wallet are shown", "test_data": null }, { "id": "a4b5c6d7-e8f9-4a0b-9c1d-2e3f4a5b6c7d", "test_case_id": "b7c8d9e0-f1a2-4b3c-8d4e-5f6a7b8c9d0e", "position": 1, "action": "Pick the valid voucher", "expected": "The discount is applied and the new total is shown", "test_data": "SPRING25" } ], "position": 45, "version": 1, "approved_at": null, "approved_revision_id": null, "created_at": "2026-11-04T10:50:00+00:00", "updated_at": "2026-11-04T10:50:00+00:00" }}How it fails
VALIDATION_FAILEDtitle missing or outside 3 to 200 characters, a kind, priority or automation state outside its values, a suite that is not the project's, an owner outside the team, an automated case with no automation_ref, more steps than allowed, or a step without an action.
RESOURCE_NOT_FOUNDunknown project_id, or a project outside the token's scope or the person's visibility.
FORBIDDENthe token is a client guest's, or the holder's role on the project does not carry test-case:create.
TOKEN_MISSING_ABILITYtoken lacks test-case:create.
How is this guide?
Last updated on