# Recast

> Parameters of the six recast tools that turn a movie script written as JSON into a rendered recast project, with free validation, a quote and casting.

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

The **recast tools** turn a movie written as one JSON script into a real recast project that renders on Nodaro and opens at [recast.nodaro.ai](https://recast.nodaro.ai). This page lists each tool's parameters. [Recast](https://nodaro.ai/docs/mcp/recast) explains the loop and the script format; read it first.

The recast tools exist only on Nodaro Cloud.

| Tool | Permission | Credits |
| --- | --- | --- |
| `get_recast_authoring_skill` | none | Free |
| `validate_recast_script` | none | Free |
| `import_recast_script` | `workflows:write` | Free |
| `start_recast` | `workflows:execute` | The quoted price, only with `confirm: true` |
| `resolve_recast_gate` | `workflows:execute` | Free |
| `get_recast_status` | `workflows:read` | Free |

## `get_recast_authoring_skill`

Returns the authoring guide for a movie written as JSON: the document format (`meta`, `slots`, `scenes`), what each field means, the allowed values, the limits, the audio rules and a validated worked example. The guide is generated from the planner the platform itself uses.

This tool has no parameters.

## `validate_recast_script`

Checks an authored script, free, as many times as you need. It never charges and saves nothing.

| Parameter | Type | Notes |
| --- | --- | --- |
| `script` | object | **Required.** The authored script, or a full exported analysis. |

**Returns:** `valid`, `errors` and `warnings`. Each error has a `path`, a `message` and usually a `hint`. Fix each one and call again until `valid` is `true`.

## `import_recast_script`

Turns a validated script into a recast project: it creates the project and its workflow, and stores the script as a completed analysis. Importing is free.

| Parameter | Type | Notes |
| --- | --- | --- |
| `script` | object | **Required.** The validated script. |
| `rights_attested` | boolean | **Required**, and only `true`. Set it only after the user confirmed in the conversation that the script is their own work or that they hold the rights. |

**Returns:** `recastId`, `jobId`, `warnings` and `appUrl`, the link to the project.

## `start_recast`

Quotes and renders an imported recast. Without `confirm`, it returns only the price. With `confirm: true`, after the user accepted that price, it buys the plan and the render. Called again while a run is in progress, it moves a `planned` run to rendering at no new charge, or reports the progress.

| Parameter | Type | Notes |
| --- | --- | --- |
| `recast_id` | string | **Required.** The `recastId` from `import_recast_script`. |
| `confirm` | boolean | `true` only after the user accepted the quoted credits. |
| `interactive` | boolean | Lets the user choose the cast before the render: 3 candidates per element and a pick-one-of-three gate. It adds a surcharge to the quote, so ask before you confirm. |
| `resolution` | string | The output resolution. Default `720p`. |
| `segment_pack` | string | How scenes are grouped into parts: `scenes-max` (default, the fewest joins and the cheapest) or `scenes` (shorter parts). |
| `anchor_mode` | string | How parts connect: `progressive` (each part's start frame follows from the previous render) or `none` (no frame conditioning; the quote drops the start-frame surcharge). Leave it out for the server default. |
| `provider` | string | A video model override. Leave it out for the server default. |

**Returns:** the quote, or the state of the run.

## `resolve_recast_gate`

Records the user's choice at an interactive gate and moves the run on. The choice itself is free: the surcharge was accepted with `start_recast`. Options are 0-based indexes into the candidates that `get_recast_status` shows.

| Parameter | Type | Notes |
| --- | --- | --- |
| `recast_id` | string | **Required.** The recast. |
| `picks` | object | The cast or identity sheet gate: each slot id mapped to the chosen candidate index. |
| `gate` | string | Which gate `picks` answers: `cast` (default) or `sheet`. |
| `segment`, `anchor_start`, `anchor_end` | integer | The scene stills gate: the scene, and the chosen opening and closing frames. |
| `section`, `music_pick` | integer | The music gate: the stretch of music, and the chosen take. |
| `finish_auto` | boolean | Resolves this gate and every remaining one with the top candidate of the automatic critic, so the run finishes on its own. |

The gates open in this order: the cast, then the identity sheets for people, then the scene stills, then the music. On the sheet gate, the three sheets share the face chosen at the cast gate, so the choice is about the body and the clothes only.

## `get_recast_status`

Returns the progress of a recast: blueprint ready, planning, planned, generating (segments done out of the total, with a live preview), completed (with the result URL) or failed. It always includes the link to the project at recast.nodaro.ai. In clients that display MCP Apps, it shows a live card with a progress bar, the growing preview, and the gate candidates as buttons.

| Parameter | Type | Notes |
| --- | --- | --- |
| `recast_id` | string | **Required.** The recast. |

When the status is `planned`, call `start_recast` again to begin rendering.

## Frequently asked questions

### Does validating or importing a recast script cost credits?

No. validate_recast_script and import_recast_script are free. Credits are spent only when start_recast is called with confirm set to true, after the user accepted the quoted price.

### What does rights_attested mean?

It records that the user confirmed in the conversation that the script is their own work, or that they hold the rights. An authored recast renders exactly as written, brand names included, so an assistant must never set it without asking.

### Can the user choose the cast before the render?

Yes. Start the run with interactive set to true. It pauses at pick-one-of-three gates for the cast, the identity sheets, the scene stills and the music. The interactive mode adds a surcharge that is part of the quote.

### Where can the user see and edit the recast?

At recast.nodaro.ai. get_recast_status always returns the deep link to the project, where the user can recast, retake and make the interactive choices.
