---
title: "update_scene: Update a scene"
description: "Change one scene by its 1-based number: title, description, image or motion prompt, length (or auto_duration where the clip model offers it), hold_motion, cast by Subject name, or its own clip model (null hands it back to the film's)."
canonical_url: "https://meetkuro.com/agents/tools/update_scene/"
updated: 2026-11-03
locale: "en"
tool: "update_scene"
scopes: ["storyboards.write"]
---

# update_scene

**Update a scene**

Change one scene by its 1-based number: title, description, image or motion prompt, length (or auto_duration where the clip model offers it), hold_motion, cast by Subject name, or its own clip model (null hands it back to the film's). One undo step; undo_storyboard takes it back. Spends no credits.

## 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.
- **Can delete or overwrite**: Can delete, overwrite, cancel or withdraw something the caller already has, so a host should confirm it.
- **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:

- Spends no credits.

## Inputs

| Name | Type | Required | Details |
| --- | --- | --- | --- |
| `storyboard_id` | string | yes | uuid |
| `scene` | integer | yes | > 0 |
| `changes` | object | yes | fields: title, description, image_prompt, motion_prompt, duration_seconds, auto_duration, hold_motion, cast, video_model |

## 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": "update_scene",
    "arguments": {
      "storyboard_id": "00000000-0000-4000-8000-000000000000",
      "scene": 1,
      "changes": {}
    }
  }
}
```

## Input schema

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

```json
{
  "type": "object",
  "properties": {
    "storyboard_id": {
      "type": "string",
      "format": "uuid"
    },
    "scene": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "changes": {
      "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
        },
        "auto_duration": {
          "type": "boolean"
        },
        "hold_motion": {
          "type": "string",
          "enum": [
            "none",
            "push_in",
            "pull_out",
            "pan_left",
            "pan_right",
            "animate"
          ]
        },
        "cast": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "video_model": {
          "anyOf": [
            {
              "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"
              ]
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "storyboard_id",
    "scene",
    "changes"
  ],
  "additionalProperties": false
}
```

## Related tools

- [`undo_storyboard`](https://meetkuro.com/agents/tools/undo_storyboard.md): Take back YOUR last gesture on a film, or redo the one you took back.

---

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