---
title: "render_storyboard: Render a storyboard"
description: "Assemble a film's derived videos into MP4s."
canonical_url: "https://meetkuro.com/agents/tools/render_storyboard/"
updated: 2026-11-03
locale: "en"
tool: "render_storyboard"
scopes: ["storyboards.write"]
---

# render_storyboard

**Render a storyboard**

Assemble a film's derived videos into MP4s. Name the videos by the number the board prints (Video 1 is 1); omit them to render every video whose clips are all ready. Rendering spends no credits — it takes a job slot against the plan's concurrent-operation limit and the renderer's own budget. It returns immediately: poll get_storyboard until output.render_id matches the accepted render ID and output_current is true. An older URL is not completion.

## Scope

- `storyboards.write` — Authors, edits, renders and deletes storyboards. Reading a board rides media.read, and the two board tools that spend need generation.write as well.

## Behaviour

- **Writes**: Creates or changes items in the caller's own account.
- **Adds or updates**: Adds or updates; nothing the caller already has is deleted or overwritten.
- **Stays in the account**: Stays inside the caller's private Kuro account: any media provider it calls acts on Kuro's account, and the result is visible to no one else.

## Credits

What the tool's description says about credits, verbatim:

- Rendering spends no credits — it takes a job slot against the plan's concurrent-operation limit and the renderer's own budget.

## Inputs

| Name | Type | Required | Details |
| --- | --- | --- | --- |
| `storyboard_id` | string | yes | uuid |
| `videos` | array of integer | no | at most 20 items |

## Example call

A `tools/call` request with the required arguments only, each a placeholder read off the schema. Replace them before sending.

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "render_storyboard",
    "arguments": {
      "storyboard_id": "00000000-0000-4000-8000-000000000000"
    }
  }
}
```

## Input schema

As the server sends it in `tools/list`:

```json
{
  "type": "object",
  "properties": {
    "storyboard_id": {
      "type": "string",
      "format": "uuid"
    },
    "videos": {
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0
      },
      "maxItems": 20
    }
  },
  "required": [
    "storyboard_id"
  ],
  "additionalProperties": false
}
```

## Related tools

- [`get_storyboard`](https://meetkuro.com/agents/tools/get_storyboard.md): Read a film: its settings, its cast, every scene by number with its prompts and the state of its still and its clip, each derived video with how many clips it has and whether it can render, the computed still order, and the history depth.
- [`apply_storyboard_template`](https://meetkuro.com/agents/tools/apply_storyboard_template.md): Make a new storyboard from a template: every scene and connection, unshot.

---

## About Kuro

Kuro is an AI picture studio: prompt-driven images, clips, voice-overs and music, and storyboard-backed films with consistent characters across every scene.

Agents connect over MCP and can generate directly:

```
claude mcp add kuro https://api.meetkuro.com/mcp --transport http
```

The app is at https://app.meetkuro.com and requires an account.

Each guide, model page, comparison and free tool page on this site (not a tool's variants, and not the index pages) has a Markdown twin at its own URL plus `.md`, and so do /benchmarks/, the English /agents/ page (as /agents.md) and the MCP tool reference. Every tool: https://meetkuro.com/agents/tools/
