Skip to content

Assets & presets

Two kinds of tool here. The capabilities produce new material: a music bed, a sting, a shot. The listings tell you what the account already has, which is how you turn “use my newsroom brand” into an id the other tools accept.

These return an asset. They do not place it; putting it in the video is an edit_video operation, which keeps “make something” and “change the cut” as separate, individually reversible steps.

generate_music

Generate a background music bed from a description of the vibe (e.g. "hype, upbeat electronic"). Returns an audio file to place with edit_video; use it to change a finished video's music. Reuses a cached bed when one matches, so repeats are cheap.

ParameterTypeDescription
prompt requiredstringThe feel of the track in a few words: genre, energy, instrumentation. No lyrics.
duration_secondsnumberRoughly how long it needs to play. Defaults to 30.
job_idstringThe video job this is for, when known.

Returns: Registers a file only. Nothing has changed on screen. Place it with edit_video: add_asset, then add_item (or replace_asset to swap it over an existing placement).

FieldTypeDescription
card always"asset"What kind of result this is.
capability alwaysstringWhich capability produced this.
asset alwaysobjectThe file, in the field names add_asset takes.
summarystringOne line on what was produced.
next_stepstringGuidance for you, not for the user. Act on it; do not read it out.

generate_sound_effect

Generate a short sound effect from a description (e.g. "whoosh on a hard cut", "UI click"). Returns an audio file to place with edit_video.

ParameterTypeDescription
prompt requiredstringWhat the sound should be.
duration_secondsnumberHow long it should run.
sfx_typestringRough category, e.g. "transition", "impact", "whoosh".
job_idstring

Returns: Registers a file only. Nothing has changed on screen. Place it with edit_video: add_asset, then add_item (or replace_asset to swap it over an existing placement).

FieldTypeDescription
card always"asset"What kind of result this is.
capability alwaysstringWhich capability produced this.
asset alwaysobjectThe file, in the field names add_asset takes.
summarystringOne line on what was produced.
next_stepstringGuidance for you, not for the user. Act on it; do not read it out.

find_broll

Find stock footage for a description, from the same libraries the pipeline uses. Use it when the user wants different b-roll and hasn't uploaded their own footage. Returns the best match as `asset` (place it with edit_video in the same turn) plus up to two `alternatives` the user can swap to from the chat.

ParameterTypeDescription
prompt requiredstringWhat the shot should show, in a sentence.
querystringWhat is typed into the stock search: 2-5 concrete words naming what is in the frame, keeping the user's own subject words exactly ("American football game", never just "football"; "NFL quarterback throwing"). No filler like "actual", "live action", "b-roll", "footage".
avoidstring[]Words for footage that would be WRONG even though a search could confuse it with the request, e.g. ["soccer"] for American football, or what the user just rejected. A clip whose title says one of these is never returned.
source_typestringMoving footage or a still. Defaults to video. One of: video, image.
aspect_ratiostringThe video's aspect ratio, so the search asks for the right orientation. One of: 9:16, 16:9, 1:1.

Returns: Registers a file only. Nothing has changed on screen. Place it with edit_video: add_asset, then add_item (or replace_asset to swap it over an existing placement).

FieldTypeDescription
card always"asset"What kind of result this is.
capability alwaysstringWhich capability produced this.
asset alwaysobjectThe file, in the field names add_asset takes.
summarystringOne line on what was produced.
next_stepstringGuidance for you, not for the user. Act on it; do not read it out.

Tools that take footage take URLs, not files. MCP has no file-transfer channel, so there is nothing to attach:

{
"script_id": "…",
"broll_custom_files": [
{ "url": "https://…/clip.mp4", "name": "Harbour at dawn", "description": "Wide establishing shot" }
]
}

Anything reachable over HTTPS works. To use something on your own machine, upload it in the web app first; it lands in your asset library and is addressable by URL from then on.

list_presets

List the user's saved presets/templates of a given type (name + id + which is the default). Use before applying a brand kit or caption preset by name.

ParameterTypeDescription
type requiredstringOne of: brand_kits, captions, voiceovers, video_templates, script_templates, speaker_styles.

Returns

FieldTypeDescription
card always"presets"What kind of result this is.
type alwaysstringWhich library these came from, echoed back from the argument.
presets alwaysobject[]The user's saved rows, the default first.

list_voices

List AI narration voices (ElevenLabs catalogue). The card lets the user play a sample of each and tap one to choose it, so when a voice is the user's decision, call this and ask rather than picking. Narrow it with query when they describe what they want ("British", "female", "deep", "news"). The user's saved default voice is marked.

ParameterTypeDescription
querystringWords to match against each voice's name, description, accent, gender, age and use case. Every word must match.
limitnumberHow many to show (default 8, max 20).

Returns

FieldTypeDescription
card always"presets"What kind of result this is.
type always"voices"Always "voices": the catalogue, not one of the saved libraries.
presets alwaysobject[]The narration voices available. Pass an id as voice_id.
querystring | nullThe filter that was applied, if any.
total_matchingnumberHow many voices matched before the limit.

The ElevenLabs catalogue available to the account. Pass a voice_id from here to create_video_from_script to choose the narrator for an AI-voiceover video, or to create_video_from_upload with narration_lines. Narrow it with query (“british male”, “news”); each voice carries a preview_url sample, and the user’s saved default is marked is_default and listed first.