Skip to content

v2.28.0

Choose a tag to compare

@samuelgursky samuelgursky released this 04 Jun 12:46
f6616df

DaVinci Resolve MCP Server v2.28.0

Structural timeline diffing, a declarative project spec you can apply, a
project health check, a clip query DSL, and machine-readable error context.

Highlights

See exactly what an edit changed — timeline version diff

Comparing two archived timeline versions now reports the clips that were
added, removed, moved, and trimmed, with summary counts and before/after
clip totals. Clips are aligned by a rename-stable identity, so a reordered or
renamed clip reads as a move or change — not a delete-and-re-add.

  • timeline_versioning(action="diff_versions", timeline_name, from_version, to_version)
    {added, removed, moved, trimmed, summary}
  • Control panel: GET /api/timeline_versions/diff?timeline_name=&from_version=&to_version=

Reproducible project setup — declarative spec + apply

Describe a project's desired settings, color preset, timelines, and markers in a
project.dvr.yaml (or .json) and reconcile the live project toward it. Apply
is idempotent (running twice is a no-op) and you can preview every change
first.

project: MyShow
color_preset: rec709_gamma24
settings:
  timelineFrameRate: "24"
timelines:
  - name: Edit_v2
    fps: 24
    markers:
      - { frame: 0, color: Blue, name: HEAD }
  • MCP (project_manager): diff_to_spec, plan_spec, apply_spec(dry_run?, run_hooks?, continue_on_error?)
  • CLI: davinci-resolve-mcp batch plan-spec SPEC and
    davinci-resolve-mcp batch apply SPEC [--dry-run] [--run-hooks] [--continue-on-error]
  • Color/HDR settings apply in dependency order; markers are only added when
    absent; explicit settings override the named color_preset; before/after
    shell hooks are opt-in via run_hooks.

Project health check — lint

project_manager(action="lint") returns a graded issue list (error / warning /
info): no project, no current timeline, mixed frame rates, empty timelines,
unset render format, unmanaged color science, offline media, and unanalyzed
clips. A fast pre-flight before an editing session.

Find clips in one call — clip_where

timeline(action="clip_where", ...) returns the clips on the current timeline
matching named filters (AND) instead of walking tracks by hand. Live filters:
track_type, track_index, name_contains, duration_lt, duration_gt. A
mistyped filter name is rejected rather than silently matching everything.

Machine-readable error context

Structured error responses can now carry an optional state object — a snapshot
of the relevant values at failure time — so callers can react without parsing
message text. All existing error fields are unchanged.

Compatibility

  • Backward compatible. No tools, actions, or parameters were renamed or removed.
  • diff_versions keeps its existing added/removed/moved keys and adds
    trimmed + summary.

Notes

  • apply_spec is the only new mutating path; it auto-checkpoints via the
    existing timeline-versioning safeguards and supports dry_run.