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

com.framesail/framesail

REMOTE · API.FRAMESAIL.COM · SCANNED SEP 20

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

−1 this week 92 Trust /100
Trust breakdown (7 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 → Why this is hard to score →

Endpoint Security94
Transport & Reachability100
Schema Quality & AI Usability71
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 13576 tokens (~188/item across 72 items; 72 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 Management98
  • Stability check failed: schema churn in the 30 days we've observed: 1 tool removals, 0 breaking changes, 0 auth/transport breaks, 5 additions. See how to fix → Fail
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
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 73 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the com.framesail/framesail MCP server?

com.framesail/framesail is a hosted endpoint at https://api.framesail.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · api.framesail.com

# add to Claude Code
claude mcp add --transport http com-framesail-framesail 'https://api.framesail.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "com-framesail-framesail": {
      "url": "https://api.framesail.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-framesail-framesail": {
      "type": "http",
      "url": "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"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-framesail-framesail": {
      "Transport": "http",
      "Url": "https://api.framesail.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add com-framesail-framesail -t streamable-http -u '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.

  • 18 Sept 26 −1
    • Stability: pass → fail security
    • A breaking change shipped without a version bump: still 1.27.2 security
    • Tool “remove_segment_sfx” was removed security
    • New tool “remove_segment_asset”, which the server declares destructive security
    • Tool “add_segment_sfx” rewrote its description, which is the text the model reads security
    • Tool “director_note” rewrote its description, which is the text the model reads security
    • Tool “get_segments” rewrote its description, which is the text the model reads security
    • Tool “project_director_note” rewrote its description, which is the text the model reads security
    • Tool “save_script” rewrote its description, which is the text the model reads security
    • “director_note” reworded the description of “message” cosmetic
  • 10 Sept 26 0
    • Tool “generate_voiceover” rewrote its description, which is the text the model reads security
  • 1 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • New tool “update_style_references”, which the server declares destructive security
    • Tool “activate_script_version” rewrote its description, which is the text the model reads security
    • Tool “browse_audio_library” rewrote its description, which is the text the model reads security
    • Tool “build_scenes” rewrote its description, which is the text the model reads security
    • Tool “change_segment_type” rewrote its description, which is the text the model reads security
    • Tool “combine_segments” rewrote its description, which is the text the model reads security
    • Tool “create_asset” rewrote its description, which is the text the model reads security
    • Tool “generate_segments” rewrote its description, which is the text the model reads security
    • Tool “generate_storyboard” rewrote its description, which is the text the model reads security
    • Tool “get_segments” rewrote its description, which is the text the model reads security
    • Tool “get_style” rewrote its description, which is the text the model reads security
    • Tool “list_models” rewrote its description, which is the text the model reads security
    • Tool “list_provider_keys” rewrote its description, which is the text the model reads security
    • Tool “list_scenes” rewrote its description, which is the text the model reads security
    • Tool “list_voice_blocks” rewrote its description, which is the text the model reads security
    • Tool “list_voices” rewrote its description, which is the text the model reads security
    • Tool “rescan_voice_blocks” rewrote its description, which is the text the model reads security
    • Tool “revise_script” rewrote its description, which is the text the model reads security
    • Tool “save_script” rewrote its description, which is the text the model reads security
    • Tool “scan_script” rewrote its description, which is the text the model reads security
    • Tool “split_segment” rewrote its description, which is the text the model reads security
    • Tool “update_project” rewrote its description, which is the text the model reads security
    • Tool “update_segment_content” rewrote its description, which is the text the model reads security
    • Tool “update_style_fields” rewrote its description, which is the text the model reads security
    • Schema quality: 152 → 188 functional
    • New tool “animate_segment” functional
    • New tool “rollback_segment_asset” functional
    • New tool “update_segment_prompts” functional
    • “change_segment_type” added an optional parameter “dry_run” cosmetic
    • “change_segment_type” added an optional parameter “media_source” cosmetic
    • “combine_segments” added an optional parameter “dry_run” cosmetic
    • “generate_segments” added an optional parameter “asset_scope” cosmetic
    • “get_segments” added an optional parameter “limit” cosmetic
    • “get_segments” added an optional parameter “offset” cosmetic
    • “list_scenes” added an optional parameter “include_composition” cosmetic
    • “list_scenes” added an optional parameter “limit” cosmetic
    • “list_scenes” added an optional parameter “offset” cosmetic
    • “list_voice_blocks” added an optional parameter “include_subtitle_data” cosmetic
    • “list_voices” added an optional parameter “group” cosmetic
    • “split_segment” added an optional parameter “dry_run” cosmetic
    • “update_segment_content” added an optional parameter “dry_run” cosmetic
    • “change_segment_type” reworded the description of “segment_type” cosmetic
    • “save_script” reworded the description of “content” cosmetic
    • “update_project” reworded the description of “fields” cosmetic
    • “update_style_fields” reworded the description of “fields” cosmetic
    • “rescan_voice_blocks” dropped the optional parameter “model” cosmetic
  • 26 Aug 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
  • 25 Aug 26 +1
    • Stability: 0.97 → pass security
  • 23 Aug 26 +1

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

  • 17 Aug 26 0
    • Tool “director_note” rewrote its description, which is the text the model reads security
    • “director_note” added an optional parameter “project_id” cosmetic
    • “director_note” added an optional parameter “segment_number” cosmetic
    • “director_note” reworded the description of “scene_id” cosmetic
    • “director_note” made “scene_id” optional cosmetic
  • 16 Aug 26 0
    • Tool “list_models” rewrote its description, which is the text the model reads security
    • “generate_voiceover” reworded the description of “model” cosmetic
    • “update_project” reworded the description of “fields” cosmetic
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 20 Sept 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=YE1,O=Let's Encrypt,C=US 19 Aug 2026 17 Nov 2026 ECDSA 256 ECDSA-SHA384 6c30faf009f53b8303de16181953decf929
SANs: api.framesail.com
CN=YE1,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 5ddd70dd31f801c85c186a7a04b80afe
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

Background: What to check on a remote MCP endpoint →

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

Background: How OAuth 2.1 works in the 2026 MCP spec →

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 · 72 exposed · ~11,710 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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
rescan_voice_blocks ~113

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. Blocks whose spoken text is unchanged keep their audio; only edited blocks come back empty, so a follow-up generate_voiceover fills just the gaps. Synchronous and free — the split is deterministic. Returns {block_count}.

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

revise_script ~188

AI-rewrite a passage of the active script in the project's narrative voice (the same in-editor revise the UI offers). selected_text must appear verbatim in the script; omit it to revise the whole script. `[SCENE: ...]` directions in range are preserved exactly, in place, unless the instruction asks to change them. Synchronous — returns {revised_text}, which is NOT saved: splice it over selected_text (or replace the full script) and call save_script to keep it.

NameTypeReqDescription
instructionstringyesNatural-language edit instruction, e.g. "make the intro punchier"
project_idstringyesProject ID, as returned by create_project or list_projects
selected_textstringExact passage to rewrite; must appear verbatim in the active script. Omit to revise the whole script

No output schema declared.

No examples provided.

rollback_segment_asset ~194

Restore a previously rendered version of a segment's image or video — every regeneration archives the render it replaces (last 5), so a regen that came out worse is reversible for free. The current render is archived in its place, making the rollback itself reversible. The frame/clip pair restales as usual: rolling the image back marks a rendered clip out of date.

NameTypeReqDescription
asset_typestringyes"image" or "video" — which primary to restore; for a video segment, "image" targets its start frame
indexintegerWhich archived render to restore, 0 = the most recent (each asset's config.history in get_segment_assets lists them)
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.

save_script ~474

Save script text (your own draft, or an edited version of the generated one). Saving UPDATES the active version in place — the previous text is not kept, so show the user the current script (get_script) before overwriting it. New versions are created by generate_script runs, and activate_script_version switches between those. Run scan_script afterwards so assets and voice blocks reflect the new text. Three notations the script text carries, none of them ever spoken: SCENE DIRECTIONS — `[SCENE: <visual direction>]` as its OWN paragraph (blank line before and after; brackets inside a narration paragraph are never matched). It directs the storyboard for the narration that follows, until the next direction, and for that span OUTRANKS the director style's shot choices — say what is on screen, who is in frame, and any on-screen text to bake in verbatim. It does not constrain how many segments the span is cut into. scan_script extracts characters/places named only inside a direction too, under the exact name used. PAUSES — `<break time="1.5s" />` is the ONLY thing that makes the voice pause; ellipses, dashes and paragraph breaks produce no silence. Use ~0.5s between thoughts, ~1.0s at act seams, longer where a card needs reading time; write ONE tag with the total ("4.0s"), never two back to back. narrator_speed changes how fast words are said; breaks add the silence between them. SPEAKERS — a paragraph starting `Name: "..."` assigns that line to a character, who gets their own voice (set_character_voice) and their own shot. Narration with no prefix is the narrator's.

NameTypeReqDescription
contentstringyesFull script text to save as a new version; plain prose narration, optionally with `[SCENE: ...]` direction paragraphs, `<break time="0.5s" />` pauses, and `Name:` speaker prefixes
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

scan_script ~223

Analyze the active script: extracts character/environment/object assets and splits narration into voice blocks. DESTRUCTIVE on re-run (assets are recreated, not merged — curated descriptions, reference images, and voices are lost; prefer rescan_voice_blocks after script edits). Extraction reads the narration AND any `[SCENE: ...]` directions — a character or place named only inside a direction is still extracted, under the exact name the direction uses. Directions never leak into voice blocks (they ride onto the blocks they govern as staging instead). Review list_assets afterwards and create_asset anything the video needs that neither narration nor directions ever name. Async — returns {job_id}.

NameTypeReqDescription
editable_sectionsPer-call prompt section overrides, keyed by section name; see get_section_template("script_scan")
modelstringModel ID to scan with; empty uses the default (see list_models("script_scan"))
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

set_character_voice ~96

Bind a TTS voice to a character asset — required before generate_voiceover for every character with dialogue (the narrator's voice is separate: set_narrator_voice). Browse ids with list_voices.

NameTypeReqDescription
asset_idstringyesCharacter asset ID, from list_assets
voice_idstringyesTTS voice ID, from list_voices (use the provider matching the project's voice_tts_provider)

No output schema declared.

No examples provided.

set_narrator_voice ~102

Set the project's narrator TTS voice — required before generate_voiceover whenever the script has narration. Browse ids with list_voices. (Character dialogue voices are separate: set_character_voice.)

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects
voice_idstringyesTTS voice ID for the narrator, from list_voices (use the provider matching the project's voice_tts_provider)

No output schema declared.

No examples provided.

set_project_style ~98

Set the project's default style — the style whose art/narrative/director fields drive its generations. Use after create_style to put a new visual identity into effect, or to switch a project between channel styles.

NameTypeReqDescription
project_idstringyesProject ID, as returned by create_project or list_projects
style_idstringyesID of the style to make the project's default, from create_style or list_styles

No output schema declared.

No examples provided.

set_provider_key ~121

Register a BYOK provider API key (encrypted at rest, BYOK plan only). Jobs whose model belongs to this provider then run on YOUR key and charge 0 credits. Providers: openai, gemini, anthropic, fal, elevenlabs, minimax.

NameTypeReqDescription
keystringyesThe provider API key to register; stored encrypted at rest
providerstringyesProvider the key belongs to: "openai", "gemini", "anthropic", "fal", "elevenlabs", or "minimax"

No output schema declared.

No examples provided.

set_segment_continuation ~163

Make a segment's image render as a continuation of an EARLIER segment's frame (same composition evolving — the storyboard's continues_from_segment, settable after the fact). continues_from is that earlier segment's number; pass 0 to clear the link. Regenerate the segment's image afterwards — the reference is applied at generation time.

NameTypeReqDescription
continues_frominteger1-based number of the EARLIER segment whose frame this one continues; pass 0 to clear the link
project_idstringyesProject ID, as returned by create_project or list_projects
segment_numberintegeryes1-based number of the segment whose image should continue an earlier frame, as reported by get_segments

No output schema declared.

No examples provided.

split_segment ~209

Split a segment at the given time offsets (ms, 1-3 cuts → 2-4 parts). inherit_index picks which resulting part keeps the original creative data — that part keeps its rendered assets, SFX, overlays and continuation links (a rendered clip goes stale; re-render it). The other parts start fresh. Later segments renumber — re-check get_segments before further edits.

NameTypeReqDescription
dry_runbooleanTrue previews the consequences without changing anything
inherit_indexinteger0-based index of the resulting part that keeps the original creative data (default: the first part)
offsets_msarrayyesCut points as millisecond offsets from the segment start, ascending; 1-3 cuts producing 2-4 parts
project_idstringyesProject ID, as returned by create_project or list_projects
segment_numberintegeryes1-based number of the segment to split, as reported by get_segments

No output schema declared.

No examples provided.

update_asset ~84

Rename an asset and/or rewrite its description. If the look changed, regenerate its reference image afterwards so renders match.

NameTypeReqDescription
asset_idstringyesAsset ID, as returned by list_assets or create_asset
descriptionstringNew generation-facing look description; empty leaves it unchanged
namestringNew asset name; empty leaves the name unchanged

No output schema declared.

No examples provided.

update_caption_config ~102

Merge a patch into the project's burned-in caption config (keys like enabled, plus styling). Read the current value from get_project (caption_config). Applies at the next export — no rebuild needed.

NameTypeReqDescription
caption_configobjectyesPartial caption config to merge (keys like enabled, plus styling); read the current value from get_project's caption_config
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

update_music_track ~108

Tweak a music track. fields keys: name, volume (0-1), loop, start_frame, duration_frames, position, trim_start_frame, trim_end_frame.

NameTypeReqDescription
fieldsobjectyesPartial dict of track fields to patch; allowed keys: name, volume (0-1), loop, start_frame, duration_frames, position, trim_start_frame, trim_end_frame
track_idstringyesMusic track ID, from list_music_tracks or add_music_track

No output schema declared.

No examples provided.

update_project ~301

Patch project fields. Updatable: title, description, sfx_level, video_concept, voice_mix, voice_tts_provider, script_target_minutes, narrator_speed, video_format. (The narrator's TTS voice is NOT here — use set_narrator_voice.) narrator_speed is the narration rate (0.5-2.0, default 1.0; clamped to 0.7-1.2 on ElevenLabs). It changes how fast words are SAID and nothing else — it adds no silence between them, so "slow this down" usually wants `<break>` tags in the script text too (see save_script). video_format ('landscape' | 'portrait') is only changeable until the storyboard exists — after that the shots and overlays are composed for the current frame and the patch 409s. Switch it before generate_storyboard.

NameTypeReqDescription
fieldsobjectyesPartial dict of fields to patch; allowed keys: title, description, sfx_level ('none'|'minimal'|'frequent'), video_concept, voice_mix ('narrator_only'|'narrator_led'|'balanced'|'character_led'), voice…
project_idstringyesProject ID, as returned by create_project or list_projects

No output schema declared.

No examples provided.

update_segment_content ~211

Rewrite one segment's creative direction from feedback ("make this shot a close-up", "show the machine from above") — an LLM rewrites the shot's prompts; continuation links, SFX, and overlays are preserved. The visual assets reset to not_started: re-render them afterwards (generate_segments or regenerate_segment_asset). When you already know the exact prompt text, use update_segment_prompts instead — it writes your words verbatim with no LLM in the loop.

NameTypeReqDescription
dry_runbooleanTrue previews the consequences (assets recreated, rendered assets lost) without changing anything
project_idstringyesProject ID, as returned by create_project or list_projects
segment_numberintegeryes1-based segment number, as reported by get_segments
user_inputstringyesNatural-language feedback describing the change to this shot, e.g. "make this a close-up" or "show the machine from above"

No output schema declared.

No examples provided.

update_segment_prompts ~324

Set one segment's final prompts VERBATIM — no LLM rewrite. The direct counterpart to update_segment_content: your text is written as-is to the segment's creative direction and to the matching asset configs the renderer reads. Asset statuses are untouched: an already-rendered asset stays complete, and generate_segments skips complete assets — so to see the edit rendered, call regenerate_segment_asset on that segment (the ONLY re-render path after a prompt edit). Continuation links, SFX, and overlays are untouched. Pass only the prompt(s) you want to change; media_queries edits a fetched segment's stock-search text the same way.

NameTypeReqDescription
image_promptstringNew scene-image prompt (image segments; also the retrieval-miss fallback on real-photo segments). Empty leaves it unchanged.
media_queriesNew stock-search queries for a fetched-media segment (real b-roll / real photo). Replaces the search text verbatim; re-fetch an already-fetched clip with regenerate_segment_asset. Omit to leave the s…
project_idstringyesProject ID, as returned by create_project or list_projects
segment_numberintegeryes1-based segment number, as reported by get_segments
start_frame_promptstringNew start-frame prompt (generated video segments). Empty leaves it unchanged.
video_promptstringNew motion/video prompt (video segments; also the retrieval-miss fallback on real b-roll). Empty leaves it unchanged.

No output schema declared.

No examples provided.

update_style_fields ~270

Hand-edit a style's analyzed fields after reviewing them — e.g. tighten the art_style wording or adjust the director_style pacing rules. `fields` is a PATCH, merged over what the style already has: send only the keys you are changing and leave the rest out — there is no need to read the whole dict back with get_style and round-trip it. Pass {key: null} to delete a user-added key (the well-known art_style / narrative_style / director_style / script_prompt cannot be deleted, only rewritten, and cannot be set empty). Editing fields does NOT trigger re-analysis, so your edits stick. Real media is switched by the literal `@real-media` tag inside director_style's prose: add the tag plus prose describing when/how/how much real media appears to turn it on; remove the tag (or its passage) to turn it off.

NameTypeReqDescription
fieldsobjectyesSparse patch of style fields, shaped {key: {"value": str, "applies_to": [...]}} — send ONLY the keys you are changing; unlisted keys keep their current value
style_idstringyesStyle ID, as returned by create_style or list_styles

No output schema declared.

No examples provided.

update_style_references ~296

Replace a style's reference set — add or remove references without touching the analyzed fields. FULL REPLACE: read the current list with get_style first and send every entry you're keeping plus the changes. New entries are youtube (video link, or a channel link/@handle) or text; new image/video FILES can only be added via the multipart REST endpoint PATCH /styles/{id}, but existing ones round-trip fine. Optional `contributes_to` scopes an entry to a subset of the analyzed fields (art_style / narrative_style / director_style); omit it for all three. Saving does NOT re-run analysis: the response's `inputs_stale` flips true and the analyzed fields keep their current text until the user asks for analyze_style (which rewrites them from the new set).

NameTypeReqDescription
inputsarrayyesThe COMPLETE reference list the style should have after this call, in display order: [{"input_type": "youtube" | "text" | "image" | "video", "value": "<url or text>", "contributes_to": ["art_style",…
style_idstringyesStyle ID, as returned by create_style or list_styles

No output schema declared.

No examples provided.

update_voice_block ~116

Override one voice block's voice or playback volume (block ids from list_voice_blocks). Re-run generate_voiceover for the block afterwards if you changed its voice — existing audio is not regenerated automatically.

NameTypeReqDescription
voice_block_idstringyesVoice block ID, from list_voice_blocks
voice_idstringNew TTS voice ID for this block, from list_voices; empty leaves the voice unchanged
volumePlayback volume for this block, 0-1; omit to leave unchanged

No output schema declared.

No examples provided.

view_image ~106

Fetch a rendered Framesail image so you (and your user) can SEE it — pass a URL from get_segment_assets, get_style, or asset endpoints. Returns the image inline. Only Framesail media URLs are allowed.

NameTypeReqDescription
urlstringyesPublic Framesail media URL to fetch — a public_url from get_segment_assets, a file_path from list_assets, or a template/preset image URL from get_style / list_style_presets; other hosts are rejected

No output schema declared.

No examples provided.

whoami ~46

Verify the connection: the account email and plan behind the current credential. Call once after connecting — before creating anything — to confirm you're on the right account; costs nothing.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Common questions

What is the com.framesail/framesail MCP server?

com.framesail/framesail is an MCP server listed in the public MCP registry as com.framesail/framesail. Create long-form YouTube videos end to end: script, storyboard, voiceover, final MP4. This page covers its hosted endpoint (https://api.framesail.com/mcp).

Is the com.framesail/framesail MCP server safe to use?

com.framesail/framesail scores 92 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the com.framesail/framesail MCP server expose?

com.framesail/framesail exposes 72 tools: list_channels, create_channel, list_projects, create_project, get_project, and 67 more. Their descriptions and schemas cost roughly 11,710 tokens of context every time the server is loaded.

Does the com.framesail/framesail MCP server require authentication?

Yes. com.framesail/framesail asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the com.framesail/framesail MCP server still maintained?

com.framesail/framesail is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.