---
title: "create_storyboard: Create a storyboard"
description: "Make a film three ways: from a brief you have written as scenes, from media the account already holds, or from a video you have already analysed."
canonical_url: "https://meetkuro.com/agents/tools/create_storyboard/"
updated: 2026-11-03
locale: "en"
tool: "create_storyboard"
scopes: ["storyboards.write"]
---

# create_storyboard

**Create a storyboard**

Make a film three ways: from a brief you have written as scenes, from media the account already holds, or from a video you have already analysed. Scenes are written in order and chained in one write, so a twelve-beat board arrives as one video path rather than twelve calls. Anything you leave out of a scene is filled in: the description and the image prompt fall back to the title, and an unwritten motion prompt gets a subtle drift. Cast members are named, not referenced — the names of Subjects the account holds, which list_subjects finds. `settings` applies to written scenes and `from_analysis`; a film made `from_media` takes its frame from the first file, so set its settings with update_storyboard afterwards. A `style` is looked up before anything is made, and a name that misses makes nothing. Nothing here spends credits. For written scenes, attach owned footage with set_scene_clip, or use generate_scene_images when new stills are needed. Add a voice-over or music with add_storyboard_sound before rendering.

## 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:

- Nothing here spends credits.

## Inputs

| Name | Type | Required | Details |
| --- | --- | --- | --- |
| `name` | string | no | at least 1 character; at most 100 characters |
| `settings` | object | no | fields: aspect_ratio, default_image_model, default_video_model, style |
| `cast` | array of string | no | — |
| `scenes` | array of object | no | at most 60 items |
| `from_media` | array of object (type: "upload") or object (type: "generation") | no | at least 2 items; at most 250 items |
| `from_analysis` | object | no | Build the board from a video you read with measure_video and wrote a beat sheet for with save_video_analysis. One scene per beat, with its title, its intent, its prompts and its MEASURED length — never re-type a beat sheet as scenes, because the arithmetic is ours and a board written by hand remembers no source, which is what match_scene_motion needs. The prompts arrive written for a different subject, as the beat sheet wrote them: transpose them with update_scene afterwards. — fields: upload_id |

## 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": "create_storyboard",
    "arguments": {}
  }
}
```

## Input schema

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

```json
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "settings": {
      "type": "object",
      "properties": {
        "aspect_ratio": {
          "type": "string",
          "enum": [
            "9:16",
            "1:1",
            "16:9"
          ]
        },
        "default_image_model": {
          "type": "string",
          "enum": [
            "seedream-5-lite",
            "nano-banana-2.1",
            "nano-banana-2",
            "gpt-image-2.5-flare",
            "gpt-image-2.5-sunburst",
            "gpt-image-2",
            "nano-banana-2-lite",
            "seedream-5-pro",
            "flux-schnell",
            "flux-2-flex",
            "flux-2-pro",
            "flux-2-max",
            "recraft-v4.1-svg",
            "recraft-v4.1-pro-svg",
            "p-image",
            "grok-imagine-image",
            "grok-imagine-image-quality",
            "krea-3",
            "qwen-image-3-pro",
            "soul-2"
          ]
        },
        "default_video_model": {
          "type": "string",
          "enum": [
            "seedance-2.5",
            "seedance-2.0",
            "seedance-2.0-mini",
            "seedance-2.0-fast",
            "grok-imagine-video-1.5",
            "veo-3.1",
            "veo-3.1-fast",
            "veo-3.1-lite",
            "gemini-omni-1.1",
            "kling-v3-omni-video",
            "kling-v3-video",
            "happyhorse-1.0",
            "wan-3",
            "wan-3-prime",
            "gen-4.5",
            "p-video",
            "p-video-2",
            "flux-3",
            "minimax-h3-max",
            "p-video-avatar",
            "p-video-animate",
            "p-video-replace",
            "omni-human-1.5",
            "kling-avatar-v2",
            "kling-v3-motion-control",
            "kling-lip-sync",
            "sync-lipsync-2",
            "genjutsu-motion-transfer",
            "genjutsu-object-swap"
          ]
        },
        "style": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "cast": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "scenes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 600
          },
          "image_prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "motion_prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 6000
          },
          "duration_seconds": {
            "type": "number",
            "minimum": 0.2
          },
          "hold_motion": {
            "type": "string",
            "enum": [
              "none",
              "push_in",
              "pull_out",
              "pan_left",
              "pan_right",
              "animate"
            ]
          },
          "cast": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "title",
          "duration_seconds"
        ],
        "additionalProperties": false
      },
      "maxItems": 60
    },
    "from_media": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "upload"
              },
              "upload_id": {
                "type": "string",
                "format": "uuid"
              }
            },
            "required": [
              "type",
              "upload_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "generation"
              },
              "generation_id": {
                "type": "string",
                "format": "uuid"
              }
            },
            "required": [
              "type",
              "generation_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "minItems": 2,
      "maxItems": 250
    },
    "from_analysis": {
      "type": "object",
      "properties": {
        "upload_id": {
          "type": "string",
          "format": "uuid"
        }
      },
      "required": [
        "upload_id"
      ],
      "additionalProperties": false,
      "description": "Build the board from a video you read with measure_video and wrote a beat sheet for with save_video_analysis. One scene per beat, with its title, its intent, its prompts and its MEASURED length — never re-type a beat sheet as scenes, because the arithmetic is ours and a board written by hand remembers no source, which is what match_scene_motion needs. The prompts arrive written for a different subject, as the beat sheet wrote them: transpose them with update_scene afterwards."
    }
  },
  "additionalProperties": false
}
```

## Related tools

- [`list_subjects`](https://meetkuro.com/agents/tools/list_subjects.md): The named identities this account reuses — a character, a location, a product, a prop, a wardrobe.
- [`update_storyboard`](https://meetkuro.com/agents/tools/update_storyboard.md): Change a film's own properties in one call; only the fields you send change.
- [`set_scene_clip`](https://meetkuro.com/agents/tools/set_scene_clip.md): Attach existing footage to one scene: an owned ready clip generation, a verified video upload, or a finished storyboard render.
- [`generate_scene_images`](https://meetkuro.com/agents/tools/generate_scene_images.md): Make the still pictures of the scenes you name.
- [`add_storyboard_sound`](https://meetkuro.com/agents/tools/add_storyboard_sound.md): Place ready audio the account already holds — a voice-over, music or an audio upload — on a film as a sound card.

---

## 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/
