Skip to main content
Glama

Update form

form_update

Update form metadata or appearance. Does not update form content (use editor tools). null clears folderId/emoji. cover and logo are OBJECTS keyed by a discriminated type — never a bare string. cover = {type:"image",url,offsetY?} | {type:"color",color} | {type:"none"}; logo = {type:"icon",name} | {type:"image",url} | {type:"none"}. Set an image only from a durable http(s) or data:image URL the user explicitly provided. AI chat file-attachment proxy URLs are temporary and must never be stored in form fields. Examples: cover:{type:"image",url:"https://…",offsetY:50}; cover:{type:"color",color:"#0ea5e9"}; logo:{type:"none"}.

Input Schema

NameRequiredDescriptionDefault
logoNoSet or remove the form logo. Discriminated by `type`: type=icon requires name; type=image requires url; type=none takes no other fields. For type=image, never invent or guess a URL — use a URL the user provided or an uploaded image; if you have neither, ask the user instead.
nameNo
coverNoSet or remove the form cover. Discriminated by `type`: type=color requires color; type=image requires url; type=none takes no other fields. For type=image, never invent or guess a URL (no stock, placeholder, or Unsplash links) — use a URL the user provided or an uploaded image; if you have neither, ask the user instead.
emojiNo
formIdYes
folderIdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changed
    • changedInput schema / properties / cover / description
      Previous value: -"Set or remove the form cover. Discriminated by `type`. Per-variant fields validated server-side: type=color requires color; type=image requires url; type=none takes no other fields. For type=image, never invent or guess a URL (no stock, placeholder, or Unsplash links) — use a URL the user provided or an uploaded image; if you have neither, ask the user instead."New value: +"Set or remove the form cover. Discriminated by `type`: type=color requires color; type=image requires url; type=none takes no other fields. For type=image, never invent or guess a URL (no stock, placeholder, or Unsplash links) — use a URL the user provided or an uploaded image; if you have neither, ask the user instead."
    • addedInput schema / properties / cover / properties / offsetY / default
      Added value: +50
    • changedInput schema / properties / cover / properties / url / description
      Previous value: -"http(s) or data:image URI the user provided (type=image) — never invented"New value: +"http(s) or data:image URI the user provided — never invented (type=image)"
    • addedInput schema / properties / cover / properties / url / pattern
      Added value: +"^(https?:\\/\\/|data:image\\/)"
    • addedInput schema / properties / formId / minLength
      Added value: +1
    • changedInput schema / properties / logo / description
      Previous value: -"Set or remove the form logo. Discriminated by `type`. Per-variant fields validated server-side: type=icon requires name; type=image requires url; type=none takes no other fields. For type=image, never invent or guess a URL — use a URL the user provided or an uploaded image; if you have neither, ask the user instead."New value: +"Set or remove the form logo. Discriminated by `type`: type=icon requires name; type=image requires url; type=none takes no other fields. For type=image, never invent or guess a URL — use a URL the user provided or an uploaded image; if you have neither, ask the user instead."
    • changedInput schema / properties / logo / properties / name / description
      Previous value: -"Icon name (type=icon)"New value: +"(type=icon)"
    • changedInput schema / properties / logo / properties / url / description
      Previous value: -"http(s) or data:image URI the user provided (type=image) — never invented"New value: +"http(s) or data:image URI the user provided — never invented (type=image)"
    • addedInput schema / properties / logo / properties / url / pattern
      Added value: +"^(https?:\\/\\/|data:image\\/)"
    • addedInput schema / properties / name / minLength
      Added value: +1
  2. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare the generic readOnly/destructive/openWorld profile; the description adds substantive behavior beyond that — 'null clears folderId/emoji', the discriminated-union shape of cover/logo, and a hard policy against storing ephemeral chat-proxy URLs. It stops short of stating permission requirements or the response shape, but that gap is modest for a non-destructive update.

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 and the content exclusion in the first sentence, then progressively details complex parameters. It is somewhat long and partially duplicates the schema's own `examples` for cover/logo, but every sentence still carries operative information.

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 six-parameter mutation tool with nested discriminated objects and no output schema, the description covers what is mutated, what is explicitly out of scope, and how to construct the tricky fields. Return values and permission prerequisites are unstated, which keeps it short of fully complete.

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 description coverage is low (33%), so the description must carry the load, and it does: it spells out the cover/logo union arms, null-clearing semantics, and worked examples for each variant. The one gap is the `name` and `emoji` parameters, which get no semantic treatment beyond what the schema's type constraints imply.

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 (update form metadata or appearance) and immediately scopes out form content, naming the sibling family to use instead ('use editor tools'). An agent can distinguish this from editor_updateElement or editor_insert* tools without opening a 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?

Gives an explicit when-not-to-use rule (content edits belong to editor tools) plus a URL-provenance policy, which is real routing guidance. It does not, however, differentiate against close metadata/appearance siblings such as formTheme_set or formSettings_update, so the agent must infer the boundary with those.

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.