# Framesail MCP server

Agent View of the PolicyLayer registry record for Framesail: identity, probed posture, risk grade, and all 68 tools classified. HTML page: https://policylayer.com/tools/com-framesail-framesail

## Facts

- Server id: `https://api.framesail.com/mcp`
- Homepage: https://github.com/https://api.framesail.com/mcp
- Registry record: grade F, identity unverified
- Lifecycle: active
- Auth posture: open
- Rate-limited: no
- Tools: 68 (63 with introspected schema)
- Tool categories present: Destructive, Execute, Read, Write
- Context-window cost: 12085 tokens per request — https://policylayer.com/token-cost/com-framesail-framesail
- Tags: com framesail framesail, admin, automation
- Record last modified: 2026-08-18T05:05:48.599Z

## Tools (68)

| Tool | Category | Risk | Record |
| --- | --- | --- | --- |
| `delete_asset` | Destructive | Critical | https://policylayer.com/tools/com-framesail-framesail/delete-asset.md |
| `delete_project` | Destructive | Critical | https://policylayer.com/tools/com-framesail-framesail/delete-project.md |
| `delete_style` | Destructive | Critical | https://policylayer.com/tools/com-framesail-framesail/delete-style.md |
| `director_note` | Destructive | Critical | https://policylayer.com/tools/com-framesail-framesail/director-note.md |
| `remove_music_track` | Destructive | Critical | https://policylayer.com/tools/com-framesail-framesail/remove-music-track.md |
| `scan_script` | Destructive | Critical | https://policylayer.com/tools/com-framesail-framesail/scan-script.md |
| `analyze_style` | Execute | High | https://policylayer.com/tools/com-framesail-framesail/analyze-style.md |
| `build_scenes` | Execute | High | https://policylayer.com/tools/com-framesail-framesail/build-scenes.md |
| `export_video` | Execute | High | https://policylayer.com/tools/com-framesail-framesail/export-video.md |
| `regenerate_segment_asset` | Execute | High | https://policylayer.com/tools/com-framesail-framesail/regenerate-segment-asset.md |
| `await_jobs` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/await-jobs.md |
| `browse_audio_library` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/browse-audio-library.md |
| `get_credit_balance` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/get-credit-balance.md |
| `get_pipeline_progress` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/get-pipeline-progress.md |
| `get_project` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/get-project.md |
| `get_script` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/get-script.md |
| `get_section_template` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/get-section-template.md |
| `get_segment_assets` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/get-segment-assets.md |
| `get_segments` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/get-segments.md |
| `get_style` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/get-style.md |
| `get_video_url` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/get-video-url.md |
| `get_workflow_status` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/get-workflow-status.md |
| `list_assets` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/list-assets.md |
| `list_channels` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/list-channels.md |
| `list_models` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/list-models.md |
| `list_music_tracks` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/list-music-tracks.md |
| `list_projects` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/list-projects.md |
| `list_provider_keys` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/list-provider-keys.md |
| `list_scenes` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/list-scenes.md |
| `list_style_presets` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/list-style-presets.md |
| `list_styles` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/list-styles.md |
| `list_voice_blocks` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/list-voice-blocks.md |
| `list_voices` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/list-voices.md |
| `view_image` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/view-image.md |
| `whoami` | Read | Low | https://policylayer.com/tools/com-framesail-framesail/whoami.md |
| `activate_script_version` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/activate-script-version.md |
| `add_music_track` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/add-music-track.md |
| `add_segment_sfx` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/add-segment-sfx.md |
| `change_segment_type` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/change-segment-type.md |
| `combine_segments` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/combine-segments.md |
| `create_asset` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/create-asset.md |
| `create_channel` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/create-channel.md |
| `create_project` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/create-project.md |
| `create_style` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/create-style.md |
| `generate_asset_reference` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/generate-asset-reference.md |
| `generate_script` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/generate-script.md |
| `generate_segments` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/generate-segments.md |
| `generate_storyboard` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/generate-storyboard.md |
| `generate_style_template` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/generate-style-template.md |
| `generate_voiceover` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/generate-voiceover.md |
| `project_director_note` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/project-director-note.md |
| `remove_segment_sfx` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/remove-segment-sfx.md |
| `rescan_voice_blocks` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/rescan-voice-blocks.md |
| `revise_script` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/revise-script.md |
| `save_script` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/save-script.md |
| `set_character_voice` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/set-character-voice.md |
| `set_narrator_voice` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/set-narrator-voice.md |
| `set_project_style` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/set-project-style.md |
| `set_provider_key` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/set-provider-key.md |
| `set_segment_continuation` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/set-segment-continuation.md |
| `split_segment` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/split-segment.md |
| `update_asset` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/update-asset.md |
| `update_caption_config` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/update-caption-config.md |
| `update_music_track` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/update-music-track.md |
| `update_project` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/update-project.md |
| `update_segment_content` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/update-segment-content.md |
| `update_style_fields` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/update-style-fields.md |
| `update_voice_block` | Write | Medium | https://policylayer.com/tools/com-framesail-framesail/update-voice-block.md |

## Tool descriptions

- `delete_asset` — Delete a project asset (e.g. one the scan over-extracted).
- `delete_project` — Permanently delete a project and everything in it (script versions, assets, voiceover, segments, renders). Irreversible — confirm with your user first.
- `delete_style` — 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.
- `director_note` — 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. Address the scene by project_…
- `remove_music_track` — Remove a music track from the project.
- `scan_script` — 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…
- `analyze_style` — Re-run style analysis (after changing a style's inputs). Async — await_jobs(style_id=...) until the style_analysis job completes.
- `build_scenes` — Compile segments + assets + voiceover into the editor/render timeline (scenes). Run after segment assets are complete, before export.
- `export_video` — 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.
- `regenerate_segment_asset` — 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, overri…
- `await_jobs` — 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 …
- `browse_audio_library` — Browse the audio library for background music and sound effects. category: "music" | "sfx". Returns track ids for add_music_track / add_segment_sfx.
- `get_credit_balance` — 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.
- `get_pipeline_progress` — 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_ac…
- `get_project` — Fetch a project row — settings, voice config, default style, export URL.
- `get_script` — 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…
- `get_section_template` — 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.
- `get_segment_assets` — 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.
- `get_segments` — 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 a…
- `get_style` — Fetch 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 the…
- `get_video_url` — Download URL for the most recent completed export.
- `get_workflow_status` — 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…
- `list_assets` — 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 …
- `list_channels` — List your channels. Every project lives in a channel, which owns the reusable styles (art/narrative/director) that drive generation.
- `list_models` — 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…
- `list_music_tracks` — List the project's background music tracks (volume, loop, timing).
- `list_projects` — List projects in a channel.
- `list_provider_keys` — List registered BYOK providers (masked — only the last 4 characters).
- `list_scenes` — List the project's scenes (composition layers, durations, layout).
- `list_style_presets` — 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 inc…
- `list_styles` — 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.
- `list_voice_blocks` — List the project's voice blocks (per-speaker narration chunks) with their audio status and assigned voices.
- `list_voices` — 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.
- `view_image` — 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.
- `whoami` — 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.
- `activate_script_version` — 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 fo…
- `add_music_track` — 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 …
- `add_segment_sfx` — 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.
- `change_segment_type` — 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.
- `combine_segments` — 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.
- `create_asset` — 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.
- `create_channel` — 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.
- `create_project` — Create 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. T…
- `create_style` — Create 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 usabl…
- `generate_asset_reference` — 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 (…
- `generate_script` — Generate the project's script from its description/concept and the channel's narrative style. Async — returns {job_id}; poll get_workflow_status.
- `generate_segments` — 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, an…
- `generate_storyboard` — 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…
- `generate_style_template` — 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 referen…
- `generate_voiceover` — 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)…
- `project_director_note` — 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 affect…
- `remove_segment_sfx` — 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).
- `rescan_voice_blocks` — 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 generat…
- `revise_script` — 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. Synchronous — returns {revised_te…
- `save_script` — Save script text (your own draft, or an edited version of the generated one — saving creates a new version, old versions are kept). Run scan_script afterwards so assets and voice blocks reflect the new text.
- `set_character_voice` — 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.
- `set_narrator_voice` — 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.)
- `set_project_style` — 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.
- `set_provider_key` — 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.
- `set_segment_continuation` — 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 clea…
- `split_segment` — 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. Later segments renumber — re-check get_segments before further edits.
- `update_asset` — Rename an asset and/or rewrite its description. If the look changed, regenerate its reference image afterwards so renders match.
- `update_caption_config` — 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.
- `update_music_track` — Tweak a music track. fields keys: name, volume (0-1), loop, start_frame, duration_frames, position, trim_start_frame, trim_end_frame.
- `update_project` — Patch project fields. Updatable: title, description, asset_mix, 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.…
- `update_segment_content` — 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…
- `update_style_fields` — 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 the FULL flat dict to write: {key: {"value": str, "applies_to": [...]}} (fetch with get_st…
- `update_voice_block` — 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.

## Related servers

- UnClick (1662 tools) — https://policylayer.com/tools/io-github-malamutemayhem-unclick-mcp-server.md
- Delx Protocol — Agent Recovery & Continuity (1076 tools) — https://policylayer.com/tools/io-github-davidmosiah-delx-protocol.md
- Delx Mcp A2a (1068 tools) — https://policylayer.com/tools/io-github-davidmosiah-delx-mcp-a2a.md
- MCP Framework Personal (912 tools) — https://policylayer.com/tools/inggerman-mcps.md
- Nodebench (824 tools) — https://policylayer.com/tools/io-github-homenshum-nodebench.md
- Delx MCP Server (740 tools) — https://policylayer.com/tools/io-github-davidmosiah-delx-mcp-server.md
- Binance MCP Server (734 tools) — https://policylayer.com/tools/nirholas-binance-mcp.md
- Eda Agent (726 tools) — https://policylayer.com/tools/eda-agent.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=com-framesail-framesail · API: https://policylayer.com/registry/api · Recommended policies for every tool: https://policylayer.com/policies/com-framesail-framesail
