Skip to main content
Glama

Kalpana Designer

Change a flow

update_flow
Idempotent

Change a flow's name, description, size or steps. steps replaces the whole list, so read it with list_flows first and send it back changed; fields left out keep their values. Returns the flow as it now is.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "template_id": "<template_id>",
      "flow_id": "<flow_id>"
    },
    "name": "update_flow"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNo
stepsNoThe pages in the order the video visits them. The same page may come twice.
widthNoThe video's width. Left out: the first page's.
heightNoThe video's height. Left out: the first page's.
flow_idYesThe flow, from list_flows.
backgroundNoWhat shows between pages during a fly: #RRGGBB, or "page" for the first page's own look. Default near-black.
descriptionNo
template_idYesThe template, from search_templates or create_design.
background_gradientNoTwo to six #RRGGBB colours to show between pages as a gradient, in place of `background`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / steps / items / properties / hold / description
      Previous value: -"Seconds on this page after its transition. Leave it out and the page's own duration decides, and keeps deciding when that changes."New value: +"Seconds on this stop after its transition; the stop lasts transition + hold, and the page's motion starts when its transition starts. Left out: the page's duration minus the transition (at least 0.5), following the page when it changes; a still page or a layer_id close-up holds 2."
    • changedInput schema / properties / steps / items / properties / layer_id / description
      Previous value: -"Close in on this layer of the page instead of showing all of it. Every type except fly, morph, dissolve and cut needs whole pages on both sides."New value: +"Close in on this layer of the page instead of showing all of it. Every transition works on a close-up; between two stops on one page only fly and cut do."
  2. Changed1 schema field changed
    • changedInput schema / properties / steps / items / properties / show_finished / description
      Previous value: -"Coming back to a page: show it as it ended instead of playing its motion again."New value: +"Coming back to a page: skip its animation and show it at its still time, or where its motion ends without one."
  3. Changed2 schema fields changed
    • addedInput schema / properties / background_gradient
      Added value: +{
      +  "description": "Two to six #RRGGBB colours to show between pages as a gradient, in place of `background`.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / steps / items / properties / transition / properties / anticlockwise
      Added value: +{
      +  "description": "Clock: the hand turns anticlockwise.",
      +  "type": "boolean"
      +}
  4. Changed14 schema fields changed
    • changedInput schema / properties / steps / items / properties / layer_id / description
      Previous value: -"Close in on this layer of the page instead of showing all of it. Push, cover, wipe and dip need whole pages on both sides."New value: +"Close in on this layer of the page instead of showing all of it. Every type except fly, morph, dissolve and cut needs whole pages on both sides."
    • addedInput schema / properties / steps / items / properties / transition / properties / angle
      Added value: +{
      +  "description": "Stripes: the lean in degrees, -60 to 60. Clock: where the hand starts, degrees clockwise from 12.",
      +  "type": "number"
      +}
    • changedInput schema / properties / steps / items / properties / transition / properties / color / description
      Previous value: -"A dip's colour as #RRGGBB. Default black."New value: +"The colour of a dip, flood, rings, stripes, blades, burst or pixel as #RRGGBB. Default black."
    • addedInput schema / properties / steps / items / properties / transition / properties / count
      Added value: +{
      +  "description": "How many: rings 2 to 6, stripes 2 to 24, burst rays 4 to 40.",
      +  "type": "integer"
      +}
    • changedInput schema / properties / steps / items / properties / transition / properties / direction / description
      Previous value: -"Which way a push, cover or wipe moves. Default left."New value: +"Which way a push, cover, wipe, whip, flip, cube or pixel moves; stripes take left or right. Default left."
    • addedInput schema / properties / steps / items / properties / transition / properties / gradient
      Added value: +{
      +  "description": "Two to six #RRGGBB colours to use in place of `color`, left to right.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / steps / items / properties / transition / properties / gradient_angle
      Added value: +{
      +  "description": "Turns the gradient, degrees clockwise.",
      +  "type": "number"
      +}
    • addedInput schema / properties / steps / items / properties / transition / properties / opacity
      Added value: +{
      +  "description": "How solid the colour is, on the types that have one. Below 1 the pages show through and fade across.",
      +  "maximum": 1,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / steps / items / properties / transition / properties / order
      Added value: +{
      +  "description": "Which way a pixel's rows set off.",
      +  "enum": [
      +    "random",
      +    "in_order",
      +    "centre"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / steps / items / properties / transition / properties / origin
      Added value: +{
      +  "description": "Where an iris, flood, rings or burst starts: [x, y] as fractions of the page, [0, 0] top left. Default the middle.",
      +  "items": {
      +    "type": "number"
      +  },
      +  "maxItems": 2,
      +  "minItems": 2,
      +  "type": "array"
      +}
    • addedInput schema / properties / steps / items / properties / transition / properties / panels
      Added value: +{
      +  "description": "Where blades close from.",
      +  "enum": [
      +    "sides",
      +    "top_bottom",
      +    "corners"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / steps / items / properties / transition / properties / size
      Added value: +{
      +  "description": "Pixel: the block, 0.02 to 0.25 of the page's long side. Burst: the ray, 0.004 to 0.06.",
      +  "type": "number"
      +}
    • changedInput schema / properties / steps / items / properties / transition / properties / type / description
      Previous value: -"fly: the camera moves across the board. morph: layers with the same name glide to their new places and the rest fade. dissolve: the next page fades in. cut: straight there. push: the next page slides in and shoves this one out. cover: it slides in over this one. wipe: a hard edge crosses the page. dip: down to a colour and up on the next page."New value: +"fly: the camera moves across the board. morph: layers with the same name glide to their new places and the rest fade. dissolve: the next page fades in. cut: straight there. push: the next page slides in and shoves this one out. cover: it slides in over this one. wipe: a hard edge crosses the page. dip: down to a colour and up on the next page. zoom: this page grows away as the next fades up. zoom_through: the camera passes through this page. blur: this page blurs out as the next comes into focus. whip: a very fast smeared push. flip: the pages turn over like a card. cube: the pages are two faces of a turning cube. iris: the next page opens through a growing circle. clock: a hand sweeps round. flood: a circle of colour floods the page, then fades off the next one. rings: rings of colour grow from the middle, then close on the next page. stripes: tilted bands of colour sweep across. blades: two panels of colour slam shut and part on the next page. burst: rays shoot out of the middle, then a circle floods the page. pixel: rows of colour step across in hard blocks."
    • changedInput schema / properties / steps / items / properties / transition / properties / type / enum
      Previous value: -[
      -  "fly",
      -  "morph",
      -  "dissolve",
      -  "cut",
      -  "push",
      -  "cover",
      -  "wipe",
      -  "dip"
      -]New value: +[
      +  "fly",
      +  "morph",
      +  "dissolve",
      +  "cut",
      +  "push",
      +  "cover",
      +  "wipe",
      +  "dip",
      +  "zoom",
      +  "zoom_through",
      +  "blur",
      +  "whip",
      +  "flip",
      +  "cube",
      +  "iris",
      +  "clock",
      +  "flood",
      +  "rings",
      +  "stripes",
      +  "blades",
      +  "burst",
      +  "pixel"
      +]
  5. Added

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, idempotent, non-destructive), so the description's job is to add nuance, and it does: steps is a wholesale replacement rather than a merge, omitted fields retain their values, and the call returns the updated flow. That replace-the-whole-list warning is the single most important behavioral fact about this tool and is not derivable from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, with the scope statement first, the risky steps caveat second, and the return value last. Every clause carries actionable information for the caller.

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 nine-parameter mutation with a deep nested steps schema and no output schema, the description covers the essentials: what changes, how partial updates behave, the replacement hazard, and what comes back. It stops short of noting side effects such as whether the change affects rendered output or requires a re-render, but nothing required for a correct call is missing.

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 coverage is high at 78%, so most parameters document themselves, and the description correctly avoids restating them. It still adds genuinely non-schema meaning by explaining the partial-update contract ('fields left out keep their values') and the destructive replacement semantics of the steps array, which the schema alone would not convey.

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?

The description opens with a specific verb and resource plus the updatable fields ('Change a flow's name, description, size or steps'), which clearly separates it from create_flow, delete_flow, and list_flows. The only gap is that background and background_gradient, both real parameters, fall outside the enumerated list, so the scope statement is slightly narrower than the actual 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?

It gives a concrete prerequisite workflow — read steps via list_flows and send the list back modified — which is exactly the guidance an agent needs before calling. It does not state when to use a different tool instead (e.g. create_flow for a new flow), but the context is unambiguous enough for a competent caller.

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.

Resources