BeatBandit MCP

Tools

/

Story Workflows

/

story_development_run

story_development_run

orchestration
beta
auth: project:write
approval: suggest
status: v1

BUILD new structured story material that does not exist yet — beats, scenes, sequences, treatments, trailer cards, episodes, or weave plans. Use this for concept-to-outline work; for a raw concept or brand-new project, prefer the `story_bootstrap` path first and let BeatBandit own the template-native beat-and-outline bootstrap workflow internally. The outline step is resolved from the project template: scenes for scene-oriented templates, episodes for episodic templates, or an explicit weave handoff for season-planning templates. For `story_bootstrap`, call `phase=readiness` before `phase=start` to inspect beat-style choices, the curated default start payload, any advisory style suggestion, and estimated credits. Then call `phase=start` with `payload.idea` and explicit `payload.options.style_template_id` if you choose a non-default beat style, then poll `job_get` until completion instead of switching to low-level card, scene, or episode mutations. Treatment, sequence guidance, and screenplay prose are separate follow-up stages. `story_bootstrap` auto-applies its internal beat/outline stages when the parent job completes. Standalone wizard jobs such as `treatment_wizard`, `sequence_wizard`, `beat_wizard`, `scene_wizard`, and `episode_wizard` still require their explicit `phase=finalize` follow-up when `job_get` says `finalize_required`. `target_scene_count` is a pacing hint rather than a hard guarantee, and `append` is only supported for movie-project scene finalization.

When to use

The structured material does not exist yet — the verb is BUILD.

Use for beat, scene, sequence, treatment, trailer, episode, and weave development flows.

Use `story_bootstrap` when the caller has a raw idea and wants BeatBandit to turn it into initial story structure plus the template's canonical outline with sane defaults.

For `story_bootstrap`, call `phase=readiness` before `start`; readiness returns `available_beat_styles`, `default_beat_style_id`, optional `suggested_beat_style_id`, `estimated_credits`, and a `start_payload_template`.

Treat `suggested_beat_style_id` as advisory. `start` uses the default style unless the caller explicitly passes `payload.options.style_template_id`.

For `treatment_wizard`, call `phase=readiness` before `start`; readiness returns `available_templates` and `default_template_id` to use as `payload.template_id`.

For `one_scene` projects, `story_bootstrap` routes through Beat Wizard because the template already owns exactly one scene; Scene Wizard is not needed.

For episodic templates, use `episode_wizard` readiness to discover `available_approaches`, `default_approach_id`, valid episode counts, and an executable start payload before generating episode lists.

`beat_wizard` is always ready. Use `phase=readiness` to discover the default `template_id` and required placeholders such as `FULL_TEXT`.

For `beat_wizard` with the `free_text` template, callers may provide `payload.idea`; MCP will normalize it into `filled_text` and `placeholder_values.FULL_TEXT`.

When not to use

Do not use for screenplay document reads or direct story mutations.

Do not start with low-level card/scene mutation when the real intent is concept-to-outline development.

Do not manually drive the internal beat->outline chain once `story_bootstrap` is running; use `job_get` until the parent bootstrap job completes.

Do not skip `story_bootstrap` readiness before a paid bootstrap run; use readiness to choose or confirm the beat style and estimate credits.

Do not use to **change or polish** existing story material — use `story_revision_run` (change_wizard, polish_wizard, creative_canvas) instead.

Do not use to **get editorial feedback** on existing material — use `story_review_run` (room_review, analysis_wizard, continuity_audit) instead.

Do not use to **write actual screenplay prose** from an existing outline — use `screenplay_generation_run` (screenplay_writer, episode_screenplay, scene_screenplay) instead.

Examples

“Run a sequence wizard for this project.”

“Generate a new scene list for this project with the scene wizard.”

“Run the episode wizard on this project.”

“Run weave planning for this episodic project.”

“Bootstrap a short-movie project from one idea into initial story structure and a tight scene outline.”

“Bootstrap a micro-drama project from one idea into series cards and a template-native episode outline.”

“Bootstrap a one-scene short from a raw idea; BeatBandit will use Beat Wizard to populate the story cards and the single scene outline.”

“Start one-scene Beat Wizard with `payload={"idea":"..."}` or with `payload={"template_id":"free_text","placeholder_values":{"FULL_TEXT":"..."}}`.”

“Boundary - "Generate a fresh scene outline for this project." Use `scene_wizard` here because the scenes do not exist yet; this is BUILD, not CHANGE.”

“Boundary - "Bootstrap a movie project from one concept." Use `story_bootstrap` here because the caller wants structured outline first, not screenplay prose.”

“Check Story Bootstrap readiness with `workflow=story_bootstrap`, `phase=readiness`, and `payload.idea`; review `available_beat_styles`, then start with the returned payload.”

Anti-examples

  • List my projects.
  • Polishing dialogue rhythm in an existing scene — that is `story_revision_run` with `polish_wizard`.
  • Generating screenplay prose from an already-finished outline — that is `screenplay_generation_run` with `screenplay_writer`.
  • Asking for editorial scores or notes on the current story without changing it — that is `story_review_run` with `analysis_wizard` or `room_review`.

Workflows

Switch behavior by setting the workflow input field.

story_bootstrap

readiness
start
Calls: beat_wizard.run, scene_wizard.run, episode_wizard.run

beat_wizard

start
finalize
Calls: beat_wizard.run

scene_wizard

readiness
start
finalize
Calls: scene_wizard.run

sequence_wizard

start
finalize
Calls: sequence_wizard.run

treatment_wizard

readiness
start
finalize
Calls: treatment_wizard.run

trailer_wizard

readiness
start
finalize
Calls: trailer_wizard.run

episode_wizard

readiness
start
finalize
Calls: episode_wizard.run

weave

readiness
start
finalize
Calls: weave.run

Linked resources

Tool calls may return resource_links pointing at these resource families.

project_canon_summaryscreenplay_documentsequence_wizard_resulttreatment_wizard_resultweave_result

Input schema

story_development_run input
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "required": [
    "workflow",
    "phase",
    "project_id"
  ],
  "properties": {
    "workflow": {
      "type": "string",
      "enum": [
        "beat_wizard",
        "scene_wizard",
        "sequence_wizard",
        "treatment_wizard",
        "trailer_wizard",
        "episode_wizard",
        "weave",
        "story_bootstrap"
      ],
      "description": "Use story_bootstrap for raw ideas; call phase=readiness first to inspect beat-style options, the default start payload, and estimated credits. Bootstrap resolves the template-native outline step (scenes, episodes, or explicit weave handoff) from the project template."
    },
    "phase": {
      "type": "string",
      "enum": [
        "readiness",
        "start",
        "finalize"
      ],
      "description": "For story_bootstrap, use readiness before start; start still requires payload.idea."
    },
    "project_id": {
      "type": "integer"
    },
    "job_id": {
      "type": "string"
    },
    "reservation_id": {
      "type": "string"
    },
    "payload": {
      "type": "object",
      "properties": {
        "idea": {
          "type": "string",
          "description": "Raw story idea. Required for story_bootstrap start. For beat_wizard start, MCP normalizes this into the template's required placeholder values when possible."
        },
        "template_id": {
          "type": "string",
          "description": "Template id for template-driven workflows. Use phase=readiness to discover available treatment templates and defaults."
        },
        "filled_text": {
          "type": "string",
          "description": "Filled text passed to the wizard. For free_text beat_wizard templates, this can be the same story idea text used for placeholder_values.FULL_TEXT."
        },
        "placeholder_values": {
          "type": "object",
          "description": "Placeholder values required by the selected wizard template. For one_scene/free_text Beat Wizard, provide FULL_TEXT; if omitted, MCP can derive it from payload.idea or payload.filled_text.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "include_context": {
          "type": "boolean"
        },
        "options": {
          "type": "object",
          "description": "Workflow-specific options. For story_bootstrap start, set options.style_template_id only after choosing from available_beat_styles returned by readiness."
        },
        "llm_identifier": {
          "type": "string"
        },
        "approach_id": {
          "type": "string"
        },
        "custom_prompt": {
          "type": "string"
        },
        "target_scene_count": {
          "type": "integer",
          "description": "Preferred scene-count target for scene-oriented workflows. This is a pacing hint, not a strict requirement."
        },
        "target_episode_count": {
          "type": "integer"
        },
        "episode_count": {
          "type": "integer"
        },
        "sequence_numbers": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "locked_episode_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "mode": {
          "type": "string"
        },
        "target_episode_id": {
          "type": "string"
        },
        "preview": {
          "type": "boolean"
        },
        "idempotency_key": {
          "type": "string"
        },
        "append": {
          "type": "boolean",
          "description": "When finalizing scene generation, append to the existing scene list instead of replacing it. Currently supported only for movie projects."
        }
      },
      "additionalProperties": false
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "workflow": {
            "const": "story_bootstrap"
          }
        }
      },
      "then": {
        "properties": {
          "phase": {
            "enum": [
              "readiness",
              "start"
            ]
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "workflow": {
            "const": "story_bootstrap"
          },
          "phase": {
            "const": "start"
          }
        }
      },
      "then": {
        "required": [
          "payload"
        ],
        "properties": {
          "phase": {
            "enum": [
              "readiness",
              "start"
            ]
          },
          "payload": {
            "type": "object",
            "required": [
              "idea"
            ]
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "workflow": {
            "const": "sequence_wizard"
          }
        }
      },
      "then": {
        "properties": {
          "phase": {
            "enum": [
              "start",
              "finalize"
            ],
            "description": "sequence_wizard does not support readiness; use start directly, then poll job_get and finalize."
          }
        }
      }
    }
  ],
  "additionalProperties": false
}

Output schema

story_development_run output
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "required": [
    "workflow",
    "phase"
  ],
  "properties": {
    "workflow": {
      "type": "string"
    },
    "phase": {
      "type": "string"
    },
    "async": {
      "type": "boolean"
    },
    "job_id": {
      "type": "string"
    },
    "reservation_id": {
      "type": "string"
    },
    "bootstrap_stage": {
      "type": "string"
    },
    "project_id": {
      "type": "integer"
    },
    "project_name": {
      "type": "string"
    },
    "project_mode": {
      "type": "string"
    },
    "append_supported": {
      "type": "boolean"
    },
    "actual_scene_count": {
      "type": "integer"
    },
    "bootstrap_context": {
      "type": "object"
    },
    "readiness": {
      "type": "object"
    },
    "result": {
      "type": "object"
    },
    "resource_links": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "pipeline_state": {
      "$ref": "./_common/pipeline_state.schema.json"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "$ref": "./_common/next_action.schema.json"
      }
    }
  },
  "additionalProperties": true
}

← All toolsv1 · workflow_runner