Skip to main content
Glama

Fusion (write)

fusion_write
Destructive

Edit Fusion composition state in DaVinci Resolve timeline items—add tools, connect inputs, set keyframes—with read-back verification for each change.

Instructions

Change fusion state; may overwrite current values. Every change is read back from Resolve (receipt.verified=false means it did not take). op.action (params; * = required):

  • add_comp(item*): Add an empty Fusion composition to a timeline item.

  • add_tool(item*, comp, tool_id*, name, x, y): Add a tool to a comp by registry id, with optional name and flow position.

  • connect(item*, comp, tool*, input*, source_tool*, source_output): Connect a tool input to the output of another tool.

  • create_text_title(item*, text*, comp, name, font, style, size, color, +2 more): Create a Text+ tool with text, font, size and color (connect it to MediaOut to render).

  • disconnect(item*, comp, tool*, input*): Disconnect a tool input (one undo step; undo restores the link).

  • export_comp(item*, comp, path*): Export a Fusion composition of an item to a new .comp file.

  • import_comp(item*, path*): Import a .comp file as a new Fusion composition of a timeline item.

  • load_comp(item*, name*): Make a named Fusion composition the active one of a timeline item.

  • load_tool_settings(item*, comp, tool*, path*): Load a .setting file onto an existing tool (replaces its parameters).

  • paste_settings(item*, comp, text*): Paste a Fusion .setting snippet (text) into a comp; reports the tools it created.

  • rename_comp(item*, old_name*, new_name*): Rename a Fusion composition of a timeline item.

  • rename_tool(item*, comp, tool*, new_name*): Rename a tool of a comp (expressions referring to the old name keep working in Fusion).

  • save_tool_settings(item*, comp, tool*, path*, overwrite): Save a tool (or Group, as a macro) to a new .setting file.

  • set_expression(item*, comp, tool*, input*, expression*): Set (or clear, with an empty string) the expression of a tool input.

  • set_inputs(item*, comp, sets*): Set many tool inputs in one undo step (the comp is not locked: renders need it).

  • set_keyframes(item*, comp, tool*, input*, keys*): Animate an input: add a BezierSpline when needed, then key each (time, value).

  • set_tool_enabled(item*, comp, tool*, enabled*): Enable a tool or set it to pass-through (TOOLB_PassThrough). Shortcuts (prefer them for whole tasks):

  • workflow_write.title_overlay: Add an animated Text+ title (and Merge over the clip) to a timeline item's Fusion comp. One call instead of create_text_title, add_tool, connect, set_inputs, set_keyframes. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

Input Schema

NameRequiredDescriptionDefault
opYes{action, ...params}. Parameters per action: see the description or this server's describe_action tool.
dry_runNotrue: return the planned effect, change nothing.
snapshotNotrue: back up the timeline/project first; omitted: server policy.

Output Schema

NameRequiredDescriptionDefault
jobNo
planNo
statusYes
receiptNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.0.4
    • addedInput schema / properties / dry_run / description
      Added value: +"true: return the planned effect, change nothing."
    • addedInput schema / properties / snapshot / description
      Added value: +"true: back up the timeline/project first; omitted: server policy."
  2. First observedv0.1.0

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare destructive/non-idempotent, but the description adds genuinely new behavior: every change is read back and receipt.verified=false signals the change did not take, disconnect is one undo step with undo restoring the link, load_tool_settings replaces existing parameters, set_inputs runs in one undo step because the comp is not locked, and rename_tool preserves expressions referencing the old name. These are non-obvious side effects and reversibility facts an agent could not get from the structured fields.

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?

The highest-value content — the overwrite warning and the read-back verification rule — is front-loaded in the first sentence, followed by a scannable one-line-per-action catalog and a separate shortcuts section. The length is justified because the schema does not enumerate action parameters, so every line carries information.

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

Completeness5/5

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

An output schema exists and the description still flags the key return signal (receipt.verified=false), so return-value explanation is not required. Between the action catalog, the risk warning, the undo semantics, and the shortcut/batch routing, an agent has everything needed to call this destructive multi-action tool correctly.

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

Parameters5/5

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

The schema's op object is only {action, additionalProperties:true}, so the description carries nearly all parameter knowledge and does so per action, marking required params with '*' and adding meaning where types alone would not suffice (empty expression string clears, keys are (time, value) pairs, sets batches many inputs). The lone weakness is create_text_title's '+2 more', which hides two params, but describe_action is named as the escape hatch.

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+resource+risk statement ('Change fusion state; may overwrite current values') and then enumerates all 17 supported actions with their scope, so an agent knows exactly what class of mutation this tool performs. It is unambiguously distinct from fusion_read, fusion_delete, and workflow_write.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes whole-task work to the workflow_write.title_overlay shortcut ('One call instead of create_text_title, add_tool, connect, set_inputs, set_keyframes') and multi-step/repeated work to batch_run ('ONE batch_run'). It also points at describe_action as a fallback, so the agent has a decision path for both simple and compound cases.

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