Docs

timeline_edit MCP tool

Edit the timeline.

View as Markdown

MCP name timeline_edit dispatches to renderer timelineEdit.

Does not use hosted quota. Local editor operation.

Edit the timeline. Set action to addClip, updateClip, deleteClip, splitClip, deleteLayer, removeTimeRanges, removeSilences, addTransition, addFade, or removeTransition. Call timeline_get_state before using clip or layer ids. Never use type=text; use component clips for typography. After creating a component, place it with addClip type=component and that assetId. Omit layerId unless targeting an existing layer; addClip creates a matching layer when none exists. Pass newLayer true only when the user wants a separate layer of the same type. To shorten the timeline to N seconds: action removeTimeRanges with ranges [{from: N, to: currentEnd}]. To shorten one clip from its in-point: action updateClip with clipId and duration N. removeSilences takes only an assetId. addFade is the fade between two adjacent clips. addClip ripples later clips by default. Pass the child fields for that action. Editor must be open. Does not use hosted quota. Local editor operation.

Advertised MCP input

This tool is registered with passthrough. The fields below are what listTools advertises. The renderer still validates the child fields for the chosen action or kind. Extra advertised-only values are documented under Reachable behavior.

FieldTypeRequiredConstraintsDefaultDescription
actionenum("addClip", "updateClip", "deleteClip", "splitClip", "deleteLayer", "removeTimeRanges", "removeSilences", "addTransition", "addFade", "removeTransition")yesaction for timeline_edit
clipIdstringnominLength 1Required for updateClip and splitClip. Clip id from timeline_get_state.
clipIdsstring[]nominItems 1Required for deleteClip. One or more clip ids from timeline_get_state.
layerIdstringnominLength 1Optional target layer id for addClip or updateClip.
layerIdsstring[]nominItems 1Required for deleteLayer.
assetIdstringnominLength 1Required for removeSilences. Also used by addClip for media clips.
typestringnoClip type for addClip, or transition type for addTransition.
namestringnoOptional clip name for addClip or updateClip.
startnumbernomin 0Timeline start in seconds for addClip or updateClip.
durationnumbernoexclusiveMin 0Clip duration in seconds for addClip, updateClip, addFade, or addTransition.
offsetnumbernomin 0Source in-point in seconds for addClip or updateClip.
timenumbernomin 0Required for splitClip. Timeline time in seconds. 0 is valid.
speednumbernoexclusiveMin 0Playback speed for addClip or updateClip.
newLayerbooleannoaddClip: place on a new layer of the same type.
ripplebooleannoaddClip: ripple later clips. Default true.
snapToenum("beat", "downbeat")noOptional beat snap for addClip, updateClip, or splitClip.
rangesobject[]nominItems 1Required for removeTimeRanges. Ripple-delete these timeline ranges.
ranges[].fromnumberyesmin 0Range start in timeline seconds.
ranges[].tonumberyesmin 0Range end in timeline seconds.
fromClipIdstringnominLength 1Required for addFade, addTransition, and removeTransition.
toClipIdstringnominLength 1Required for addFade, addTransition, and removeTransition.
resultStartintegernomin 0; max 90071992547409910First character offset to return. Use 0 for the first call.
resultEndintegernomin 1; max 90071992547409918000Exclusive end offset. resultEnd - resultStart must be at most 8000. Increment resultStart by 8000 to page through large results.

Reachable behavior

Advertised action values match the renderer children: addClip, updateClip, deleteClip, splitClip, deleteLayer, removeTimeRanges, removeSilences, addTransition, addFade, removeTransition.

Renderer child fields

These are the authoritative fields for each action. Send them on the same MCP call. Grouped MCP tools use passthrough, so these fields are not all listed in the advertised schema.

action=addClip

Renderer tool: timelineAddClip.

Insert a new clip on the timeline. Never use type='text'; for titles, captions, labels, callouts, lower thirds, or any typography, create a custom component asset and add it with type='component'. For media clips (video/audio/image/model3d), provide type and assetId only—do not pass src (playback URL is resolved from assetId). For component clips, provide type='component' and assetId—componentName and inputDefs are resolved from the asset automatically. For 3D model clips, use type='model3d' with a GLB or glTF asset. For screen recordings, use type='vidova' with assetId—cursor data, face camera, and auto-zoom are resolved automatically. Use type='camera' for project-level whole-composition camera moves; these go on the singleton camera track, not a visual layer. Omit layerId unless targeting an existing layer; a matching layer is created when none exists. Pass newLayer true to put the clip on a new top layer of the same type. Optionally pass componentInputs to override default input values; for component asset inputs, pass asset IDs and Vidova resolves them to playback URLs at preview/render time. Use enterTransition and exitTransition for fade, slide, zoom, blur, RGB split, fisheye, swoosh, whip pan, radial blur, glitch, pixel burst, light leak, liquid warp, prism split, bounce pop, spin zoom, shake pop, flash bang, or vortex twist effects (type, duration 0.1-5s).

FieldTypeRequiredConstraintsDefaultDescription
layerIdstringno
newLayerbooleannoWhen true, place the clip on a new top layer instead of the existing matching-type layer. Use only when the user wants a separate layer. Omit layerId in that case.
namestringnominLength 1; maxLength 180
startnumbernomin 00
durationnumbernoexclusiveMin 0
offsetnumbernomin 0
speednumbernomax 8; exclusiveMin 0
positionobjectno
position.xnumberyes
position.ynumberyes
scaleobjectno
scale.xnumberyes
scale.ynumberyes
assetIdstringno
ripplebooleannoRipple insert (default). Every clip already at or after 'start' on the same layer shifts right by the new clip's duration, so the insert makes room instead of covering existing content. Pass false to drop the clip in place, which fails if it would overlap a neighbour.
snapToenum("beat", "downbeat")noSnap start to the nearest beat or downbeat of this clip's asset. Requires a completed detectBeatGrid result for that asset.
typeenum("video", "audio", "image", "text", "component", "model3d", "blur", "vidova", "camera")no
widthnumbernoexclusiveMin 0
heightnumbernoexclusiveMin 0
sourceDurationnumbernoexclusiveMin 0
focusobjectno
focus.xnumberyesmin 0; max 1
focus.ynumberyesmin 0; max 1
focus.zoomnumberyesmin 1
objectFitenum("contain", "cover", "fill")no
audioVolumenumbernomin 0; max 1
volumenumbernomin 0; max 1
textstringno
fontSizenumbernoexclusiveMin 0
fillstringno
opacitynumbernomin 0; max 1
templateenum("text", "title-card", "lower-third", "caption-style")no
subtitlestringno
backgroundColorstringno
enterTransitionobjectno
enterTransition.typeenum("none", "fade", "slide-left", "slide-right", "slide-up", "slide-down", "cross-dissolve", "zoom", "blur", "dip-to-black", "rgb-split-in", "rgb-split-out", "fisheye-in", "fisheye-out", "swoosh-left", "swoosh-right", "swoosh-up", "swoosh-down", "radial-blur-burst", "glitch-pop-in", "glitch-pop-out", "whip-pan-left", "whip-pan-right", "pixel-burst", "light-leak", "liquid-warp", "prism-split", "bounce-pop", "spin-zoom", "shake-pop", "flash-bang", "vortex-twist", "depth-swoop", "depth-rush", "depth-swing")yes
enterTransition.durationnumberyesmin 0.1; max 5
exitTransitionobjectno
exitTransition.typeenum("none", "fade", "slide-left", "slide-right", "slide-up", "slide-down", "cross-dissolve", "zoom", "blur", "dip-to-black", "rgb-split-in", "rgb-split-out", "fisheye-in", "fisheye-out", "swoosh-left", "swoosh-right", "swoosh-up", "swoosh-down", "radial-blur-burst", "glitch-pop-in", "glitch-pop-out", "whip-pan-left", "whip-pan-right", "pixel-burst", "light-leak", "liquid-warp", "prism-split", "bounce-pop", "spin-zoom", "shake-pop", "flash-bang", "vortex-twist", "depth-swoop", "depth-rush", "depth-swing")yes
exitTransition.durationnumberyesmin 0.1; max 5
componentInputsobjectnoFor component clips: input values keyed by input name. For asset inputs, pass the source asset ID; preview/render resolves it to a playback URL.
blurStrengthnumbernomin 0; max 100
blurQualitynumbernomin 1; max 32
roundednessnumbernomin 0
cameraSettingsobjectnoFor camera clips: whole-composition pan/zoom/rotation settings.
cameraSettings.positionobjectno
cameraSettings.position.xnumberyes
cameraSettings.position.ynumberyes
cameraSettings.zoomnumbernomin 0.05
cameraSettings.rotationnumberno

action=updateClip

Renderer tool: timelineUpdateClip.

Adjust clip timing, target layer, static opacity, and type-specific settings. For text clips, use textSettings with typography, effects, template, subtitle, and backgroundColor. For component clips, use componentInputs to update input values; for asset inputs, pass asset IDs and Vidova resolves them to playback URLs at preview/render time. For video, image, component, and Vidova clips, use perspectiveSettings to set the exact ClipPerspectiveSurface object: enabled, rotateX, rotateY, rotateZ, perspective, depthShading, rim, sheen, depthBlur, shadow, debugGrid. For Vidova screen-recording clips, use vidovaSettings to edit layout, cursor/spotlight, click effects, motion/tracking, facecam/camera overlay, appearance/quality, captions, audio, and keyboard shortcut UI controls. For camera clips, use cameraSettings and camera.* keyframe paths for whole-composition pan/zoom/rotation on the singleton camera track. Vidova zoom clips remain screen-recording zooms only; clip animation is per-clip attention motion only. Use enterTransition and exitTransition to set fade, slide, zoom, blur, RGB split, fisheye, swoosh, whip pan, radial blur, glitch, pixel burst, light leak, liquid warp, prism split, bounce pop, spin zoom, shake pop, flash bang, or vortex twist effects (type, duration 0.1-5s). Use animation (none|hover|pulse|float|glow|zoom-in|zoom-out) and animationIntensity (0-5x) for idle animations on visual layer clips. Use keyframeActions to set/remove/clear keyframes on position.x/y, scale.x/y, focus.x/y/zoom, modelPosition.x/y/z, modelRotation.x/y/z, camera.position.x/y, camera.zoom, camera.rotation, faceCamera.position.x/y, perspective.rotateX/Y/Z, perspective.depth, perspective.depthShading, perspective.rim, perspective.sheen, perspective.depthBlur, and perspective.shadow using clip-local display seconds. COLOR GRADING: contrast, saturation, temperature, tint, highlights, shadows use range -100 to 100 (NOT 0–1). Use 20–50 for visible effect—values like 0.1 or 0.2 are too small. exposure is -2 to 2.

FieldTypeRequiredConstraintsDefaultDescription
clipIdstringyesminLength 1
namestringnominLength 1; maxLength 180
startnumbernomin 0
snapToenum("beat", "downbeat")noSnap start to the nearest beat or downbeat of this clip asset. Requires a completed detectBeatGrid result. Ignored unless start is provided.
durationnumbernomin 0.1
offsetnumbernomin 0
speednumbernomax 8; exclusiveMin 0
layerIdstringnominLength 1
positionobjectno
position.xnumberyes
position.ynumberyes
scaleobjectno
scale.xnumberyes
scale.ynumberyes
opacitynumbernomin 0; max 1
assetIdstringno
videoSettingsobjectno
videoSettings.widthnumbernoexclusiveMin 0
videoSettings.heightnumbernoexclusiveMin 0
videoSettings.objectFitenum("contain", "cover", "fill")no
videoSettings.focusobjectno
videoSettings.focus.xnumberyesmin 0; max 1
videoSettings.focus.ynumberyesmin 0; max 1
videoSettings.focus.zoomnumberyesmin 1
videoSettings.colorGradingobjectnoExposure: -2 to 2. All others: -100 to 100. Use 20-50 for visible change—never 0.1 or 0.2.
videoSettings.colorGrading.exposurenumbernomin -2; max 2Range -2 to 2 only
videoSettings.colorGrading.contrastnumbernomin -100; max 100Range -100 to 100. Use 15-50 for visible effect (not 0.1).
videoSettings.colorGrading.saturationnumbernomin -100; max 100Range -100 to 100. Use 15-50 for visible effect (not 0.15).
videoSettings.colorGrading.temperaturenumbernomin -100; max 100Range -100 to 100 (cool to warm). Use 15-50 for visible effect (not 0.2).
videoSettings.colorGrading.tintnumbernomin -100; max 100Range -100 to 100 (green to magenta). Use 15-50 for visible effect.
videoSettings.colorGrading.highlightsnumbernomin -100; max 100Range -100 to 100. Use 15-50 for visible effect.
videoSettings.colorGrading.shadowsnumbernomin -100; max 100Range -100 to 100. Use 15-50 for visible effect.
videoSettings.chromaKeyobjectno
videoSettings.chromaKey.colorstringyespattern ^#[0-9a-fA-F]\{3,6\}$
videoSettings.chromaKey.thresholdnumberyesmin 0; max 1
videoSettings.chromaKey.smoothnessnumbernomin 0; max 1
videoSettings.audioVolumenumbernomin 0; max 1
audioSettingsobjectnoFor audio and video clips: playback volume from 0 to 1. Use volume 0 to mute a clip. On a video clip this sets the same value as videoSettings.audioVolume.
audioSettings.volumenumbernomin 0; max 1
imageSettingsobjectno
imageSettings.widthnumbernoexclusiveMin 0
imageSettings.heightnumbernoexclusiveMin 0
imageSettings.colorGradingobjectnoExposure: -2 to 2. All others: -100 to 100. Use 20-50 for visible change—never 0.1 or 0.2.
imageSettings.colorGrading.exposurenumbernomin -2; max 2Range -2 to 2 only
imageSettings.colorGrading.contrastnumbernomin -100; max 100Range -100 to 100. Use 15-50 for visible effect (not 0.1).
imageSettings.colorGrading.saturationnumbernomin -100; max 100Range -100 to 100. Use 15-50 for visible effect (not 0.15).
imageSettings.colorGrading.temperaturenumbernomin -100; max 100Range -100 to 100 (cool to warm). Use 15-50 for visible effect (not 0.2).
imageSettings.colorGrading.tintnumbernomin -100; max 100Range -100 to 100 (green to magenta). Use 15-50 for visible effect.
imageSettings.colorGrading.highlightsnumbernomin -100; max 100Range -100 to 100. Use 15-50 for visible effect.
imageSettings.colorGrading.shadowsnumbernomin -100; max 100Range -100 to 100. Use 15-50 for visible effect.
textSettingsobjectno
textSettings.textstringnominLength 1
textSettings.fontSizenumbernoexclusiveMin 0
textSettings.fontFamilystringnominLength 1
textSettings.fontWeightnumbernomin 1; max 1000
textSettings.fillstringno
textSettings.opacitynumbernomin 0; max 1
textSettings.effectenum("none", "glitch", "ripple", "vhs", "pixelate", "chromatic", "fisheye")no
textSettings.effectIntensitynumbernomin 0; max 1
textSettings.templateenum("text", "title-card", "lower-third", "caption-style")no
textSettings.subtitlestringno
textSettings.backgroundColorstringno
enterTransitionobject \nullno
exitTransitionobject \nullno
animationenum("none", "hover", "pulse", "float", "glow", "zoom-in", "zoom-out") \nullno
animationIntensitynumbernomin 0; max 5
componentInputsobjectnoFor component clips: input values keyed by input name. For asset inputs, pass the source asset ID; preview/render resolves it to a playback URL.
perspectiveSettingsobjectnostrictFor video, image, component, and Vidova clips: exact ClipPerspectiveSurface object. Required fields: enabled, rotateX, rotateY, rotateZ, perspective, depthShading, rim, sheen, depthBlur, shadow, debugGrid.
perspectiveSettings.enabledbooleanyes
perspectiveSettings.rotateXnumberyesmin -1.2; max 1.2
perspectiveSettings.rotateYnumberyesmin -1.2; max 1.2
perspectiveSettings.rotateZnumberyesmin -3.14; max 3.14
perspectiveSettings.perspectivenumberyesmin 0.1; max 4
perspectiveSettings.depthShadingnumberyesmin 0; max 0.6
perspectiveSettings.rimnumberyesmin 0; max 1
perspectiveSettings.sheennumberyesmin 0; max 1
perspectiveSettings.depthBlurnumberyesmin 0; max 10
perspectiveSettings.shadownumberyesmin 0; max 0.6
perspectiveSettings.debugGridbooleanyes
vidovaSettingsobjectno
vidovaSettings.layoutenum("screen-and-cam", "screen-only", "cam-only", "half-half")no
vidovaSettings.cropobjectnoNormalized crop edges for the screen recording: Left/Top/Right/Bottom in the 0..1 range.
vidovaSettings.crop.Topnumbernomin 0; max 1
vidovaSettings.crop.Bottomnumbernomin 0; max 1
vidovaSettings.crop.Leftnumbernomin 0; max 1
vidovaSettings.crop.Rightnumbernomin 0; max 1
vidovaSettings.zoomLayerIdstringnoUse a zoom layer ID from timeline_get_state. Pass an empty string to clear.
vidovaSettings.blurLayerIdstringnoUse an overlay/blur layer ID from timeline_get_state. Pass an empty string to clear.
vidovaSettings.roundednessnumbernomin 0; max 50
vidovaSettings.paddingnumbernomin 0; max 100
vidovaSettings.screenAudioVolumenumbernomin 0; max 1
vidovaSettings.cameraAudioVolumenumbernomin 0; max 1
vidovaSettings.muteScreenAudiobooleanno
vidovaSettings.muteCameraAudiobooleanno
vidovaSettings.zoomAnimationStyleenum("soft-spring", "snappy-spring", "soft-landing", "fast-settle", "gentle-curve")noZoom feel: soft-spring (default), snappy-spring, soft-landing, fast-settle, gentle-curve.
vidovaSettings.panAnimationStyleenum("heavy-camera", "quick-follow", "soft-lag")noPan feel: heavy-camera (default), quick-follow, soft-lag.
vidovaSettings.linkedZoomTransitionDurationnumbernomin 0; max 2
vidovaSettings.useAutoLinkedZoomTransitionDurationbooleannoSet true to clear the manual linked zoom handoff duration.
vidovaSettings.trackingIntensityintegernomin 0; max 5
vidovaSettings.trackingStyleenum("steadicam", "director", "anchor", "momentum")noCamera-path solver for cursor-following zooms: steadicam, director, anchor, or momentum.
vidovaSettings.clickFollowobjectnostrictKeep out-of-view clicks in frame and near centre. Clicks already in view stay put. enabled (default true), tight 0.05-0.45 (default 0.35), zoom 1-6 (steadicam click-punch cap, default 3.5), window 0.2-1.6s (default 0.8), lead 0-0.8s (default 0.38), margin 0.35-1 (steadicam hold slack, default 0.85). Partial objects merge with the clip current values.
vidovaSettings.clickFollow.enabledbooleanno
vidovaSettings.clickFollow.tightnumbernomin 0.05; max 0.45
vidovaSettings.clickFollow.windownumbernomin 0.2; max 1.6
vidovaSettings.clickFollow.leadnumbernomin 0; max 0.8
vidovaSettings.clickFollow.zoomnumbernomin 1; max 6
vidovaSettings.clickFollow.marginnumbernomin 0.35; max 1
vidovaSettings.motionBlurStrengthnumbernomin 0; max 2
vidovaSettings.cursorHiddenbooleannoFalse shows the cursor.
vidovaSettings.cursorStyleenum("default", "cartoon", "modern", "original", "banana", "capitaine-dark", "capitaine-light", "touch", "tahoe", "whitesur", "bibata", "bibata-original")no
vidovaSettings.cursorSizenumbernomin 16; max 256
vidovaSettings.smoothCursorChangesbooleanno
vidovaSettings.hideCursorWhenStillbooleanno
vidovaSettings.enableCursorMotionBlurbooleanno
vidovaSettings.cursorMotionBlurStrengthnumbernomin 0; max 2
vidovaSettings.enableCursorTiltingbooleanno
vidovaSettings.returnToOriginalPositionbooleanno
vidovaSettings.cursorSmoothingStyleenum("original", "steady", "soft", "fluid", "glide")noCursor path: original, steady (default), soft, fluid, glide.
vidovaSettings.pinCursorToClicksbooleannoPin the path through each click so the cursor lands on the button.
vidovaSettings.cursorClickPinWindownumbernomin 0.04; max 0.4How long the cursor holds on each click, in seconds. Default 0.12.
vidovaSettings.cursorSmoothingTimenumbernomin 0.01; max 0.12Steady and Soft smoothness in seconds. Default 0.045.
vidovaSettings.cursorSmoothingSpacenumbernomin 4; max 80Steady: how strongly fast flicks are kept, in pixels. Default 18.
vidovaSettings.cursorSmoothingTensionnumbernomin 40; max 400Fluid spring weight. Default 170.
vidovaSettings.cursorSmoothingFrictionnumbernomin 4; max 40Fluid spring damping. Default 20.
vidovaSettings.cursorSmoothingSimplifynumbernomin 2; max 40Glide: how much jitter to drop before the curve. Default 8.
vidovaSettings.clickEffectStyleenum("none", "default", "effect-1", "effect-2", "effect-3", "effect-4", "effect-5", "effect-6")no
vidovaSettings.clickEffectSizenumbernomin 16; max 256
vidovaSettings.cursorSpotlightobjectnostrict
vidovaSettings.cursorSpotlight.enabledbooleanno
vidovaSettings.cursorSpotlight.radiusnumberno
vidovaSettings.cursorSpotlight.softnessnumberno
vidovaSettings.cursorSpotlight.dimOpacitynumberno
vidovaSettings.cursorSpotlight.onlyOnClickbooleanno
vidovaSettings.cursorSpotlight.clickWindownumbernomin 0.05; max 4
vidovaSettings.cameraobjectno
vidovaSettings.camera.sizenumbernomin 5; max 70
vidovaSettings.camera.sizeDuringZoomnumbernomin 5; max 100
vidovaSettings.camera.roundednessnumbernomin 0; max 100
vidovaSettings.camera.shapeenum("default", "squircle", "circle")no
vidovaSettings.camera.hideCamerabooleannoFalse shows the camera overlay.
vidovaSettings.camera.mirrorCamerabooleanno
vidovaSettings.camera.removeBackgroundbooleannoTrue composites the baked person mask. The mask must already exist on the camera asset.
vidovaSettings.camera.positionobjectnoCamera anchor grid position. Use -1, 0, or 1 for x/y.
vidovaSettings.camera.position.xnumberyesmin -1; max 1
vidovaSettings.camera.position.ynumberyesmin -1; max 1
vidovaSettings.camera.alignmentobjectnoCrop alignment inside squircle/circle camera shapes.
vidovaSettings.camera.alignment.xnumberyesmin -1; max 1
vidovaSettings.camera.alignment.ynumberyesmin -1; max 1
vidovaSettings.camera.differentSizeDuringZoombooleanno
vidovaSettings.camera.verticalPaddingnumbernomin 0; max 100
vidovaSettings.camera.globalPositionbooleannoTrue anchors the camera to the scene instead of the clip.
vidovaSettings.mouseIndicatorobjectno
vidovaSettings.mouseIndicator.enabledbooleanno
vidovaSettings.mouseIndicator.positionobjectnoMouse indicator anchor grid position. Use -1, 0, or 1 for x/y.
vidovaSettings.mouseIndicator.position.xnumberyesmin -1; max 1
vidovaSettings.mouseIndicator.position.ynumberyesmin -1; max 1
vidovaSettings.mouseIndicator.sizenumbernomin 40; max 180Mouse indicator size in px.
vidovaSettings.mouseIndicator.opacitynumbernomin 0; max 1
vidovaSettings.mouseIndicator.styleenum("minimal", "dark", "light", "colored")no
vidovaSettings.mouseIndicator.highlightColorstringnopattern ^#[0-9a-fA-F]\{6\}$
vidovaSettings.mouseIndicator.minActiveDurationnumbernomin 0.02; max 0.5Minimum button/wheel highlight duration in seconds.
vidovaSettings.mouseIndicator.globalPositionbooleannoTrue anchors the mouse indicator to the scene instead of the clip.
vidovaSettings.qualitynumbernomin 0Motion-blur shader sample quality. 0 disables sampled motion blur.
vidovaSettings.sharpenFactornumbernomin 0; max 5
vidovaSettings.shadowStrengthnumbernomin 0; max 100
vidovaSettings.insetnumbernomin 0; max 50
vidovaSettings.isVerticalbooleanno
vidovaSettings.showShortcutsbooleanno
vidovaSettings.shortcutsSizenumbernomin 1; max 300
vidovaSettings.shortcutsDurationnumbernomin 0.5; max 5
vidovaSettings.captionSettingsobjectnostrict
vidovaSettings.captionSettings.enabledbooleanno
vidovaSettings.captionSettings.fontFamilystringno
vidovaSettings.captionSettings.fontWeight400 \500 \700no
vidovaSettings.captionSettings.fontSizenumberno
vidovaSettings.captionSettings.distanceFromBottomnumberno
vidovaSettings.captionSettings.styleenum("pill", "karaoke-lime", "karaoke-magenta", "karaoke-cyan", "outlined", "bold-outline", "minimal", "word-highlight", "pink-pill", "dark-pill-lime", "cloud-blob", "amber-tape", "studio")no
vidovaSettings.captionSettings.textColorstringno
vidovaSettings.captionSettings.highlightColorstringno
vidovaSettings.captionSettings.backgroundColorstringno
vidovaSettings.captionSettings.shadowColorstringno
vidovaSettings.captionSettings.shadowBlurnumberno
vidovaSettings.captionSettings.maxCharsPerLinenumberno
cameraSettingsobjectnoFor camera clips only: project-level whole-composition pan/zoom/rotation.
cameraSettings.positionobjectnoWhole-composition pan in scene pixels.
cameraSettings.position.xnumberyes
cameraSettings.position.ynumberyes
cameraSettings.zoomnumbernomin 0.05Whole-composition camera zoom. 1 = default, 2 = 2x.
cameraSettings.rotationnumbernoWhole-composition camera rotation in degrees.
keyframeActionsobject \object \object[]nominItems 1

action=deleteClip

Renderer tool: timelineDeleteClip.

Remove one or more clips from the timeline by their IDs. Deletion is a ripple delete: each clip's time range is cut from every layer and all later content shifts left to close the gap, so the edit never leaves a hole. To cut a range without naming clips, use timelineRemoveTimeRanges instead.

FieldTypeRequiredConstraintsDefaultDescription
clipIdsstring[]yesminItems 1List of clip IDs to delete from the timeline

action=splitClip

Renderer tool: timelineSplitClip.

Split a single clip at a specific timestamp. For removing multiple silence segments or time ranges at once, prefer timelineRemoveTimeRanges instead.

FieldTypeRequiredConstraintsDefaultDescription
clipIdstringyesminLength 1
timenumberyesmin 0Timeline timestamp in seconds
snapToenum("beat", "downbeat")noSnap the split time to the nearest beat or downbeat of this clip's asset. Requires a completed detectBeatGrid result.

action=deleteLayer

Renderer tool: timelineDeleteLayer.

Remove one or more timeline layers by their IDs. All clips on those layers are removed.

FieldTypeRequiredConstraintsDefaultDescription
layerIdsstring[]yesminItems 1List of layer IDs to delete from the timeline

action=removeTimeRanges

Renderer tool: timelineRemoveTimeRanges.

Remove multiple time ranges from the timeline in a single operation. Each range is deleted with ripple: all content after the removed interval shifts left to close the gap. Use this for bulk silence removal or any scenario where multiple segments need to be cut at once.

FieldTypeRequiredConstraintsDefaultDescription
rangesobject[]yesminItems 1List of timeline time ranges (in seconds) to remove with ripple. All clips after each removed range will shift left automatically. Overlapping or adjacent ranges are merged before applying.
ranges[].fromnumberyesmin 0Start of the range to remove, in timeline seconds
ranges[].tonumberyesmin 0End of the range to remove, in timeline seconds

action=removeSilences

Renderer tool: removeSilencesFromAsset.

Remove the dead air from a transcribed recording. Vidova computes the silence ranges from the transcript word timings itself and ripple-deletes them, so no timestamps are needed and no speech is cut. Use this instead of working out silence ranges and calling timelineRemoveTimeRanges by hand. Requires a completed transcription and exactly one recording clip for the asset on the timeline.

FieldTypeRequiredConstraintsDefaultDescription
assetIdstringyesminLength 1Asset id of the transcribed recording to tighten.

action=addTransition

Renderer tool: timelineAddTransition.

Add a named transition between two adjacent video clips on the same layer. Prefer timelineAddFade when the user asks for a fade — do not use cross-dissolve as a substitute for fade. Supports fade, slide, zoom, blur, RGB split, fisheye, swoosh, whip pan, radial blur, glitch, pixel burst, light leak, liquid warp, prism split, bounce pop, spin zoom, shake pop, flash bang, and vortex twist transitions.

FieldTypeRequiredConstraintsDefaultDescription
fromClipIdstringyesminLength 1
toClipIdstringyesminLength 1
typeenum("fade", "slide-left", "slide-right", "slide-up", "slide-down", "cross-dissolve", "zoom", "blur", "dip-to-black", "rgb-split-in", "rgb-split-out", "fisheye-in", "fisheye-out", "swoosh-left", "swoosh-right", "swoosh-up", "swoosh-down", "radial-blur-burst", "glitch-pop-in", "glitch-pop-out", "whip-pan-left", "whip-pan-right", "pixel-burst", "light-leak", "liquid-warp", "prism-split", "bounce-pop", "spin-zoom", "shake-pop", "flash-bang", "vortex-twist", "depth-swoop", "depth-rush", "depth-swing")no"fade"Transition effect type
durationnumbernomax 5; exclusiveMin 00.5Transition duration in seconds

action=addFade

Renderer tool: timelineAddFade.

Add a fade between two adjacent video clips on the same layer. Use this whenever the user asks for a fade or soft dissolve — always applies type fade (never cross-dissolve). Prefer this over timelineAddTransition for fade requests.

FieldTypeRequiredConstraintsDefaultDescription
fromClipIdstringyesminLength 1
toClipIdstringyesminLength 1
durationnumbernomax 5; exclusiveMin 00.5Fade duration in seconds

action=removeTransition

Renderer tool: timelineRemoveTransition.

Remove an existing transition between two clips.

FieldTypeRequiredConstraintsDefaultDescription
fromClipIdstringyesminLength 1
toClipIdstringyesminLength 1

Result window

Every local MCP tool accepts resultStart and resultEnd so large payloads can be paged.

  • resultStart — first character offset. Default 0.
  • resultEnd — exclusive end offset. Default 8000.
  • resultEnd - resultStart must be at most 8000 characters.
  • Increment resultStart by 8000 to read the next window.

Nested objects

Cursor, camera overlay, layout, and captions live on vidovaSettings during updateClip. See vidovaSettings.

Do not call a retired vidova_set_cursor tool. It is not in MCP.