FramedeoFramedeo

Model Context Protocol

Direct a complete product film from your AI agent.

Connect Claude, Gemini, OpenCode, ZeroClaw or another MCP client to Framedeo. Give it a product URL and real media; get back an editable, narrated film and an authenticated download link.

MCP /mcp Health /health33 tools

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.

Remote endpoint
https://framedeo.com/mcp
Authorization: Bearer $FRAMEDEO_API_TOKEN

Keep the token in an environment variable or your client’s secret store. Never commit it to a config file.

Remote HTTP or local stdio?

Streamable HTTP

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/mcp
Local stdio

Best 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.js

Clients

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.

Snippet
claude mcp add --transport http --scope user \
  --header "Authorization: Bearer $FRAMEDEO_API_TOKEN" \
  framedeo https://framedeo.com/mcp

Gemini CLI

The longer client timeout lets Framedeo return a render id before the client gives up listening.

Snippet
gemini mcp add --scope user --transport http \
  --header "Authorization: Bearer $FRAMEDEO_API_TOKEN" \
  --timeout 900000 \
  framedeo https://framedeo.com/mcp

OpenCode V2

V2 keeps named connections under mcp.servers. oauth: false is required because Framedeo currently uses a session bearer.

Snippet
{
  "$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.

Snippet
[[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.

  1. 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" }
  2. 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." }
  3. 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" }
  4. 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" }
  5. 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_…" }
  6. 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_…" }
  7. 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 }
  8. 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." }
  9. 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.

InputLimitNotes
Product URL2,048 charactersName and description are inspected from the real page.
Logo5 MBSafe SVG, PNG, JPEG, WebP or AVIF; transparency works best.
Product screenshot15 MBComplete, readable product evidence; up to 20 captures per film. Also used by screenshot compositions.
Editorial image15 MBPNG, JPEG, WebP or AVIF for animated image compositions.
Product video80 MBVideo MIME types such as MP4, MOV or WebM.
Voice-over / audio50 MBAttach narration before generation so beats follow its timing.
Music upload60 MBUse 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.
Example request
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.

SKILL.md
---
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_export

Reference

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.

Ready to direct a film?

Connect your agent, then give it the URL and the outcome you want.

Get started