Skip to main content
Glama

kaiten_update_card

Destructive

Update selected fields on an existing Kaiten card without changing omitted fields; set supported fields to null to clear them and use Markdown in descriptions.

Instructions

Update the supplied card fields. Omitted fields remain unchanged; null clears supported fields. Description uses Markdown.

Input Schema

NameRequiredDescriptionDefault
card_idYes
changesYes

Output Schema

NameRequiredDescriptionDefault
itemYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv1.2.0
    • removedInput schema / properties / card_id / maximum
      Removed value: -9007199254740991
    • changedInput schema / properties / changes / properties / due_date / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "format": "date",
      -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -        "type": "string"
      -      },
      -      {
      -        "format": "date-time",
      -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      -        "type": "string"
      -      }
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "format": "date",
      +        "type": "string"
      +      },
      +      {
      +        "format": "date-time",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / changes / properties / owner_id / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / changes / properties / type_id / maximum
      Removed value: -9007199254740991
    • addedOutput schema / properties / item / properties / children
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "archived": {
      +        "type": "boolean"
      +      },
      +      "board_id": {
      +        "type": "number"
      +      },
      +      "column_id": {
      +        "type": "number"
      +      },
      +      "condition": {
      +        "type": "number"
      +      },
      +      "due_date": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "id": {
      +        "type": "number"
      +      },
      +      "lane_id": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "owner_id": {
      +        "type": "number"
      +      },
      +      "state": {
      +        "type": "number"
      +      },
      +      "title": {
      +        "type": "string"
      +      },
      +      "updated": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "title",
      +      "board_id",
      +      "column_id"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / item / properties / external_links
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "card_id": {
      +        "type": "number"
      +      },
      +      "created": {
      +        "type": "string"
      +      },
      +      "description": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "external_link_id": {
      +        "type": "number"
      +      },
      +      "id": {
      +        "type": "number"
      +      },
      +      "updated": {
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / item / properties / parents
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "archived": {
      +        "type": "boolean"
      +      },
      +      "board_id": {
      +        "type": "number"
      +      },
      +      "column_id": {
      +        "type": "number"
      +      },
      +      "condition": {
      +        "type": "number"
      +      },
      +      "due_date": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "id": {
      +        "type": "number"
      +      },
      +      "lane_id": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "owner_id": {
      +        "type": "number"
      +      },
      +      "state": {
      +        "type": "number"
      +      },
      +      "title": {
      +        "type": "string"
      +      },
      +      "updated": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "title",
      +      "board_id",
      +      "column_id"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  2. First observedv1.0.2

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the description isn't responsible for the safety profile. It does add genuinely useful behavior beyond that: PATCH semantics (omitted fields remain unchanged), the null-clears-fields convention, and the Markdown format for the description field. What's missing is any hint about permissions, side effects on notifications or history, or how destructive updates are surfaced to users.

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?

Three short sentences, each earning its place: the action first, then the patch semantics, then the format note. No filler or repetition.

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?

An output schema exists, so return values needn't be described. But for a destructive, non-idempotent mutation tool with a nested eight-field changes object and zero schema descriptions, the definition is thin — an agent still has to open the schema to know what it can actually change.

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 0%, and the nested `changes` object has eight undocumented fields, so the description has to carry the burden. It partially does by explaining the omission/null semantics and the Markdown format, but it never names the updatable fields (title, type_id, owner_id, due_date, asap, size_text, description, due_date_time_present) or which ones accept null clearing.

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 combination ("Update the supplied card fields") that an agent can map directly to a mutation on a card. It does not, however, distinguish itself from siblings like kaiten_move_card, kaiten_archive_card, or kaiten_set_card_properties, which could all plausibly be seen as ways to modify a card.

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 alternatives such as kaiten_set_card_properties, kaiten_move_card, or kaiten_archive_card. Usage is only implied by the word "update" — no exclusions, no prerequisites, no conditions.

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