Index / MCP servers / Framesail

Framesail MCP server

Framesail is an MCP server with 72 tools an agent can call, among them activate_script_version, add_music_track, add_segment_sfx. It answers at https://api.framesail.com/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 10 of 10 times since 5 September 2026; the last check, on 18 October 2026, succeeded.

Status
Answering
Tools
72
Official
yes, served from framesail.com
Reliability
10 of 10 checks
Response time
226 ms
Transport
streamable HTTP
Last checked
18 October 2026

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

Description as the publisher wrote it.

The 72 tools Framesail offers

ToolWhat it does
activate_script_versionSwitch the project's active script to another saved version (ids come from get_script's version list — each generate_script run creates one; save_script edits the active version in place). Re-run scan_script / rescan_voice_blocks afterwards
Inputs: script_id
add_music_trackAdd 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 wit
Inputs: project_id, library_track_id, name, volume, loop, start_frame
add_segment_sfxAttach 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.
Inputs: project_id, segment_number, library_track_id
analyze_styleRe-run style analysis (after changing a style's inputs). Async — await_jobs(style_id=...) until the style_analysis job completes.
Inputs: style_id
animate_segmentAnimate one segment in a single call: flip it to a generated video shot (keeping its rendered image as the clip's first frame) and START the clip render immediately. BILLS video credits on this call — the segment's image must already be ren
Inputs: project_id, segment_number, voice
await_jobsBlock (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
Inputs: project_id, style_id, timeout_seconds
browse_audio_libraryBrowse the audio library for background music and sound effects. category: "music" | "sfx". Returns {tracks} — track ids feed add_music_track / add_segment_sfx. Zero matches also returns the mood and genre tags the library actually carries,
Inputs: category, search, mood, genre
build_scenesCompile segments + assets + voiceover into the editor/render timeline (scenes). Run after segment assets are complete, before export. Returns a receipt — {scene_count, scenes: [{scene_id, segment_number, duration_frames, status, layer_count
Inputs: project_id
change_segment_typeChange what a segment's base visual IS: a generated still ("image"), fetched real media (media_source="real" — a real photo for "image", stock b-roll footage for "video"), or an overlay scene. Generated video is NOT set here — it's the stat
Inputs: project_id, segment_number, segment_type, carry_frame, media_source, dry_run
combine_segmentsMerge a segment with an adjacent one (segment numbers must be neighbors). keep: "this" | "other" — whose creative data survives: its assets are kept (rendered frame/clip marked stale against the combined narration and its prompts re-derived
Inputs: project_id, segment_number, with_segment_number, keep, dry_run
create_assetManually 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. The scan reads narration and `[SCENE: ...]` directions
Inputs: project_id, asset_type, name, description
create_channelCreate 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.
Inputs: name, description
create_projectCreate a project. The description (the video concept/topic) seeds script generation, so write a meaningful one. Pass video_format='portrait' for a vertical video — every shot, overlay, and the export are then composed for a 9:16 frame. The
Inputs: channel_id, title, description, video_format
create_styleCreate a style. Two mutually exclusive paths: References (best): inputs=[{"input_type": "youtube" | "text", "value": "<url or description>"}] — YouTube videos are watched (a channel link or @handle resolves to that channel's newest usable u
Inputs: channel_id, name, inputs, presets
delete_assetDelete a project asset (e.g. one the scan over-extracted).
Inputs: asset_id
delete_projectPermanently delete a project and everything in it (script versions, assets, voiceover, segments, renders). Irreversible — confirm with your user first.
Inputs: project_id
delete_styleDelete 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.
Inputs: style_id
director_noteEdit 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. Address the scene by project_id
Inputs: message, project_id, segment_number, scene_id, conversation_history
export_videoRender 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.
Inputs: project_id
generate_asset_referenceRender 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
Inputs: asset_id, model, editable_sections, settings
generate_scriptGenerate the project's script from its description/concept and the channel's narrative style. Async — returns {job_id}; poll get_workflow_status.
Inputs: project_id, model, editable_sections, settings
generate_segmentsRender 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 w
Inputs: project_id, dry_run, segment_numbers, asset_scope
generate_storyboardPlan 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). Plans generated stills + real
Inputs: project_id, model, editable_sections, settings
generate_style_templateRender 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
Inputs: style_id, template_type, replace, model, editable_sections
generate_voiceoverGenerate 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). P
Inputs: project_id, model, voice_block_ids, editable_sections, settings
get_credit_balanceCurrent 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.
get_pipeline_progressTHE 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_actio
Inputs: project_id
get_projectFetch a project row — settings, voice config, default style, export URL.
Inputs: project_id
get_scriptRead 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 us
Inputs: project_id
get_section_templateInspect 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.
Inputs: job
get_segment_assetsList 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.
Inputs: project_id, segment_number
get_segmentsList 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. Returns {total, o
Inputs: project_id, offset, limit
get_styleFetch one style row — its inputs (reference material), analyzed fields (art_style, narrative_style, director_style, script_prompt, ...), and `templates`: {"character": url|null, "environment": url|null}, the two template images. A null ther
Inputs: style_id
get_video_urlDownload URL for the most recent completed export.
Inputs: project_id
get_workflow_statusPoll 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, w
Inputs: project_id, style_id
list_assetsList 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 ref
Inputs: project_id, asset_type
list_channelsList your channels. Every project lives in a channel, which owns the reusable styles (art/narrative/director) that drive generation.
list_modelsList 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). When model is omitted t
Inputs: job
list_music_tracksList the project's background music tracks (volume, loop, timing).
Inputs: project_id
list_projectsList projects in a channel.
Inputs: channel_id
32 more tools

list_provider_keys, list_scenes, list_style_presets, list_styles, list_voice_blocks, list_voices, project_director_note, regenerate_segment_asset, remove_music_track, remove_segment_sfx, rescan_voice_blocks, revise_script, rollback_segment_asset, save_script, scan_script, set_character_voice, set_narrator_voice, set_project_style, set_provider_key, set_segment_continuation, split_segment, update_asset, update_caption_config, update_music_track, update_project, update_segment_content, update_segment_prompts, update_style_fields, update_style_references, update_voice_block, view_image, whoami

Add Framesail to your AI client

Every block below points at https://api.framesail.com/mcp. Pick your client and copy.

Claude Code: one command in your terminal
claude mcp add --transport http framesail https://api.framesail.com/mcp
Claude Desktop: claude_desktop_config.json
{
  "mcpServers": {
    "framesail": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://api.framesail.com/mcp"]
    }
  }
}
Cursor: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
  "mcpServers": {
    "framesail": {
      "url": "https://api.framesail.com/mcp"
    }
  }
}
VS Code and GitHub Copilot: .vscode/mcp.json
{
  "servers": {
    "framesail": {
      "type": "http",
      "url": "https://api.framesail.com/mcp"
    }
  }
}
Zed: Zed settings.json
{
  "context_servers": {
    "framesail": {
      "url": "https://api.framesail.com/mcp"
    }
  }
}
Windsurf: ~/.codeium/mcp_config.json
{
  "mcpServers": {
    "framesail": {
      "serverUrl": "https://api.framesail.com/mcp"
    }
  }
}
JetBrains AI Assistant: Settings, Tools, AI Assistant, MCP, New MCP Server, as JSON
{
  "mcpServers": {
    "framesail": {
      "url": "https://api.framesail.com/mcp"
    }
  }
}
Continue: .continue/mcpServers/neuronto.yaml
name: framesail
version: 0.0.1
schema: v1
mcpServers:
  - name: framesail
    type: streamable-http
    url: https://api.framesail.com/mcp
Gemini CLI: ~/.gemini/settings.json
{
  "mcpServers": {
    "framesail": {
      "httpUrl": "https://api.framesail.com/mcp"
    }
  }
}
Codex CLI: MCP server config
{
  "mcpServers": {
    "framesail": {
      "type": "http",
      "url": "https://api.framesail.com/mcp"
    }
  }
}
Warp: MCP servers, + Add, paste JSON
{
  "mcpServers": {
    "framesail": {
      "url": "https://api.framesail.com/mcp"
    }
  }
}
Goose: a one-click extension link
goose://extension?url=https%3A%2F%2Fapi.framesail.com%2Fmcp&type=streamable_http&id=framesail&name=framesail

Is Framesail up right now?

It answered our last check on 18 October 2026 in 226 ms. Over 10 checks since 5 September 2026 it answered 10. Status here comes from Neuronto's own probes, not from the publisher.

MCP servers similar to Framesail

Questions about Framesail

Is there an official Framesail MCP server?

Yes. It is published by framesail.com and served from api.framesail.com, the vendor's own domain: https://api.framesail.com/mcp.

How many tools does Framesail have?

72, as returned by the server's own tools/list on 10 September 2026: activate_script_version, add_music_track, add_segment_sfx, analyze_style, animate_segment, await_jobs, browse_audio_library, build_scenes, and 64 more.

Is Framesail down?

It answered our last check on 18 October 2026 in 226 ms. Over 10 checks since 5 September 2026 it answered 10.

How do I add Framesail to Cursor?

Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://api.framesail.com/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.

Does Framesail need an API key?

It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.

Where this comes from

Publisher: com.framesail. Endpoint host: api.framesail.com. ARD identifier: urn:air:com.framesail:mcp:framesail. First indexed 31 August 2026. The tools are exactly what the server returned; nothing on this page is inferred from its name. Ranking in Neuronto search is never for sale.

Is this your server? Get a message the day it stops answering or its tools change: monitoring, 14 days free. Or claim the domain to manage how it is listed.