Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

com.framesail/framesail

REMOTE · API.FRAMESAIL.COM · SCANNED AUG 3

Create long-form YouTube videos end to end: script, storyboard, voiceover, final MP4.

+8 this week 81 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security94
Transport & Reachability100
Schema Quality & AI Usability73
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 9752 tokens (~143/item across 68 items; 68 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · api.framesail.com

# add to Claude Code
claude mcp add --transport http com-framesail-framesail https://api.framesail.com/mcp
# ~/.codex/config.toml
[mcp_servers.com-framesail-framesail]
url = "https://api.framesail.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-framesail-framesail": {
      "type": "remote",
      "url": "https://api.framesail.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-framesail-framesail --url https://api.framesail.com/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-framesail-framesail:
    url: "https://api.framesail.com/mcp"
// mcp.json
{
  "mcpServers": {
    "com-framesail-framesail": {
      "type": "http",
      "url": "https://api.framesail.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 +5
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 73

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://api.framesail.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=api.framesail.com CN=YE2,O=Let's Encrypt,C=US 20 Jun 2026 18 Sept 2026 ECDSA 256 ECDSA-SHA384 5c6b1cef4a9c696c389c6d9edab9fff5d2e
SANs: api.framesail.com
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd
DNSSEC insecure

Validation of api.framesail.com. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
framesail.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://api.framesail.com/.well-known/oauth-protected-resource/mcp"

Bearer resource_metadata="https://api.framesail.com/.well-known/oauth-protected-resource/mcp"
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
content-security-policy default-src 'none'; frame-ancestors 'none'
x-content-type-options nosniff
x-frame-options DENY
referrer-policy no-referrer

Protected resource metadata

Document https://api.framesail.com/.well-known/oauth-protected-resource/mcp
Retrieved Yes
Resource https://api.framesail.com/mcp
Authorisation server https://api.framesail.com
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://api.framesail.com/mcp Verified 200
http (plaintext) http://api.framesail.com/mcp HTTPS enforced 301 https://api.framesail.com/mcp
MCP tools — 68 exposed · ~8,116 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
activate_script_version ~85

Switch the project's active script to another saved version (ids come from get_script's version list — every save_script creates one). Re-run scan_script / rescan_voice_blocks afterwards if the text differs, since downstream artifacts follow the active version.

NameTypeReqDescription
script_idstringyesID of the script version to activate, from get_script's version list

No output schema declared.

No examples provided.

add_music_track ~210

Add background music to the project from the audio library (find track ids with browse_audio_library, category="music"). Defaults loop the track under the whole video at bed level (volume 0.12 ≈ -18.4 dB under narration — don't raise it without being asked); re-run export_video to hear it.

NameTypeReqDescription
library_track_idstringyesAudio library track ID, from browse_audio_library(category="music")
loopbooleanTrue loops the track under the whole video; false plays it once
namestringDisplay name for the track on the project's timeline
project_idstringyesProject ID, as returned by create_project or list_projects
start_frameintegerTimeline frame at which the track starts (0 = start of the video)
volumenumberPlayback volume 0-1; the 0.12 default sits at bed level under narration — don't raise it unless asked

No output schema declared.

No examples provided.

add_segment_sfx ~111

Attach a sound effect from the audio library to a segment (find track ids via browse_audio_library with category="sfx"). Re-run build_scenes to get it onto the timeline.

NameTypeReqDescription
library_track_idstringyesAudio library track ID, from browse_audio_library(category="sfx")
project_idstringyesProject ID, as returned by create_project or list_projects
segment_numberintegeryes1-based segment number, as reported by get_segments

No output schema declared.

No examples provided.

analyze_style ~59

Re-run style analysis (after changing a style's inputs). Async — await_jobs(style_id=...) until the style_analysis job completes.

NameTypeReqDescription
style_idstringyesID of the style to re-analyze, from create_style or list_styles

No output schema declared.

No examples provided.

await_jobs ~179

Block (server-side) until the scope has no pending/running jobs, or the timeout passes — use this instead of polling get_workflow_status yourself. Returns {done, jobs}. If done=false the work is still running: just call await_jobs again (a 3-5 minute storyboard takes a few consecutive calls). Keep timeout_seconds <= 50 so the client doesn't time out the tool call.

NameTypeReqDescription
project_idstringProject ID whose jobs to wait for; pass exactly one of project_id or style_id
style_idstringStyle ID whose analysis/template jobs to wait for; pass exactly one of project_id or style_id
timeout_secondsintegerMax seconds to block server-side before returning done=false; keep <= 50 so the client doesn't time out the tool call

No output schema declared.

No examples provided.

browse_audio_library ~132

Browse the audio library for background music and sound effects. category: "music" | "sfx". Returns track ids for add_music_track / add_segment_sfx.

NameTypeReqDescription
categorystringTrack kind: "music" (background tracks) or "sfx" (sound effects); empty returns both
genrestringFilter by the track's genre tag; empty for no filter
moodstringFilter by the track's mood tag; empty for no filter
searchstringFree-text search over track names/descriptions; empty for no filter

No output schema declared.

No examples provided.

build_scenes ~56

Compile segments + assets + voiceover into the editor/render timeline (scenes). Run after segment assets are complete, before export.

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

change_segment_type ~147

Change a segment's visual type: "image" | "video" | "overlay_scene". carry_frame=true reuses the already-rendered image as the video start frame (or vice versa) instead of recreating it.

NameTypeReqDescription
carry_framebooleanTrue reuses the already-rendered frame as the new type's starting visual instead of recreating it from scratch
project_idstringyesProject ID, as returned by create_project or list_projects
segment_numberintegeryes1-based segment number, as reported by get_segments
segment_typestringyesNew visual type: "image", "video", or "overlay_scene"

No output schema declared.

No examples provided.

combine_segments ~147

Merge a segment with an adjacent one (segment numbers must be neighbors). keep: "this" | "other" — whose creative data survives. Later segments renumber — re-check get_segments before further edits.

NameTypeReqDescription
keepstringWhose creative data survives the merge: "this" (segment_number) or "other" (with_segment_number)
project_idstringyesProject ID, as returned by create_project or list_projects
segment_numberintegeryes1-based segment number, as reported by get_segments
with_segment_numberintegeryes1-based number of the adjacent segment to merge with (must neighbor segment_number)

No output schema declared.

No examples provided.

create_asset ~138

Manually add a character/environment/object the scan missed. asset_type: "character" | "environment" | "object". The description is the generation-facing spec of its look — be specific.

NameTypeReqDescription
asset_typestringyesKind of asset: "character", "environment", or "object"
descriptionstringGeneration-facing spec of the asset's look; every shot renders from it, so be specific
namestringyesAsset name as the script refers to it (e.g. the character's name)
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

create_channel ~73

Create a new channel — the container for projects and their reusable styles. Use when the user wants a fresh creative identity rather than adding to an existing channel.

NameTypeReqDescription
descriptionstringOptional free-text description of the channel's content focus
namestringyesDisplay name for the new channel

No output schema declared.

No examples provided.

create_project ~116

Create a project. The description (the video concept/topic) seeds script generation, so write a meaningful one. The response's web_url is the project's page in the web app — share it so the user can follow along.

NameTypeReqDescription
channel_idstringyesID of the channel to create the project in, from list_channels or create_channel
descriptionstringThe video concept/topic; seeds script generation, so make it specific and meaningful
titlestringyesProject title shown in the app

No output schema declared.

No examples provided.

create_style ~268

Create a style. Two mutually exclusive paths: References (best): inputs=[{"input_type": "youtube" | "text", "value": "<url or description>"}] — YouTube videos are watched and text directions read; async analysis writes the style's art/narrative/director fields: await_jobs(style_id=...) before using the style. (Image/video FILE references require the multipart REST endpoint POST /styles.) Presets (instant, no analysis): presets={"art_style": id, "narrative_style": id, "director_style": id} — all three axes, ids from list_style_presets.

NameTypeReqDescription
channel_idstringyesID of the channel to create the style in, from list_channels
inputsReference material to analyze, [{"input_type": "youtube" | "text", "value": "<url or description>"}]; triggers an async analysis job. Mutually exclusive with presets
namestringyesDisplay name for the style
presetsPreset IDs per axis, {"art_style": id, "narrative_style": id, "director_style": id}, from list_style_presets; instant, no analysis. Mutually exclusive with inputs

No output schema declared.

No examples provided.

delete_asset ~41

Delete a project asset (e.g. one the scan over-extracted).

NameTypeReqDescription
asset_idstringyesID of the asset to delete, from list_assets

No output schema declared.

No examples provided.

delete_project ~62

Permanently delete a project and everything in it (script versions, assets, voiceover, segments, renders). Irreversible — confirm with your user first.

NameTypeReqDescription
project_idstringyesID of the project to permanently delete, from list_projects

No output schema declared.

No examples provided.

delete_style ~63

Delete a style (e.g. a failed analysis experiment). Don't delete a style that projects still use as their default — rebind them first with set_project_style.

NameTypeReqDescription
style_idstringyesID of the style to delete, from list_styles

No output schema declared.

No examples provided.

director_note ~162

Edit ONE scene with a natural-language note (the same director chat the editor UI uses): move/restyle/add/remove layers and overlays, retime, etc. Synchronous — returns the applied mutations + updated scene. Use list_scenes to find scene ids; for notes spanning the whole video use project_director_note instead.

NameTypeReqDescription
conversation_historyPrior chat turns as [{"role": ..., "content": ...}] to continue an editing conversation on this scene; omit to start fresh
messagestringyesNatural-language edit note for this scene, e.g. "move the caption to the top" or "remove the overlay"
scene_idstringyesID of the scene to edit, from list_scenes

No output schema declared.

No examples provided.

export_video ~69

Render the final MP4 (Remotion). Fetches the current timeline and queues the render. Async — poll get_workflow_status for the video_export job, then call get_video_url.

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

generate_asset_reference ~205

Render an asset's reference image in the channel's art style — the visual anchor that keeps a character/environment looking identical across every shot. EVERY character, environment, and object asset needs one before generate_voiceover (the server enforces this; fire the jobs for all assets, then one await_jobs). Async — the job writes the image onto the asset row: await_jobs(project_id), then list_assets and view_image the file_path to check likeness.

NameTypeReqDescription
asset_idstringyesID of the asset to render a reference image for, from list_assets
editable_sectionsPer-call prompt section overrides, keyed by section name; see get_section_template for the reference-image job
modelstringImage model ID; empty uses the server default for reference images
settingsModel-specific settings (e.g. image quality/orientation); valid keys come from the model's settings_schema in list_models

No output schema declared.

No examples provided.

generate_script ~134

Generate the project's script from its description/concept and the channel's narrative style. Async — returns {job_id}; poll get_workflow_status.

NameTypeReqDescription
editable_sectionsPer-call prompt section overrides, keyed by section name; see get_section_template("script") for the sections this job exposes
modelstringModel ID to generate with; empty uses the default (see list_models("script"))
project_idstringyesProject ID, as returned by create_project or list_projects
settingsModel-specific settings; valid keys come from the model's settings_schema in list_models("script")

No output schema declared.

No examples provided.

generate_segments ~243

Render every actionable segment asset (images, video clips, overlays) across the project, in dependency order. THE most expensive call in the pipeline: ALWAYS dry_run=true first, show your user the estimate next to get_credit_balance, and wait for a fresh yes before the real run — prior blanket permission ("do the whole thing") does not cover this spend. Pass segment_numbers to render only a subset — e.g. segments 1-18 for the opening minute before committing to the full video. Safe to re-run: completed and currently-generating assets are skipped, so a second call only picks up new/failed work. Async — one job per asset; await_jobs until all complete.

NameTypeReqDescription
dry_runbooleanTrue returns the credit-cost estimate without rendering anything; ALWAYS run true first and get user approval before the real run
project_idstringyesProject ID, as returned by create_project or list_projects
segment_numbers1-based segment numbers (from get_segments) to render only a subset; omit to render every actionable asset in the project

No output schema declared.

No examples provided.

generate_storyboard ~207

Plan the full visual storyboard: segments, shot pacing, image/video prompts, overlays, continuation chains — driven by the channel's director and art styles. Requires voiceover to exist (timing comes from it). BEFORE calling: confirm the project's asset_mix with your user (image vs video vs generated_graphic percentages, update_project) — the storyboard plans against it and video-heavy mixes multiply the later render cost. Async — returns {job_id}; this is the longest LLM step.

NameTypeReqDescription
editable_sectionsPer-call prompt section overrides, keyed by section name; see get_section_template("storyboard")
modelstringModel ID to plan with; empty uses the default (see list_models("storyboard"))
project_idstringyesProject ID, as returned by create_project or list_projects
settingsModel-specific settings; valid keys come from the model's settings_schema in list_models("storyboard")

No output schema declared.

No examples provided.

generate_style_template ~252

Render one of a style's two template images — a REAL step of style setup, not an optional extra: a style isn't finished until both its character and environment templates are rendered (the app shows them on the style card). Asset reference images render against them (characters → character template; environments and objects → environment template), and segment renders fall back on them when a shot has no asset reference — so finish BOTH before generate_asset_reference. Run once per template_type ("character" | "environment") for every new style; skip only types the style already has (get_style shows them). Async — await_jobs(style_id=...), then get_style.

NameTypeReqDescription
editable_sectionsPer-call prompt section overrides, keyed by section name; see get_section_template for the template job
modelstringImage model ID; empty uses the template job's default (see list_models)
style_idstringyesStyle ID, as returned by create_style or list_styles
template_typestringyesWhich of the style's two template images to render: "character" or "environment" — run once for each

No output schema declared.

No examples provided.

generate_voiceover ~274

Generate TTS audio for the project's voice blocks. Without voice_block_ids it fills gaps: only blocks with no audio yet run, so re-calling it is always safe (already-generated and currently-generating blocks are skipped, never re-billed). Pass voice_block_ids to explicitly REgenerate those blocks (e.g. after changing a block's voice). Speakers must have voices bound first — set_narrator_voice / set_character_voice. Optional editable_sections/settings apply to every selected block (see get_section_template("voice_block") and list_models("voice_block")). Async — returns one job per block.

NameTypeReqDescription
editable_sectionsPer-call prompt section overrides applied to every selected block; see get_section_template("voice_block")
modelstringTTS model ID; empty uses the default (see list_models("voice_block"))
project_idstringyesProject ID, as returned by create_project or list_projects
settingsModel-specific TTS settings applied to every selected block; valid keys come from the model's settings_schema in list_models("voice_block")
voice_block_idsBlock IDs (from list_voice_blocks) to explicitly REgenerate; omit to fill gaps — only blocks with no audio yet run

No output schema declared.

No examples provided.

get_credit_balance ~55

Current credit balance + plan info. Check before expensive steps (a full segment render can cost hundreds of credits — generate_segments dry_run gives the estimate). Jobs covered by a BYOK provider key bill 0.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_pipeline_progress ~191

THE resume/orientation tool: one call returns every pipeline step's state (script -> scan -> reference_images -> voices -> voiceover -> style_templates -> storyboard -> segment_assets -> scenes -> export), any running jobs, and a next_action telling you exactly what to do next. Call this when picking up an existing project, after any await_jobs, or whenever you're unsure where a video stands — never guess pipeline position. Every step carries a web_url — the page in the Framesail web app where your user can see that step's output. Share it whenever you present a step's results ("review the storyboard here: ...") so they can inspect and edit in the browser; the app and this API act on the same live state.

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

get_project ~43

Fetch a project row — settings, voice config, default style, export URL.

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

get_script ~87

Read the active script's full text + the version list. Use this to show the script to your user for review/feedback before scan_script — the review-edit-resave loop (get_script -> discuss -> save_script) is the expected workflow when the user wants input.

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

get_section_template ~93

Inspect the prompt sections a generation job exposes for per-call override via editable_sections (jobs: script, script_scan, storyboard, segment_image, segment_video, voice_block, ...). Sections marked locked cannot be overridden.

NameTypeReqDescription
jobstringyesGeneration job name, e.g. "script", "script_scan", "storyboard", "segment_image", "segment_video", "voice_block"

No output schema declared.

No examples provided.

get_segment_assets ~95

List one segment's assets (images/video/overlays) including their status, config (prompts, model), and public URLs of rendered files — pass an image's public_url to view_image to actually look at it.

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects
segment_numberintegeryes1-based segment number, as reported by get_segments

No output schema declared.

No examples provided.

get_segments ~177

List the storyboard's segments (narration span, type, duration, creative direction). The 1-based segment_number is the handle every segment tool takes (update/split/combine/continuation/regenerate) — you never need a UUID. Each segment also reports `continues_from_segment`. When set, this shot is a CONTINUATION of that earlier segment: its rendered frame carries over (same composition, characters, and setting) and only the delta changes — an added overlay, a shifted expression, a closer angle, a slow reframe. Null means a fresh, independent shot. The storyboard plans these chains automatically; adjust them with set_segment_continuation.

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

get_style ~75

Fetch one style row — its inputs (reference material) and analyzed fields (art_style, narrative_style, director_style, script_prompt, ...). Show fields to the user for review; fine-tune with update_style_fields.

NameTypeReqDescription
style_idstringyesStyle ID, as returned by create_style or list_styles

No output schema declared.

No examples provided.

get_video_url ~37

Download URL for the most recent completed export.

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

get_workflow_status ~188

Poll this between steps: returns active + recently-finished AI jobs (scope by project_id, or style_id for style analysis), plus per-segment- asset render statuses for projects. A step is done when its jobs reach status=complete (or error, with a user-readable message). NOTE: finished jobs drop out of `jobs` after ~30s — a short list does NOT mean work was lost; judge render batches by `segment_assets` statuses (or get_pipeline_progress), never by counting jobs. Prefer await_jobs over polling this in a tight loop.

NameTypeReqDescription
project_idstringProject ID to scope jobs to; pass exactly one of project_id or style_id
style_idstringStyle ID to scope jobs to (style analysis); pass exactly one of project_id or style_id

No output schema declared.

No examples provided.

list_assets ~175

List the project's assets extracted by scan_script — characters, environments, objects. Each has a description (the spec every shot uses to render it — surfaced top-level here; the raw row nests it at ai_output.description), an optional reference image (file_path is a public URL — view_image it), and for characters a voice_id. Review these after scan_script: fix descriptions, then generate_asset_reference for each one (all of them need a reference image before voiceover). asset_type filter: "character" | "environment" | "object".

NameTypeReqDescription
asset_typestringOptional filter: "character", "environment", or "object"; empty lists all asset types
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

list_channels ~38

List your channels. Every project lives in a channel, which owns the reusable styles (art/narrative/director) that drive generation.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_models ~109

List the models allowed for a generation job, with display names, credit estimates, and each model's settings_schema — the valid keys for that tool's `settings` param (e.g. image quality/orientation, video duration). The first entry is the default every tool uses when model is omitted.

NameTypeReqDescription
jobstringyesGeneration job whose allowed models to list, e.g. "script", "storyboard", "segment_image", "segment_video", "voice_block"

No output schema declared.

No examples provided.

list_music_tracks ~41

List the project's background music tracks (volume, loop, timing).

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

list_projects ~37

List projects in a channel.

NameTypeReqDescription
channel_idstringyesID of the channel whose projects to list, from list_channels or create_channel

No output schema declared.

No examples provided.

list_provider_keys ~24

List registered BYOK providers (masked — only the last 4 characters).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_scenes ~40

List the project's scenes (composition layers, durations, layout).

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

list_style_presets ~117

The curated preset catalog for the no-AI style creation path, grouped by axis (art_style / narrative_style / director_style). Show the user the labels + descriptions and let THEM pick one per axis — don't choose silently. Art presets include preview image URLs (view_image works on them). Create with create_style(presets={axis: id, ...}) — instant, no analysis job. Full field text lands on the style row (get_style shows it after creation).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_styles ~69

List the channel's style rows (variable groups). Styles hold the art_style / narrative_style / director_style / script_prompt fields that drive every generation step, plus any custom @variables.

NameTypeReqDescription
channel_idstringyesID of the channel that owns the styles, from list_channels

No output schema declared.

No examples provided.

list_voice_blocks ~50

List the project's voice blocks (per-speaker narration chunks) with their audio status and assigned voices.

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

list_voices ~100

List available TTS voices (id, label, preview audio URL) for a provider: "minimax" (default engine) or "elevenlabs". Match the project's voice_tts_provider (see get_project) so picked ids work with its engine.

NameTypeReqDescription
providerstringTTS engine to list voices for: "minimax" (default engine) or "elevenlabs"; match the project's voice_tts_provider

No output schema declared.

No examples provided.

project_director_note ~141

Apply a project-WIDE director note ("make the intro punchier", "all captions bigger", "tighten pacing in the back half"). A routing pass picks only the scenes the note applies to and edits each one. Synchronous — a few seconds per affected scene. Returns the per-scene results; re-run export_video afterwards to see changes in the final render.

NameTypeReqDescription
messagestringyesProject-wide director note in natural language, e.g. "make the intro punchier" or "all captions bigger"
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

regenerate_segment_asset ~262

Regenerate a segment's primary image or video with optional overrides — the API equivalent of the editor's expert drawer. asset_type: "image" | "video" (for a video segment, "image" targets its start frame). Use a different model, override prompt sections (see get_section_template("segment_image")), or tweak settings (e.g. image quality), then re-run just this asset. Async — returns {job_id}.

NameTypeReqDescription
asset_typestringyes"image" or "video"; for a video segment, "image" targets its start frame
editable_sectionsPer-call prompt section overrides, keyed by section name; see get_section_template("segment_image") or ("segment_video")
modelstringModel ID to render with; empty uses the job's default (see list_models("segment_image") / list_models("segment_video"))
project_idstringyesProject ID, as returned by create_project or list_projects
segment_numberintegeryes1-based segment number, as reported by get_segments
settingsModel-specific settings (e.g. image quality, video duration); valid keys come from the model's settings_schema in list_models

No output schema declared.

No examples provided.

remove_music_track ~37

Remove a music track from the project.

NameTypeReqDescription
track_idstringyesID of the music track to remove, from list_music_tracks

No output schema declared.

No examples provided.

remove_segment_sfx ~122

Remove a sound effect from a segment. With one SFX attached, no name needed; with several, pass sfx_name (the asset name shown by get_segment_assets).

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects
segment_numberintegeryes1-based segment number, as reported by get_segments
sfx_namestringName of the SFX asset to remove, as shown by get_segment_assets; needed only when the segment has several SFX attached

No output schema declared.

No examples provided.

rescan_voice_blocks ~117

Re-extract voice blocks from the active script WITHOUT touching assets or their reference images — the non-destructive alternative to scan_script after a script edit. Existing audio is superseded by the new block split, so re-run generate_voiceover afterwards. Async — returns {job_id}.

NameTypeReqDescription
modelstringModel ID for the re-extraction; empty uses the default (see list_models("voice_block_scan"))
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.