Lumora for coding agents
Lumora turns screenshots and screen recordings into cinematic product demo videos. Agents can do everything a person can in the editor through MCP or the REST API.
Connect
| Client | How |
|---|---|
| Claude Code (remote MCP) | claude mcp add --transport http lumora https://lumora.video/mcp --header "Authorization: Bearer lum_..." |
| Claude Code (plugin) | /plugin install lumora@lumora after adding the Lumora plugin marketplace |
| Codex | codex plugin add lumora@lumora, or [mcp_servers.lumora] url = "https://lumora.video/mcp" with bearer_token_env_var = "LUMORA_API_KEY" in ~/.codex/config.toml |
| Claude Desktop | Open lumora.mcpb and enter your Lumora URL and API key |
| Any MCP client (streamable HTTP) | https://lumora.video/mcp with Authorization: Bearer <API key> |
Create an API key in Lumora under Account settings → API keys for agents.
Tools
| Tool | What it does |
|---|---|
list_styles |
Looks, camera styles, effects, palettes, caption styles, devices, voices and export formats |
upload_media |
Upload a screenshot, recording or music track (local path, URL or base64) |
create_video |
Create a video from a spec or a one-line brief (AI direction writes callouts, script and CTA) |
update_video |
Change any part of the spec |
get_video, list_videos |
Read specs back |
preview_frame |
Render one frame as an image to check framing before rendering |
render_video |
Render MP4, GIF or WebM and return a share link |
render_status |
Poll a render |
save_brand_kit |
Save the team's logo, colours, music and call to action; use it with brandKit in create_video (Team plan) |
Video spec (example)
{
"name": "Pulse 2.4 release",
"media": { "url": "/uploads/<id from upload_media>.png" },
"title": "Churn alerts",
"brief": "Pulse now alerts you when churn spikes",
"look": "Launch day",
"format": "landscape",
"script": "Pulse 2.4 watches churn for you. When it spikes, you hear about it first.",
"voice": true,
"captions": "pop",
"device": "macbook",
"cta": { "text": "Try Pulse", "url": "https://example.com" }
}
Upload media first with upload_media (a URL or base64 on the hosted server) and pass the returned /uploads/... URL, or pass "website": "https://yourproduct.com" instead and Lumora screenshots the page and takes its colours, font, name and icon. "launchFilm": true turns the demo into a launch film (name inside the letters, card deal, logo lockup, call to action); shots places full-frame shots yourself, sfxStyle (minimal, soft, punchy) sets how the sound effects hit, and the result's filmCheck lists what to fix before rendering. render_video takes music: false and package: true (a zip of clips, audio stems, captions and a timeline for further editing). Formats are landscape, vertical and square. Call list_styles for the current option names. A typical release flow: build the feature, screenshot the changed screen, create_video with a brief from the changelog entry, preview_frame at the middle, render_video, then post the share link in the release notes.
REST API
The same operations are plain HTTP under https://lumora.video/api: GET /api/catalog, POST /api/videos, PATCH /api/videos/:id, GET /api/videos/:id/frame?t=, POST /api/videos/:id/render, GET /api/jobs/:id, POST /api/upload/url, POST /api/capture.