Skip to main content
Glama

Update Ticket

update_ticket
Destructive

Change a ticket's lifecycle, dependencies, identity, and annotations: claim, resolve, drop, reopen, release, retitle/type, set triage, comment, or tick criteria—no cycles.

Instructions

Change one Ticket. Lifecycle: claim, resolve with a one-line gist, drop with a reason, reopen with a reason, or release a claim — at most one of those per call. Graph: replace the Edges, refused if they close a cycle. Identity: title, kind, and type. Annotations: triage role, a comment, ticking acceptance criteria; these touch no part of the graph. Any of the four groups may accompany the others or stand alone.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesTicket id, or the <effort>#<order> handle of a Legacy Ticket.
dropNoClose the Ticket as work ruled out of scope.
kindNoReplace the Ticket kind.
rootNoWorkspace directory. Defaults to the session workspace.
tickNoAcceptance criteria to check off, matched on their text. Wrapped criteria match both as get_tickets returns them and re-joined onto one line. All references resolve before anything is written — one unmatched name fails the whole call and leaves the file untouched.
typeNoReplace the decision type — research, prototype, grilling, or task.
claimNoTake the Ticket. Fails if another holder already has it.
titleNoReplace the Ticket title.
reopenNoReturn a resolved or dropped Ticket to open.
statusNoNot settable directly — use claim, resolve, drop, reopen, or release. Named here to say so.
triageNoSet the triage role. A separate field from status; neither touches the other.
commentNoAppend to the comment log, stored exactly as written.
releaseNoRelease the claim on a claimed Ticket and return it to open. Pass { release: true }.
resolveNoClose the Ticket as a step on the route.
blocked_byNoReplace the Edges outright, each a plain Ticket id resolved repo-wide. An empty list clears them. A cycle is refused.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv0.4.1
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / properties / kind
      Added value: +{
      +  "description": "Replace the Ticket kind.",
      +  "enum": [
      +    "build",
      +    "decision"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / release
      Added value: +{
      +  "const": true,
      +  "description": "Release the claim on a claimed Ticket and return it to open. Pass { release: true }.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / reopen
      Added value: +{
      +  "description": "Return a resolved or dropped Ticket to open.",
      +  "properties": {
      +    "reason": {
      +      "description": "Why it is being reopened.",
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "reason"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / status / description
      Previous value: -"Not settable directly — use claim, resolve, or drop. Named here to say so."New value: +"Not settable directly — use claim, resolve, drop, reopen, or release. Named here to say so."
    • addedInput schema / properties / title
      Added value: +{
      +  "description": "Replace the Ticket title.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / type
      Added value: +{
      +  "description": "Replace the decision type — research, prototype, grilling, or task.",
      +  "minLength": 1,
      +  "type": "string"
      +}
  2. Changed1 schema field changedv0.2.1
    • changedInput schema / properties / tick / description
      Previous value: -"Acceptance criteria to check off, matched on their text."New value: +"Acceptance criteria to check off, matched on their text. Wrapped criteria match both as get_tickets returns them and re-joined onto one line. All references resolve before anything is written — one unmatched name fails the whole call and leaves the file untouched."
  3. First observedv0.1.0

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, and the description adds substantial behavior: 'at most one' lifecycle change per call, graph replacements refused on cycles, annotations touching no part of the graph, and transactional reference resolution ('leaves the file untouched'). It fully discloses atomicity and failure semantics.

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

Conciseness5/5

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

The description is dense yet well-structured, front-loaded with the core action and then organized by change group. No sentence is wasted; each adds a distinct constraint or clarification.

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

Completeness4/5

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

Given the high complexity (15 params, nested objects, no output schema), the description covers the major behavioral constraints and failure modes well, including atomicity and cycle refusal. Minor gaps remain: no explicit note about return values or atomicity when multiple non-reference validation failures occur, but the description is still remarkably complete.

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 baseline is 3. The description adds meaningful interaction context: status is 'not settable directly', blocked_by replacement behavior with cycle refusal, tick matching rules, and grouping of parameters into coherent semantic groups. This goes beyond the schema's individual parameter descriptions.

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 description opens with 'Change one Ticket,' a specific verb and resource, then enumerates the four distinct change groups: lifecycle, graph, identity, and annotations. This clearly differentiates it from siblings like create_tickets (creation) and edit_map (map-level editing).

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?

The description provides no when-to-use guidance against alternatives. It never mentions create_tickets for new tickets or edit_map for graph-wide changes, and it gives no exclusions or prerequisites. The usage context is only implied by the phrase 'Change one Ticket.'

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