Skip to main content
Glama

Interchange (write)

interchange_write
Destructive

Write LUT, EDL, FCPXML, marker CSV, or OTIO interchange files from structured values for DaVinci Resolve, with dry-run and read-back verification.

Instructions

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

  • write_cube_lut(path*, title, dim, size, domain_min, domain_max, values, transform, +2 more): Write a 1D/3D .cube LUT from explicit values or a declarative grade transform.

  • write_edl(path*, title, fps, drop_frame, events*, overwrite): Write a CMX3600 EDL from a structured event list (fps / drop-frame aware).

  • write_fcpxml(path*, items*, name, fps, drop_frame, width, height, start_timecode, +2 more): Write a minimal FCPXML 1.10 (assets, spine of clips / gaps / titles, markers).

  • write_marker_csv(path*, fps, drop_frame, markers*, overwrite): Write markers to a CSV (#, Timecode, Name, Color, Duration, Notes).

  • write_otio(path*, name, fps, start_timecode, drop_frame, tracks*, markers, overwrite): Write an OpenTimelineIO JSON timeline (tracks of clips / gaps, external refs). 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

A3.9/5.0
Behavior4/5

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

The annotations already declare destructive=true, non-idempotent, non-readOnly, and the description confirms and enriches that: values may be overwritten, and every change is read back from Resolve with receipt.verified=false signalling a change that did not take. That read-back verification contract is real information not present in the annotations. Minor gap: it does not describe what the snapshot policy means in practice or which failures leave partial state.

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?

The behavioral warning is front-loaded in the first sentence, and the per-action bullets are dense but load-bearing. The '+2 more' shorthand saves space at the cost of completeness, which is the only inefficiency.

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 five-way dispatcher with a nested, open op object, the description supplies the action roster, per-action parameters, overwrite semantics, verification semantics, and the batch_run alternative; an output schema exists so return-shape explanation is correctly omitted. The truncated parameter lists and undefined snapshot policy are the remaining gaps.

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 coverage is 100% for the three top-level parameters, and the schema itself gives no meaning to the action-specific keys inside the free-form op object; the description compensates by listing the parameters per action (path*, fps, events*, overwrite, etc.), which is genuine added value. However, the '+2 more' ellipses leave those parameters documented nowhere in the description, deferring to describe_action.

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 states a specific effect ('Change interchange state; may overwrite current values') and then enumerates the five concrete write actions (write_cube_lut, write_edl, write_fcpxml, write_marker_csv, write_otio), which makes the resource scoped and distinguishable from interchange_read. The umbrella term 'interchange state' is somewhat abstract, but the action list removes the ambiguity.

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 explicitly routes the agent away from this tool when calls are known in advance and repeat over a sequence ('ONE batch_run'), and points at describe_action in the schema for per-action parameter detail. It stops short of stating when to prefer dry_run or snapshot, or when interchange_read is the right alternative.

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