Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DAVINCI_MCP_RECIPES__ALLOW_PYTHONNoOverrides `[recipes] allow_python`. Python recipes run arbitrary code, so this must be opted in.false
DAVINCI_MCP_SAFETY__ALLOWED_ROOTSNoOverrides `[safety] allowed_roots` from ~/.config/davinci-mcp/config.toml. Files outside these folders are refused (default: your home).
DAVINCI_MCP_SAFETY__AUTO_SNAPSHOTNoOverrides `[safety] auto_snapshot`. One of "off", "destructive" or "all".destructive

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": false,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
ai_deleteA

Remove ai objects. op.action (params; * = required):

  • clear_audio_classification(clip, folder): Clear the audio classification of a clip or folder.

  • clear_transcription(clip, folder, nested): Clear the transcription of a clip or folder (irreversible). First call returns a plan + confirm_token; repeat it with confirm_token to apply. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

ai_readC

Read ai state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • get_transcription(clip*, nested, offset, limit, include_words): Read a clip transcription (segments, optional words), paginated.

ai_writeA

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

  • analyze_for_intellisearch(clip, folder, identify_faces, better_mode): Run Intellisearch analysis on a clip or folder (blocking, needs AI Extras).

  • analyze_for_slate(clip, folder, marker_color): Run Slate ID analysis on a clip or folder (job, needs the AI Slate ID Extras). [job]

  • create_subtitles_from_audio(language, caption_preset, chars_per_line, line_break, gap): Create subtitles from the audio of the current timeline (job). [job]

  • detect_scene_cuts(): Detect and make scene cuts along the current timeline (job). [job]

  • generate_speech(text*, voice_model, custom_voice_file, speed, variation, pitch, generation_id, filename, +2 more): Generate speech audio from text into the Media Pool (needs AI Speech Generator).

  • perform_audio_classification(clip, folder): Classify the audio of a clip or folder (blocking; works without Extras).

  • remove_motion_blur(clip, folder, options): Render motion-deblurred copies of a clip or folder's clips (blocking, creates clips).

  • smart_reframe(item*): Run Smart Reframe on a timeline item (job). [job]

  • transcribe_audio(clip, folder, speaker_detection, as_nested_clip): Transcribe the audio of a clip or folder (job; read it with get_transcription). [job] Shortcuts (prefer them for whole tasks):

  • workflow_write.build_vertical_reel: Build a vertical timeline from clips, add subtitles and optionally render it. One call instead of create_subtitles_from_audio. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

app_deleteA

Remove app objects. op.action (params; * = required):

  • delete_preset(kind*, name*): Delete a layout, keyboard, user-preferences or burn-in preset.

  • disable_background_tasks(): Disable background tasks for this Resolve session (irreversible).

  • quit_resolve(): Quit the DaVinci Resolve application. First call returns a plan + confirm_token; repeat it with confirm_token to apply. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

app_readA

Read app state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • get_app_info(): Product, version, edition, current page and keyframe mode.

  • list_presets(kind*): List layout, keyboard, user-preferences, burn-in or Fairlight presets.

app_writeA

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

  • export_preset(kind*, name*, path*): Export a layout, keyboard, user-preferences or burn-in preset to a file.

  • import_preset(kind*, path*, name): Import a layout, keyboard, user-preferences or burn-in preset file.

  • load_preset(kind*, name*): Load a layout, keyboard or user-preferences preset.

  • open_page(page*): Switch Resolve to a page (media, cut, edit, fusion, color, fairlight, deliver).

  • save_preset(kind*, name*): Save the current layout or user preferences as a named preset.

  • set_high_priority(enabled*): Raise or restore the Resolve process priority (needs a real bool on 21.1).

  • set_keyframe_mode(mode*): Set the keyframe mode (all, color or sizing).

  • update_preset(kind*, name*): Overwrite a layout preset with the current window layout. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

audio_readA

Read audio state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • analyze_loudness(path, clip): Measure integrated LUFS, true peak and LRA of a file with ffmpeg (no Resolve needed).

  • detect_silence(path, clip, noise_db, min_duration_s): Find silent intervals of a file with ffmpeg silencedetect (no Resolve needed).

  • get_audio_mapping(clip, item): Read the audio mapping of a clip or the source channel mapping of an item.

  • get_audio_properties(item*): Read audio properties of a timeline item (volume, pan, voice isolation, leveler).

  • get_voice_isolation(item, track): Read voice isolation state of a timeline item or audio track.

  • list_fairlight_presets(): List Fairlight preset names.

  • list_normalize_modes(): List valid normalizationMode names for normalize_audio_level.

audio_write

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

  • apply_fairlight_preset(name*): Apply a Fairlight preset to the current timeline.

  • normalize_audio_level(items*, options): Normalize the audio level of timeline items (21.1, Studio).

  • normalize_file(path, clip, target_lufs, true_peak_dbtp, lra, sample_rate, output, import_to_pool): Two-pass loudnorm of a file into a new file (job); optional Media Pool import. [job]

  • set_audio_mapping(clip, item, mapping*): Write the audio mapping of a clip, or the source channel mapping of an item (21.1).

  • set_audio_properties(item*, properties*): Set audio properties of a timeline item (volume, pan, voice isolation, leveler).

  • set_voice_isolation(item, track, enabled*, amount): Enable/disable voice isolation on an item or audio track (active timeline only). Calls known in advance (a sequence, the same change on several items): ONE batch_run.

code_deleteA

Remove code objects. op.action (params; * = required):

  • run_lua(code*): Run Lua through Fusion.Execute (off by default).

  • run_python(code*): Run Python with resolve/project/fusion globals; set result (off by default). First call returns a plan + confirm_token; repeat it with confirm_token to apply. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

color_deleteA

Remove color objects. op.action (params; * = required):

  • copy_grades(source*, targets*): Copy the current grade of one clip onto many (overwrites target grades).

  • delete_color_group(name*): Delete a color group; its clips become ungrouped.

  • delete_version(item*, name*, version_type): Delete a named color version of a clip.

  • reset_all_grades(target): Reset all grades of a clip, group or timeline graph. First call returns a plan + confirm_token; repeat it with confirm_token to apply. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

color_readA

Read color state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • get_node_graph(target): Read node count, labels, tools, LUT and cache mode of a clip, group or timeline graph.

  • list_color_groups(): List the color groups of the project with their clips in a timeline.

  • list_versions(item*): List the local and remote color versions of a clip and the current one.

  • validate_dctl(source, path): Validate DCTL source code (sensitive to formatting: one-line functions can fail).

color_writeA

Change color 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_version(item*, name*, version_type): Add a color version to a clip (Color page; fails from the Edit page).

  • apply_grade_from_drx(target*, path*, grade_mode, apply_to_all_layers, reset_first): Apply a DRX grade to a graph (Color page); replaces the current grade, no new version.

  • assign_to_color_group(group*, items*): Assign clips to an existing color group.

  • create_color_group(name*): Create a color group (the name must be unique).

  • encrypt_dctl(input_path*, output_folder*, name, expiry): Encrypt a DCTL file into an output folder.

  • export_lut(item*, path*, lut_type): Export the grade of a clip as a LUT file (works only from the Color page).

  • load_version(item*, name*, version_type): Make a named color version the active one of a clip.

  • remove_from_color_group(items*): Remove clips from their color group.

  • rename_color_group(name*, new_name*): Rename a color group.

  • rename_version(item*, name*, new_name*, version_type): Rename a color version of a clip.

  • reset_node_colors(item*): Reset the node colors of every node in the active version of a clip.

  • set_cdl(item*, node*, slope, offset, power, saturation): Set CDL slope, offset, power and saturation on a node of a clip.

  • set_node_cache_mode(target*, node*, mode*): Set the render cache mode (auto, enabled, disabled) of a node.

  • set_node_enabled(target*, node*, enabled*): Enable or disable a node of a clip, group or timeline graph.

  • set_node_lut(target*, node*, lut_path*): Set (or clear) a node LUT; files outside the LUT root are installed into it first. Shortcuts (prefer them for whole tasks):

  • workflow_write.apply_look: Apply a LUT to every video item, group them in a color group and grab a still. One call instead of set_node_lut, create_color_group, assign_to_color_group. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

fusion_deleteA

Remove fusion objects. op.action (params; * = required):

  • clear_keyframes(item*, comp, tool*, input*): Remove the animation of an input, keeping its value at the current time.

  • delete_comp(item*, name*): Delete a named Fusion composition from a timeline item.

  • delete_tools(item*, comp, tools*): Delete tools from a comp (one undo step).

  • install_fuse(filename*, source*, directory): Install a .fuse (Lua run by Resolve): needs code execution enabled + confirmation. First call returns a plan + confirm_token; repeat it with confirm_token to apply. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

fusion_readA

Read fusion state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • comp_info(item*, comp, include_connections): Flow structure of a comp: tools, connections, selection, time range, undo stack.

  • list_comps(item*): List the Fusion compositions attached to a timeline item.

  • list_fuses(directory, limit): List installed .fuse files in the user Fuses folder.

  • registry_types(query, limit, offset): Search the ~1300 registered Fusion tool/modifier ids (Fusion.GetRegSummary), paginated.

  • tool_inputs(item*, comp, tool*, names, time, include_keyframes, limit, offset): Inputs of a tool: ids, data types, values at a time, animation, keyframes (paginated).

fusion_writeA

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.

gallery_deleteA

Remove gallery objects. op.action (params; * = required):

  • delete_stills(album, stills*): Delete stills from an album. First call returns a plan + confirm_token; repeat it with confirm_token to apply. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

gallery_readA

Read gallery state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • list_albums(): List still and PowerGrade albums with their still counts.

  • list_stills(album): List the stills of an album (default: current) with their labels.

gallery_writeA

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

  • create_album(kind): Create a still album or a PowerGrade album.

  • export_stills(album, stills, folder*, prefix, format): Export stills to a folder (needs the Gallery panel open in Resolve).

  • grab_still(scope, frame_source): Grab a still from the current clip, or from all clips, into the current album.

  • import_stills(album, paths*): Import still files into an album (default: current).

  • rename_album(album*, new_name*): Rename a still or PowerGrade album.

  • set_current_album(album*): Make a still album the current one.

  • set_still_label(album, still*, label*): Set the label of a still. Shortcuts (prefer them for whole tasks):

  • workflow_write.apply_look: Apply a LUT to every video item, group them in a color group and grab a still. One call instead of grab_still. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

interchange_readA

Read interchange state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • read_cube_lut(path*): Read a .cube header: title, dimension, size, domain and entry count.

  • read_edl(path*): Parse a CMX3600 EDL into events.

  • read_fcpxml(path*): Parse an FCPXML file: assets, clips and markers.

  • read_marker_csv(path*): Read a marker CSV (header names are matched leniently).

  • read_otio(path*): Parse an OpenTimelineIO JSON file: tracks, clips, gaps and markers.

interchange_writeA

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.

item_deleteA

Remove item objects. op.action (params; * = required):

  • delete_item_markers(item*, frame, color, custom_data): Delete item markers by frame, by color ('All' allowed) or by custom data.

  • delete_take(item*, index*): Delete a take by 1-based index. First call returns a plan + confirm_token; repeat it with confirm_token to apply. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

item_readA

Read item state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • get_fades(item*): Read fade-in / fade-out durations (frames).

  • get_item(item*): Full details of a timeline item (timing, source range, track, flags, links).

  • get_output_blanking(item*): Read the output blanking of an item and whether the timeline one is used.

  • get_properties(item*): Read all item properties (transform, crop, composite, retime, audio...).

  • get_speed(item*): Read clip speed options (Percentage, PitchCorrection...).

  • get_takes(item*): List the takes of an item (count, selected index, take info).

  • list_item_markers(item*): List the markers attached to a timeline item.

item_writeA

Change item 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_flag(items*, color*): Add a colored flag to items.

  • add_item_marker(item*, frame*, color, name, note, duration, custom_data): Add a marker on a timeline item.

  • add_take(item*, clip*, start_frame, end_frame): Add a Media Pool clip as a new take (creates the take selector if needed).

  • add_transition(item*, options*): Add a transition at the start or end of an item (needs source handles).

  • clear_flags(items*, color): Clear flags of one color, or all flags, on items.

  • copy_properties(source*, targets*, keys): Copy properties from one item to many (timeline snapshot taken first).

  • finalize_takes(item*): Finalize the take selection (the selected take replaces the selector).

  • flatten_multicam(item*, grade): Flatten a multicam item into its active angle (timeline snapshot taken first).

  • select_take(item*, index*): Select a take by 1-based index.

  • set_clip_color(items*, color): Set the clip color on items, or clear it when no color is given.

  • set_enabled(items*, enabled*): Enable or disable clips.

  • set_fades(items*, fades*): Set fade-in / fade-out durations (frames) on one or many items.

  • set_name(item*, name*): Rename a timeline item.

  • set_output_blanking(item*, blanking*): Set per-item output blanking in pixels (Top/Bottom/Left/Right).

  • set_properties(items*, properties*): Set properties on one or many items; each key is read back per item.

  • set_speed(items*, speed*): Set clip speed (Percentage, PitchCorrection...) on one or many items.

  • set_use_timeline_blanking(item*, use_timeline*): Choose between the timeline output blanking and the item's own.

  • smart_switch(item*, settings): Run Multicam Smart Switch on a multicam item (synchronous, may take minutes).

  • stabilize(items*): Run the stabilizer on items (can be slow; no read-back exists).

  • update_marker_custom_data(item*, frame*, custom_data*): Update the custom data string of an item marker. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

media_deleteA

Remove media objects. op.action (params; * = required):

  • clear_clip_metadata(clip*, keys*, third_party): Blank metadata keys of a clip (values are overwritten with empty strings).

  • delete_clip_markers(clip*, frame, color, custom_data): Delete clip markers by frame, color ('All' allowed) or custom data.

  • delete_clip_mattes(clip*, paths*): Delete mattes of a clip by file path.

  • delete_clips(clips*): Delete clips from the Media Pool.

  • delete_folders(folders*): Delete Media Pool folders (with their content).

  • unlink_clips(clips*): Unlink clips from their media files (they go offline).

  • unlink_proxy_media(clip*): Remove the proxy link of a clip. First call returns a plan + confirm_token; repeat it with confirm_token to apply. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

media_readA

Read media state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • browse_storage(path*, limit, offset): List subfolders and (paginated) files of a Media Storage folder.

  • get_audio_mapping(clip*): Audio mapping of a clip (raw JSON string plus parsed value).

  • get_clip(clip*, keys, all_properties): Full details of one clip: properties, metadata, flags, color, proxy, markers.

  • get_clip_markers(clip*): List the markers of a Media Pool clip.

  • get_clone_status(): Status of the current or most recent clone job.

  • get_selection(): Current Media Pool folder and selected clips.

  • list_clips(folder, recursive, name_contains, type, clip_color, flag, keys, limit, +1 more): List clips of a folder with filters, pagination and selectable properties.

  • list_mattes(clip, folder): List the mattes of a clip, or the timeline mattes of a folder.

  • list_volumes(): List the volumes mounted in Media Storage.

  • media_pool_tree(max_depth): Media Pool folder tree with ids, paths and clip counts.

media_writeA

Change media 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_clip_marker(clip*, frame*, color, name, note, duration, custom_data): Add a marker to a Media Pool clip at a frame offset.

  • add_clip_mattes(clip*, paths*, stereo_eye): Add matte files to a clip.

  • add_flag(clip*, color*): Add a flag of the given color to a clip.

  • add_timeline_mattes(paths*): Add matte files as timeline mattes in the current folder.

  • auto_sync_audio(clips*, settings): Auto-sync audio of clips (needs at least one video and one audio clip).

  • clear_flags(clip*, color): Clear one flag color, or all flags, of a clip.

  • clear_mark_in_out(clip*, mark_type): Clear the mark in/out of a clip.

  • clone_media(source_dir*, target_dirs*, preserve_folder_name, checksum_type): Clone media with checksum verification (21.1+, long-running job). [job]

  • create_folder(name*, parent, set_current): Create a subfolder in the Media Pool.

  • create_multicam_clip(clips*, options): Create multicam clip(s) from clips (21.1+); options use live constants.

  • create_stereo_clip(left*, right*): Create a stereoscopic 3D clip from a left and a right clip.

  • export_folder_drb(folder*, path*): Export a Media Pool folder as a DRB file.

  • export_metadata(path*, clips): Export clip metadata to a CSV file.

  • import_folder_drb(path*, source_clips_path): Import a DRB folder export into the Media Pool.

  • import_media(items*, folder, via_media_storage): Import files/folders/sequences into the current or a chosen Media Pool folder.

  • link_full_resolution_media(clip*, path*): Link full-resolution media to a proxy-only clip.

  • link_proxy_media(clip*, path*): Link a proxy media file to a clip.

  • monitor_growing_file(clip*): Monitor a clip's file while it keeps growing.

  • move_clips(clips*, target*): Move clips to another Media Pool folder.

  • move_folders(folders*, target*): Move folders into another Media Pool folder.

  • refresh_folders(): Refresh Media Pool folders (collaboration mode).

  • relink_clips(clips*, folder_path*): Relink clips to media found in a folder.

  • replace_clip(clip*, path*, preserve_sub_clip): Replace the underlying media of a clip with another file.

  • reveal_in_storage(path*): Reveal a path in Resolve's Media Storage panel.

  • select_clip(clip*): Select a clip in the Media Pool.

  • set_clip_color(clip*, color): Set a clip color (16 clip colors) or clear it when color is null.

  • set_clip_metadata(clip*, metadata*, third_party): Set clip metadata (or third-party metadata) key/value pairs.

  • set_clip_name(clip*, name*): Rename a clip (MediaPoolItem.SetName).

  • set_clip_properties(clip*, properties*): Set clip properties (key -> value), reading each one back.

  • set_current_folder(folder*): Make a folder the current Media Pool folder.

  • set_mark_in_out(clip*, mark_in*, mark_out*, mark_type): Set the mark in/out of a clip.

  • update_marker_custom_data(clip*, frame*, custom_data*): Update the custom data of a clip marker. Shortcuts (prefer them for whole tasks):

  • workflow_write.conform_from_edl: Import media + EDL as a timeline, fix offline events via Start TC, report linkage. One call instead of import_media, relink_clips. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

project_deleteA

Remove project objects. op.action (params; * = required):

  • delete_folder(name*): Delete a project folder of the current folder.

  • delete_project(name*): Delete a (non-current) project from the current folder.

  • delete_settings_preset(name*): Delete a project settings preset. First call returns a plan + confirm_token; repeat it with confirm_token to apply. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

project_readA

Read project state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • get_current_project(): Name, unique id, folder and database of the open project.

  • get_settings(keys): Read project settings (all, or a list of keys).

  • list_databases(): List the databases known to Resolve and the current one.

  • list_projects(): List projects and folders of the current database folder.

  • list_settings_presets(): List project settings presets (name, width, height).

project_writeA

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

  • apply_settings_preset(name*): Apply a settings preset to the current project (saved project only).

  • archive_project(name*, path*, with_stills_and_luts, archive_src_media, archive_render_cache, archive_proxy_media, force): Archive a project (broken by script on 21.x; needs force=true).

  • close_project(save_first, discard_untitled): Close the current project (saved first by default).

  • create_folder(name*): Create a project folder in the current database folder.

  • create_project(name*, media_location_path, discard_untitled): Create a project and make it current (saves the current one first).

  • export_project(name*, path*, with_stills_and_luts): Export a project of the current folder to a .drp file.

  • export_settings_preset(name*, path*): Export a project settings preset to a file.

  • goto_folder(to*): Go to the root or the parent project folder.

  • import_project(path*, name): Import a .drp project file into the current folder.

  • import_settings_preset(path*, name): Import a project settings preset file.

  • load_project(name*, discard_untitled): Load a project from the current folder (saves the current one first).

  • open_folder(name*): Enter a sub-folder of the current project folder.

  • rename_project(new_name*): Rename the current project.

  • restore_project(path*, name): Restore a project from an archive (.dra folder) into the current folder.

  • save_project(): Save the current project (refused for 'Untitled Project').

  • save_settings_preset(name*): Save the current project settings as a new preset.

  • set_database(database*, discard_untitled): Switch the current database (DbType, DbName, optional IpAddress).

  • set_settings(settings*): Set project settings one key at a time, verified by read-back.

  • update_settings_preset(name*): Overwrite a settings preset with the current project settings. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

render_deleteA

Remove render objects. op.action (params; * = required):

  • delete_all_render_jobs(): Delete every render job in the queue.

  • delete_render_jobs(job_ids*): Delete specific render jobs from the queue.

  • delete_render_preset(name*): Delete a render preset.

  • update_render_preset(name*): Overwrite a render preset with the current render settings (21.1+). First call returns a plan + confirm_token; repeat it with confirm_token to apply. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

render_readA

Read render state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • get_render_config(): Current render format, codec, mode and whether a render is running.

  • get_render_resolutions(format, codec): List the resolutions available for a render format and codec.

  • list_render_formats(audio, format): Render formats; their codecs only with format (natural names work everywhere).

  • list_render_jobs(): List queued render jobs with progress (derived from percentage and error).

  • list_render_presets(): List render presets and Quick Export presets.

render_writeA

Change render 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_render_job(): Queue a render job from the current render settings; returns its id.

  • export_render_preset(name*, path*): Export a render preset to a file.

  • import_render_preset(path*): Import a render preset from a file and select it.

  • load_render_preset(name*): Load a render preset as the current render settings.

  • quick_export(preset*, target_dir, name, video_quality, enable_upload): Render the current timeline with a Quick Export preset (21.1+, long-running). [job]

  • render_timeline(preset*, target_dir*, name*, format, codec, settings): One-shot: load preset, set target and name, queue and start (long-running). [job]

  • save_render_preset(name*): Save the current render settings as a new preset.

  • set_quick_export_preset(name*, enabled): Enable or disable a render preset for Quick Export (21.1+).

  • set_render_format(format*, codec*): Set the render format and codec (validated against the live list).

  • set_render_mode(mode*): Set the render mode (single clip or individual clips).

  • set_render_settings(settings*, base_preset): Apply render settings (on top of the loaded preset).

  • start_rendering(job_ids, interactive): Start rendering queued jobs (long-running; poll with job_wait). [job]

  • stop_rendering(): Stop any current render. Shortcuts (prefer them for whole tasks):

  • workflow_write.build_vertical_reel: Build a vertical timeline from clips, add subtitles and optionally render it. One call instead of render_timeline.

  • workflow_write.deliver: Render one or more outputs (preset/format/size) and report the real files produced. One call instead of set_render_settings, set_render_format, add_render_job, start_rendering, render_timeline. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

snapshot_writeA

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

  • snapshot_project(label): Save the project and export it as a .drp file in the snapshot directory.

  • snapshot_timeline(label): Duplicate a timeline as a safety copy (current timeline by default). Calls known in advance (a sequence, the same change on several items): ONE batch_run.

timeline_deleteA

Remove timeline objects. op.action (params; * = required):

  • delete_clips(items*, ripple): Delete timeline items (Edit page); linked audio is not removed automatically.

  • delete_marker(frame*): Delete the timeline marker at a frame offset.

  • delete_markers_by_color(color*): Delete all timeline markers of a color, or every marker with 'All'.

  • delete_timelines(timelines*): Delete timelines from the project.

  • delete_track(track*): Delete a track and the items on it. First call returns a plan + confirm_token; repeat it with confirm_token to apply. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

timeline_readA

Read timeline state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • current_timecode(): Return the playhead timecode.

  • current_video_item(): Return the video item under the playhead, if any.

  • get_mark_in_out(): Return the video/audio mark in and out (frames relative to timeline start).

  • get_marker_by_custom_data(custom_data*): Find the first marker whose custom data matches.

  • get_output_blanking(): Return the timeline output blanking in pixels (Resolve 21.1+).

  • get_settings(keys): Read the timeline settings (project settings when custom settings are off).

  • list_items(track, name_contains, limit, offset): List timeline items of a track or of the whole timeline (paginated).

  • list_markers(color): List timeline markers, optionally filtered by color.

  • list_timelines(): List the timelines of the current project with their ids.

  • list_tracks(): List tracks of every type with name, enabled, locked and item count.

  • selected_clips(): List the currently selected timeline items (Resolve 21.0.4+).

  • timeline_info(): Name, id, frame range, start timecode, fps/resolution and track counts.

timeline_writeA

Change timeline 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_marker(frame*, color, name, note, duration, custom_data): Add a marker at a frame offset of a timeline.

  • add_markers(markers*): Add several markers in one call; frames already occupied are skipped.

  • add_track(type*, sub_type): Add a video, audio or subtitle track (audio accepts a sub type).

  • append_clips(clips*): Append Media Pool clips to a timeline (end frames exclusive, record offsets relative).

  • auto_align_clips(items*, sync_using, use_track): Align timeline items by timecode or waveform (Resolve 21.1+).

  • clear_mark_in_out(type): Clear mark in/out.

  • convert_to_stereo(): Convert the timeline to stereoscopic 3D.

  • create_compound_clip(items*, name, start_timecode): Create a compound clip from timeline items.

  • create_fusion_clip(items*): Create a Fusion clip from timeline items.

  • create_timeline(name*): Create an empty timeline in the current Media Pool folder.

  • create_timeline_from_clips(name*, clips*): Create a timeline from Media Pool clips (optional source in/out per clip).

  • duplicate_timeline(name*): Duplicate a timeline under a new name; the current timeline is left unchanged.

  • export_timeline(path*, format*, subtype): Export a timeline (EDL, XML, AAF, DRT, OTIO, ...) to a file.

  • import_into_timeline(path*, insert_additional_tracks, insert_with_offset, source_clips_path, link_to_source_camera_files, use_sizing_info): Import items from an AAF file into an existing timeline.

  • import_timeline(path*, timeline_name, import_source_clips, source_clips_path, interlace_processing): Create a timeline from an EDL/XML/AAF/DRT/OTIO file.

  • insert_generated(kind*, name): Insert a generator, title, OFX or Fusion generator/title/comp at the playhead.

  • rename_timeline(name*): Rename a timeline (the new name must be unique).

  • rename_track(track*, name*): Rename a track.

  • set_clips_linked(items*, linked*): Link or unlink timeline items.

  • set_current_timecode(timecode*): Move the playhead to a timecode (from the Edit page when Resolve is on Media).

  • set_current_timeline(): Make a timeline the current one.

  • set_mark_in_out(mark_in*, mark_out*, type): Set mark in/out (frames relative to timeline start).

  • set_output_blanking(top, bottom, left, right): Set the timeline output blanking in pixels (Resolve 21.1+).

  • set_settings(settings*): Set timeline settings (verified key by key; some keys are silently refused).

  • set_start_timecode(timecode*): Set the timeline start timecode.

  • set_track_enabled(track*, enabled*): Enable or disable a track.

  • set_track_locked(track*, locked*): Lock or unlock a track (a locked V1 makes Insert* calls fail).

  • update_marker_custom_data(frame*, custom_data*): Replace the custom data of the marker at a frame offset. Shortcuts (prefer them for whole tasks):

  • workflow_write.build_vertical_reel: Build a vertical timeline from clips, add subtitles and optionally render it. One call instead of create_timeline, create_timeline_from_clips, set_settings.

  • workflow_write.conform_from_edl: Import media + EDL as a timeline, fix offline events via Start TC, report linkage. One call instead of import_timeline, set_start_timecode. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

ui_deleteA

Remove ui objects. op.action (params; * = required):

  • ripple_delete_selection(keyboard_preset): Ripple delete the selected timeline clips via the UI (selection not API-readable). First call returns a plan + confirm_token; repeat it with confirm_token to apply. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

ui_readA

Read ui state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • list_menu_items(path): List the items of a Resolve menu (top-level menu bar when path is empty).

ui_writeA

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

  • blade_at_playhead(keyboard_preset): Split the clips under the playhead on the Edit page (default Cmd+B).

  • invoke_menu(path*, validate_path): Click a Resolve menu item by its path (brings Resolve to front).

  • open_gallery_panel(keyboard_preset): Open the Color page and show the Gallery (needed for GalleryStillAlbum.ExportStills).

  • send_shortcut(command*, keyboard_preset): Run a named Resolve command via its default shortcut or menu (default preset only). Calls known in advance (a sequence, the same change on several items): ONE batch_run.

vision_readA

Read vision state, no side effects: use it to find ids and check results. op.action (params; * = required):

  • contact_sheet(count, timecodes, from_markers, columns, thumb_width, labels): Tile frames sampled across the timeline (or at timecodes / markers) into one JPEG.

  • export_frame(timecode, max_width): Capture the timeline frame at a timecode as a JPEG (playhead is restored).

  • probe_media(path, clip): ffprobe summary of a file or Media Pool clip: codecs, fps, audio, color metadata.

  • screenshot_resolve(max_width): Screenshot of the DaVinci Resolve window (macOS, needs Screen Recording permission).

  • source_frames(path*, seconds*, max_width): Extract frames straight from a media file with ffmpeg (Resolve not needed).

workflow_writeA

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

  • apply_look: Apply a LUT to every video item, group them in a color group and grab a still.

  • build_vertical_reel: Build a vertical timeline from clips, add subtitles and optionally render it.

  • conform_from_edl: Import media + EDL as a timeline, fix offline events via Start TC, report linkage.

  • deliver: Render one or more outputs (preset/format/size) and report the real files produced.

  • title_overlay: Add an animated Text+ title (and Merge over the clip) to a timeline item's Fusion comp. Calls known in advance (a sequence, the same change on several items): ONE batch_run.

describe_actionA

Parameter schemas (compact) of one or several actions, with their flags.

With only tool, lists that tool's actions and their signatures.

resolve_statusA

Connection state, Resolve version/edition/channel, current project, timeline and page.

Call it first, and again after an error: it tells whether Resolve is reachable and what the other tools act on by default.

search_apiA

Search the Resolve scripting API (official 21.1 stub) by name or description.

Use it to check what Resolve itself can do; to call something, use the domain tools (describe_action gives their parameters).

job_statusA

State and progress of a long-running job (render, transcription...), right now.

Returns at once; use job_wait instead to block until it finishes.

job_waitA

Block until a job finishes, then return its final state and result.

If timeout_s elapses first, returns it still running: call again to keep waiting.

job_cancelA

Stop a running job and return its state ("cancelled").

A job whose operation cannot be interrupted returns WRONG_STATE and keeps running; a finished job is returned unchanged. Check it first with job_status if unsure.

job_listA

Every job this server started, running and finished, with its state.

Use it to recover a job_id; job_status gives one job's details.

snapshot_listA

Safety copies (timeline duplicates, .drp exports) this server took before changes.

Use it to find the copy to go back to after a bad edit; snapshot_write takes a new one on demand.

batch_runA

Run several domain-tool calls in ONE call, in order, server-side.

Prefer it whenever the next calls are known: e.g. set metadata and color on four clips, add markers, rename tracks. Each step is {tool, op} exactly as you would call that tool, and is validated, verified and audited the same way. A step's op may read an earlier step's output with a template: "{{ steps..receipt.result.id }}" (writes), "{{ steps..result... }}" (reads), [n] and [*] supported. Stops at the first failed or unverified step; every outcome is reported. With *_delete steps the first call returns a plan + confirm_token for the whole batch.

recipe_listA

List the recipes recipe_run can execute: name, description, parameters.

Built-in and user recipes, plus any that failed to load. Call it before recipe_run; for an ad-hoc sequence use batch_run instead.

recipe_runA

Run a recipe server-side: every step is validated, verified and audited.

Stops at the first failed or unverified step and reports each step's outcome. Destructive recipes first return a plan with a confirm_token.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
resolve_statusSame as the resolve_status tool, readable without a tool call.

TDQS

A3.7/5.0

Scored across 52 tools

Disambiguation4/5

The domain-hub design (ai_read/ai_write/ai_delete, media_*, timeline_*, item_*, color_*, fusion_*, render_*, project_*) gives each tool a clearly distinct resource+intent, so an agent can pick a tool reliably. A few overlaps remain: batch_run vs recipe_run vs the workflow_write shortcuts all run multi-step sequences, and some ops are duplicated across hubs (get_audio_mapping in both media_read and audio_read, add_flag/clear_flags in both media_write and item_write, get_settings in project_read and timeline_read), which can cause misselection.

Naming Consistency4/5

Nearly everything follows a noun_intent pattern (media_read, media_write, media_delete, job_status, recipe_list, snapshot_write), with the read/write/delete triad repeated consistently per domain. Standalone utilities break the pattern slightly (describe_action is verb_noun, vs resolve_status/batch_run/search_api which are noun_noun/noun_verb), but the deviations are few and still readable.

Tool Count2/5

52 top-level tools is heavy for any agent to survey, even though each bundles many op.action sub-operations so the real surface is in the hundreds. The domain grouping softens the blow, but agents still need describe_action just to discover what a tool can do, and the scan cost plus duplicated hubs (media vs audio vs item) pushes this well past the comfortable 3-15 range.

Completeness5/5

The surface covers full lifecycle for every Resolve domain: media pool, timeline, items/takes/markers, color node graphs and versions, Fusion comps/tools/keyframes, audio, render job queue, project/database management, gallery, interchange formats, plus vision/screenshot, UI automation, jobs, snapshots and recipes. Read/write/delete triads exist everywhere and long-running work is handled with job_status/job_wait/job_cancel and pre-change snapshots, leaving no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues