AI-powered video & image production server — prompt in, on-brand rendered media out.
https://159-203-115-164.nip.io/mcpPoint any MCP-capable client (claude.ai custom connector, Claude Desktop, Cowork) at the endpoint above. On claude.ai: Settings → Connectors → Add custom connector, paste the MCP URL. Then ask it to "make a launch video for my product" — it has every tool listed below, from brand extraction through generation, editing and rendering.
You'll need a tenant id and access token from whoever runs this server — the server owner configures those.
The Quotient Recorder Chrome extension captures a tab + your voice (and camera), and this server assembles it into a branded, captioned, auto-edited film — no editor required.
⬇ Download the extension v0.29.0
The popup shows its version in the header — if it doesn't match the one above, re-download and reload the unpacked folder.
chrome://extensions, enable Developer mode,
click Load unpacked and pick the unzipped folder. Pin it.| Tool | Description |
|---|---|
add | Add a scene to a project, or a component to a scene. If scene_id is provided, adds a component to that scene. Otherwise adds a new scene. |
audio | Add, update, or remove audio tracks (voiceover, music, SFX) on a project. For voiceover tracks, provide 'text' instead of 'source' to auto-generate TTS. Use sync_points with scene_id to store timing markers in a scene's audio_hints. |
brand | Get, set, or extract a tenant's brand kit (colors, fonts, logo, style, assets). Pass a url to extract + store the brand kit from a website. Pass no fields to get the current brand kit. Pass fields to update. |
capture | Capture a screenshot of a URL. Can save as a project asset or create an image-showcase component from it. |
create | Create a new media project (video, image, presentation, one-pager, slideshow, gif, social) |
delete | Delete a project, scene, component, or brand asset. Infers the target from the IDs you provide: project_id + scene_id + component_id removes a component; project_id + scene_id removes a scene; project_id alone deletes the whole project. Set target='brand' with asset_names to remove brand assets from the tenant kit. This is the safe, explicit counterpart to add/update. |
edit_speaker | Edit the TALK TRACK of a narrated recorder film. action='cut' removes a span of FILM time from the speaker: the voice loses it, the film shortens, captions ripple -- and the SCREEN keeps every frame (its map re-fits through pins; only the camera bubble mirrors the cut so lips match). action='restore' gives a previous cut's time back. action='list' shows the speaker clip and its cuts, each with the film-time seam where it sits, so you can pick what to restore. Times are FILM seconds -- what the Studio timeline shows. Use for requests like 'cut the dead air at 1:16' or 'remove where I said um'. |
extract_brand_from_website | Extract design tokens (colors, typography, spacing, radius, shadows, motion, patterns) from a live website URL. Optionally enhances with LLM analysis. With include_images, also crawls the site (entry page + interior product/feature pages), downloads product/background imagery, captions each with a vision LLM, and stores them as described brand assets. Merges everything into the tenant's brand kit. |
generate | Generate media from a natural language prompt. THE GOLDEN WORKFLOW (how every good film here was made): (1) generate -> you get a STORYBOARD, not a film; (2) iterate the storyboard round and round with mode='storyboard' + feedback until every beat is right -- this is the cheap, fast loop, spend your revisions HERE; (3) build the scenes ONCE with mode='full' + project_id; (4) after that only small tweaks (update/revise/Studio), then render. For video targets mode defaults to 'storyboard' -- generating a film cold stops at the storyboard on purpose; building is a deliberate second call. Pass mode='full' explicitly to build in one shot (quick drafts, fire-and-forget). Non-video targets (image, component, scene revisions) are one-shot as before. Rendering to MP4 is the separate render tool. Recorder films (screen recordings from the Quotient Recorder extension) assemble automatically on upload and get a SPEAKER lane -- edit their talk track with edit_speaker, not by regenerating. |
generate_clip | Generate a standalone AI video clip with Veo (diffusion video) from a text prompt -- a talking-head take (Veo generates the VOICE too: put the spoken line in quotes inside the prompt), a branded shot no stock library has, or b-roll to attach to a project later. Async: returns a job_id to poll with get(target='job'); the completed job carries download_url, and the clip is saved as a tenant brand video asset so it can be referenced in briefs/uploads. Clips are ~8 seconds. ASSET MODES: mode='cutout' post-processes a frame into a TRANSPARENT PNG sticker (prompt flat sticker art 'centered on a plain solid green background, static shot'); mode='texture' into a neutral high-passed surface tile (prompt 'extreme close-up macro photograph of <surface>, filling the frame, static'). Both save the still as a brand image asset alongside the clip. Requires GEMINI_API_KEY on the server. |
generate_presenter | Generate a consistent AI presenter delivering a FULL SCRIPT (script-to-presenter). Splits the speech into ~8s Veo takes at sentence boundaries, anchors every take to a reference frame from take 1 (same face/framing/light; voice consistency is best-effort), whisper-verifies each take, and stitches them into ONE clip saved as a tenant brand video asset -- ready to pass to generate as speaker_source for a speaker-led film. Async job; caps at 8 takes (~60s of speech). Requires GEMINI_API_KEY. |
get | Get a project's state, tenant brand kit, a single scene, or a scene's MEASURED layout. Pass project_id for project, 'brand_kit' target for brand kit, project_id + scene_id for a single scene. target='layout' (with project_id + scene_id, optional selector) renders the scene headless and returns real element boxes, container chains, video intrinsic sizes and object-fit crop math, plus plain-English warnings -- use it to diagnose WHY something looks wrong (e.g. "video runs over the frame") before writing a revise instruction. |
job | Check or wait for any async job (generate, render). action=status to poll, action=wait to block until done or timeout, action=list to list jobs for a tenant. |
list | List projects for a tenant, or available component types. Pass target='components' to see the component catalog. |
regenerate_asset | Re-run a generated image asset in place using its stored generation params (prompt, model, size, quality) -- optionally with a tweak -- without rebuilding the whole video. Writes a new version, re-wires the scene that uses it, and saves. Re-render the project to see the new asset in the video. |
render | Render a project to its output format, or render a single scene as a preview image (pass scene_id). ITERATE BEFORE YOU RENDER -- the cheap-to-expensive ladder: (1) paper-edit the beats and get sign-off, (2) proof layout with single-scene stills (scene_id), (3) review motion LIVE in the project's studio_url (every project response includes it; Studio plays scenes in the browser with no render), (4) first full motion pass with quality:'preview' (lower fps, much faster), (5) production render only to ship. A production render captures every scene frame-by-frame (~2min/scene cold; unchanged scenes are free via the scene cache). NEVER edit a project while its render job runs. |
reorder | Reorder scenes in a project by providing scene IDs in the desired order |
revise | Surgically revise ONE scene from a natural-language instruction. Patches the scene's codegen source (fast SEARCH/REPLACE), versions the prior source, and re-runs the fast legibility/runtime gates. Pass `element` to scope the change to a selected element; omit it to revise the whole scene. For a full from-scratch redo of a scene use generate with target='scene'. |
update | Update a project, scene, component, or storyboard. Infers target from which IDs are provided. Use provide_asset to upload assets for a storyboard scene. Use storyboard to directly edit the storyboard. |
upload | Upload an asset (image, video, audio) to a project or to the tenant brand kit. Set target='brand' to upload a brand asset. |
website_to_video | One-shot: turn a website URL into an on-brand, rendered launch video. Extracts the brand kit from the URL (colors, fonts, logos, theme), generates scenes, and renders -- in a single async job. Returns a job_id; poll with get(target='job'). |