Create long-form YouTube videos end to end: script, storyboard, voiceover, final MP4.
| Endpoint | https://api.framesail.com/mcp (streamable-http) |
|---|---|
| Registry version | 1.0.0 |
| Now | 28 tools · grade D (60) · pin ts_9923651f1a659ffe4eb9eb82ecb8e67c · protocol 2025-06-18 |
| First / last listed | 2026-10-24 21:34 UTC / 2026-10-24 21:34 UTC |
| Grade over time | 2026-10-24: D (60), 28 tools |
Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.
Tools: get_status view_image get_generation_options account_edit delete projects_read projects_edit style_read style_edit style_generate script_read script_edit script_generate assets_read assets_edit assets_generate voiceover_read voiceover_edit voiceover_generate storyboard_read storyboard_edit storyboard_generate segment_edit segment_restructure render editor_read editor_edit export_video
get_status | Where things stand and what to do next; start and resume here.
Always reports the account: plan, credits, credits held by running jobs,
and credits_available to spend. project_id adds the project's settings,
each step's state and web link, jobs with readable errors, export_url,
next_step and, when something failed, failures: the last failed jobs and
the failed segments grouped by kind and error. params: project_id, channel_id, wait |
view_image | Show a Framesail image inline: a segment image, reference image,
style template or preset preview. params: url* |
get_generation_options | What a generate call can be told to use.
models: the allowed models with credit estimates and settings_schema
(the valid settings keys); is_default marks the default (the account's
saved choice, else Framesail's). Voice and clip models come in families,
each with its own default: pass provider or talking_head for one family.
prompt_sections: sections with entity_backed=false can be overridden
wi params: generation*, action*, provider, talking_head |
account_edit | The account's default model and settings for one kind of generation,
used when neither the call nor the item's prompt editor names one.
voice_block needs provider and segment_video needs talking_head: each
family keeps its own default. params: action*, generation*, model, settings, provider, talking_head |
delete | Permanently delete; irreversible, so confirm with the user first.
project: it and everything in it. asset: a character, environment or
object. music_track: a background music track. segment_extra: a
segment's sound effect or overlay, with its scene layers. A segment's
image, clip and voiceover can't be deleted. params: type*, project_id, id, segment_number |
projects_read | Your channels, or the projects in one channel. params: action*, channel_id |
projects_edit | Create a channel or a project, or change a project's title, brief or
video format. A new project takes its channel's style; a channel with no
style needs one (style_edit action=create) before anything is
generated. Share the returned web_url so the user can follow along. params: action*, name, channel_id, project_id, title, description, video_format |
style_read | get: the channel style: its references, its fields (art_style,
narrative_style, director_style, text_style, any added; script_prompt on
request), the summary analysis wrote for each, and templates, the
character and environment template images (null: not rendered; a URL:
it exists, so view_image it rather than render it again).
inputs_stale: the references changed since the last analysis (offer
st params: action*, channel_id, project_id, include_script_prompt |
style_edit | Create or change the channel style (one per channel, used by all its
projects).
create: offer the user two real options, never invented ones. (a)
References (best): YouTube links of their channel or of videos whose
look they like, or a written description. Analysis starts at once and
writes the fields: wait with get_status channel_id wait=true, then
render both template images (style_generate act params: action*, channel_id*, name, references, presets, fields |
style_generate | analyze: read the references again and rewrite art_style,
narrative_style, director_style and text_style, replacing hand edits.
template: render one of the style's two template images. Reference
images render on them (characters on the character template,
environments and objects on the environment one) and segment images
fall back on them, so finish both before any reference image. An
existing o params: action*, channel_id*, template_type, replace, model, settings, editable_sections |
script_read | The active script, its versions, and the script settings
(script_target_minutes, voice_mix, visual concept). Show the script to
the user before Analyze Script. params: project_id* |
script_edit | Change the script or its settings; only revise spends credits.
save: replace the active version's text (the old text is lost: show the
user the current script first), then run Analyze Script. Notation, never
read aloud: `[SCENE: <visual direction>]` as its own paragraph directs
the storyboard for the narration after it, until the next one, over the
director style. `<break time="1.5s" />` is the o params: action*, project_id*, content, script_id, instruction, selected_text, script_target_minutes, voice_mix, visual_concept |
script_generate | generate: write the script from the brief and the narrative style;
each run is a new version (review it with script_read).
analyze (Analyze Script): find the script's characters, environments
and objects (including any named only in `[SCENE: ...]` directions) and
split it into voice blocks. Existing assets are kept as they are
(description, reference image, voice) and new ones added; assets the
s params: action*, project_id*, model, settings, editable_sections |
assets_read | The project's characters, environments and objects, each with its
description (what every render follows), reference_image (null: not
rendered; view_image it) and, for characters, voice_id. Each needs a
reference image before the voiceover. params: project_id*, asset_type |
assets_edit | Add a character, environment or object that Analyze Script missed,
or rename one or rewrite its description. After a description change,
render its reference image again (assets_generate asset_ids). params: action*, project_id, asset_id, asset_type, name, description |
assets_generate | Render reference images, which keep each character, environment and
object looking the same in every segment. Needs both style template
images. Without asset_ids it renders every asset with none, skipping
ones already rendering, so a repeat never bills twice. Afterwards,
view_image them to check likeness. params: project_id*, asset_ids, dry_run, model, settings, editable_sections |
voiceover_read | voices: one engine's voice ids, labels and preview audio, as
{groups, voices}. blocks: the voice blocks (narration and dialogue) with
their speaker, voice_id (the speaker's voice), audio and any
`[SCENE: ...]` direction over them (never spoken), as {blocks,
total_duration_ms, all_complete}. params: action*, project_id, provider, group, include_subtitle_data |
voiceover_edit | Voices and voice blocks; free. set_voice: the narrator's or a
character's voice; every speaker needs one before the voiceover.
rescan_blocks: split the active script into voice blocks again after an
edit, assets untouched; blocks whose words are unchanged keep their
audio. settings: the voice engine, narrator speed and language. params: action*, project_id*, speaker, voice_id, voice_tts_provider, narrator_speed, language |
voiceover_generate | Generate voice block audio. Every speaker needs a voice first, and
every asset a reference image. Without voice_block_ids it fills every
block with no audio, skipping ones already generating. A model must
match the project's voice engine. An existing storyboard retimes to the
new audio on its own. params: project_id*, voice_block_ids, dry_run, model, settings, editable_sections |
storyboard_read | segments: {total, offset, returned, segments}. Each segment has its
segment_number (the handle segment tools take), kind (image, clip,
talking head, real photo, B-roll or overlay segment), narration,
duration, direction, image_prompt, video_prompt (the motion when
animated), media_queries (searches for a real photo or B-roll), the
characters, environments and objects it shows, continues_from_segme params: action*, project_id*, segment_number, offset, limit |
storyboard_edit | Storyboard settings, used by the next storyboard run. params: action*, project_id*, sfx_level* |
storyboard_generate | Plan the storyboard: every segment, its timing, image and motion
prompts, overlays and continuations, following the channel style and
any `[SCENE: ...]` directions. Needs the finished voiceover (its timing
drives the cuts). It plans images, plus real photos and B-roll when the
director style has the `@real-media` tag; clips come later, by animating
rendered images. Running it again replaces the wh params: project_id*, model, settings, editable_sections |
segment_edit | Change one segment without losing renders; only split spends
credits. Returns the changed segments.
set_prompts: write prompts verbatim, no AI rewrite. The renders stay as
they are: render the segment again to apply the new prompts.
set_continuation: make this segment's image continue an earlier one's
(same composition, only the change); render the image again.
rollback: restore one of the last 5 params: action*, project_id*, segment_number*, image_prompt, video_prompt, media_queries, continues_from, what, index, offsets_ms, inherit_index |
segment_restructure | Change what a segment is. Every call previews first: when no
rendered image or clip would be lost it runs; otherwise it changes
nothing and returns what would be lost. Show the user, then call again
with confirm=true.
combine: merge with a neighboring segment. The kept segment's renders
stay, retimed to the combined length, but go stale: its prompts are
rewritten for the combined narration, so re params: action*, project_id*, segment_number*, with_segment_number, keep, to, keep_image, feedback, confirm |
render | Render segment images and clips, the biggest spend in the video:
always run it with dry_run=true first and get the user's yes on the
estimate.
generate: without segment_numbers, everything not yet rendered (items
rendering are skipped); with them, those segments, finished renders
included, e.g. the first minute before the whole video. Overrides need
segment_numbers and what=images or what=clips.
params: action*, project_id*, segment_numbers, what, dry_run, segment_number, talking_head, model, settings, editable_sections |
editor_read | scenes: the editor timeline, one scene per segment, as {total,
offset, returned, scenes}; scenes build on their own from the
storyboard. music: {tracks}, timed in seconds. audio_library: tracks to
add with editor_edit; when nothing matches, it lists the library's moods
and genres. params: action*, project_id, include_composition, offset, limit, category, search, mood, genre |
editor_edit | Polish the video in the editor; changes show in the next export.
scene_note: edit one scene with a note (move, restyle, add or remove
layers and overlays, change the text of a lower third, title card or
callout, change motion); spends credits. Returns the changes and
skipped_mutations: edits that didn't land (applied=false) or landed
differently than asked (applied=true), each with a reason; chec params: action*, project_id, segment_number, message, caption_config, library_track_id, track_id, name, volume, loop, start_seconds, trim_start_seconds, trim_end_seconds |
export_video | Render the finished video from the editor timeline; free. When the
export job completes, get_status carries export_url. params: project_id* |
Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.