Start here
Quickstart
The hosted endpoint is the simplest connection. Create an API key in Framedeo (Projects → API keys), pass it with every request, then ask the agent to create the film in the order shown below.
https://framedeo.com/mcp
Authorization: Bearer $FRAMEDEO_API_TOKENKeep the token in an environment variable or your client’s secret store. Never commit it to a config file.
Remote HTTP or local stdio?
Best for the hosted service. Send uploads by public HTTPS URL or base64 and use the authenticated download URL returned by export.
https://framedeo.com/mcpBest for an authorized local installation. It may read path and write save_to because it runs on your own machine.
node /absolute/path/apps/mcp/dist/stdio.jsClients
Connect your agent
These examples use the hosted HTTP transport. Replace the example token with an API key from Projects → API keys and keep the 15-minute client timeout where the client supports it.
Claude Code
Put every option before the server name. Use project scope instead of user scope when the connection should stay with one project.
claude mcp add --transport http --scope user \
--header "Authorization: Bearer $FRAMEDEO_API_TOKEN" \
framedeo https://framedeo.com/mcpGemini CLI
The longer client timeout lets Framedeo return a render id before the client gives up listening.
gemini mcp add --scope user --transport http \
--header "Authorization: Bearer $FRAMEDEO_API_TOKEN" \
--timeout 900000 \
framedeo https://framedeo.com/mcpOpenCode V2
V2 keeps named connections under mcp.servers. oauth: false is required because Framedeo currently uses a session bearer.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"timeout": { "execution": 900000 },
"servers": {
"framedeo": {
"type": "remote",
"url": "https://framedeo.com/mcp",
"oauth": false,
"headers": {
"Authorization": "Bearer {env:FRAMEDEO_API_TOKEN}"
}
}
}
}
}ZeroClaw
Defining the server is not enough: the agent also needs the MCP bundle grant. Restart the affected agent session after changing it.
[[mcp.servers]]
name = "framedeo"
transport = "http"
url = "https://framedeo.com/mcp"
headers = { Authorization = "Bearer fd_live_..." }
tool_timeout_secs = 600
[mcp_bundles.video]
servers = ["framedeo"]
[agents.assistant]
mcp_bundles = ["video"]Claude Desktop and other MCP clients
In Claude Desktop, add the hosted endpoint through Settings → Connectors. For any other client, configure a remote MCP server with URL https://framedeo.com/mcp and header Authorization: Bearer <token>. The request must accept both application/json and text/event-stream.
End to end
The film workflow
Order matters. Template, narration and music shape the generated beats, while export always renders the last saved version of the project.
- 01
Inspect the product URL
Read the real page first. Framedeo returns its title, site name and description so the film starts from evidence, not a guess.
framedeo_inspect_url { "url": "https://acme.com" } - 02
Write the brief and create the project
Add creative direction when you have it. With no custom instructions, AI mode writes a grounded brief from the inspected page automatically.
framedeo_create_project { "url": "https://acme.com", "ai_instructions": "A calm 30-second launch film for developers." } - 03
Upload the real media
Attach product screenshots as evidence and editorial images for animated compositions. Their roles stay separate through generation and Studio.
framedeo_upload_image { "project_id": "prj_…", "url": "https://cdn.acme.com/customer-photo.jpg" } - 04
Choose the template
List the live catalogue, then choose an id—or clear it for an AI-planned structure. A template fixes the beat spine, cuts, plate and typographic voice.
framedeo_choose_template { "project_id": "prj_…", "template_id": "problem-hinge-proof" } - 05
Create the voice-over
Draft and review the script before synthesis, then select a voice or upload a recording. The film is cut to the narration, so attach it before generation.
framedeo_set_voiceover { "project_id": "prj_…", "script": "…", "voice_id": "v_…" } - 06
Choose the music bed
Filter the library by mood and check its licence, or upload a track you have the right to use. The mix automatically sits beneath narration.
framedeo_set_music { "project_id": "prj_…", "track_id": "trk_…" } - 07
Generate the motion
Generation plans the beats, places each capture where it is relevant and composes every shot. A logo is required before the job can start.
framedeo_generate_film { "project_id": "prj_…", "wait": true } - 08
Read and edit scenes
Read the beat list before editing, name the shot you want to change, and describe one clear change. Edits save by default.
framedeo_edit_film { "project_id": "prj_…", "shot_id": "station-a", "instruction": "Hold the dashboard two seconds longer." } - 09
Export and download
Render the saved film as H.264, ProRes, WebM or a PNG sequence. The result includes its status, file name, byte size and authenticated download URL.
framedeo_export_film { "project_id": "prj_…", "quality": "final", "resolution": "1080p", "format": "h264" }
Media
Inputs, sources and limits
Every upload accepts exactly one source: path, url or base64. Local paths work only with stdio. Remote HTTP deliberately refuses them so it never reads files from a shared container.
| Input | Limit | Notes |
|---|---|---|
| Product URL | 2,048 characters | Name and description are inspected from the real page. |
| Logo | 5 MB | Safe SVG, PNG, JPEG, WebP or AVIF; transparency works best. |
| Product screenshot | 15 MB | Complete, readable product evidence; up to 20 captures per film. Also used by screenshot compositions. |
| Editorial image | 15 MB | PNG, JPEG, WebP or AVIF for animated image compositions. |
| Product video | 80 MB | Video MIME types such as MP4, MOV or WebM. |
| Voice-over / audio | 50 MB | Attach narration before generation so beats follow its timing. |
| Music upload | 60 MB | Use only audio you have the right to publish. |
The MCP reader has an 80 MB absolute ceiling. For remote uploads, prefer public HTTPS URLs for large files; base64 adds roughly one-third to the payload size. Private-network, loopback and credential-bearing media URLs are blocked.
Agent behavior
Instructions for AI
Framedeo sends workflow guidance to the client before the model sees the tool list. If your client supports custom instructions, reinforce these rules:
- Inspect the product URL before creating an AI-directed project.
- Use only claims, figures, names and logos grounded in the page or uploads.
- Upload the brand mark and real product screens before generation.
- Keep screenshots separate from editorial images: only editorial images may be cropped inside image compositions; screenshot compositions move the camera and keep every capture whole.
- When requested, choose one of mosaic window flow, photo constellation, split word media, card detail morph, folio marquee, spotlight carousel or flipbook rush for images, macro pullback, swing tour, depth cascade or tilted scroll for screenshots, and caret close-up, iris prompt or glow trace for a typed search; each remains an editable group in Studio.
- Choose the template, voice-over and music before generating the film.
- Read the beat list before editing and name a real shot id when possible.
- Remember that export renders the saved project, not an unsaved preview.
- If a wait times out, resume it—the generation or render continues running.
Turn https://acme.com into a 30-second launch film.
Use the attached logo and dashboard screenshot. Choose a clean technical
template, write a calm voice-over, add minimal music, generate the motion,
tighten scene three, then export H.264 at 1080p and return the download link.Skill specification
Agent skill (SKILL.md)
Save this file as SKILL.md in your agent’s skills or instructions folder (such as .agents/skills/framedeo/SKILL.md or your client’s custom instructions / rules directory) to give any AI assistant the 9-step workflow, ordering constraints and 33-tool reference.
---
name: framedeo
description: Direct, generate, edit, and export complete product films using Framedeo MCP tools. Use when creating launch videos, product demos, feature explainers, or marketing clips from a URL, brand logo, screenshots, and editorial images.
---
# Framedeo MCP Skill
Direct complete, narrated product films using Framedeo's 33 Model Context Protocol (MCP) tools. A product URL and real captures go in; an editable, rendered video file comes out.
## Server Connection
- Hosted HTTP endpoint: https://framedeo.com/mcp
- Authentication: Authorization: Bearer $FRAMEDEO_API_TOKEN
- Health check: https://framedeo.com/health
### Quick Connect (Claude Code)
```bash
claude mcp add --transport http --scope user \
--header "Authorization: Bearer $FRAMEDEO_API_TOKEN" \
framedeo https://framedeo.com/mcp
```
## Essential Rules
1. Grounded truth only: Never invent claims, user counts, logos, or quotes. Every beat must be vouched for by the inspected URL, user instructions, or uploaded captures.
2. The film is cut to the voice-over: Motion beats and cut points sync to the narration. You MUST attach the logo, template, voice-over, and music before calling framedeo_generate_film.
3. Logo is mandatory: Brand mark (framedeo_upload_logo) is required before generation will run.
4. Read before editing: Always call framedeo_read_film to inspect generated shots and beat IDs before issuing edits with framedeo_edit_film.
5. Exports render the saved project: framedeo_edit_film auto-saves. If manually editing DSL, save via framedeo_save_film before exporting.
6. Resume timeouts: Film generation and rendering happen asynchronously on the server. If a request times out, resume waiting with framedeo_wait_for_film or framedeo_get_export.
7. Keep media roles separate: framedeo_upload_screenshot is for complete, readable product UI. framedeo_upload_image is for editorial media that may be cropped and animated by a composition preset.
## 9-Step Director Workflow
1. Inspect URL:
framedeo_inspect_url { "url": "https://example.com" }
2. Create Project & Brief:
framedeo_create_project {
"url": "https://example.com",
"ai_instructions": "30-second crisp launch video focusing on developer ergonomics."
}
3. Upload Brand Assets & Captures:
framedeo_upload_logo { "project_id": "prj_...", "url": "https://example.com/logo.svg" }
framedeo_upload_screenshot { "project_id": "prj_...", "url": "https://example.com/dashboard.png" }
framedeo_upload_image { "project_id": "prj_...", "url": "https://example.com/customer-photo.jpg" }
Editorial images may drive mosaic-window-flow, photo-constellation, split-word-media, card-detail-morph, folio-marquee, spotlight-carousel or flipbook-rush when the brief or reference clearly calls for one. They remain editable Studio groups with assets, direction, stagger, intensity, duration, crop, seed and exit controls.
Product screenshots may drive the screenshot compositions macro-pullback, swing-tour, depth-cascade or tilted-scroll the same way: the camera frames each capture, which is never cropped.
Search compositions need no upload: caret-close-up, iris-prompt or glow-trace draw a search field that types the query a customer would type, up to the click. Ask for the moment in the brief.
4. Choose Film Template:
framedeo_list_templates { "project_id": "prj_..." }
framedeo_choose_template { "project_id": "prj_...", "template_id": "problem-hinge-proof" }
5. Draft & Set Voice-Over Narration:
framedeo_write_voiceover_script { "project_id": "prj_...", "target_seconds": 30 }
framedeo_set_voiceover { "project_id": "prj_...", "script": "...", "voice_id": "v_..." }
6. Choose & Set Music Bed:
framedeo_list_music { "mood": "tech" }
framedeo_set_music { "project_id": "prj_...", "track_id": "trk_..." }
7. Generate Motion:
framedeo_generate_film { "project_id": "prj_...", "wait": true }
8. Read Film & Refine Shots:
framedeo_read_film { "project_id": "prj_..." }
framedeo_edit_film {
"project_id": "prj_...",
"shot_id": "station-a",
"instruction": "Hold the dashboard two seconds longer."
}
9. Export Film & Download:
framedeo_export_film {
"project_id": "prj_...",
"quality": "final",
"resolution": "1080p",
"format": "h264"
}
## Tool Reference Index
- Projects: framedeo_inspect_url, framedeo_write_brief, framedeo_create_project, framedeo_list_projects, framedeo_get_project, framedeo_delete_project
- Assets: framedeo_upload_logo, framedeo_upload_image, framedeo_upload_screenshot, framedeo_upload_video, framedeo_upload_audio, framedeo_list_assets, framedeo_set_images, framedeo_set_screenshots
- Templates & Audio: framedeo_list_templates, framedeo_choose_template, framedeo_list_voices, framedeo_write_voiceover_script, framedeo_set_voiceover, framedeo_upload_voiceover, framedeo_remove_voiceover, framedeo_list_music, framedeo_set_music, framedeo_upload_music, framedeo_remove_music
- Generate & Edit: framedeo_generate_film, framedeo_wait_for_film, framedeo_read_film, framedeo_edit_film, framedeo_save_film
- Export: framedeo_export_film, framedeo_get_export, framedeo_download_exportReference
All 33 tools
Parameters use snake case. Each tool returns a short readable response for the model plus structured data under result. Recoverable failures are returned in-band so the agent can act on them.
Projects
framedeo_inspect_url- Read a product page and return its name and description.
framedeo_write_brief- Draft grounded AI instructions before creating anything.
framedeo_create_project- Create an AI-directed project from a URL or an empty project by name.
framedeo_list_projects- List the account’s projects, newest first.
framedeo_get_project- Read generation status, selected inputs and progress.
framedeo_delete_project- Remove a project from the studio after confirmation.
Assets
framedeo_upload_logo- Attach the brand mark required by generated films.
framedeo_upload_image- Add an editorial image for animated compositions.
framedeo_upload_screenshot- Add a product capture for visual placement.
framedeo_upload_video- Add a short screen recording as a shot source.
framedeo_upload_audio- Store a sound effect or other timeline audio.
framedeo_list_assets- List the attached logo, screenshots and editorial images.
framedeo_set_images- Choose the editorial images composition presets may use.
framedeo_set_screenshots- Choose and order the captures generation should consider.
Template and sound
framedeo_list_templates- List the live template catalogue and optional beat details.
framedeo_choose_template- Set the film structure before generation.
framedeo_list_voices- List narration voices available to the account.
framedeo_write_voiceover_script- Draft narration to a target duration without recording it.
framedeo_set_voiceover- Synthesize and attach the reviewed narration.
framedeo_upload_voiceover- Attach an existing narration recording.
framedeo_remove_voiceover- Detach narration; regenerate to change film timing.
framedeo_list_music- Browse music by mood with licence information.
framedeo_set_music- Attach a library track as the music bed.
framedeo_upload_music- Attach a licensed track of your own.
framedeo_remove_music- Detach the current music bed.
Generate and edit
framedeo_generate_film- Queue the film and optionally wait until it is ready.
framedeo_wait_for_film- Resume waiting for a generation already in progress.
framedeo_read_film- Describe the saved film beat by beat.
framedeo_edit_film- Edit a shot or the whole film using plain instructions.
framedeo_save_film- Validate and save a complete Motion DSL document.
Export
framedeo_export_film- Render the saved film and return its download details.
framedeo_get_export- Read a render’s status, file name, size and URL.
framedeo_download_export- Download a finished render from a local stdio server.
Recovery
Troubleshooting
Credentials are missing or expired
Create a fresh API key in Framedeo (Projects → API keys) and restart a local stdio server. For HTTP, confirm that the proxy forwards Authorization or X-Framedeo-Token unchanged.
A generation or export exceeded the timeout
The job keeps running. Resume with framedeo_wait_for_film or framedeo_get_export using the returned render id.
A local path was refused
The server is remote. Send the asset as a public HTTPS URL or base64, or connect through local stdio when the agent needs access to your disk.
The export contains an older version
Export renders the saved document. Confirm the saved beats with framedeo_read_film; note that save: false previews an edit without writing it.
The MCP endpoint returns a protocol error
Use exactly /mcp and send an Accept header containing both application/json and text/event-stream. Use /health only for process health checks.
Connect your agent, then give it the URL and the outcome you want.