Skip to main content
Glama

update_test_case

Idempotent

Update an existing Jira test case's fields, script, or links. Only provided fields change; test steps sync by ID—send the complete list to avoid deletions.

Instructions

Update a test case (PUT /testcase/{testCaseKey}). PARTIAL: only the fields passed are changed and omitted fields keep their values, so never send empty placeholders. projectKey cannot be changed. issueLinks REPLACES the whole link set instead of adding to it — sending issueLinks: ["PROJ-1"] to a case already linked to PROJ-2 silently unlinks PROJ-2, so read the current links with get_test_case and send the complete final list (link_issues_to_test_cases is the additive alternative). testScript.steps is synchronized BY ID — a step without an id is created, a step with an id is updated, and every stored step whose id is missing from the list is DELETED; always send the complete final list, carrying over the ids from get_test_case. To only add steps use add_test_steps, which does that read-merge-write safely. A name longer than 255 characters is refused locally: the API stores the first 255 characters and still reports success. A step whose "Call to Test" points at its own case is refused locally too: the API answers 2xx to such a write and stores NOTHING, throwing away the other steps of the same request with it. When (and only when) testScript is passed, the tool reads the case back afterwards (one extra GET) and compares the STORED script with the one sent — its type, the step count for STEP_BY_STEP, and that a non-empty text survived for PLAIN_TEXT/BDD (the text itself is not compared byte-for-byte); an update without testScript costs no extra request. The folder MUST already exist — the API never creates folders implicitly (use create_folder first). Returns { key, url }; when the stand accepted the write and kept the old script, the answer also carries storedType, storedSteps and a warning saying what is really stored, and a warning alone when the read-back itself failed. Only the script is verified: the other fields of a partial update are not read back.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoTest case name
ownerNoOwner. Jira *user key* (e.g. 'JIRAUSER10000'), NOT a username or e-mail — resolve it with find_jira_user.
folderNoFull folder path from the root starting with "/", e.g. "/Regression/Payments". The folder MUST already exist — the API never creates folders implicitly (use create_folder first).
labelsNoLabels; the API replaces spaces with underscores
statusNoTest case status. Defaults: 'Draft', 'Approved', 'Deprecated' — case-sensitive; instances may define custom ones.
priorityNoPriority. Defaults: 'High', 'Normal', 'Low' — case-sensitive; instances may define custom ones.
componentNoName of a Jira component of the project
objectiveNoObjective (HTML allowed)
issueLinksNoJira issue keys to link, e.g. ["PROJ-123"]
parametersNoTest case parameters: { variables: [{name, type: FREE_TEXT | DATA_SET, dataSet?}], entries: [{<variable>: <value>}] }
testScriptNoTest script. STEP_BY_STEP: {type, steps: [{description?, testData?, expectedResult?, testCaseKey?}]}; PLAIN_TEXT/BDD: {type, text}.
testCaseKeyYesTest case key, e.g. PROJ-T123
customFieldsNoCustom field values keyed by field name
preconditionNoPrecondition (HTML allowed)
estimatedTimeNoEstimated duration in milliseconds

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.5

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The lone annotation (idempotentHint) says nothing about the sharp edges this tool has, and the description more than compensates: issueLinks replaces the full link set (silent unlinking), testScript.steps is id-synchronized so missing ids are DELETED, over-length names are truncated with a false success, self-referencing Call-to-Test writes are silently dropped with a 2xx, and only the script is read back for verification. These are exactly the destructive/verification behaviors an agent needs and none are derivable from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core partial-update rule, then ordered by danger (links, steps, refusals, verification, folder, return shape). Every clause carries operational content, but the prose is dense and long enough that a few points (folder existence, step-id sync) are effectively restated from the schema, slightly diluting conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter tool with nested objects and no output schema, it still documents the return value ({ key, url }) plus the conditional storedType/storedSteps/warning fields on read-back failure, and it flags that only the script is verified. Nothing an agent needs to invoke this correctly or interpret the result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: the replace-not-merge semantics of issueLinks, the local refusal of projectKey changes, and how id presence drives create/update/delete of steps. Remaining params are covered identically in the schema, so it does not exceed the schema comprehensively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Update a test case (PUT /testcase/{testCaseKey})") and immediately scopes the operation as a PARTIAL update. It differentiates itself from siblings by naming get_test_case for reading links, add_test_steps for additive step edits, link_issues_to_test_cases for additive linking, and create_folder for folder creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use and when-to-use-something-else: use add_test_steps to only add steps, link_issues_to_test_cases as the additive alternative to issueLinks, get_test_case to read current links, and create_folder before pointing at a non-existent folder. It also warns against empty placeholders in a partial update.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools