Quickstart
Intent to rendered video in five calls over MCP.
CueFrame is async-first. Every long-running step returns a job you poll with
wait_job, or you register a webhook (compose.complete, render.complete,
media.ready). The curated MCP tools below map one-to-one onto the REST surface
in the API reference.
Ingest
Mint a project, then get media in. import_media pulls from a public URL;
generate_media creates it from a prompt. Both are async.
const { id: projectId } = await create_project({
name: "launch clip",
format: { aspectRatio: "9:16", resolution: "4k" },
});
const { id: mediaId } = await import_media({
url: "https://example.com/interview.mp4",
filename: "interview.mp4",
contentType: "video/mp4",
});get_media_context(mediaId) returns detected faces and the transcript, so your
reframing, captions, and timing line up with what's actually in the footage.
Compose
Seed the composition with apply_composition — add the media as a clip and
express intent (reframe to follow the speaker, captions, ordering). Pass
dry_run: true to validate a batch for free without persisting.
await apply_composition({
projectId,
ops: [
{ type: "clip.add", newTrack: true, clip: { /* media clip + reframe */ } },
],
});Then let the Director author from your seeded composition — it drafts an ensemble of candidates, runs the server-side judge, and saves the winner.
const { composeJobId } = await create_composition({
projectId,
fromComposition: true,
});
const winner = await wait_job({ kind: "compose", id: composeJobId, projectId });Clipping a long video instead? Run
trigger_suggestionson the media, thencreate_composition({ suggestionId })— the two paths are mutually exclusive.
Render
Queue the render and wait for the MP4 download URL.
const { id: renderId } = await create_render({
projectId,
format: { aspectRatio: "9:16", resolution: "4k" },
});
const { downloadUrl } = await wait_job({ kind: "render", id: renderId, projectId });Re-render the same composition to any other aspect ratio — the variant is baked from the same authored truth, so you ship every platform from one compose.