story_development_run
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
beat_wizard
scene_wizard
sequence_wizard
treatment_wizard
trailer_wizard
episode_wizard
weave
Linked resources
Tool calls may return resource_links pointing at these resource families.
Input schema
{
"$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
{
"$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
}