Skip to main content
Glama

Update Clipform

clipform_update_form
DestructiveIdempotent

Update a form's title, publish status, settings, or tags. Only sends fields that are provided - omitted fields remain unchanged. AI-PROTECTED parameters have restrictions noted in their descriptions.

Input Schema

NameRequiredDescriptionDefault
tagsNoReplace all tags on this form. Pass the full desired set (e.g. ['quiz', 'trivia', 'slug:elephants']). Omit to leave tags unchanged.
titleNoNew form title
authorNoAI-PROTECTED: Only set when the user explicitly provides an author name. Set null to clear.
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)
is_liveNoSetting true publishes/republishes the snapshot respondents see. Forms are live from creation, but edits and media attached AFTER creation are not visible until you re-send true - republishing is the expected final step of a build, never skip it after attaching media. Setting false takes the form offline (keeps the last published snapshot) - AI-PROTECTED: only take a form offline when the user explicitly asks.
logo_urlNoAI-PROTECTED: Only set when the user explicitly provides a logo URL. Set null to clear.
brand_nameNoAI-PROTECTED: Custom brand name shown in footer. Only set when user explicitly provides.
descriptionNoSEO description (meta description, og:description). Set null to clear.
font_familyNoAI-PROTECTED: Only set when the user explicitly requests a specific font.
total_stepsNoOverride the total step count shown in the step counter. Set null to auto-calculate.
primary_colorNoPrimary/brand color as 6-digit hex (e.g. '#FF5500'). Used for buttons and accents.
show_brandingNoShow Clipform branding. Set false to remove (Pro plan).
background_colorNoBackground color as 6-digit hex (e.g. '#1A1A2E').
show_step_counterNoShow step counter (e.g. '1/5'). Recommended for quizzes.
cover_media_asset_idNoCover image: the picture shown in emails, link previews and on the embed button, cropped to the form's 9:16 frame. A media_asset_id of a ready still image in this form's workspace. Set null to clear and fall back to the first step's media. Goes live on the next publish (is_live: true), which can be in the same call.
disable_back_navigationNoPrevent respondents from going back. Recommended for quizzes.

Output Schema

NameRequiredDescriptionDefault
form_idYesForm UUID
updated_fieldsYesNames of the fields that were changed by this call

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / cover_media_asset_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "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"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Cover image: the picture shown in emails, link previews and on the embed button, cropped to the form's 9:16 frame. A media_asset_id of a ready still image in this form's workspace. Set null to clear and fall back to the first step's media. Goes live on the next publish (is_live: true), which can be in the same call."
      +}
  2. Changed11 schema fields changed
    • addedInput schema / properties / author / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / author / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedInput schema / properties / brand_name / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / brand_name / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedInput schema / properties / description / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / description / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • 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)$"
    • addedInput schema / properties / logo_url / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / logo_url / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedInput schema / properties / total_steps / anyOf
      Added value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / total_steps / type
      Removed value: -[
      -  "number",
      -  "null"
      -]
  3. 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"
      -]New value: +[
      +  "form_id",
      +  "context"
      +]
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "form_id": {
      +      "description": "Form UUID",
      +      "type": "string"
      +    },
      +    "updated_fields": {
      +      "description": "Names of the fields that were changed by this call",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "form_id",
      +    "updated_fields"
      +  ],
      +  "type": "object"
      +}
  5. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the description's job is narrower; it adds two genuinely new behavioral facts: this is a partial update where omitted fields are unchanged, and several parameters are AI-PROTECTED with constraints living in their parameter descriptions. It stops short of explaining what destruction is possible (e.g. taking a form offline by is_live:false), which remains 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?

Three short sentences, front-loaded with the verb+resource and the partial-update contract immediately after. Little waste, though the AI-PROTECTED sentence is a pointer rather than content and could have been folded into the update rule.

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

Completeness3/5

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

With 17 parameters but 100% schema coverage, an output schema, and full annotations, the description carries a light burden and mostly meets it. It is thin on one thing an agent must decide unaided: when to use this versus clipform_update_node or clipform_create_form.

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% and the parameter docs are unusually rich (is_live publish semantics, tags replacement, AI-PROTECTED flags), so baseline 3 applies. The description only lists a subset of the 16 optional fields (title, publish status, settings, tags) and adds no syntax or format detail beyond the schema.

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 and resource plus the surface being edited ("title, publish status, settings, or tags"), which is clearly distinct from clipform_update_node's node-level edits. It does not explicitly name a sibling or scope boundary, so an agent still has to infer that this touches form-level metadata only.

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 second sentence implies usage (partial/patch updates are safe because omitted fields are untouched), but there is no explicit when-to-use, when-not-to-use, or routing to alternatives such as clipform_update_node or clipform_create_form. Guidance is implied 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.