Video MCP
Create, edit, validate, preview, and export Kickstart video projects from AI agents.
What Agents Can Build
Video MCP tools operate on Kickstart .ksvideo packages using the same document model and shared renderer as the Kickstart app. Agents can create project bundles, add media and text clips, generate narration with subtitles, download stock footage, add App Store badges, render animated 3D device mockups with screen content, and export frames or final movies.
All Video MCP tools require an active Kickstart Pro subscription. When Pro is inactive, the video tools are hidden from tools/list and direct calls return a Pro subscription error.
Use tools/list for exact JSON schemas. This page is the workflow guide and complete video tool index.
Connect and Discover
Kickstart ships one MCP helper at /Applications/Kickstart.app/Contents/Helpers/KickstartMCP. Claude, Codex, Gemini integrations, Cursor, and custom clients should launch that helper over stdio and use normal JSON-RPC 2.0 MCP messages.
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2024-11-05"}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":1,"method":"tools/list"}
Treat tools/list as authoritative. If no video_ tools appear, the installed build may be old or the user may not have active Kickstart Pro. Do not call video tools that are missing from the live tool list.
Core Rules
- Every mutating call loads the package, performs one validated operation, saves atomically, and returns the latest
revision. - Video tools are available only while Kickstart's cached Pro entitlement is active.
- Pass
expectedRevisionfrom the previous read or write when editing an existing package, so Kickstart can stop accidental overwrites if the app or another agent changed the document. - Long operations are synchronous: model downloads, narration generation, stock-media downloads, device-model downloads, and movie export return only after they finish or fail.
- Use writable paths for
projectPath,outputPath, and imported media. The helper is sandboxed when launched from the app, so broad user folders may require user-granted access. - Prefer validated tools over writing
project.jsondirectly. Raw JSON editing bypasses revision checks, asset copying, waveform generation, and renderer compatibility. - Use
video_validate_projectbefore export, thenvideo_export_framefor a quick visual check beforevideo_export_video.
Agent Operating Loop
A good video agent should move through discovery, narrow edits, validation, visual checks, and export. This keeps documents openable in Kickstart and keeps MCP output aligned with the app preview.
- Call
video_create_projectfor a new package, orvideo_get_project_summaryfor an existing package. Keep the returnedrevision. - For each mutating call, pass
projectPathand the latestexpectedRevision. Replace your cached revision with the new value returned by the tool. - Use
video_find_available_trackor explicittrackIndexvalues to avoid clip overlap. Timeline times are frames; Kickstart video projects use 30 frames per second, so 90 frames is 3 seconds. - Keep returned
assetID,clipID, andanimationIDvalues. Later tools need those IDs; agents should not infer them from filenames or display text. - Use compact reads while planning:
video_get_project_summary,video_list_tracks,video_list_clips, andvideo_get_clip. UsedetailLevel: "full"only for debugging. - Call
video_validate_projectbefore rendering. Fix validation errors first; warnings may be acceptable if the user asked for a fast draft. - Call
video_export_framefor at least one representative frame before a long movie export. - Call
video_export_videoonly after validation and frame preview succeed. The returnedoutputPathis the file to show the user.
Response Handling
Video tool responses are MCP text content containing JSON. Parse result.content[0].text as JSON and inspect the fields before deciding the next step.
Fields to preserve
Mutating video tools commonly return projectPath, revision, changed, summary, warnings, tracks, and clips. The clips array contains clips touched by that call, including IDs needed for transforms, subtitles, animations, duplication, splitting, and deletion.
Structured recovery hints
Some failures return a JSON object with isError true and fields such as error, message, and nextTool. Follow nextTool when it is present. For example, narration model failures point to video_download_narration_models, and missing device models point to video_download_device_model.
Revision conflicts
If a tool reports a revision mismatch, call video_get_project_summary, compare the current tracks and clips with your intended edit, then retry with the new revision. Never bypass this by editing project.json directly.
Core Field Reference
These values are useful when constructing calls by hand. The live JSON schemas returned by tools/list remain the source of truth.
Document sizes
hd720hd1080uhd4ksquare1080portrait1080appStoreConnectAppleTVappStoreConnectiPadPortraitappStoreConnectiPadLandscapeappStoreConnectiPhonePortraitappStoreConnectiPhoneLandscapeappStoreConnectMacOSappStoreConnectAppleVisionPro
Media and style values
- Media types:
shape,image,video,audio,text,narration,device,appStoreBadge - Common transform fields:
scale,positionX,positionY,rotationX,rotationY,rotationZ,opacity,cornerRadius - Scale and opacity are percentages; rotations are degrees; positions are point offsets from the document center.
- RGB and RGBA arrays use components from
0to1.
Subtitles
- Display modes:
Word Stream,Sentences,Phrases - Vertical positions:
Top,Center,Bottom - Horizontal alignments:
Left,Center,Right - Transitions:
None,Fade,Slide Up,Pop - Karaoke animations:
None,Fade,Sliding Underline,Sliding Background,Pulse
Use video_generate_narration with showSubtitles: true to create subtitles automatically from generated word timestamps. Use video_update_clip_subtitles or video_update_narration_subtitles to tune display mode, karaoke highlighting, social safe area, colors, font, transitions, and placement.
App Store badges and exports
- App Store badge styles:
appStoreDownload,appStorePreorder,macAppStoreDownload,macAppStorePreorder,appleTVDownload,appleTVPreorder - Badge color schemes:
black,white - Export resolution preset:
matchDocument - Video bitrate presets:
lowest,low,medium,high,veryHigh,ultraHigh - Audio bitrate presets:
kbps128,kbps192,kbps256,kbps320
Common Workflows
Create a narrated stock video
- Create the package with
video_create_project. - Search or download background footage with
video_search_stock_mediaandvideo_add_stock_media_clip, or build scenes withvideo_build_stock_sequence. - Check voices with
video_list_narration_voices, then callvideo_download_narration_modelsif needed. - Call
video_generate_narrationwithprojectPath,text,voiceID, andshowSubtitlesto write WAV audio, waveform data, word timestamps, and a narration clip into the package. - Add a CTA with
video_add_text_clipandvideo_add_app_store_badge_clip. - Validate and export with
video_validate_projectandvideo_export_video.
Create a 3D device mockup
- Call
video_list_device_modelsto find the device ID, such asiphone-17-pro-max. - Call
video_download_device_modelif the model is not installed. - Import the screen image or screen recording with
video_import_media. - Add the device using
video_add_device_mockup_cliporvideo_add_device_clip. - Attach screen content with
video_set_device_screen_content. - Animate rotation, scale, or position with
video_add_clip_animation,video_apply_animation_preset, orvideo_update_device_transform. - Use
video_preview_animationorvideo_export_framebefore exporting the final movie.
Build from a storyboard
Use video_build_from_storyboard for structured scenes with text, stock queries, narration, and optional CTA data. The recipe tools video_create_marketing_video, video_create_app_mockup_video, video_create_social_ad, video_create_app_store_preview, and video_create_narrated_stock_video use the same storyboard engine with workflow-specific intent.
Raw Call Examples
MCP clients normally handle JSON-RPC framing. These examples show the shape of tool calls when debugging manually. Replace REVISION_FROM_LAST_CALL, CLIP_ID_FROM_RESPONSE, ASSET_ID_FROM_RESPONSE, and paths with values from earlier tool responses.
Create a portrait project
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"video_create_project","arguments":{"projectPath":"/path/to/codex.ksvideo","documentSize":"portrait1080","overwrite":true}}}
Generate narration with subtitles
Check model readiness first. If the status response says models are missing, call the download tool and wait for it to finish before generating narration.
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"video_get_narration_model_status","arguments":{}}}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"video_download_narration_models","arguments":{}}}
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"video_generate_narration","arguments":{"projectPath":"/path/to/codex.ksvideo","expectedRevision":"REVISION_FROM_LAST_CALL","text":"Show your app in motion with Kickstart. Generate launch videos, App Store previews, and narrated demos from one editable timeline.","voiceID":"amara","showSubtitles":true,"startFrame":0,"trackIndex":1,"volume":100}}}
{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"video_update_clip_subtitles","arguments":{"projectPath":"/path/to/codex.ksvideo","expectedRevision":"REVISION_FROM_LAST_CALL","clipID":"CLIP_ID_FROM_NARRATION_RESPONSE","subtitleDisplayMode":"Phrases","subtitleKaraoke":true,"subtitleVerticalPosition":"Bottom","subtitleHorizontalAlignment":"Center","subtitleSocialSafeArea":true,"subtitleTransition":"Fade","subtitleKaraokeAnimation":"Sliding Background"}}}
Search stock media and add one result
Pass one full object from the results array into stockMedia. The second call below shows the expected shape; real values should come directly from video_search_stock_media.
{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"video_search_stock_media","arguments":{"query":"developer typing app launch dashboard","orientation":"portrait","limit":3}}}
{"jsonrpc":"2.0","id":7,"method":"tools/call","params":{"name":"video_add_stock_media_clip","arguments":{"projectPath":"/path/to/codex.ksvideo","expectedRevision":"REVISION_FROM_LAST_CALL","stockMedia":{"id":123456,"width":1080,"height":1920,"duration":8,"url":"https://www.pexels.com/video/example/","image":"https://images.pexels.com/videos/example.jpg","user":{"id":42,"name":"Creator Name","url":"https://www.pexels.com/@creator"},"video_files":[{"id":98765,"quality":"hd","file_type":"video/mp4","width":1080,"height":1920,"link":"https://videos.pexels.com/video-files/example.mp4"}]},"startFrame":0,"durationFrames":180,"trackIndex":0,"scaleToFill":true}}}
Add a 3D iPhone with screen content
Use video_list_device_models to confirm the exact model ID in the installed app. If the model is not downloaded, download it before adding the device clip.
{"jsonrpc":"2.0","id":8,"method":"tools/call","params":{"name":"video_list_device_models","arguments":{}}}
{"jsonrpc":"2.0","id":9,"method":"tools/call","params":{"name":"video_download_device_model","arguments":{"deviceModelID":"iphone-17-pro-max"}}}
{"jsonrpc":"2.0","id":10,"method":"tools/call","params":{"name":"video_import_media","arguments":{"projectPath":"/path/to/codex.ksvideo","expectedRevision":"REVISION_FROM_LAST_CALL","mediaPath":"/path/to/screen.png"}}}
{"jsonrpc":"2.0","id":11,"method":"tools/call","params":{"name":"video_add_device_mockup_clip","arguments":{"projectPath":"/path/to/codex.ksvideo","expectedRevision":"REVISION_FROM_LAST_CALL","deviceModelID":"iphone-17-pro-max","startFrame":0,"durationFrames":210,"trackIndex":3,"scale":86,"rotationX":-8,"rotationY":24,"positionY":-30}}}
{"jsonrpc":"2.0","id":12,"method":"tools/call","params":{"name":"video_set_device_screen_content","arguments":{"projectPath":"/path/to/codex.ksvideo","expectedRevision":"REVISION_FROM_LAST_CALL","clipID":"CLIP_ID_FROM_DEVICE_RESPONSE","assetID":"ASSET_ID_FROM_IMPORT_RESPONSE"}}}
{"jsonrpc":"2.0","id":13,"method":"tools/call","params":{"name":"video_apply_animation_preset","arguments":{"projectPath":"/path/to/codex.ksvideo","expectedRevision":"REVISION_FROM_LAST_CALL","clipID":"CLIP_ID_FROM_DEVICE_RESPONSE","preset":"Rotate In","relativeStartFrame":0,"durationFrames":60}}}
Add a CTA with an App Store badge
{"jsonrpc":"2.0","id":14,"method":"tools/call","params":{"name":"video_add_text_clip","arguments":{"projectPath":"/path/to/codex.ksvideo","expectedRevision":"REVISION_FROM_LAST_CALL","content":"Download on the App Store","startFrame":210,"durationFrames":90,"trackIndex":2,"fontSize":72,"textAlignment":"center","textColorRGB":[1,1,1],"naturalWidth":900,"naturalHeight":140,"positionY":-180}}}
{"jsonrpc":"2.0","id":15,"method":"tools/call","params":{"name":"video_add_app_store_badge_clip","arguments":{"projectPath":"/path/to/codex.ksvideo","expectedRevision":"REVISION_FROM_LAST_CALL","badgeStyle":"appStoreDownload","colorScheme":"black","startFrame":210,"durationFrames":90,"trackIndex":3,"scale":140,"positionY":120}}}
Build a complete storyboard
{"jsonrpc":"2.0","id":16,"method":"tools/call","params":{"name":"video_build_from_storyboard","arguments":{"projectPath":"/path/to/storyboard.ksvideo","documentSize":"portrait1080","overwrite":true,"voiceID":"amara","defaultSceneDurationSeconds":4,"scenes":[{"narration":"Launch with a polished app preview in minutes.","showSubtitles":true,"visual":{"stockQuery":"mobile app launch team","orientation":"portrait"},"text":{"content":"Launch-ready videos","fontSize":76},"animationPreset":"Fade In"},{"narration":"Show real screens inside animated Apple device models.","showSubtitles":true,"visual":{"deviceModelID":"iphone-17-pro-max"},"text":{"content":"Real device mockups","fontSize":76},"animationPreset":"Scale In"}],"callToAction":{"title":"Ready for the App Store","prompt":"Download today","durationFrames":120}}}}
Validate, preview, and export
{"jsonrpc":"2.0","id":17,"method":"tools/call","params":{"name":"video_validate_project","arguments":{"projectPath":"/path/to/codex.ksvideo","expectedRevision":"REVISION_FROM_LAST_CALL"}}}
{"jsonrpc":"2.0","id":18,"method":"tools/call","params":{"name":"video_export_frame","arguments":{"projectPath":"/path/to/codex.ksvideo","expectedRevision":"REVISION_FROM_LAST_CALL","outputPath":"/path/to/codex-frame.png","frame":90,"resolutionPreset":"matchDocument","overwrite":true}}}
{"jsonrpc":"2.0","id":19,"method":"tools/call","params":{"name":"video_export_video","arguments":{"projectPath":"/path/to/codex.ksvideo","expectedRevision":"REVISION_FROM_LAST_CALL","outputPath":"/path/to/codex.mp4","includeAudio":true,"resolutionPreset":"matchDocument","videoBitratePreset":"high","audioBitratePreset":"kbps192","overwrite":true}}}
Failure Recovery
- If
tools/listdoes not containvideo_tools, ask the user to verify Kickstart Pro is active and that the installed Kickstart build includes Video MCP. Do not continue with invented tool calls. - If project creation or export fails with a permissions error, ask the user for a writable path or use a location the helper can access. The MCP helper cannot assume broad Desktop or Downloads access when launched under app sandboxing.
- If narration returns
narrationModelsNotInstalled, callvideo_download_narration_models, then retryvideo_generate_narration. If it returnsunknownVoice, callvideo_list_narration_voicesand select one of the returned IDs. - If a device model is missing, call
video_refresh_device_modelswhen the catalog is stale, thenvideo_download_device_modelfor the exactdeviceModelID. - If stock media search or download fails, either retry with a broader query or replace that visual with imported media, a shape background, or a storyboard fallback scene.
- If export succeeds but the result differs from Kickstart's preview, keep the
.ksvideo, exported frame, exported movie, frame number, output settings, and tool responses. App export and MCP export use the same shared renderer, so visual differences should be treated as bugs rather than expected variance.
Complete Tool Reference
The Video MCP surface provides 81 video tools.
Project Packages (6)
video_create_project- Creates a new.ksvideopackage with document settings and initial tracks.video_get_project- Reads a package with configurable detail for project metadata, tracks, clips, assets, and warnings.video_get_project_summary- Reads a compact package summary for planning follow-up edits.video_validate_project- Runs package validation and returns errors, warnings, tracks, clips, and duration information.video_save_compact_copy- Writes a compact copy of an existing package to a new.ksvideopath.video_export_json- Exports or returns the package'sproject.jsonfor diagnostics.
Kickstart Project Links (4)
video_list_projects- Lists Kickstart projects available for linking video work.video_list_project_videos- Lists video packages linked to one Kickstart project.video_link_video_to_project- Links a.ksvideopackage to a Kickstart project.video_unlink_video_from_project- Removes a linked video from a Kickstart project.
Tracks And Timeline (6)
video_list_tracks- Lists timeline tracks, visibility, muted state, and clip summaries.video_get_track- Reads one zero-based track and its clips.video_set_track_state- Changes track visibility or muted state.video_find_available_track- Finds a safe track index for a given start frame and duration.video_add_track- Adds a new timeline track.video_compact_timeline- Moves clips down to lower available tracks without changing timing.
Clips And Styling (17)
video_list_clips- Lists clips with optional filters for track, time range, media type, or clip IDs.video_get_clip- Reads one clip, optionally including narration word timestamps.video_add_media_clip- Adds an image, video, or audio clip from imported media.video_add_text_clip- Adds a text clip with color, alignment, size, and transform settings.video_add_shape_clip- Adds a shape clip such as a rectangle, rounded rectangle, circle, or line.video_add_app_store_badge_clip- Adds an App Store badge CTA clip.video_update_clip_timing- Changes a clip's start frame or duration.video_update_clip_transform- Changes scale, position, rotation, opacity, or corner radius.video_update_clip_crop- Changes crop percentages on image or video content.video_update_clip_shadow- Changes shadow color, radius, and offset.video_update_clip_audio- Changes volume, mute state, fades, and playback speed.video_update_clip_text- Changes text content and text styling.video_update_clip_subtitles- Changes subtitle visibility and subtitle styling on narration clips.video_move_clip- Moves a clip to a different time or track.video_duplicate_clip- Duplicates a clip with optional new timing.video_split_clip- Splits a clip at an absolute timeline frame.video_delete_clip- Deletes a clip by ID.
Animations (11)
video_list_animation_presets- Lists named animation presets.video_get_animation_preset- Reads one animation preset by ID or display name.video_get_animation_curves- Lists supported animation curve identifiers.video_list_clip_animations- Lists animation blocks attached to one clip.video_add_clip_animation- Adds a keyframed animation block to a clip.video_update_clip_animation- Updates an existing animation block.video_delete_clip_animation- Deletes an animation block from a clip.video_apply_animation_preset- Applies a preset to a clip using validated animation settings.video_set_clip_state_at_frame- Sets an animatable clip state at a relative frame.video_get_clip_state_at_frame- Reads the computed clip state at a relative frame.video_preview_animation- Returns sampled animation states and can render a contact sheet PNG.
Assets (6)
video_import_media- Copies media into the package asset store and can optionally create a clip.video_list_assets- Lists package assets and metadata.video_get_asset- Reads one asset's metadata.video_replace_clip_media- Replaces the media used by an existing clip.video_remove_unused_assets- Removes package assets that are no longer referenced by clips.video_extract_asset- Writes a package asset back out to a file path.
Narration And Subtitles (8)
video_list_narration_voices- Lists available narration voices and preview metadata.video_get_narration_voice- Reads one narration voice by ID.video_get_narration_model_status- Reports whether narration generation models are installed.video_download_narration_models- Downloads and installs narration models, waiting until the install finishes.video_generate_narration- Generates WAV narration, waveform PNG data, word timestamps, and, whenprojectPathis provided, a narration clip.video_add_narration_clip- Adds a narration clip from existing WAV audio and optional timestamp data.video_regenerate_narration_clip- Regenerates audio, waveform, timestamps, and duration for an existing narration clip.video_update_narration_subtitles- Updates subtitle settings for a narration clip.
Stock Media (4)
video_search_stock_media- Searches stock video candidates for a query and orientation.video_download_stock_media- Downloads a selected stock video and returns the local asset result.video_add_stock_media_clip- Downloads a selected stock video and adds it to the timeline.video_build_stock_sequence- Builds a sequence of stock scenes from structured storyboard input.
3D Device Models (9)
video_list_device_models- Lists available 3D device models and download state.video_refresh_device_models- Refreshes the remote device model manifest.video_get_device_model- Reads metadata for one device model.video_download_device_model- Downloads one 3D device model and waits until it is installed.video_delete_device_model- Deletes one downloaded device model from the local cache.video_add_device_clip- Adds a 3D device clip using a downloaded model.video_add_device_mockup_clip- Adds a 3D device mockup clip; this is an alias-style workflow for device mockups.video_set_device_screen_content- Sets the image or video shown on a 3D device screen.video_update_device_transform- Updates transform fields on a device clip.
Export (4)
video_get_export_presets- Lists supported export resolution and bitrate presets.video_export_frame- Renders a single frame to an image file.video_export_video- Renders the final movie, with optional mixed audio, to an MP4 file.video_estimate_duration- Reports estimated project duration from timeline content.
Storyboard Builders (6)
video_build_from_storyboard- Builds an export-ready timeline from structured scene objects.video_create_marketing_video- Creates a marketing video from storyboard-style input.video_create_app_mockup_video- Creates an app mockup video from storyboard-style input.video_create_social_ad- Creates a social ad video from storyboard-style input.video_create_app_store_preview- Creates an App Store preview-style video from storyboard input.video_create_narrated_stock_video- Creates a narrated stock-media video from storyboard input.