Skip to main content
Glama

linear_updateDocument

Idempotent

Update an existing Linear document by ID, modifying title, content, associations, or visibility settings.

Instructions

Update an existing Linear document. Provide id plus at least one other field to change.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesID of the document to update
iconNoUpdated icon. Pass null to clear it.
colorNoUpdated icon color. Pass null to clear it.
titleNoUpdated document title
teamIdNoUpdated team association. Pass null to clear it.
contentNoUpdated markdown content. Pass null to clear it.
cycleIdNoUpdated cycle association. Pass null to clear it.
issueIdNoUpdated issue association. Pass null to clear it.
trashedNoWhether the document should be marked as trashed
hiddenAtNoISO timestamp for hiding the document. Pass null to clear it.
projectIdNoUpdated project association. Pass null to clear it.
releaseIdNoUpdated release association. Pass null to clear it.
sortOrderNoUpdated sort order in the resources list
initiativeIdNoUpdated initiative association. Pass null to clear it.
resourceFolderIdNoUpdated resource folder association. Pass null to clear it.
lastAppliedTemplateIdNoUpdated last applied template. Pass null to clear it.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNo
urlNo
iconNo
teamNo
colorNo
cycleNo
issueNo
titleNo
slugIdNo
contentNo
creatorNo
projectNo
releaseNo
trashedNo
hiddenAtNo
createdAtNo
sortOrderNo
updatedAtNo
updatedByNo
archivedAtNo
initiativeNo
resourceFolderIdNo
documentContentIdNo
lastAppliedTemplateNo

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed4 schema fields changedv1.4.2
    • changedOutput schema / properties / creator / properties / email / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / sortOrder / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "null"
      +]
    • changedOutput schema / properties / updatedBy / properties / email / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / url / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
  2. Changed6 schema fields changedv1.4.1
    • addedInput schema / properties / cycleId
      Added value: +{
      +  "description": "Updated cycle association. Pass null to clear it.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / issueId
      Added value: +{
      +  "description": "Updated issue association. Pass null to clear it.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / releaseId
      Added value: +{
      +  "description": "Updated release association. Pass null to clear it.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / resourceFolderId
      Added value: +{
      +  "description": "Updated resource folder association. Pass null to clear it.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / teamId
      Added value: +{
      +  "description": "Updated team association. Pass null to clear it.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "archivedAt": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "color": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "content": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "createdAt": {
      +      "type": "string"
      +    },
      +    "creator": {
      +      "properties": {
      +        "email": {
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "cycle": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "number": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "documentContentId": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "hiddenAt": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "icon": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "initiative": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "issue": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "identifier": {
      +          "type": "string"
      +        },
      +        "title": {
      +          "type": "string"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "lastAppliedTemplate": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "project": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "release": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "version": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "resourceFolderId": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "slugId": {
      +      "type": "string"
      +    },
      +    "sortOrder": {
      +      "type": "number"
      +    },
      +    "team": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "trashed": {
      +      "type": "boolean"
      +    },
      +    "updatedAt": {
      +      "type": "string"
      +    },
      +    "updatedBy": {
      +      "properties": {
      +        "email": {
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "url": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Addedv1.1.2

TDQS

A4/5.0
Behavior3/5

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

Annotations already carry the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the description is not burdened with that. It adds the 'at least one other field' constraint, which is a useful behavioral nuance. It does not disclose what happens to unspecified fields (assumed unchanged) or the response shape, but with idempotency and non-destructive hints in annotations, no significant gap remains and no contradiction exists.

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?

A single, front-loaded sentence with zero wasted words: the verb and resource lead, followed by the one essential operation rule. Every word earns its place.

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?

Despite being a 16-parameter tool, the description is adequate because the schema documents every parameter at 100% coverage, an output schema exists, and annotations cover idempotency and destructive behavior. The description adds the one key operational requirement (minimum-fields rule) the structured data cannot express. Only marginal behavioral color (e.g., unchanged-field semantics) is untold, which is minor given schema richness.

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 the baseline is 3. The description adds genuine value by stating that id alone is insufficient — at least one additional field must be supplied — a constraint not expressed in the schema (which marks only id as required). This clarifies a non-obvious calling requirement beyond the schema.

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 names a specific verb ('Update') and resource ('existing Linear document'), making the tool's function immediately clear. It implicitly distinguishes from linear_createDocument (new vs. existing) and from archive-style mutations like linear_archiveDocument/unarchiveDocument.

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

Usage Guidelines3/5

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

The description gives a clear precondition — 'Provide id plus at least one other field to change' — which tells the agent what is required to make a valid call. However, it offers no when-not-to-use guidance and does not route to any sibling alternative (e.g., linear_archiveDocument for trashing, or linear_updateIssue for issue updates), so differentiation from related mutation tools is left to inference.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tacticlaunch/mcp-linear'

If you have feedback or need assistance with the MCP directory API, please join our Discord server