Skip to main content
Glama

Update a form

update_form
Destructive

Modify an existing Circle community form, including its name, status, elements, and submission settings. Set confirm=true only when the user explicitly requests this change.

Instructions

Update a form. Changes community state and requires confirm=true for the user-requested action.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNo
statusNo
accountNoNamed private Circle account; selects credentials, not a remote community ID.
confirmNoSet true only when the user asked for exactly this action.
form_idYesForm ID
payloadNoComplete JSON request body instead of body flags. Supports nested Tiptap, maps and nullable values.
elementsNo
popup_delayNo
embed_stylesNo
payload_fileNoRegular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload.
redirect_urlNo
popup_frequencyNo
thank_you_page_bodyNo
embed_display_formatNo
thank_you_page_titleNo
standalone_page_stylesNo
after_submission_actionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changedv3.0.1
    • addedInput schema / $defs
      Added value: +{
      +  "elements": {
      +    "items": {
      +      "properties": {
      +        "attributes": {
      +          "description": "Element-specific attributes. Structure varies by element type.",
      +          "type": "object"
      +        },
      +        "children": {
      +          "description": "Child elements nested within this element. Each child follows the same structure as a form_element and can be nested recursively.",
      +          "items": {
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "id": {
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "parent_element_id": {
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "position": {
      +          "type": "integer"
      +        },
      +        "type": {
      +          "enum": [
      +            "text",
      +            "field",
      +            "button",
      +            "layout"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  "embed_styles": {
      +    "properties": {
      +      "button": {
      +        "properties": {
      +          "backgroundColor": {
      +            "type": "string"
      +          },
      +          "color": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "form": {
      +        "properties": {
      +          "backgroundColor": {
      +            "type": "string"
      +          },
      +          "color": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "type": [
      +      "object",
      +      "null"
      +    ]
      +  }
      +}
    • changedInput schema / properties / confirm / description
      Previous value: -"Must be true for the specific user-requested write."New value: +"Set true only when the user asked for exactly this action."
    • addedInput schema / properties / elements / $ref
      Added value: +"#/$defs/elements"
    • removedInput schema / properties / elements / items
      Removed value: -{
      -  "properties": {
      -    "attributes": {
      -      "description": "Element-specific attributes. Structure varies by element type.",
      -      "type": "object"
      -    },
      -    "children": {
      -      "description": "Child elements nested within this element. Each child follows the same structure as a form_element and can be nested recursively.",
      -      "items": {
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "id": {
      -      "type": [
      -        "integer",
      -        "null"
      -      ]
      -    },
      -    "parent_element_id": {
      -      "type": [
      -        "integer",
      -        "null"
      -      ]
      -    },
      -    "position": {
      -      "type": "integer"
      -    },
      -    "type": {
      -      "enum": [
      -        "text",
      -        "field",
      -        "button",
      -        "layout"
      -      ],
      -      "type": "string"
      -    }
      -  },
      -  "type": "object"
      -}
    • removedInput schema / properties / elements / type
      Removed value: -"array"
    • addedInput schema / properties / embed_styles / $ref
      Added value: +"#/$defs/embed_styles"
    • removedInput schema / properties / embed_styles / properties
      Removed value: -{
      -  "button": {
      -    "properties": {
      -      "backgroundColor": {
      -        "type": "string"
      -      },
      -      "color": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  "form": {
      -    "properties": {
      -      "backgroundColor": {
      -        "type": "string"
      -      },
      -      "color": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  }
      -}
    • removedInput schema / properties / embed_styles / type
      Removed value: -[
      -  "object",
      -  "null"
      -]
    • addedInput schema / properties / payload / properties / elements / $ref
      Added value: +"#/$defs/elements"
    • removedInput schema / properties / payload / properties / elements / items
      Removed value: -{
      -  "properties": {
      -    "attributes": {
      -      "description": "Element-specific attributes. Structure varies by element type.",
      -      "type": "object"
      -    },
      -    "children": {
      -      "description": "Child elements nested within this element. Each child follows the same structure as a form_element and can be nested recursively.",
      -      "items": {
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "id": {
      -      "type": [
      -        "integer",
      -        "null"
      -      ]
      -    },
      -    "parent_element_id": {
      -      "type": [
      -        "integer",
      -        "null"
      -      ]
      -    },
      -    "position": {
      -      "type": "integer"
      -    },
      -    "type": {
      -      "enum": [
      -        "text",
      -        "field",
      -        "button",
      -        "layout"
      -      ],
      -      "type": "string"
      -    }
      -  },
      -  "type": "object"
      -}
    • removedInput schema / properties / payload / properties / elements / type
      Removed value: -"array"
    • addedInput schema / properties / payload / properties / embed_styles / $ref
      Added value: +"#/$defs/embed_styles"
    • removedInput schema / properties / payload / properties / embed_styles / properties
      Removed value: -{
      -  "button": {
      -    "properties": {
      -      "backgroundColor": {
      -        "type": "string"
      -      },
      -      "color": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  "form": {
      -    "properties": {
      -      "backgroundColor": {
      -        "type": "string"
      -      },
      -      "color": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  }
      -}
    • removedInput schema / properties / payload / properties / embed_styles / type
      Removed value: -[
      -  "object",
      -  "null"
      -]
    • addedInput schema / properties / payload / properties / standalone_page_styles / $ref
      Added value: +"#/$defs/embed_styles"
    • removedInput schema / properties / payload / properties / standalone_page_styles / properties
      Removed value: -{
      -  "button": {
      -    "properties": {
      -      "backgroundColor": {
      -        "type": "string"
      -      },
      -      "color": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  "form": {
      -    "properties": {
      -      "backgroundColor": {
      -        "type": "string"
      -      },
      -      "color": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  }
      -}
    • removedInput schema / properties / payload / properties / standalone_page_styles / type
      Removed value: -[
      -  "object",
      -  "null"
      -]
    • addedInput schema / properties / standalone_page_styles / $ref
      Added value: +"#/$defs/embed_styles"
    • removedInput schema / properties / standalone_page_styles / properties
      Removed value: -{
      -  "button": {
      -    "properties": {
      -      "backgroundColor": {
      -        "type": "string"
      -      },
      -      "color": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  "form": {
      -    "properties": {
      -      "backgroundColor": {
      -        "type": "string"
      -      },
      -      "color": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  }
      -}
    • removedInput schema / properties / standalone_page_styles / type
      Removed value: -[
      -  "object",
      -  "null"
      -]
  2. First observedv2.0.0

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the mutation profile is largely covered. The description adds two useful facts beyond that: it changes community state and it requires confirm=true for the user-requested action. However, it omits critical behavioral constraints the schema carries, such as the mutual exclusivity of payload, payload_file and body flags.

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?

Two short sentences with the core action front-loaded and no filler. The brevity is efficient even though it borders on under-specification given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with 17 parameters, nested objects, 29% schema coverage and no output schema, this description is far too thin. It does not explain the three-way body-input mutual exclusivity, the element/payload structure, or what the confirm gate actually guards, leaving the agent without enough context to call it correctly.

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

Parameters2/5

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

Schema description coverage is only 29% across 17 parameters, so the description must compensate and largely fails to. The only parameter it touches is confirm, and that merely restates the schema's own description; the important payload vs payload_file vs body-flags exclusivity, the nested elements structure and the many style/redirect fields get no explanation.

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 (Update) and resource (a form), so the agent knows this mutates an existing form. It does not differentiate itself from the many siblings in the form family (delete_form, duplicate_form, get_form, create_form_submission), so it lands at a clear-but-undifferentiated 4.

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 choose update_form over its alternatives such as duplicate_form or create_form_submission. The only usage-adjacent content is the confirm=true instruction, which is a safety gate rather than routing guidance, leaving the agent to infer the context.

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

Deploy Server

Other Tools