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
namestring · optionalat least 1 character · at most 100 characters
settingsobject · optionalfields: aspect_ratio, default_image_model, default_video_model, style
castarray of string · optionalscenesarray of object · optionalat most 60 items
from_mediaarray of object (type: "upload") or object (type: "generation") · optionalat least 2 items · at most 250 items
from_analysisobject · optionalBuild 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.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_storyboard",
"arguments": {}
}
}Input schema
As the server sends it in tools/list.
{
"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
The named identities this account reuses — a character, a location, a product, a prop, a wardrobe.
- update_storyboard
Change a film's own properties in one call; only the fields you send change.
- set_scene_clip
Attach existing footage to one scene: an owned ready clip generation, a verified video upload, or a finished storyboard render.
- generate_scene_images
Make the still pictures of the scenes you name.
- add_storyboard_sound
Place ready audio the account already holds — a voice-over, music or an audio upload — on a film as a sound card.