# Recast

> Have an AI assistant write a movie as a JSON script, validate it for free, import it as a recast project and render it after you accept the quoted price.

Source: https://nodaro.ai/docs/mcp/recast

**Recast** is the MCP lane for making a complete video from one request. The assistant writes the movie as a screenplay-shaped JSON script, validates it for free, imports it as a real recast project that you can see and resume at [recast.nodaro.ai](https://recast.nodaro.ai), and renders it with the price shown before every spend. Prefer this lane for end-to-end requests such as "make me a video, a movie or an ad about X". For a workflow on the canvas, use the [workflow tools](https://nodaro.ai/docs/mcp/tools/projects-and-workflows) or the [Film Director](https://nodaro.ai/docs/mcp/film-director). Recast is a Nodaro Cloud feature.

## The loop

### Read the authoring guide

`get_recast_authoring_skill` returns the guide for the script format, generated from the planner the platform itself uses. It has the document format, what each field means, the allowed values, the limits, the audio rules and a validated worked example. Free.

### Validate, as often as needed

`validate_recast_script` checks the script for free. Fix each error at its `path` with its `hint`, and repeat until `valid` is `true`.

### Import it

`import_recast_script` creates the recast project and its workflow, and stores the script as a completed analysis. Free. It needs `rights_attested: true`, which must reflect your own confirmation in the conversation that the script is your work. It returns the `recastId` and the project's link.

### Quote, then render

`start_recast` without `confirm` returns only the credit quote. After you accept the price, the assistant calls it again with `confirm: true`. The render runs on the server. When the status shows `planned`, calling `start_recast` again moves the run to rendering, with no new charge.

### Follow the render

`get_recast_status` reports planning, planned, generating (parts done out of the total, with a live preview), completed (with the result URL) or failed, and always links to the project. In clients that display MCP Apps, it shows a live card with a progress bar, the growing preview and the interactive choices as buttons.

## The script

The script has three parts: `meta`, `slots` for the recurring people, objects and places, and `scenes`. The authoring guide is the reference; these are the rules assistants most often need:

- **`visual` is a generation prompt** for the scene's picture. **`camera` describes camera motion only.** `shotType` comes from a fixed list of values.
- **Scenes last at most 8 seconds** and follow each other from second 0 without gaps. The whole film runs from 4 seconds up to the platform's run limit.
- **The aspect ratio** is `"16:9"` or `"9:16"`.
- **Sung lyrics belong to a `music` layer**, never to `speech`. A scene without a music layer is silent.

The validator also accepts a full analysis exported from [`video_analysis`](https://nodaro.ai/docs/mcp/tools/analysis-and-edl#video_analysis), which has the same scene-by-scene shape.

## Rights and faithful rendering

An authored recast renders **faithfully**: exactly as written, brand names included. That is why the import needs `rights_attested: true`, and why that value must come from your own explicit confirmation that the script is your work or that you hold the rights. An assistant must never set it on your behalf.

## Choose the cast yourself

Start the run with `interactive: true` to choose before the render. Interactive mode adds a surcharge, which is part of the quote. The run pauses at gates; `get_recast_status` shows the candidates, and `resolve_recast_gate` records each choice, for free, and moves the run on. The gates open in this order:

1. **Cast.** Choose each element's portrait, one of three.
2. **Identity sheet**, for people, when the run offers it. The three sheets share the face you chose, so this choice is about the body and the clothes.
3. **Scene stills.** Choose the opening and closing frames of each scene.
4. **Music.** Choose the take for each stretch of music.

`finish_auto: true` resolves every remaining gate with the top candidate of the automatic critic. An interactive run that nobody finishes parks safely and resolves itself at its deadline.

## Permissions

| Tool | Permission |
| --- | --- |
| `get_recast_authoring_skill`, `validate_recast_script` | None |
| `import_recast_script` | `workflows:write` |
| `start_recast`, `resolve_recast_gate` | `workflows:execute` |
| `get_recast_status` | `workflows:read` |

The parameters of each tool are in the [tools reference](https://nodaro.ai/docs/mcp/tools/recast).

## From the REST API

The same lane works over REST: `POST /v1/video-analysis/import/validate`, `POST /v1/video-analysis/import` and `GET /v1/video-analysis/authoring-skill`. See [Recast](https://nodaro.ai/docs/developers/api/recast) in the API reference.

## Frequently asked questions

### What is the recast lane?

The way an AI assistant makes a complete video from one request. It writes a screenplay-shaped JSON script, validates it for free, imports it as a real recast project and renders it, showing you the price before any credits are spent.

### Where can I see the recast project?

At recast.nodaro.ai. Every status answer links to it. The full editor there lets you recast characters, redo parts and make the interactive choices.

### How long can a recast be?

Each scene lasts at most 8 seconds, and the scenes follow each other from second 0 without gaps. The whole film runs from 4 seconds up to the platform's run limit, in 16:9 or 9:16.

### What happens if I leave the conversation during a render?

Nothing is lost. The run is a real recast project, and the app resumes it, or parks it safely, without the assistant.

### Why does the assistant ask me to confirm the script is mine?

An authored recast renders exactly as written, brand names included. The import needs your own confirmation that the script is your work, or that you hold the rights, and the assistant must never give it for you.
