Skip to main content
Glama

Update Issue

update_issue

Modify selected fields of an existing MantisBT issue, including status, resolution, handler, or custom fields, and optionally append a note in one call.

Instructions

Update one or more fields of an existing MantisBT issue using a partial PATCH.

The "fields" object accepts any combination of:

  • summary (string)

  • description (string)

  • steps_to_reproduce (string)

  • additional_information (string)

  • status: { name: "new"|"feedback"|"acknowledged"|"confirmed"|"assigned"|"resolved"|"closed" }

  • resolution: { id: 20 } (20 = fixed/resolved)

  • handler: { id: } or { name: "" }

  • priority: { name: "" }

  • severity: { name: "" }

  • reproducibility: { name: "" }

  • category: { name: "" }

  • version: { name: "" } (affected version)

  • target_version: { name: "" }

  • fixed_in_version: { name: "" }

  • view_state: { name: "public"|"private" }

  • custom_fields: [{field: {id|name}, value: ""}] (only the listed custom fields are changed, others stay untouched; use get_issue_fields to discover fields)

Important: when resolving an issue, always set BOTH status and resolution to avoid leaving resolution as "open".

Use the optional "note" parameter to append a note in the same call (e.g. the reason for a status change) — no separate add_note call needed. For a note without field changes use add_note.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesNumeric issue ID to update
noteNoOptional note text appended after a successful update (e.g. reason for a status change). Replaces a separate add_note call.
fieldsYesFields to update (partial update — only provided fields are changed; unknown keys are rejected)
dry_runNoIf true, return the patch payload that would be sent without actually updating the issue. Useful for previewing changes before committing them.
note_view_stateNoVisibility of the appended note: "public" (default) or "private". Only used when "note" is set.public

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed38 schema fields changedv1.14.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • removedInput schema / properties / fields / properties / category / $ref
      Removed value: -"#/properties/fields/properties/status"
    • addedInput schema / properties / fields / properties / category / properties
      Added value: +{
      +  "id": {
      +    "type": "number"
      +  },
      +  "name": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / fields / properties / category / type
      Added value: +"object"
    • removedInput schema / properties / fields / properties / custom_fields / items / additionalProperties
      Removed value: -false
    • removedInput schema / properties / fields / properties / custom_fields / items / properties / field / $ref
      Removed value: -"#/properties/fields/properties/status"
    • addedInput schema / properties / fields / properties / custom_fields / items / properties / field / properties
      Added value: +{
      +  "id": {
      +    "type": "number"
      +  },
      +  "name": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / fields / properties / custom_fields / items / properties / field / type
      Added value: +"object"
    • changedInput schema / properties / fields / properties / custom_fields / items / required
      Previous value: -[
      -  "field"
      -]New value: +[
      +  "field",
      +  "value"
      +]
    • removedInput schema / properties / fields / properties / fixed_in_version / $ref
      Removed value: -"#/properties/fields/properties/status"
    • addedInput schema / properties / fields / properties / fixed_in_version / properties
      Added value: +{
      +  "id": {
      +    "type": "number"
      +  },
      +  "name": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / fields / properties / fixed_in_version / type
      Added value: +"object"
    • removedInput schema / properties / fields / properties / handler / $ref
      Removed value: -"#/properties/fields/properties/status"
    • addedInput schema / properties / fields / properties / handler / properties
      Added value: +{
      +  "id": {
      +    "type": "number"
      +  },
      +  "name": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / fields / properties / handler / type
      Added value: +"object"
    • removedInput schema / properties / fields / properties / priority / $ref
      Removed value: -"#/properties/fields/properties/status"
    • addedInput schema / properties / fields / properties / priority / properties
      Added value: +{
      +  "id": {
      +    "type": "number"
      +  },
      +  "name": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / fields / properties / priority / type
      Added value: +"object"
    • removedInput schema / properties / fields / properties / reproducibility / $ref
      Removed value: -"#/properties/fields/properties/status"
    • addedInput schema / properties / fields / properties / reproducibility / properties
      Added value: +{
      +  "id": {
      +    "type": "number"
      +  },
      +  "name": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / fields / properties / reproducibility / type
      Added value: +"object"
    • removedInput schema / properties / fields / properties / resolution / $ref
      Removed value: -"#/properties/fields/properties/status"
    • addedInput schema / properties / fields / properties / resolution / properties
      Added value: +{
      +  "id": {
      +    "type": "number"
      +  },
      +  "name": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / fields / properties / resolution / type
      Added value: +"object"
    • removedInput schema / properties / fields / properties / severity / $ref
      Removed value: -"#/properties/fields/properties/status"
    • addedInput schema / properties / fields / properties / severity / properties
      Added value: +{
      +  "id": {
      +    "type": "number"
      +  },
      +  "name": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / fields / properties / severity / type
      Added value: +"object"
    • removedInput schema / properties / fields / properties / status / additionalProperties
      Removed value: -false
    • removedInput schema / properties / fields / properties / target_version / $ref
      Removed value: -"#/properties/fields/properties/status"
    • addedInput schema / properties / fields / properties / target_version / properties
      Added value: +{
      +  "id": {
      +    "type": "number"
      +  },
      +  "name": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / fields / properties / target_version / type
      Added value: +"object"
    • removedInput schema / properties / fields / properties / version / $ref
      Removed value: -"#/properties/fields/properties/status"
    • addedInput schema / properties / fields / properties / version / properties
      Added value: +{
      +  "id": {
      +    "type": "number"
      +  },
      +  "name": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / fields / properties / version / type
      Added value: +"object"
    • removedInput schema / properties / fields / properties / view_state / $ref
      Removed value: -"#/properties/fields/properties/status"
    • addedInput schema / properties / fields / properties / view_state / properties
      Added value: +{
      +  "id": {
      +    "type": "number"
      +  },
      +  "name": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / fields / properties / view_state / type
      Added value: +"object"
    • addedInput schema / properties / id / maximum
      Added value: +9007199254740991
  2. Changed3 schema fields changedv1.10.5
    • addedInput schema / properties / fields / properties / custom_fields
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "field": {
      +        "$ref": "#/properties/fields/properties/status",
      +        "description": "Custom field reference: { id } or { name }"
      +      },
      +      "value": {
      +        "description": "Field value as string",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "field"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / note
      Added value: +{
      +  "description": "Optional note text appended after a successful update (e.g. reason for a status change). Replaces a separate add_note call.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / note_view_state
      Added value: +{
      +  "default": "public",
      +  "description": "Visibility of the appended note: \"public\" (default) or \"private\". Only used when \"note\" is set.",
      +  "enum": [
      +    "public",
      +    "private"
      +  ],
      +  "type": "string"
      +}
  3. Addedv1.10.4
  4. Removed
  5. Changed1 schema field changedv1.5.15
    • addedInput schema / properties / dry_run
      Added value: +{
      +  "description": "If true, return the patch payload that would be sent without actually updating the issue. Useful for previewing changes before committing them.",
      +  "type": "boolean"
      +}
  6. First observedv1.5.6

TDQS

A4.8/5.0
Behavior5/5

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

Annotations mark it as non-read-only, non-idempotent, and non-destructive, so the safety floor is covered. The description goes well beyond that: partial-update semantics (only provided fields change, unknown keys rejected), the fact that only listed custom_fields are touched, the status+resolution coupling rule, and behavior of the optional note and dry_run preview. These are non-obvious behavioral traits an agent cannot infer from annotations alone.

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 purpose before the field enumeration, and each section (accepted fields, resolution rule, note handling) carries actionable information. It is long and the field list partly restates the schema's key names, but the added format/enum detail keeps it largely justified.

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 mutation tool with no output schema, the description covers what gets changed, validation behavior (unknown keys rejected), the status/resolution coupling, note appending, and dry_run preview. An agent has everything needed to invoke it correctly without consulting other tools.

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 description coverage is 100%, so baseline would be 3, but the description adds real meaning: it enumerates the allowed field names, gives the status enum values, maps resolution id 20 to fixed/resolved, and clarifies custom_fields only modify listed fields. The dry_run and note_view_state semantics are duplicated from the schema, so it lands just below a 5.

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?

The first sentence states a specific verb (update), resource (MantisBT issue), and mechanism (partial PATCH), and the wording clearly distinguishes it from create_issue, delete_issue, and add_note in the sibling set. An agent can identify the tool without opening the schema.

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?

It gives explicit operational rules ("when resolving an issue, always set BOTH status and resolution") and routes to alternatives: use the `note` parameter to avoid a separate add_note call, and use add_note for a note with no field changes. It also points to get_issue_fields for discovery. This is when-to-use and when-to-use-otherwise guidance, not just context.

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