Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

CueFrame

REMOTE · API.CUEFRAME.AI

Turn footage into finished video: reframing, captions behind the subject, motion graphics, renders.

Available components

+3 this week 86 Trust /100

Last scanned (10 hours ago)

Scores higher than 93% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Design and Media

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security89
Transport & Reachability100
Schema Quality & AI Usability74
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 22516 tokens (~210/item across 107 items; 107 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management70
  • Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage93
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 77% of tool parameters carry a description.Partial
  • Structured output schemas are declared (70% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 108 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 2 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Nov 26 0
    • Tool “apply_composition” rewrote its description, which is the text the model reads security
    • Tool coverage: 82% → 77% ▼ functional
    • Server version: 0.13.1 → 0.13.4-ea20261031.1 functional
    • New tool “acquire_registry_item” functional
    • New tool “create_template_package_upload” functional
    • New tool “describe_tool_input” functional
    • New tool “export_template_package” functional
    • New tool “get_registry_acquisition” functional
    • New tool “get_registry_item” functional
    • New tool “get_template_job” functional
    • New tool “get_template_package_download” functional
    • New tool “import_template_package” functional
    • New tool “refresh_registry_snapshot” functional
    • New tool “search_registry_items” functional
  • 30 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

  • 29 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “get_composition” rewrote its description, which is the text the model reads security
    • Tool “preview_frame” rewrote its description, which is the text the model reads security
    • Tool “apply_composition” now declares an output schema ▲ functional
    • Tool “get_composition” now declares an output schema ▲ functional
    • New prompt “cueframe-reference-video” functional
    • Server version: 0.12.0 → 0.13.1 functional
    • New tool “compare_frames” functional
    • “apply_composition” added an optional parameter “response” cosmetic
    • “get_composition” added an optional parameter “clipIds” cosmetic
    • “get_composition” added an optional parameter “dependencyKeys” cosmetic
    • “get_composition” added an optional parameter “response” cosmetic
    • “wait_job” added an optional parameter “imageIndices” cosmetic
  • 28 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

  • 26 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

  • 24 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://api.cueframe.ai/v1/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=api.cueframe.ai CN=WE1,O=Google Trust Services,C=US 10 Oct 2026 8 Jan 2027 ECDSA 256 ECDSA-SHA256 45851ae969a634b4137a79e2bed24c83
SANs: api.cueframe.ai
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of api.cueframe.ai. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
ai. present 1814, 3799 8, 8 Verified
cueframe.ai. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://api.cueframe.ai/.well-known/oauth-protected-resource"

Bearer resource_metadata="https://api.cueframe.ai/.well-known/oauth-protected-resource"

Protected resource metadata

Document https://api.cueframe.ai/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://api.cueframe.ai/v1/mcp
Authorisation server https://api.cueframe.ai

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://api.cueframe.ai/v1/mcp Verified 200
http (plaintext) http://api.cueframe.ai/v1/mcp HTTPS enforced 301 https://api.cueframe.ai/v1/mcp
MCP tools · 107 exposed · ~18,710 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
acquire_registry_item ~185

Explicitly acquire a selected external candidate through the pinned maintained installer in disposable staging. Pass body:{snapshot,name,expectedManifestSha256,variables,commandId}; native author sessions supply their replay-stable top-level commandId automatically through the existing adapter. Keep the snapshot and manifest digest exactly as observed. The response owns immutable original/transformed bytes and dependency/installer provenance; it does not execute source, convert arbitrary HTML or mark it CueFrame compatible. Inspect the receipt with get_registry_acquisition, then author through existing admitted component/template operations with the acquisition receipt ancestry. Changed source versions remain provenance-pending until exact adaptation bytes are captured. Never force-overwrite authored work or use an upstream preview as a CueFrame preview.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
NameTypeReqDescription
candidateobject––
commandIdstring––
receiptRefobject––
warningsarray––

No examples provided.

apply_composition ~1,005

Atomically apply an array of CompositionOps to a project composition. All ops succeed or none do (transactional). Call describe_composition_ops without type for the compact operation list, then with a type for its exact JSON Schema. For negotiated component execution, read get_composition with componentExecutionVersions=["3","4"] and includeDependencies="true", then send componentExecutionVersions:[3,4] and that exact expectedBrandIdentity. A changed brand refuses the command; never refresh the witness to conceal a conflict. Explicit builtinSources selectors attach only the approved exact source pins referenced by the final composition. The additive `concurrency` envelope requires an endpoint confirmed to enforce guardedCompositionV1; unsupported hosted endpoints refuse it with unsupported_concurrency. Obtain dependency expectations from the observed composition; never rebuild a stale basis from current state. Every committing call REQUIRES `if_match`, the composition ETag from a fresh get_composition, or the `concurrency` envelope; a call with neither is refused with 428 precondition_required. On 409 stale_etag, read get_composition again and reconsider the batch against what changed; never copy the error's currentEtag into a retry without that read. `dry_run: true` validates without persisting. For negotiated component execution, EVERY dry-run and commit must still carry the observed `composition_id`, `concurrency:{mode:"exact",expectedRevision:<observed project revision>}` (or supported guarded dependency expectations), `componentExecutionVersions` and exact `expectedBrandIdentity`; retain the observed `if_match` too. Only non-negotiated legacy dry-runs may omit revision preconditions. Ops land on the project's ACTIVE composition unless you pass `composition_id` (mutually exclusive with `session_id`), which targets a specific one — that is how you author a second composition minted with new_composition and run an A/B. Use this to seed a composition (add media cl…

NameTypeReqDescription
bodyobjectyesPOST /projects/:id/composition/apply body — a batch of CompositionOps.
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
projectIdstringyesprojectId (path).
response––MCP response view. Default compact omits repeated source bodies. Full returns the complete backend receipt or requested sources. This does not change the saved composition.

Structured output declared, but exposes no named fields.

No examples provided.

apply_template ~194

Insert a resolved builtin component package into an existing project. Pass template as the selected builtin id and body with projectId, the resolved documentSha256, insert:{startTime,idPrefix}, parameter values and explicit media bindings. Read get_composition first and retain expectedRevision, commandId, componentExecutionVersions:[3,4] and expectedBrandIdentity as required by the contract. Insertion preserves existing timeline content and package source offsets. Select pinned samples explicitly with media:{slot:{sample:true}}, or bind real media IDs. Missing required media is refused; samples are never selected implicitly. A stale revision, pin or brand refuses; do not silently refresh the witness. For ordinary templates, this operation retains its existing apply behavior.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
templatestringyestemplate (path).
NameTypeReqDescription
componentsarray––
compositionIdstring––
etagstring––
projectIdstring––
templateIdstring––
versioninteger––
versionIdstring––

No examples provided.

cancel_compose ~113

Cancel an in-flight compose job (stop a runaway/mis-priced ensemble). Needs projectId + composeJobId (from compose). The director cancel is confirmed before the row flips; any linked charge is released. No-op-reject (422) if already terminal.

NameTypeReqDescription
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
composeJobIdstringyescomposeJobId (path).
projectIdstringyesprojectId (path).

No output schema declared.

No examples provided.

cancel_export ~95

Cancel an in-flight NLE export (fcpxml/premiere). Needs projectId + exportId (from the export enqueue). No-op-reject (422) if already terminal.

NameTypeReqDescription
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
exportIdstringyesexportId (path).
projectIdstringyesprojectId (path).

No output schema declared.

No examples provided.

cancel_job ~107

Cancel a running async job (verify / preview / brand-kit-extract) returned by an enqueue call — abort a mis-priced job instead of waiting out its TTL. For box-backed jobs the warm box is reaped best-effort; cancel never meters. No-op-reject (422) if already terminal.

NameTypeReqDescription
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
jobIdstringyesjobId (path).

No output schema declared.

No examples provided.

cancel_render ~87

Cancel an in-flight render (stop a runaway/queued job). Needs projectId + renderId (from create_render). No-op if already terminal.

NameTypeReqDescription
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
projectIdstringyesprojectId (path).
renderIdstringyesrenderId (path).

No output schema declared.

No examples provided.

compare_frames ~111

Compare a certified reference frame with an existing full-resolution PNG preview. Returns unaligned side-by-side and overlay images with exact source identities. Read editorial_run_source for the reference identity and preview_frame then wait_job for the candidate artifact. This call never rerenders or edits the composition. Frame numbers refer to the certified representation; use explicit event correspondence after intentional retiming. Optional views and identical-coordinate crop change only diagnostic evidence.

NameTypeReqDescription
bodyobjectyes–
projectIdstringyesprojectId (path).

Structured output declared, but exposes no named fields.

No examples provided.

compose ~257

Start an async Director compose job: it authors an ensemble of full composition candidates, verifies each, and saves the winner to the project. Body must set EXACTLY ONE source (mutually exclusive): `briefId` — author FROM a persisted Brief (the PLANNED path: create_brief first; every Brief field is honored or the compose is refused loudly naming the field); `fromComposition: true` — author from the project's CURRENT composition (the GENERAL path: seed it with apply_composition first — your media clips are the intent, and any graphics you authored are CARRIED VERBATIM as locked clips the Director authors around, never re-authors or drops); or `suggestionId` — author from an AI clip suggestion (the CLIPPING path, paired with suggest_briefs). Returns { composeJobId, status, streamUrl }. Then call wait_job(kind="compose", id=composeJobId, projectId=...) to block until the winner is selected.

NameTypeReqDescription
bodyobjectyesPOST /projects/:id/compose body.
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
projectIdstringyesprojectId (path).
NameTypeReqDescription
composeJobIdstring–Opaque compose job id; pass to the SSE stream URL.
projectIdstring––
reconciliationRequiredboolean––
statusstring–queued = normal; failed = startup failed and the job is already terminal (the SSE stream will emit a single `job_failed` frame and close).
streamUrlstring–Relative SSE endpoint to stream this job's events (per compose-api-contract.md).

No examples provided.

consult ~285

Ask the Director for editing advice on the project's CURRENT composition — it NEVER writes your composition (you stay the decider). Async: returns a consultJobId; then wait_job(kind="consult", id=consultJobId, projectId=...) surfaces the advisory envelope (assessment / proposals / principles / plan). `body.mode`: 'advise' = the planner agent (fast, ~30s-2min) returns a `plan` (framing/cuts/captions/graphics intents) as GUIDANCE you re-author from — no grounded scores, nothing to adopt; 'amend' (default) = the full author→judge→refine loop (minutes) returns a graded `assessment` + a fix candidate you ADOPT via select_candidate with its candidateIndex. ('explore' is coming soon → use amend.) `body.intent` = your goal in plain English; optional `body.focus` (editorial|spatial|brand|caption); `body.ifMatch` binds to your current etag. Use advise for a fast directional nudge, amend for a grounded, adoptable fix.

NameTypeReqDescription
bodyobjectyesPOST /projects/:id/consult body.
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
projectIdstringyesprojectId (path).
NameTypeReqDescription
consultJobIdstring–Opaque consult job id; poll it for the advisory result.
projectIdstring––
statusstring–queued = normal; failed = startup failed and the job is already terminal.
streamUrlstring–Relative SSE endpoint to stream this job's events.

No examples provided.

create_brand_kit ~181

Create or UPSERT a brand kit (re-POSTing the same kitId updates it in place — this is also the brand-kit UPDATE path). Sets fonts/colors/logo. This is brand step 0 of the workflow: author the kit, then bind it to a PROJECT so colors/fonts/motion theme the output AUTOMATICALLY — pass its kitId as brandKitId to create_project, or attach it to an existing project via update_project (PATCH /projects/:id over REST). Without a bound kit, create_render produces UNBRANDED output. Tenant-scoped (no project arg).

NameTypeReqDescription
bodyobjectyesPOST /brand-kits body. Org/user are server-resolved; never accepted from the body.
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
NameTypeReqDescription
audioobject––
captionsobject––
colorsobject––
contactSheetKeystring––
createdAtstring––
densityobject––
descriptionstring|null––
exemplarKeysarray––
extraColorsarray––
fontsobject––
idstring––
inspirationobject––
introobject––
logoobject––
motifsarray––
motionobject––
namestring––
outroobject––
sizingobject––
spacingobject––
styleRubricstring––
taglinestring|null––
updatedAtstring––
voiceGuidelinesstring|null––
watermarkobject––

No examples provided.

create_brief ~237

Persist the video's INTENT as a Brief — the Director's rich input contract (spec: the storyboard skill's output lands here). Fields: goal (required), audience, platform, format, durationSec, tone, cta, locale (output language — all on-screen copy + captions), hook, caption, beats[] (each with an editorial intent and optional MOMENT PINNING {mediaId, startSec, endSec} — honored to-the-frame or refused), mustIncludes, captions {styleId, emphasisPhrases} (the big-serif emphasis treatment), motionStyle, seededGraphics (your authored overlay/component/card clips, carried VERBATIM as locked clips — never re-authored), exclusions (hard negatives: graphic kinds the Director must NEVER author + 'no-transitions'), gates {holdAt, autoApprove}. Then compose it: compose with {briefId}. The response carries the QUOTE (compose + estimated render) — relay it to your human BEFORE composing.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
NameTypeReqDescription
audiencestring––
audioobject––
beatsarray––
captionstring––
captionsobject––
createdAtnumber––
ctastring––
durationSecnumber–Target output duration. HONOR-OR-REFUSE: compose validates it against the beat-source window (±1.5s) and refuses a brief it cannot honor.
exclusionsarray––
formatobject––
gatesobject––
goalstring–What the video must accomplish.
hookstring––
idstring––
kindstring–authored = create_brief; clip = minted by suggest_briefs from an AI clip suggestion.
localestring–Output language (BCP-47 tag, e.g. 'es-419'): ALL on-screen copy + captions.
motionStyleobject––
mustIncludesarray––
namestring––
platformstring––
projectIdstring––
quoteobject––
referencesarray––
seededGraphicsarray–Client-authored graphic clips the Director must carry VERBATIM: seeded into the design loop's base composition as LOCKED clips (never re-authored, never discarded).
sourceSuggestionIdstring–kind:'clip' provenance — the suggestion this Brief was minted from.
tonestring––
updatedAtnumber––

No examples provided.

create_checkout ~189

Top up the CURRENT org's credit wallet. Body { plan: "credit_pack_10"|"credit_pack_30"|"credit_pack_100" } → returns { url }: a hosted Stripe checkout page to open in a browser and confirm payment. There are no subscription tiers — a pack is a one-off top-up, and it is also the only thing that raises the generation (premium_credits) allowance. Always a URL — an existing saved card is NEVER charged silently; the human confirms on Stripe. The org is resolved from your key, never the body. Requires the billing:write scope. Only send a user here when get_account shows the relevant `balance` at or near zero. Discover the packs with list_plans.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
NameTypeReqDescription
intervalstring––
planstring––
productIdstring–Resolved billing catalog product id.
urlstring–Hosted Stripe checkout URL to open in a browser to complete payment. Always present on success — an existing saved card is never charged without confirming here.

No examples provided.

create_component ~398

Create and store a custom component for the tenant: a native scene that arranges its declared images and videos as tiles in 3D space. Returns the ComponentResponse (id + metadata) you can then reference from a composition. No project arg — components are tenant-scoped. SOURCE CONTRACT (version 4; the server instructions' Component Contract has the full rules and an example): send the complete source object {version:4, componentId, template, manifest, definition}. `template` is one sub-composition: a root <div id="root" data-composition-id="<componentId>" data-width data-height data-no-timeline data-composition-variables='…'> holding <div data-cf-scene></div>, and one inline script ending in __cfScene.mount({ root: document.getElementById('root'), component, variables: __hyperframes.getVariables() }). data-composition-variables is the definition's projection (scalar inputSchema properties, then manifest slots). The manifest is {version:4, runtime:'hyperframes', hfContract:1, kind:'scene', assets, graphics:{api:'webgl2',…}, alphaPolicy}; slots are image or video. The source is admitted before it is stored: template lint, determinism (no timers, Date, network or CSS animation) and the declaration are checked, and a refusal names the rule. A version-3 source is retired and refused as component_source_retired. Place it with execution {version:4, componentId, sourceVersionId, params, seed, assets:{ slot: mediaId }} and placement {version:3, kind:'clip'}; slots never travel in params.

NameTypeReqDescription
bodyobjectyesPOST /components body. Org/user are server-resolved; never accepted from the body.
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
NameTypeReqDescription
avoidWitharray–Authoring guidance: ids of primitives that CONFLICT with this one — do not place together.
brandBindingsarray–Params that can follow the project brand kit. Each {param, brandToken} says: set `param` to `brandToken` (a `$brand:` ref, e.g. '$brand:colors.accent') to track the brand instead of a literal. See th…
categorystring––
descriptionstring––
durationInFramesnumber––
ejectedFromstring––
examplesarray–Usage examples, as authored. A built-in primitive projects {name, mood?, params?, description?}; an authored component's examples are whatever it wrote, which is why the item is open. One shape for b…
fixedCopyarray–On-screen strings this primitive BAKES — the read-side counterpart to propSchema. These literals render REGARDLESS of params (no param can change them); fork the source via get_component_source to ed…
formatobject––
idstring–The entry's id: a `primitiveId` for a built-in, a `componentId` for an installed component.
intentstring–Selection signal: a verb naming what this primitive accomplishes (e.g. 'product-trailer'). Match it to the beat you are authoring.
kindstring–RENDER kind (component | transition | scene). NOT the ClipSource variant — see `placement` for how to author it on the timeline.
manifest–––
moodarray–Vibe/tone tags (e.g. 'cinematic', 'minimal'). Filter to match the edit's mood.
namestring––
originstring––
pairsWitharray–Authoring guidance: ids of primitives that COMPOSE well with this one in the same edit.
placementobject––
propDefaultsobject––
propSchemaobject––
sourcestring–'default' = built-in primitive (place by primitiveId); 'installed' = org-authored component (place by componentId).
subtextParamstring|null–The param field for secondary text (subtitle/byline); null = none.
tagsarray–Free-text search keywords.
textParamstring|null–The param field that carries this primitive's primary text; null = no single text slot.
tierstring–Quality/applicability RANKING (a preference, not a flag). Prefer 'recommended'; reach for 'niche' only when its specific use-case is exactly the beat.
tokensobject––
useCasearray–The edit ROLE(s) this primitive fills — the dimension to filter by for a beat (e.g. 'intro', 'title-over-footage', 'grade').
useWhenstring–When to use this — AND when not to. The negative guidance is load-bearing; read it before picking.
versionstring–The ENTRY's version: a semver string ('0.0.0' until an authored component is versioned). Distinct from `manifest.version`, which is the runtime contract version (4 native, 2 retired TSX).
warningsarray–Non-blocking save-time advisories — the create/update SUCCEEDED. Currently: a `fontFamily` string literal referencing a NON-vendored font (a bare CSS generic like 'serif', or an unknown named family…

No examples provided.

create_project ~171

Create a new project — the unit you compose and render into. compose / apply_composition / create_render / the preview family all require a projectId; this mints one. Pass name (required) plus optionally a format (aspectRatio/fps/resolution) and brandKitId. brandKitId binds a brand kit to the PROJECT (pass the kitId from create_brand_kit): colors/fonts/motion theme every render of this project automatically (omit it and the output is unbranded). Bind or change it later via update_project (PATCH /projects/:id over REST). Returns the ProjectResponse (id + metadata).

NameTypeReqDescription
bodyobjectyesPOST /projects body.
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
NameTypeReqDescription
activeCompositionIdstring|null––
brandKitIdstring|null––
compositionobject–Summary of a project's stored composition.
createdAtstring––
descriptionstring|null––
format–––
idstring––
lastRender––Most recent render for a project, if any.
namestring––
webUrlstring|null–A browser URL that opens THIS project, or null when CueFrame exposes no web view for a project. Null today: the console serves account surfaces (keys, usage, billing) and has no per-project page, so…

No examples provided.

create_render ~196

Queue an MP4 render of a project's composition (in a compose session, the session's scratch). Returns { id (renderId), status, warnings? } — `warnings[]` carries non-fatal advisories (omitted when none). The render themes from the project's brand kit (bind one via create_project / update_project with brandKitId — or PATCH /projects/:id over REST; without one the output is unbranded). Then call wait_job(kind="render", id=renderId, projectId=...) to block until the file is ready and get the download URL, or register a webhook (create_webhook on render.completed — status rides the payload).

NameTypeReqDescription
bodyobjectyesPOST /projects/:id/renders body.
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
projectIdstringyesprojectId (path).
NameTypeReqDescription
category––Failure taxonomy when status is `error`; null otherwise. `authoring` = deterministic defect in YOUR composition/request — fix it, retrying is futile; `transient` = temporary pipeline/infra failure —…
completedAtstring|null–ISO-8601 instant the render reached its terminal status (complete, error or cancelled); null while it runs. Pair with createdAt for the wall time.
compositionIdstring|null–The composition this render froze at create time (the project's active one, or the compositionId the request named). Null on renders minted before this was recorded.
createdAtstring––
engine––The render engine the row was minted for. Null on rows minted before the engine was recorded.
errorstring|null–Human-readable failure message. Pair with `errorCode` for a stable, machine-readable code an agent runner can branch on.
errorCodestring|null–Stable, machine-readable error code (e.g. `render_pipeline_unavailable`, `render_route_missing`, `render_pipeline_failed`). Null when status is not `error` or unavailable for an older render.
errorDetails––Structured failure context — `{ targetUrl?, upstreamStatus?, upstreamCode?, attemptedAt? }`. Surfaced so agent runners can distinguish operator-config issues from upstream-down vs route-missing witho…
format––The resolved output format the render was encoded at (aspectRatio, fps, resolution): the frozen composition's, after any create-time scale override. Null on legacy rows.
idstring––
listUsdnumber–A2 money stamp: the metered event's LIST price (USD), stamped at the success terminal (exports for deliverable renders, compose_capture for A8 previews). A plan allowance may zero the actual invoice…
outputDurationSecnumber|null–The output's length in seconds (the composition timeline's, or the preview window's), as billed. Null on legacy rows.
outputExpiresAtstring|null––
outputUrlstring|null––
preview––The scoped preview window when this is a preview_clip render; null for a full deliverable.
progressobject–Non-terminal render progress; phase is one of the worker's emitted stages.
retryableboolean|null–Whether re-attempting the SAME render can succeed (status `error`); null otherwise. true → call retry_render. false → deterministic (category authoring/internal); fix the composition first — retry_re…
statusstring––
updatedAtstring–ISO-8601 timestamp of the render's most recent progress update. Compute staleness = now − updatedAt to distinguish a wedged render from a slow one and decide whether to wait, cancel, or retry.
warningsarray–Non-fatal advisories surfaced at render-CREATE (omitted when none, and on GET — create-time only).

No examples provided.

create_template_package_upload ~139

Reserve a LOCAL portable CueFrame template package ZIP for import into the organization library. Supply idempotencyKey, archiveSha256 (exact lowercase SHA256) and archiveBytes (1..128MiB). Returns uploadId and a short-lived single PUT uploadUrl. PUT the exact raw archive bytes with Content-Type application/zip, then call import_template_package using uploadId. A reservation is not an import or a media item. Organization-library operation; project-bound editor credentials are refused.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
NameTypeReqDescription
contentTypestring––
expiresAtstring––
uploadIdstring––
uploadUrlstring––

No examples provided.

create_upload ~212

Ingest a LOCAL file — bytes you hold, when there is no public URL to hand import_media (prefer import_media whenever the bytes already sit at an https URL). TWO steps: (1) this tool reserves a media item and returns { id, uploadUrl, expiresAt } — a short-lived PUT URL. PUT the raw file bytes to uploadUrl over HTTPS with your declared Content-Type (≤ ~5 GB per PUT). (2) call finalize_upload({ mediaItemId: id }) to start processing. Body: filename, contentType (allowed enum), size (bytes). Thereafter it is async exactly like import_media: poll list_media for processingStatus, or register a webhook (create_webhook on media.completed). Use the returned id with get_media_context, suggest_briefs, or as a composition source.

NameTypeReqDescription
bodyobjectyesPOST /media upload initiation body.
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
NameTypeReqDescription
expiresAtstring––
idstring––
uploadUrlstring––

No examples provided.

create_webhook ~264

Register a webhook so long-running jobs notify you instead of blocking on wait_job — the right pattern for fan-out/async agents. Pass url + events — ONE terminal event per job kind with status INSIDE the payload (render.completed, compose.completed, media.completed, suggest.completed) plus checkpoint.ready (a held compose paused for review). DELIVERY: a POST { event, timestamp, projectId?, data } with Standard-Webhooks headers (webhook-id, webhook-timestamp, webhook-signature: v1,<base64>); the secret (whsec_<base64>) is returned ONCE — verify the RAW body with new Webhook(secret).verify(rawBody, headers). ACTIVATION is synchronous: CueFrame POSTs a signed webhook.verify challenge and your endpoint must reply 2xx echoing data.token — otherwise it returns status:"pending" and receives NO events (recover with verify_webhook, no delete/recreate). Read the cueframe://webhook-events resource (or GET /webhooks/events) for the full contract + every event's data shape BEFORE building your receiver.

NameTypeReqDescription
bodyobjectyesPOST /webhooks body.
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
NameTypeReqDescription
enabledboolean––
eventsarray––
idstring––
secretstring–Standard Webhooks signing secret, format `whsec_<base64>`. Returned ONCE at create; rotate = delete + recreate. Every delivery carries `webhook-id`, `webhook-timestamp` (unix seconds), and `webhook-s…
settleMsinteger––
statusstring–active = ownership verified + receiving events; pending = challenge not echoed, inactive.
urlstring––
verificationobject–Present ONLY when ownership verification did not complete (status:"pending"). CueFrame POSTs a signed `webhook.verify` challenge whose `data.token` your endpoint must echo in a 2xx to activate; `reas…

No examples provided.

delete_brief ~62

Delete a brief. Compose jobs already run from it are unaffected (they snapshot).

NameTypeReqDescription
briefIdstringyesbriefId (path).
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.

No output schema declared.

No examples provided.

delete_composition ~101

Delete a composition (and its version history) from a project. REFUSES the ACTIVE composition (409) — make another one active first, or delete the project. Use list_compositions to see which is active.

NameTypeReqDescription
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
compositionIdstringyescompositionId (path).
projectIdstringyesprojectId (path).

No output schema declared.

No examples provided.

delete_critic ~68

Delete a registered critic by its criticId. It stops running in the Director gates and score_composition immediately.

NameTypeReqDescription
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
criticIdstringyescriticId (path).

No output schema declared.

No examples provided.

delete_media ~80

Permanently delete a media item from your library (cleanup). Irreversible. Compositions referencing it will fail to render — only delete media no composition still needs.

NameTypeReqDescription
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
mediaItemIdstringyesmediaItemId (path).

No output schema declared.

No examples provided.

delete_project ~78

Permanently delete a project you created (cleanup). Removes its composition and render history. Irreversible — only call on a project you own and no longer need.

NameTypeReqDescription
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
projectIdstringyesprojectId (path).

No output schema declared.

No examples provided.

delete_webhook ~67

Delete a webhook subscription (stop receiving its deliveries). Irreversible — the signing secret is invalidated.

NameTypeReqDescription
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
webhookIdstringyeswebhookId (path).

No output schema declared.

No examples provided.

derive_composition ~241

Derive a reframed SIBLING composition for a different aspect ratio (the agent-native Auto-Reframe / Magic-Resize). Pass projectId + body { fromCompositionId, targetFormat: { aspectRatio, fps?, resolution? } }. CueFrame copies the source composition's authored intent and content-aware-reframes every clip for the new aspect (point/face/active-speaker focus), then saves a new independent composition in the same project. Returns { compositionId } — render it with create_render, or refine it with apply_composition. Use this to make 9:16 + 1:1 + 4:5 cuts from one 16:9 edit. (To only change resolution within the SAME aspect, pass create_render.format instead — that is a scale-only export override, not a new composition.)

NameTypeReqDescription
bodyobjectyesDerive a reframed sibling composition for a new aspect (Auto-Reframe / Magic-Resize, agent-native).
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
projectIdstringyesprojectId (path).
NameTypeReqDescription
compositionIdstring–The new sibling composition's id.

No examples provided.

describe_composition_ops ~76

Discover the exact CompositionOp vocabulary accepted by apply_composition. Omit type for a compact list of operation names and descriptions; pass type for only that operation's JSON Schema. Read this before authoring edits or captions.

NameTypeReqDescription
type––Exact CompositionOp type, such as captions.fromComposition. Omit for the operation list.

No output schema declared.

No examples provided.

describe_tool_input ~80

Return the exact JSON Schema for a body field the tool list abbreviates. An abbreviated field names this tool in its description. Pass that tool and field.

NameTypeReqDescription
fieldstringyesBody field named in that argument's description, such as tracks.
toolstringyesTool whose argument the tool list abbreviates, such as validate_composition.

No output schema declared.

No examples provided.

download_media ~163

Get a presigned download URL for a media item's stored SOURCE file — the bytes CueFrame composes from (the raw upload, or its conformed transcode). This is how you copy media OUT of a library: fetch the URL directly (no auth header) and PUT the bytes elsewhere with create_upload, or hand it to import_media on another account. Works as soon as the upload or import is stored, before processing completes. The URL expires at `expiresAt` (about an hour) — call again for a fresh one rather than caching it. Read-only and free; nothing is persisted. For a render's MP4 use refresh_render_url instead.

NameTypeReqDescription
mediaItemIdstringyesmediaItemId (path).
projectIdstring––
NameTypeReqDescription
expiresAtstring–Expiry of this URL in UTC (about one hour).
urlstring–Presigned URL for the media item's stored source bytes.

No examples provided.

editorial_apply ~110

Commit an integrated editorial edit to the saved project composition with both runExpectedRevision and guarded composition fields. Preserve the observed concurrency basis and the composition journal identity: nested composition.commandId must equal composition.clientId + ":" + composition.sequence. The session call commandId is a separate HTTP request identity.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
runIdstringyesrunId (path).

No output schema declared.

No examples provided.

editorial_create_brief ~71

Persist an authored brief for the selected project. The projectId belongs in body.brief; use the returned briefId to start an editorial run.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.

No output schema declared.

No examples provided.

editorial_create_run ~92

Start an editorial run from a persisted brief and explicitly selected certified source ranges. Read editorial_run_source for each project media source first; use its exact identity, revision, frame count and fps ratio. Never invent a source pin or infer inspection from an index.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.

No output schema declared.

No examples provided.

editorial_findings_append ~86

Persist one evidence-backed observation. A nothing_useful outcome may cover only what the cited evidence actually inspected; sparse stills do not certify an unsampled interval.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
runIdstringyesrunId (path).

No output schema declared.

No examples provided.

editorial_findings_list ~74

Read durable observations, including useful, nothing-useful and uncertain outcomes, in bounded pages. Pass nextCursor as cursor until done; retain evidence IDs, supersession and uncertainty when recovering decisions.

NameTypeReqDescription
cursorstring––
limitinteger––
runIdstringyesrunId (path).

No output schema declared.

No examples provided.

editorial_get_run ~57

Read a persisted editorial run, including its revision, state, inputs, outline, selected finding IDs, omitted reasons and unresolved integration gaps. Read findings and evidence separately for complete coverage.

NameTypeReqDescription
runIdstringyesrunId (path).

No output schema declared.

No examples provided.

editorial_inspect_audio ~81

Deliver a bounded 16 kHz source audio interval and save an audio evidence receipt. The interval must lie inside a certified run input.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
runIdstringyesrunId (path).

No output schema declared.

No examples provided.

editorial_inspect_source ~84

Deliver one exact decoded source frame as JPEG and save its evidence receipt. Only that sampled frame is visually inspected; preserve the returned evidenceId and coverage.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
runIdstringyesrunId (path).

No output schema declared.

No examples provided.

editorial_inspect_transcript ~76

Deliver at most 100 verified transcript words with their mapped certified decode interval and save a transcript evidence receipt.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
runIdstringyesrunId (path).

No output schema declared.

No examples provided.

editorial_integrate ~78

Save selected finding IDs, explicit omitted reasons and unresolved gaps with the observed run revision. Read the run and findings before deciding.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
runIdstringyesrunId (path).

No output schema declared.

No examples provided.

editorial_list_briefs ~59

Recover persisted authored briefs for a project. Read bounded pages; pass nextCursor as cursor until done. Brief IDs link to editorial runs.

NameTypeReqDescription
cursorstring––
limitinteger––
projectIdstringyes–

No output schema declared.

No examples provided.

editorial_list_evidence ~69

Read delivered evidence and inspection coverage for a run in bounded pages. Pass nextCursor as cursor until done; an empty page does not prove the whole source was inspected.

NameTypeReqDescription
cursorstring––
limitinteger––
runIdstringyesrunId (path).

No output schema declared.

No examples provided.

editorial_list_runs ~63

Recover persisted editorial runs for a project in bounded pages. Pass nextCursor as cursor until done, then read each relevant run for its integration decisions and unresolved gaps.

NameTypeReqDescription
cursorstring––
limitinteger––
projectIdstringyes–

No output schema declared.

No examples provided.

editorial_run_source ~88

Read the certified decode representation for media selected in this project before starting an editorial run. Supply projectId and mediaId; a null representation means this source cannot be pinned. The response omits internal storage paths. Select a bounded range from the returned frameCount and exact fps ratio; do not invent a source identity.

NameTypeReqDescription
mediaIdstringyes–
projectIdstringyes–

No output schema declared.

No examples provided.

editorial_sample_motion ~74

Deliver bounded sampled motion frames and save their evidence receipt. The sampled frames do not certify continuous visual coverage.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
runIdstringyesrunId (path).

No output schema declared.

No examples provided.

export_template_package ~167

Export an exact SAVED project snapshot as a portable template package. Supply idempotencyKey, expectedRevision, name, new slug and optional bounded mediaParams/textParams selectors for existing clip/leaf sites. Reads actual saved composition/components/media through the maintained extractor; no caller document, source, sample URL or provenance assertions. Returns a durable library-export job; poll get_template_job until ready, then pass its receiptId to get_template_package_download. An existing slug conflicts. A project-bound editor may export only its bound project. Does not render or create a new project.

NameTypeReqDescription
bodyobjectyes–
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
projectIdstringyesprojectId (path).
NameTypeReqDescription
createdAtstring––
documentSha256string|null––
errorCodestring––
errorMessagestring––
jobIdstring––
modestring––
packageobject––
projectIdstring|null––
sourceProjectIdstring––
stagestring––
statusstring––
templateIdstring––
templateRefstring––
templateVersioninteger––
updatedAtstring––

No examples provided.

extract_brand_kit ~202

Queue brand-token extraction from a website URL — ASYNC: returns a jobId immediately; then wait_job(kind="brand_kit_extract", id=jobId) for the tokens (colors/fonts/title/description, fetched + regex-parsed from the site's HTML/CSS — NOT a screenshot/vision pass). It does NOT persist — review the tokens, then call create_brand_kit to save a kit. A blocked (private/SSRF), non-2xx, non-HTML, or slow (>20s) URL degrades to EMPTY token arrays (a succeeded job) rather than erroring — JS-rendered SPAs typically extract empty; author the kit manually from the compiled CSS in that case.

NameTypeReqDescription
bodyobjectyesPOST /brand-kits/extract body — the website URL to extract brand tokens from.
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
NameTypeReqDescription
jobIdstring–Poll GET /v1/jobs/{jobId} / wait_job until terminal.
jobKeystring–Deterministic identity of the work (content hash of every input the result depends on). Re-enqueueing the same key returns the same job while it runs; a failed key revives as a fresh attempt.
kindstring–Job family, e.g. `verify` | `preview` | `brand_kit_extract`.
statusstring–running on a fresh/deduped enqueue; succeeded when an identical request already completed. Cancelled is part of the shared status vocabulary; identical cancelled work revives to running.

No examples provided.

finalize_upload ~164

Finalize a direct upload once you have PUT the bytes to the uploadUrl from create_upload. Confirms the bytes landed and starts ingest: image/asset become ready immediately (status "complete"); audio/video enter processing (status "processing"). Returns { id, status, processingPhase }. 400 if no bytes were uploaded (PUT first) or the item is not yours. Then call wait_job(kind="media", id=mediaItemId), or use a media.completed webhook.

NameTypeReqDescription
bodyobjectyesPOST /media/:id/finalize body — optional declared audioRole.
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
mediaItemIdstringyesmediaItemId (path).
NameTypeReqDescription
idstring––
processingPhasestring––
statusstring––

No examples provided.

forget_taste ~80

Delete one entry from the org's learned taste by its id (from get_profile `taste` or remember_taste). This is how the user's "undo" works.

NameTypeReqDescription
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
tasteIdstringyestasteId (path).

No output schema declared.

No examples provided.

generate_media ~169

Generate one first-class Library media item from a prompt. Choose generator: text-to-video | text-to-image | image-to-video | text-to-music | text-to-speech | text-to-sfx | auto. Put supported presentation controls in body.style and first/last/image references in body.refs. Returns { id, status:"generating", estimateUsd? }; returns 402 if the estimate exceeds the per-call ceiling. Async — call wait_job(kind="media", id=mediaItemId) or use a webhook (media.completed — status rides the payload). Use the returned id like any other media item.

NameTypeReqDescription
bodyobjectyesPOST /media/generate body.
commandId––Retry identity. A call repeated with the same commandId returns the first result instead of acting twice.
NameTypeReqDescription
estimateUsdnumber––
idstring––
statusstring––

No examples provided.

Install

How do I install the CueFrame MCP server?

CueFrame is a hosted endpoint at https://api.cueframe.ai/v1/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · api.cueframe.ai

# add to Claude Code
claude mcp add --transport http ai-cueframe-cueframe 'https://api.cueframe.ai/v1/mcp'
Common questions

What is the CueFrame MCP server?

CueFrame is an MCP server listed in the public MCP registry as ai.cueframe/cueframe. Turn footage into finished video: reframing, captions behind the subject, motion graphics, renders. This page covers its hosted endpoint (https://api.cueframe.ai/v1/mcp).

Is the CueFrame MCP server safe to use?

CueFrame scores 86 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the CueFrame MCP server expose?

CueFrame exposes 107 tools: search_registry_items, get_registry_item, acquire_registry_item, get_registry_acquisition, refresh_registry_snapshot, and 102 more. Their descriptions and schemas cost roughly 18,710 tokens of context every time the server is loaded.

Does the CueFrame MCP server require authentication?

Yes. CueFrame asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the CueFrame MCP server still maintained?

CueFrame is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.