MCP server that drives DaVinci Resolve Studio's scripting API. First-party, dependency-light.
Strong schema coverage with 31 tools, all with explicit input schemas and descriptions. Naming follows verb_noun convention consistently (create_project, append_clip, delete_timeline). Descriptions average ~80 chars, meeting the 10-1024 char baseline. Parameter types are well-defined with constraints (enums, min/max bounds). However, output schemas are not documented in the visible code, tools return deltas but the structure is not formally specified. Error handling is minimal; no recovery guidance or actionable error messages visible. Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications in the spec. No confirmation pattern for destructive ops (quit_app, restart_app, delete_* require a confirm flag, which is good, but no dry-run or multi-step confirmation).
Add fade-in and/or fade-out to a timeline item.
Add a marker to a timeline item at a given position (relative to the item's start).
Queue a render job for the current timeline.
Add a transition between two adjacent clips on the same track.
Place a media-pool clip on a timeline track at a given position. Fails rather than overlapping an existing clip.
Create a new bin in the media pool.
Create a new project; errors if the name already exists.
Output schemas not documented. Tools return 'before/after state delta' and 'id_remap' per SERVER_INSTRUCTIONS, but the response structure is not formally specified in visible code. LLMs cannot plan downstream calls without knowing what fields to expect.
Tool annotations missing. Despite clear risk classifications (WRITE, DESTRUCTIVE, READ_ONLY), tools lack readOnlyHint, destructiveHint, and idempotentHint annotations in the MCP schema. This prevents clients from applying safety policies or UI warnings.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Create an empty timeline and make it current.
Delete a timeline item; later items on that track shift left (ripple delete).
Delete media from the media pool.
Delete a timeline from the project.
Return the currently-open project's metadata.
Get the status of the current render job.
Full state of the current timeline: tracks, items with ids/positions/transforms/markers, and the track index mapping.
Import media files into the media pool. Returns one clip record per file, including the id later calls use and the real duration where known.
Ripple-insert a clip: items at or after the position on that track shift right by the inserted duration. The position must be a clip boundary.
Return the media pool: bins and clips with ids, paths and durations.
List projects in the current project-manager folder.
List the project's timelines and which one is current.
Move a timeline item to a new position on its track; fails if the destination overlaps an existing clip.
Open an existing DaVinci Resolve project by name.
Quit DaVinci Resolve.
Restart DaVinci Resolve.
Save the currently-open project.
Set the blend mode of a timeline item.
Crop a timeline item by pixel amounts from each edge.
Make an existing timeline current; later edits apply to it.
Set the opacity of a timeline item.
Set the playback speed of a timeline item.
Set pan, zoom and rotation of a timeline item.
Start rendering all queued render jobs.
No error recovery guidance. Error handling is not visible in the provided code. Tools should return actionable error messages (e.g., 'Timeline not found. Available timelines: Timeline1, Timeline2') rather than raw exceptions.
Destructive operations lack dry-run or multi-step confirmation. quit_app and restart_app require a confirm flag, but delete_clip, delete_timeline, and delete_media do not. Agents can irreversibly destroy timelines or media without explicit confirmation.
Parameter descriptions lack format/constraint details. E.g., 'output_path' in add_render_job has no guidance on absolute vs relative paths, file extension requirements, or directory existence. 'codec' is optional but no guidance on when it's needed or valid values.