Skip to content

Video tools

create_video_from_script

Create a narrated video from a script: synthesizes an AI voiceover, then runs the b-roll/captions/graphics pipeline to build the cut. Safe to call while the script is still generating — it waits for the text. Returns a job_id once synthesis is done (~10-60s); the cut keeps building in the background and is finished when its live state says PLANNED, at which point it plays in the chat and you can change it with edit_video. It does NOT render a downloadable file — only the user does that, with the Render button on the card. Settings omitted fall back to the user's saved defaults. Use this when the user wants the AI to narrate; use prepare_recording_handoff when they want to be on camera. Confirm with the user before calling.

ParameterTypeDescription
script_id requiredstring
aspect_ratiosstring[]Output aspect ratios, e.g. ["9:16"] for TikTok/Reels, ["16:9"] for YouTube/LinkedIn.
video_typestring"long-form" for one video, "both" to also cut short clips. One of: long-form, both.
clipsobjectShort-clip settings (only meaningful with video_type=both).
captions_enabledbooleanBurn in captions (default true).
caption_presetstringName or id of one of the user's saved caption presets.
brand_kitstringName or id of one of the user's saved brand kits (logos + graphics theme).
broll_enabledbooleanLayer stock b-roll under the narration.
broll_sourcestringStock footage source: pexels or pixabay.
broll_custom_filesobject[]The user's own footage/stills to cut away to, layered in alongside (or instead of) stock. Clips the user uploaded in this conversation are attached automatically — only pass this to override that set.
use_article_imagesbooleanWhether to cut to the photos published with the source article. Defaults to true — they are attached automatically, so only pass false when the user asks for stock footage only.
video_contextstringExtra context for the editing agents (topic, vibe, audience).
music_enabledboolean
graphics_enabledbooleanAnimated graphics overlays (quote cards, stats).
voice_idstringElevenLabs voice id for the narration (see list_voices).
  1. generate_scriptscript_id

  2. create_video_from_scriptjob_id

    You can call this while the script is still generating; it waits for the text rather than failing.

  3. get_generation_status until the job reports planned

  4. get_video_edit_state → the ids you need to change anything

  5. edit_video → apply the changes

get_generation_status

Batch-check progress of script generations and/or video jobs. Videos report stage + progress while running and the final video URL when rendered.

ParameterTypeDescription
script_idsstring[]
job_idsstring[]

Takes both scripts and videos in one call, so a client tracking several things polls once rather than per item. Both lists are capped at 25.

list_recent

List the user's recent scripts or videos — for requests like "make a video from my last script".

ParameterTypeDescription
type requiredstringOne of: scripts, videos.
limitnumberMax rows (default 5, cap 20).

prepare_recording_handoff

When the user wants to appear on camera themselves (record & auto-edit), hand off to the recording flow: returns a link into the teleprompter/video wizard preloaded with their script. The recording itself happens in the app UI, not in chat.

ParameterTypeDescription
script_idstringScript to load into the teleprompter (optional — omit for freestyle).

Returns a link into the teleprompter with the script already loaded. This is the route for “I’ll record this myself” — MCP can’t drive a camera, so the handoff is a URL you give the user.

suggest_video_templates

Show the user the fixed video formats (layout templates) a script can be turned into — each one is a shape the pipeline assembles the same way every time, with a live preview of the layout. Every template needs the user on camera: picking one opens its builder with the script already loaded, and they record from there. Use it when they ask what formats/layouts/looks are available, when they want to be on camera and a set shape would suit, or alongside the AI-voiceover offer once a script is written. Pass template_ids to show only the ones you're recommending. Purely a suggestion — the user picks by tapping a card, so never say you've chosen or started one.

ParameterTypeDescription
script_idstringThe script to load into the template builder. Omit only if there is no script yet.
template_idsstring[]Narrow the card to specific templates. Omit to show the whole catalogue.

Shows the fixed-layout catalogue as a picker. Each entry carries a link that opens the template flow with the script attached.