Skip to main content
Glama

Update Node

clipform_update_node
DestructiveIdempotent

Update one or more existing nodes' text, type, config, or options. Pass multiple updates in one call instead of separate tool calls. Requires node IDs (returned by clipform_create_form, clipform_add_node, or clipform_get_form). Does not change node positions in the flow. All type definitions and config schemas are derived from @vid-master/config (node-types).

Input Schema

NameRequiredDescriptionDefault
contextYesDescribe the user's underlying goal in one sentence - not the tool you're calling.
form_idYesThe form UUID (returned by clipform_create_form, not the short share_id from the URL)
updatesYesOne or more node updates to apply

Output Schema

NameRequiredDescriptionDefault
resultsYesOne result per requested update, in order

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / updates / items / properties / options / description
      Previous value: -"Replace all options (for choice nodes). Omit to keep existing options."New value: +"The full option list (for choice nodes). Include each option's id from clipform_get_form to keep that option and its routes, answer key and results. Options without an id are added as new. Options left out are removed together with their routes. Omit to keep existing options."
    • addedInput schema / properties / updates / items / properties / options / items / properties / id
      Added value: +{
      +  "description": "The option's id from clipform_get_form. Include it to keep this option with its routes, answer key and results; omit it to add a new option.",
      +  "format": "uuid",
      +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / updates / items / properties / type / enum
      Previous value: -[
      -  "choice",
      -  "open",
      -  "details",
      -  "camera",
      -  "payment",
      -  "button",
      -  "redirect",
      -  "file_download",
      -  "end_screen"
      -]New value: +[
      +  "choice",
      +  "open",
      +  "details",
      +  "draw",
      +  "camera",
      +  "payment",
      +  "button",
      +  "redirect",
      +  "file_download",
      +  "end_screen"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / updates / items / properties / type / enum
      Previous value: -[
      -  "choice",
      -  "open",
      -  "details",
      -  "payment",
      -  "button",
      -  "redirect",
      -  "file_download",
      -  "end_screen"
      -]New value: +[
      +  "choice",
      +  "open",
      +  "details",
      +  "camera",
      +  "payment",
      +  "button",
      +  "redirect",
      +  "file_download",
      +  "end_screen"
      +]
  4. Changed4 schema fields changed
    • addedInput schema / properties / form_id / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • removedInput schema / properties / updates / items / additionalProperties
      Removed value: -false
    • addedInput schema / properties / updates / items / properties / config / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / updates / items / properties / options / items / additionalProperties
      Removed value: -false
  5. Changed1 schema field changed
    • changedInput schema / properties / updates / items / properties / type / enum
      Previous value: -[
      -  "choice",
      -  "open",
      -  "details",
      -  "button",
      -  "redirect",
      -  "file_download",
      -  "end_screen"
      -]New value: +[
      +  "choice",
      +  "open",
      +  "details",
      +  "payment",
      +  "button",
      +  "redirect",
      +  "file_download",
      +  "end_screen"
      +]
  6. Changed1 schema field changed
    • changedInput schema / properties / updates / items / properties / options / items / properties / score / description
      Previous value: -"Score value for this option (for scored quizzes). Use 1 for correct, 0 for wrong. Scored options automatically enable correct-answer marking (record_scores) on the node."New value: +"Score value for this option (for scored quizzes). Use 1 for correct, 0 for wrong. Scored options automatically enable correct-answer marking (record_scores) and correct/incorrect answer feedback on the node; set config.choice.show_answer_feedback: false to hide the feedback."
  7. Changed2 schema fields changed
    • addedInput schema / properties / updates / items / properties / options / items / properties / is_correct
      Added value: +{
      +  "description": "Mark this as the correct answer for a quiz (maps to score 1; other options score 0). Use this OR score, not both.",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / updates / items / properties / options / items / properties / scores
      Removed value: -{
      -  "additionalProperties": {
      -    "type": "number"
      -  },
      -  "description": "Planned feature - category-based scores keyed by category name. Not yet editable in the dashboard.",
      -  "type": "object"
      -}
  8. Changed3 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / context
      Added value: +{
      +  "description": "Describe the user's underlying goal in one sentence - not the tool you're calling.",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "form_id",
      -  "updates"
      -]New value: +[
      +  "form_id",
      +  "updates",
      +  "context"
      +]
  9. Changed1 schema field changed
    • changedInput schema / properties / updates / items / properties / type / enum
      Previous value: -[
      -  "choice",
      -  "open",
      -  "details",
      -  "draw",
      -  "button",
      -  "redirect",
      -  "file_download",
      -  "end_screen"
      -]New value: +[
      +  "choice",
      +  "open",
      +  "details",
      +  "button",
      +  "redirect",
      +  "file_download",
      +  "end_screen"
      +]
  10. Changed1 schema field changed
    • changedInput schema / properties / updates / items / properties / config / description
      Previous value: -"Type-specific configuration keyed by node type. Omit to use defaults. Per-type keys, shapes, and defaults are listed in the clipform_create_form description; craft guidance via clipform_get_guide."New value: +"Type-specific configuration keyed by node type. Omit to use defaults. Per-type keys, shapes, and defaults are listed in the clipform_create_form description; craft guidance via clipform_get_guide. Merged shallowly into the stored config - only the keys you pass are changed. Set a key to null to delete it; nested objects are replaced wholesale. When type is changed in the same call, config replaces the stored configuration instead of merging."
  11. Changed1 schema field changed
    • changedInput schema / properties / updates / items / properties / type / enum
      Previous value: -[
      -  "choice",
      -  "open",
      -  "contact",
      -  "draw",
      -  "button",
      -  "redirect",
      -  "end_screen"
      -]New value: +[
      +  "choice",
      +  "open",
      +  "details",
      +  "draw",
      +  "button",
      +  "redirect",
      +  "file_download",
      +  "end_screen"
      +]
  12. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "results": {
      +      "description": "One result per requested update, in order",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "error": {
      +            "type": "string"
      +          },
      +          "node_id": {
      +            "type": "string"
      +          },
      +          "ok": {
      +            "type": "boolean"
      +          },
      +          "warnings": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "node_id",
      +          "ok"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "results"
      +  ],
      +  "type": "object"
      +}
  13. First observed

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and idempotentHint=true, so the mutation risk is known. The description adds genuinely useful context — the position-change exclusion and the derivation of type/config schemas from @vid-master/config — but says nothing about the destructive consequences (e.g. that removing an option also removes its routes) or merge-versus-replace behavior, which live only in the schema.

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?

Four sentences, front-loaded with the action, then batching, then prerequisites, then scope exclusion — a sensible ordering with no filler. The trailing sentence about @vid-master/config is an implementation detail of marginal value to an agent, but it is only one clause.

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?

With an output schema present the description needn't explain return values, and annotations plus a fully-described schema cover safety and parameter shape. What remains is covered — batching limits, ID sourcing, and position invariance — leaving only unaddressed failure modes such as what happens with a stale or unknown node_id.

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 100%, so form_id, updates, context and every nested field are already documented in the schema, setting the baseline at 3. The description only adds the provenance of node IDs and a pointer to clipform_get_guide, both of which the schema's own config description already mentions, so it adds little semantic value beyond structured fields.

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?

Opens with a specific verb and resource ('Update one or more existing nodes') and enumerates the mutable facets: text, type, config, options. The clause 'Does not change node positions in the flow' draws a boundary that separates it from layout-oriented siblings, so an agent can identify the tool without opening the 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?

'Pass multiple updates in one call instead of separate tool calls' gives a clear trigger for using this tool over repeated single calls, and it states the prerequisite that node IDs must come from clipform_create_form, clipform_add_node, or clipform_get_form. It stops short of naming a specific alternative (e.g. add_node for new nodes or update_form for form-level edits), so the exclusion side is only partial.

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.