Skip to main content
Glama

Update Item

item.update_humanized
DestructiveIdempotent

Update a row (item) using HUMAN VALUES. Provide sheetId, itemId, and a fields map of attribute name→value; only the given fields change. Option/member/etc. values are resolved to real ids (unrecognised → error listing valid options). Document/Description fields accept MARKDOWN and are stored as rich text. File List fields take the files the cell should hold: stored filenames from file.confirm_upload, or the entry objects sheet.read shows for this row; a replace drops the files it does not name. Blocking / Blocked By take item titles, Index (#10) or ids from the same sheet.

Input Schema

NameRequiredDescriptionDefault
modeNo`append` only affects Document/Description fields (new content is added after the existing content) and File List fields (new files are added to the cell's). All other field types always replace.replace
fieldsYesAttribute name/code → human value. Only the given fields change; values are matched to the sheet's real options.
itemIdYes
sheetIdYes

Output Schema

NameRequiredDescriptionDefault
urlYesPanel link that opens the row; use it as the target of a markdown link
itemIdYesId of the updated row

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / fields / additionalProperties / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "properties": {
      +            "connectionId": {
      +              "type": "string"
      +            },
      +            "externalId": {
      +              "type": "string"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "mimeType": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "description": "The stored filename `file.confirm_upload` returned, or the entry's name as read",
      +              "type": "string"
      +            },
      +            "originalName": {
      +              "type": "string"
      +            },
      +            "source": {
      +              "enum": [
      +                "upload",
      +                "gdrive",
      +                "dropbox"
      +              ],
      +              "type": "string"
      +            },
      +            "type": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name"
      +          ],
      +          "type": "object"
      +        }
      +      ]
      +    },
      +    "type": "array"
      +  }
      +]
    • changedInput schema / properties / mode / description
      Previous value: -"`append` only affects Document/Description fields — new content is added after the existing content. All other field types always replace."New value: +"`append` only affects Document/Description fields (new content is added after the existing content) and File List fields (new files are added to the cell's). All other field types always replace."
  2. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint=true, idempotentHint=true): it discloses the destructive edge case ("a replace drops the files it does not name"), the failure mode (unrecognised option values error with the list of valid options), how values are resolved to real ids, and how markdown is stored. This is exactly the context an agent needs before a mutation that silently drops file attachments.

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 core contract, then field-type specifics in descending priority. It is dense — several semicolon-joined clauses — but nearly every clause carries a distinct behavioral rule (id resolution, error mode, markdown, file replacement, relation field formats); minor tightening only.

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?

Return values are covered by the output schema, so the remaining burden is input-side semantics, which are handled for the tricky field types. It stops short of describing edge cases like clearing a field or what happens when a file name matches nothing, but overall it is complete enough to call correctly for a mutation with a deep nested schema.

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?

With only 50% schema coverage and a complex nested fields map, the description compensates well: it explains attribute-name→human-value resolution, file-list inputs (filenames from file.confirm_upload or entry objects from sheet.read), and that Blocking/Blocked By accept titles, `#10` index, or ids. sheetId and itemId are left unexplained, but their names and sibling usage make them self-evident.

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?

States a specific verb and resource ("Update a row (item)") and immediately qualifies it with "using HUMAN VALUES," which distinguishes it from the id-based/filter-based siblings item.update_many and item.update_where. An agent can tell what this tool does and what sets it apart without opening another schema.

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?

Clear context for use: supply sheetId, itemId, and a fields map, and "only the given fields change" — establishing this as a partial-update tool. It does not explicitly route the agent away from alternatives (bulk update via item.update_many, filtered update via item.update_where), so the when-not guidance is inferred rather than stated.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources