Skip to main content
Glama
nulab

Backlog MCP Server

update_issue

DestructiveIdempotent

Modify an existing Backlog issue to change its status, assignee, dates, priority, custom fields, or details, and add comments when needed.

Instructions

Updates an existing issue

Input Schema

NameRequiredDescriptionDefault
commentNoComment to add when updating the issue
dueDateNoScheduled due date (yyyy-MM-dd)
issueIdNoThe numeric ID of the issue (e.g., 12345)
summaryNoSummary of the issue
issueKeyNoThe key of the issue (e.g., 'PROJ-123')
statusIdNoStatus ID
startDateNoScheduled start date (yyyy-MM-dd)
versionIdNoVersion IDs. Pass an empty array to clear all versions. Omit this field to leave the current versions unchanged.
assigneeIdNoUser ID of the assignee
categoryIdNoCategory IDs. Pass an empty array to clear all categories. Omit this field to leave the current categories unchanged.
priorityIdNoPriority ID
actualHoursNoActual work hours
descriptionNoUpdates an existing issue
issueTypeIdNoIssue type ID
milestoneIdNoMilestone IDs. Pass an empty array to clear all milestones. Omit this field to leave the current milestones unchanged.
attachmentIdNoAttachment IDs
customFieldsNoList of custom fields to set on the issue
resolutionIdNoResolution ID
parentIssueIdNoParent issue ID. Pass null to remove the current parent issue. Omit to leave it unchanged.
estimatedHoursNoEstimated work hours
notifiedUserIdNoUser IDs to notify

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.23.2
    • changedInput schema / properties / parentIssueId / description
      Previous value: -"Parent issue ID"New value: +"Parent issue ID. Pass null to remove the current parent issue. Omit to leave it unchanged."
    • changedInput schema / properties / parentIssueId / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "null"
      +]
  2. Addedv0.15.1
  3. Removedv0.13.1
  4. Changed2 schema fields changedv0.11.1
    • changedInput schema / properties / customFields / items / properties / value / anyOf
      Previous value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "items": {
      -      "type": "number"
      -    },
      -    "type": "array"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "items": {
      +      "type": "number"
      +    },
      +    "type": "array"
      +  }
      +]
    • changedInput schema / properties / customFields / items / properties / value / description
      Previous value: -"The ID(s) of the custom field item. For single-select fields, provide a number. For multi-select fields, provide an array of numbers representing the selected item IDs."New value: +"Value of the custom field. For text/date fields, provide a string. For numeric fields, provide a number. For list fields, provide an array of strings or numbers."
  5. Changed1 schema field changedv0.11.0
    • addedInput schema / properties / organization
      Added value: +{
      +  "description": "Optional organization name. Use list_organizations to inspect available organizations.",
      +  "type": "string"
      +}
  6. Changed5 schema fields changedv1.0.0
    • addedInput schema / properties / customFields
      Added value: +{
      +  "description": "List of custom fields to set on the issue",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "id": {
      +        "description": "The ID of the custom field (e.g., 12345)",
      +        "type": "number"
      +      },
      +      "otherValue": {
      +        "description": "Other value for list type fields",
      +        "type": "string"
      +      },
      +      "value": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "items": {
      +              "type": "number"
      +            },
      +            "type": "array"
      +          }
      +        ],
      +        "description": "The ID(s) of the custom field item. For single-select fields, provide a number. For multi-select fields, provide an array of numbers representing the selected item IDs."
      +      }
      +    },
      +    "required": [
      +      "id"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / issueId
      Added value: +{
      +  "description": "The numeric ID of the issue (e.g., 12345)",
      +  "type": "number"
      +}
    • removedInput schema / properties / issueIdOrKey
      Removed value: -{
      -  "description": "Issue ID or issue key",
      -  "type": [
      -    "string",
      -    "number"
      -  ]
      -}
    • addedInput schema / properties / issueKey
      Added value: +{
      +  "description": "The key of the issue (e.g., 'PROJ-123')",
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "issueIdOrKey"
      -]
  7. First observed

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds nothing beyond them: it does not explain partial-update semantics, that omitted fields are left unchanged, or what a destructive update entails.

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

Conciseness3/5

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

A single short sentence with no wasted words, but it is under-specified rather than efficient. There is no front-loaded statement of the core requirement (identify the issue, list fields to change).

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

Completeness2/5

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

For a destructive, idempotent mutation with 21 optional parameters and no required fields, the description omits critical context: which identifier is mandatory, that only supplied fields change, and the impact of clearing array fields. Annotations cover the safety hints but not the operational contract.

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% and the schema documents each of the 21 fields, including the important "omit to leave unchanged / empty array to clear" semantics. The description contributes no additional parameter meaning, so the baseline of 3 applies; the lack of any note that at least one issue identifier (issueId/issueKey) is required is a gap the description could have filled.

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

Purpose2/5

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

"Updates an existing issue" is essentially a restatement of the tool name update_issue; the only added information is the word "existing", implying the issue must already exist. It names no updatable field, scope, or distinguishing behavior versus add_issue/delete_issue.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus update_project, update_issue_comment, or add_issue, and no prerequisites such as required permissions or that an identifier must be supplied. Usage is only inferable from the name.

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