Skip to main content
Glama

update_issue

Change fields on an existing GitLab issue, including title, description, labels, assignees, due date, weight, or state, and optionally return the full updated issue.

Instructions

Update an issue. Slim confirmation by default; full_response=true for the complete object. Change fields on an existing issue. Use update_issue_description_patch for a targeted description edit and create_issue_note for discussion.

Input Schema

NameRequiredDescriptionDefault
titleNoIssue title
labelsNoLabel names
weightNoIssue weight
due_dateNoDue date (YYYY-MM-DD)
jmespathNoOptional JMESPath expression filtering the JSON result before return.
issue_iidYesIssue IID
issue_typeNoissue, incident, test_case, or task
project_idYesProject ID or URL-encoded path
descriptionNoIssue description
state_eventNoclose or reopen
assignee_idsNoAssignee user IDs
confidentialNoConfidential
milestone_idNoMilestone ID
full_responseNoIf true, return the complete updated issue. Default is slim (iid, title, state, web_url, updated_at).
discussion_lockedNoLock discussions

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed13 schema fields changedv2.3.22
    • changedInput schema / properties / assignee_ids / description
      Previous value: -"Array of user IDs to assign issue to"New value: +"Assignee user IDs"
    • changedInput schema / properties / confidential / description
      Previous value: -"Set the issue to be confidential"New value: +"Confidential"
    • changedInput schema / properties / description / description
      Previous value: -"The description of the issue"New value: +"Issue description"
    • changedInput schema / properties / discussion_locked / description
      Previous value: -"Flag to lock discussions"New value: +"Lock discussions"
    • changedInput schema / properties / due_date / description
      Previous value: -"Date the issue is due (YYYY-MM-DD)"New value: +"Due date (YYYY-MM-DD)"
    • changedInput schema / properties / full_response / description
      Previous value: -"If true, return the complete updated issue object. Default returns a slim confirmation (iid, title, state, web_url, updated_at) to reduce token usage."New value: +"If true, return the complete updated issue. Default is slim (iid, title, state, web_url, updated_at)."
    • changedInput schema / properties / issue_iid / description
      Previous value: -"The internal ID of the project issue"New value: +"Issue IID"
    • changedInput schema / properties / issue_type / description
      Previous value: -"The type of issue. One of issue, incident, test_case or task."New value: +"issue, incident, test_case, or task"
    • changedInput schema / properties / labels / description
      Previous value: -"Array of label names"New value: +"Label names"
    • changedInput schema / properties / milestone_id / description
      Previous value: -"Milestone ID to assign"New value: +"Milestone ID"
    • changedInput schema / properties / state_event / description
      Previous value: -"Update issue state (close/reopen)"New value: +"close or reopen"
    • changedInput schema / properties / title / description
      Previous value: -"The title of the issue"New value: +"Issue title"
    • changedInput schema / properties / weight / description
      Previous value: -"Weight of the issue (numeric, typically hours of work)"New value: +"Issue weight"
  2. Changed1 schema field changedv2.1.66
    • addedInput schema / properties / jmespath
      Added value: +{
      +  "description": "Optional JMESPath expression filtering the JSON result before return.",
      +  "type": "string"
      +}
  3. Changed1 schema field changedv2.1.30
    • addedInput schema / properties / full_response
      Added value: +{
      +  "description": "If true, return the complete updated issue object. Default returns a slim confirmation (iid, title, state, web_url, updated_at) to reduce token usage.",
      +  "type": "boolean"
      +}
  4. Addedv2.1.18
  5. Removedv2.1.14
  6. Addedv2.1.11
  7. Removedv2.1.10
  8. Changed4 schema fields changedv2.1.9
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / issue_type / description
      Previous value: -"the type of issue. One of issue, incident, test_case or task."New value: +"The type of issue. One of issue, incident, test_case or task."
    • changedInput schema / properties / weight / description
      Previous value: -"Weight of the issue (0-9)"New value: +"Weight of the issue (numeric, typically hours of work)"
    • changedInput schema / required
      Previous value: -[
      -  "issue_type"
      -]New value: +[
      +  "project_id",
      +  "issue_iid"
      +]
  9. First observedv1.0.0

TDQS

A3.6/5.0
Behavior3/5

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

Annotations supply only openWorldHint=true, so the description carries most of the behavioral burden. It usefully discloses the default return shape (slim: iid, title, state, web_url, updated_at) versus full_response=true — but that same detail is already in the `full_response` schema description, so the added value is limited. For a mutation tool it says nothing about permission requirements, reversibility, or side effects of `state_event` closing/reopening.

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?

Four short sentences, front-loaded with the verb+resource, and no padding. Minor redundancy: "Update an issue" and "Change fields on an existing issue" say the same thing twice, and the response-shape sentence is duplicated in the schema.

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

Completeness3/5

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

Adequate for a 15-parameter mutation tool: field coverage lives in the schema and return shape is addressed. However, with no output schema and no annotation coverage of safety/permissions, the description should say more about the consequences of state transitions and what the slim confirmation actually omits.

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

Parameters3/5

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

Schema description coverage is 100%, so every one of the 15 parameters is already documented (enums for state_event and issue_type, date format for due_date, JMESPath filtering). The description adds no meaning beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource ("Update an issue" / "Change fields on an existing issue") that an agent can match to intent immediately. It also distinguishes two nearby siblings, but only partially — it never contrasts with other write tools in the set (update_merge_request, create_issue) or clarifies that it cannot create issues.

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

Usage Guidelines4/5

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

Explicitly routes the agent away from this tool for two cases: targeted description edits go to `update_issue_description_patch`, and discussion goes to `create_issue_note`. There is no when-not-to-use guidance for the broader class of writes (e.g., creating an issue, updating an MR), which keeps it below a 5.

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