# vidovaSettings schema

Field specification for the vidovaSettings object used by Vidova MCP tools.

{/* Generated by landing/scripts/generate-mcp-docs.ts. Do not edit. */}

Export `vidovaSettingsSchema` from the desktop Zod sources.

| Field | Type | Required | Constraints | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `layout` | enum("screen-and-cam", "screen-only", "cam-only", "half-half") | no | — | — | — |
| `crop` | object | no | — | — | Normalized crop edges for the screen recording: Left/Top/Right/Bottom in the 0..1 range. |
| `crop.Top` | number | no | min 0; max 1 | — | — |
| `crop.Bottom` | number | no | min 0; max 1 | — | — |
| `crop.Left` | number | no | min 0; max 1 | — | — |
| `crop.Right` | number | no | min 0; max 1 | — | — |
| `zoomLayerId` | string | no | — | — | Use a zoom layer ID from timeline_get_state. Pass an empty string to clear. |
| `blurLayerId` | string | no | — | — | Use an overlay/blur layer ID from timeline_get_state. Pass an empty string to clear. |
| `roundedness` | number | no | min 0; max 50 | — | — |
| `padding` | number | no | min 0; max 100 | — | — |
| `screenAudioVolume` | number | no | min 0; max 1 | — | — |
| `cameraAudioVolume` | number | no | min 0; max 1 | — | — |
| `muteScreenAudio` | boolean | no | — | — | — |
| `muteCameraAudio` | boolean | no | — | — | — |
| `zoomAnimationStyle` | enum("soft-spring", "snappy-spring", "soft-landing", "fast-settle", "gentle-curve") | no | — | — | Zoom feel: soft-spring (default), snappy-spring, soft-landing, fast-settle, gentle-curve. |
| `panAnimationStyle` | enum("heavy-camera", "quick-follow", "soft-lag") | no | — | — | Pan feel: heavy-camera (default), quick-follow, soft-lag. |
| `linkedZoomTransitionDuration` | number | no | min 0; max 2 | — | — |
| `useAutoLinkedZoomTransitionDuration` | boolean | no | — | — | Set true to clear the manual linked zoom handoff duration. |
| `trackingIntensity` | integer | no | min 0; max 5 | — | — |
| `trackingStyle` | enum("steadicam", "director", "anchor", "momentum") | no | — | — | Camera-path solver for cursor-following zooms: steadicam, director, anchor, or momentum. |
| `clickFollow` | object | no | strict | — | Keep 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. |
| `clickFollow.enabled` | boolean | no | — | — | — |
| `clickFollow.tight` | number | no | min 0.05; max 0.45 | — | — |
| `clickFollow.window` | number | no | min 0.2; max 1.6 | — | — |
| `clickFollow.lead` | number | no | min 0; max 0.8 | — | — |
| `clickFollow.zoom` | number | no | min 1; max 6 | — | — |
| `clickFollow.margin` | number | no | min 0.35; max 1 | — | — |
| `motionBlurStrength` | number | no | min 0; max 2 | — | — |
| `cursorHidden` | boolean | no | — | — | False shows the cursor. |
| `cursorStyle` | enum("default", "cartoon", "modern", "original", "banana", "capitaine-dark", "capitaine-light", "touch", "tahoe", "whitesur", "bibata", "bibata-original") | no | — | — | — |
| `cursorSize` | number | no | min 16; max 256 | — | — |
| `smoothCursorChanges` | boolean | no | — | — | — |
| `hideCursorWhenStill` | boolean | no | — | — | — |
| `enableCursorMotionBlur` | boolean | no | — | — | — |
| `cursorMotionBlurStrength` | number | no | min 0; max 2 | — | — |
| `enableCursorTilting` | boolean | no | — | — | — |
| `returnToOriginalPosition` | boolean | no | — | — | — |
| `cursorSmoothingStyle` | enum("original", "steady", "soft", "fluid", "glide") | no | — | — | Cursor path: original, steady (default), soft, fluid, glide. |
| `pinCursorToClicks` | boolean | no | — | — | Pin the path through each click so the cursor lands on the button. |
| `cursorClickPinWindow` | number | no | min 0.04; max 0.4 | — | How long the cursor holds on each click, in seconds. Default 0.12. |
| `cursorSmoothingTime` | number | no | min 0.01; max 0.12 | — | Steady and Soft smoothness in seconds. Default 0.045. |
| `cursorSmoothingSpace` | number | no | min 4; max 80 | — | Steady: how strongly fast flicks are kept, in pixels. Default 18. |
| `cursorSmoothingTension` | number | no | min 40; max 400 | — | Fluid spring weight. Default 170. |
| `cursorSmoothingFriction` | number | no | min 4; max 40 | — | Fluid spring damping. Default 20. |
| `cursorSmoothingSimplify` | number | no | min 2; max 40 | — | Glide: how much jitter to drop before the curve. Default 8. |
| `clickEffectStyle` | enum("none", "default", "effect-1", "effect-2", "effect-3", "effect-4", "effect-5", "effect-6") | no | — | — | — |
| `clickEffectSize` | number | no | min 16; max 256 | — | — |
| `cursorSpotlight` | object | no | strict | — | — |
| `cursorSpotlight.enabled` | boolean | no | — | — | — |
| `cursorSpotlight.radius` | number | no | — | — | — |
| `cursorSpotlight.softness` | number | no | — | — | — |
| `cursorSpotlight.dimOpacity` | number | no | — | — | — |
| `cursorSpotlight.onlyOnClick` | boolean | no | — | — | — |
| `cursorSpotlight.clickWindow` | number | no | min 0.05; max 4 | — | — |
| `camera` | object | no | — | — | — |
| `camera.size` | number | no | min 5; max 70 | — | — |
| `camera.sizeDuringZoom` | number | no | min 5; max 100 | — | — |
| `camera.roundedness` | number | no | min 0; max 100 | — | — |
| `camera.shape` | enum("default", "squircle", "circle") | no | — | — | — |
| `camera.hideCamera` | boolean | no | — | — | False shows the camera overlay. |
| `camera.mirrorCamera` | boolean | no | — | — | — |
| `camera.removeBackground` | boolean | no | — | — | True composites the baked person mask. The mask must already exist on the camera asset. |
| `camera.position` | object | no | — | — | Camera anchor grid position. Use -1, 0, or 1 for x/y. |
| `camera.position.x` | number | yes | min -1; max 1 | — | — |
| `camera.position.y` | number | yes | min -1; max 1 | — | — |
| `camera.alignment` | object | no | — | — | Crop alignment inside squircle/circle camera shapes. |
| `camera.alignment.x` | number | yes | min -1; max 1 | — | — |
| `camera.alignment.y` | number | yes | min -1; max 1 | — | — |
| `camera.differentSizeDuringZoom` | boolean | no | — | — | — |
| `camera.verticalPadding` | number | no | min 0; max 100 | — | — |
| `camera.globalPosition` | boolean | no | — | — | True anchors the camera to the scene instead of the clip. |
| `mouseIndicator` | object | no | — | — | — |
| `mouseIndicator.enabled` | boolean | no | — | — | — |
| `mouseIndicator.position` | object | no | — | — | Mouse indicator anchor grid position. Use -1, 0, or 1 for x/y. |
| `mouseIndicator.position.x` | number | yes | min -1; max 1 | — | — |
| `mouseIndicator.position.y` | number | yes | min -1; max 1 | — | — |
| `mouseIndicator.size` | number | no | min 40; max 180 | — | Mouse indicator size in px. |
| `mouseIndicator.opacity` | number | no | min 0; max 1 | — | — |
| `mouseIndicator.style` | enum("minimal", "dark", "light", "colored") | no | — | — | — |
| `mouseIndicator.highlightColor` | string | no | pattern `^#[0-9a-fA-F]{6}$` | — | — |
| `mouseIndicator.minActiveDuration` | number | no | min 0.02; max 0.5 | — | Minimum button/wheel highlight duration in seconds. |
| `mouseIndicator.globalPosition` | boolean | no | — | — | True anchors the mouse indicator to the scene instead of the clip. |
| `quality` | number | no | min 0 | — | Motion-blur shader sample quality. 0 disables sampled motion blur. |
| `sharpenFactor` | number | no | min 0; max 5 | — | — |
| `shadowStrength` | number | no | min 0; max 100 | — | — |
| `inset` | number | no | min 0; max 50 | — | — |
| `isVertical` | boolean | no | — | — | — |
| `showShortcuts` | boolean | no | — | — | — |
| `shortcutsSize` | number | no | min 1; max 300 | — | — |
| `shortcutsDuration` | number | no | min 0.5; max 5 | — | — |
| `captionSettings` | object | no | strict | — | — |
| `captionSettings.enabled` | boolean | no | — | — | — |
| `captionSettings.fontFamily` | string | no | — | — | — |
| `captionSettings.fontWeight` | 400 \\| 500 \\| 700 | no | — | — | — |
| `captionSettings.fontSize` | number | no | — | — | — |
| `captionSettings.distanceFromBottom` | number | no | — | — | — |
| `captionSettings.style` | enum("pill", "karaoke-lime", "karaoke-magenta", "karaoke-cyan", "outlined", "bold-outline", "minimal", "word-highlight", "pink-pill", "dark-pill-lime", "cloud-blob", "amber-tape", "studio") | no | — | — | — |
| `captionSettings.textColor` | string | no | — | — | — |
| `captionSettings.highlightColor` | string | no | — | — | — |
| `captionSettings.backgroundColor` | string | no | — | — | — |
| `captionSettings.shadowColor` | string | no | — | — | — |
| `captionSettings.shadowBlur` | number | no | — | — | — |
| `captionSettings.maxCharsPerLine` | number | no | — | — | — |
