Skip to main content
Glama

Update element

editor_updateElement

Edit one element identified by nodeId — replace its text, change its props, and/or reposition it in a single call. Call editor_getDocument first and copy nodeId from it — never guess or reuse an ID from an earlier conversation. content: replace the entire text of a paragraph/header/list-item/table-cell, etc. (whole-element replace, not a substring or document-wide replace; not valid on input/option shells). properties (partial — send only what changes): isHidden, isThankYouPage (page only — marks the post-submit thank-you page), required, titleIsHidden, label (renames an option, question-title, or question), maxStars (rating-input), min/max/minLabel/maxLabel (linear-scale-input), placeholder / defaultValue (text, email, phone, url, number — defaultValue null clears), validation (answer rules keyed by the input, e.g. {maxLength:80} or {minDate:"2026-01-01"}; null clears one), randomizeOptions (radio/checkbox/select/ranking), multiple (select/picture choice). moveTo: reposition instead of recreating — e.g. moveTo:{parentId:<columnId>,position:"last"} to move it into a column for a side-by-side layout, or moveTo:{after:<nodeId>} to place it right after another element. To set conditional logic rules on a logic element, use editor_setLogic instead.

Input Schema

NameRequiredDescriptionDefault
formIdYesForm ID
moveToNoReposition (keeps id/content).
nodeIdYes
contentNoReplace the whole text of a paragraph/header/list-item/cell, in editor_insertParagraph's markup. Not a substring; not for input/option shells (rename a title via properties.label).
propertiesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / content / description
      Previous value: -"Replace the whole text of a paragraph/header/list-item/cell. Not a substring; not for input/option shells (rename a title via properties.label)."New value: +"Replace the whole text of a paragraph/header/list-item/cell, in editor_insertParagraph's markup. Not a substring; not for input/option shells (rename a title via properties.label)."
  2. Changed49 schema fields changed
    • changedInput schema / properties / properties / properties / multiple / description
      Previous value: -"Allow several answers — select, picture choice (picture choice drops its preselection)."New value: +"Allow several answers — picture choice only (drops its preselection). A select takes one answer."
    • removedInput schema / properties / properties / properties / validation / properties / accept / anyOf
      Removed value: -[
      -  {
      -    "pattern": "^(\\s*(\\.[A-Za-z0-9]+|[A-Za-z0-9*]+\\/[A-Za-z0-9.+*-]+)\\s*)(,\\s*(\\.[A-Za-z0-9]+|[A-Za-z0-9*]+\\/[A-Za-z0-9.+*-]+)\\s*)*$",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / accept / pattern
      Added value: +"^(\\s*(\\.[A-Za-z0-9]+|[A-Za-z0-9*]+\\/[A-Za-z0-9.+*-]+)\\s*)(,\\s*(\\.[A-Za-z0-9]+|[A-Za-z0-9*]+\\/[A-Za-z0-9.+*-]+)\\s*)*$"
    • addedInput schema / properties / properties / properties / validation / properties / accept / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / maxDate / anyOf
      Removed value: -[
      -  {
      -    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / maxDate / pattern
      Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
    • addedInput schema / properties / properties / properties / validation / properties / maxDate / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / maxFiles / anyOf
      Removed value: -[
      -  {
      -    "maximum": 100,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / maxFiles / maximum
      Added value: +100
    • addedInput schema / properties / properties / properties / validation / properties / maxFiles / minimum
      Added value: +1
    • addedInput schema / properties / properties / properties / validation / properties / maxFiles / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / maxLength / anyOf
      Removed value: -[
      -  {
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / maxLength / minimum
      Added value: +0
    • addedInput schema / properties / properties / properties / validation / properties / maxLength / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / maxSelections / anyOf
      Removed value: -[
      -  {
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / maxSelections / minimum
      Added value: +0
    • addedInput schema / properties / properties / properties / validation / properties / maxSelections / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / maxSize / anyOf
      Removed value: -[
      -  {
      -    "exclusiveMinimum": 0,
      -    "maximum": 1073741824,
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / maxSize / exclusiveMinimum
      Added value: +0
    • addedInput schema / properties / properties / properties / validation / properties / maxSize / maximum
      Added value: +1073741824
    • addedInput schema / properties / properties / properties / validation / properties / maxSize / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / maxTime / anyOf
      Removed value: -[
      -  {
      -    "pattern": "^([01]\\d|2[0-3]):([0-5]\\d)$",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / maxTime / pattern
      Added value: +"^([01]\\d|2[0-3]):([0-5]\\d)$"
    • addedInput schema / properties / properties / properties / validation / properties / maxTime / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / minAnsweredRows / anyOf
      Removed value: -[
      -  {
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / minAnsweredRows / minimum
      Added value: +0
    • addedInput schema / properties / properties / properties / validation / properties / minAnsweredRows / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / minDate / anyOf
      Removed value: -[
      -  {
      -    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / minDate / pattern
      Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
    • addedInput schema / properties / properties / properties / validation / properties / minDate / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / minFiles / anyOf
      Removed value: -[
      -  {
      -    "maximum": 100,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / minFiles / maximum
      Added value: +100
    • addedInput schema / properties / properties / properties / validation / properties / minFiles / minimum
      Added value: +1
    • addedInput schema / properties / properties / properties / validation / properties / minFiles / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / minLength / anyOf
      Removed value: -[
      -  {
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / minLength / minimum
      Added value: +0
    • addedInput schema / properties / properties / properties / validation / properties / minLength / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / minSelections / anyOf
      Removed value: -[
      -  {
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / minSelections / minimum
      Added value: +0
    • addedInput schema / properties / properties / properties / validation / properties / minSelections / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / minTime / anyOf
      Removed value: -[
      -  {
      -    "pattern": "^([01]\\d|2[0-3]):([0-5]\\d)$",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / minTime / pattern
      Added value: +"^([01]\\d|2[0-3]):([0-5]\\d)$"
    • addedInput schema / properties / properties / properties / validation / properties / minTime / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / pattern / anyOf
      Removed value: -[
      -  {
      -    "minLength": 1,
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / pattern / minLength
      Added value: +1
    • addedInput schema / properties / properties / properties / validation / properties / pattern / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / properties / properties / validation / properties / step / anyOf
      Removed value: -[
      -  {
      -    "exclusiveMinimum": 0,
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / properties / properties / validation / properties / step / exclusiveMinimum
      Added value: +0
    • addedInput schema / properties / properties / properties / validation / properties / step / type
      Added value: +[
      +  "number",
      +  "null"
      +]
  3. Changed3 schema fields changed
    • addedInput schema / properties / properties / properties / multiple
      Added value: +{
      +  "description": "Allow several answers — select, picture choice (picture choice drops its preselection).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / properties / properties / randomizeOptions
      Added value: +{
      +  "description": "Shuffle options per respondent — radio, checkbox, select, ranking.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / properties / properties / validation
      Added value: +{
      +  "description": "Answer rules of a question (target it or its input); keys follow the input. text/url: minLength, maxLength, pattern. email: pattern, requireVerification (Business). number, rating, scale: min, max; number also step. date: minDate, maxDate YYYY-MM-DD. time: minTime, maxTime HH:mm. checkbox, multi picture: minSelections, maxSelections. matrix: requireAllRows, minAnsweredRows. file: minFiles, maxFiles, maxSize bytes, accept. null clears a rule.",
      +  "properties": {
      +    "accept": {
      +      "anyOf": [
      +        {
      +          "pattern": "^(\\s*(\\.[A-Za-z0-9]+|[A-Za-z0-9*]+\\/[A-Za-z0-9.+*-]+)\\s*)(,\\s*(\\.[A-Za-z0-9]+|[A-Za-z0-9*]+\\/[A-Za-z0-9.+*-]+)\\s*)*$",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "max": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "maxDate": {
      +      "anyOf": [
      +        {
      +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "maxFiles": {
      +      "anyOf": [
      +        {
      +          "maximum": 100,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "maxLength": {
      +      "anyOf": [
      +        {
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "maxSelections": {
      +      "anyOf": [
      +        {
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "maxSize": {
      +      "anyOf": [
      +        {
      +          "exclusiveMinimum": 0,
      +          "maximum": 1073741824,
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "maxTime": {
      +      "anyOf": [
      +        {
      +          "pattern": "^([01]\\d|2[0-3]):([0-5]\\d)$",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "min": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "minAnsweredRows": {
      +      "anyOf": [
      +        {
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "minDate": {
      +      "anyOf": [
      +        {
      +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "minFiles": {
      +      "anyOf": [
      +        {
      +          "maximum": 100,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "minLength": {
      +      "anyOf": [
      +        {
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "minSelections": {
      +      "anyOf": [
      +        {
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "minTime": {
      +      "anyOf": [
      +        {
      +          "pattern": "^([01]\\d|2[0-3]):([0-5]\\d)$",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "pattern": {
      +      "anyOf": [
      +        {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "requireAllRows": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "requireVerification": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "step": {
      +      "anyOf": [
      +        {
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.4/5.0
Behavior4/5

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

With readOnlyHint=false already signalling mutation, the description still adds meaningful behavior: properties is partial (send only what changes), null clears a default/validation rule, content is a whole-element replace not substring, and validation keys are per-input-type. It doesn't cover perm/auth or error behavior, but the added mutation semantics are substantial.

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 action, then dense per-field guidance with no filler. It is long, but virtually every clause carries node-type constraints or examples that earn their place; only minor density cost keeps it from 5.

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?

For a 5-param nested mutation tool with no output schema, the description covers input semantics, prerequisites, and the sibling hand-off for logic. It leaves the return shape unstated, but with no output schema and annotation coverage of the safety profile, the gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 60%, and the description compensates richly: it maps each property to its valid node type (maxStars→rating-input, min/max/minLabel/maxLabel→linear-scale-input, multiple→picture choice only), shows validation examples like {maxLength:80} and {minDate:"2026-01-01"}, and gives concrete moveTo payloads.

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+resource (edit one element by nodeId) and enumerates the three mutating operations it performs (text, props, reposition) in one call. It clearly distinguishes itself from the editor_insert* and editor_deleteElement siblings by being the edit-in-place tool.

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?

Gives a hard prerequisite (call editor_getDocument first, copy nodeId, never guess/reuse an old ID) and routes conditional-logic work to editor_setLogic. It also states content is invalid on input/option shells and points to properties.label instead. It lacks broader when-to-use-vs-siblings guidance (e.g. vs editor_formatText), so not a 5.

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.