Recast authoring — write a movie as JSON over MCP
The MCP movie-making lane (Cloud edition): your assistant authors a screenplay-shaped script, validates it for free, imports it as a real recast project — visible and resumable at recast.nodaro.ai — and renders it with the price surfaced before every spend. Prefer this lane for end-to-end “make me a video / movie / ad of X” requests; the workflow-editor and director tools remain the right choice for canvas-building.
The loop
get_recast_authoring_skill— read the generated authoring guide first. It carries the document contract (meta/slots/scenes), the planner’s own field doctrine (visualis a generation prompt;camerais motion only;shotTypefrom a closed vocabulary), enum lists, bounds (scenes ≤ 8s, contiguous from 0, total 4s → the platform run cap,"16:9"or"9:16"), audio rules (lyrics ride amusiclayer, neverspeech; no music layer means silence), and a validated worked example.validate_recast_script— free, unlimited-feeling iterate loop. Fix eacherrors[].pathusing itshint; repeat untilvalid: true.import_recast_script— free. Creates the project + workflow and stores the script as a completed analysis.rights_attested: truemust reflect the user’s own explicit confirmation in the conversation that the script is their own work — authored recasts render Faithful, exactly as written, brand names included. Never set it on the user’s behalf. Returns{ recastId, appUrl }.start_recast— withoutconfirmit returns the credit quote only. Present the price; call again withconfirm: trueonce the user accepts. Rendering runs server-side; callstart_recastagain when the status showsplannedto advance the run to rendering (no new charge).get_recast_status— planning / planned / generating (segments done vs total, live preview URL) / completed (result URL) / failed. Always includes the recast.nodaro.ai deep link — the full editor for casting, retakes, and the interactive pick-your-cast/sheet/frames/music mode. On hosts that render MCP Apps, this tool shows a live status card: progress bar, the growing preview, and the interactive gates as clickable pick-1-of-3 choices.- Interactive mode — pass
interactive: truetostart_recastto choose the cast before rendering (a priced surcharge; it rides the quote). The run pauses at gates;get_recast_statussurfaces the candidates, andresolve_recast_gaterecords the pick (free, pure state) and advances the run. Gates open in walk order: cast (pick each element’s portrait), then — person slots only, when the run offers it — the identity sheet (gate: "sheet"with the samepicksshape: 3 composed sheets whose face panel is the SAME chosen portrait, so the pick chooses body & wardrobe only), then scene stills, then music.finish_auto: trueresolves every remaining gate with the critic’s top candidate. An abandoned interactive run parks safely and auto-resolves on its deadline.
An abandoned conversation strands nothing: the run is a real recast project, and the app’s watcher machinery resumes or parks it safely.
Scopes
| Tool | Scope |
|---|---|
get_recast_authoring_skill, validate_recast_script |
none (ungated) |
import_recast_script |
workflows:write |
start_recast, resolve_recast_gate |
workflows:execute |
get_recast_status |
workflows:read |
REST equivalents
The same lane over raw REST: POST /v1/video-analysis/import/validate,
POST /v1/video-analysis/import, GET /v1/video-analysis/authoring-skill — see
API integration §13d.