Sanzaru MCP — Prompting & Workflow Guide
Tool Quick Reference
| Category |
Tool |
Pattern |
Description |
| Video |
create_video |
async |
Create Sora video (returns job ID, poll for completion) |
|
get_video_status |
poll |
Check video generation progress (0-100%) |
|
download_video |
sync |
Download completed video/thumbnail/spritesheet |
|
list_videos |
sync |
List video jobs with pagination |
|
list_local_videos |
sync |
List downloaded video files |
|
delete_video |
sync |
Permanently delete a video from OpenAI |
|
remix_video |
async |
Create new video by remixing an existing one |
| Image |
generate_image |
sync |
Images API — returns immediately, no polling (RECOMMENDED) |
|
edit_image |
sync |
Edit/compose images (up to 16 inputs) |
|
create_image |
async |
Responses API — for iterative refinement chains |
|
get_image_status |
poll |
Check image generation status |
|
download_image |
sync |
Download completed image |
| Reference |
list_reference_images |
sync |
List available images for Sora |
|
prepare_reference_image |
sync |
Resize image to exact Sora dimensions |
| Audio |
create_audio |
sync |
Text-to-speech (10 voices, any length) |
|
transcribe_audio |
sync |
Whisper transcription |
|
chat_with_audio |
sync |
GPT-4o audio analysis |
|
list_audio_files |
sync |
List and filter audio files |
Model Selection
Video (Sora)
sora-2 (default): Faster, cheaper, good for iteration
sora-2-pro: Higher quality, supports larger resolutions (1024x1792, 1792x1024)
Image Generation
| Tool |
API |
Best For |
generate_image |
Images API |
New generation — synchronous, no polling (RECOMMENDED) |
edit_image |
Images API |
Editing existing images, composition |
create_image |
Responses API |
Iterative refinement with previous_response_id |
- gpt-image-1.5: STATE-OF-THE-ART (recommended default)
- gpt-image-1-mini: Fast, cost-effective for iteration
Audio (TTS)
- gpt-4o-mini-tts: Recommended default
- Voices: alloy, ash, ballad, coral, echo, fable, nova, onyx, sage, shimmer
The Golden Rule: Reference Images
CRITICAL: When using input_reference_filename with Sora, describe motion/action ONLY. Do NOT re-describe what's already in the image.
The reference image already contains: character, setting, framing, style, lighting.
Your prompt should only describe: what happens next, motion, camera movement.
BAD — re-describing the image:
create_video(
prompt="A pilot in orange suit in cockpit with glowing instruments...",
input_reference_filename="pilot.png"
)
GOOD — motion only:
create_video(
prompt="The pilot glances up, takes a breath, then returns focus to the instruments.",
input_reference_filename="pilot.png"
)
Sora Prompt Anatomy
Write prompts in this order for best results:
- Style — "1970s film grain," "IMAX scale," "16mm black-and-white"
- Scene — Characters, setting, framing
- Camera — "wide establishing shot, eye level" or "medium close-up, tracking left"
- Action in beats — Small, grounded steps: "takes four steps to window, pauses, pulls curtain"
- Lighting & color — 3-5 concrete anchors: "warm lamp fill, cool rim from hallway, amber highlights"
| Weak |
Strong |
| "A beautiful street at night" |
"Wet asphalt, neon signs reflecting in puddles, steam from grate" |
| "Person moves quickly" |
"Cyclist pedals three times, brakes, stops at crosswalk" |
| "Cinematic look" |
"Anamorphic 2.0x lens, shallow DOF, volumetric light" |
Duration tips: 4s clips have best instruction following. Use 8s for simple scenes. 12s only for slow, ambient shots.
Async Polling Pattern
# Video: create → poll → download
video = create_video(prompt="...", size="1280x720")
status = get_video_status(video.id) # Poll until "completed"
download_video(video.id, filename="output.mp4")
# Image (Responses API): create → poll → download
resp = create_image(prompt="...")
status = get_image_status(resp.id) # Poll until "completed"
download_image(resp.id, filename="output.png")
# Image (Images API): SYNCHRONOUS — no polling!
result = generate_image(prompt="...") # Returns immediately
Common Pitfalls
- Re-describing reference images — Describe motion only (see Golden Rule above)
- Using
create_image when generate_image is simpler — Most cases don't need async polling
- Dimension mismatch — Reference image MUST match target video size exactly. Use
prepare_reference_image to resize.
- Vague motion — "walks around" is weak. Use beats: "takes three steps, pauses, looks up"
- Integer seconds —
seconds must be a string: "8" not 8
- Complex long clips — Shorter (4s) clips follow instructions better than 12s
- Forgetting to poll —
create_video and create_image are async; always poll status before downloading
Deep Reference
For detailed guidance:
- Sora Prompting Guide — Camera vocabulary, lighting, dialogue, remix strategy
- Workflows — Step-by-step patterns for common tasks
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: prompt-guidance3description: Read the entirety of @docs/sora2-prompting-guide.md and await further instruction. Use when this capability is needed.4---56# Sanzaru MCP — Prompting & Workflow Guide78## Tool Quick Reference910| Category | Tool | Pattern | Description |11|----------|------|---------|-------------|12| **Video** | `create_video` | async | Create Sora video (returns job ID, poll for completion) |13| | `get_video_status` | poll | Check video generation progress (0-100%) |14| | `download_video` | sync | Download completed video/thumbnail/spritesheet |15| | `list_videos` | sync | List video jobs with pagination |16| | `list_local_videos` | sync | List downloaded video files |17| | `delete_video` | sync | Permanently delete a video from OpenAI |18| | `remix_video` | async | Create new video by remixing an existing one |19| **Image** | `generate_image` | **sync** | Images API — returns immediately, no polling (RECOMMENDED) |20| | `edit_image` | **sync** | Edit/compose images (up to 16 inputs) |21| | `create_image` | async | Responses API — for iterative refinement chains |22| | `get_image_status` | poll | Check image generation status |23| | `download_image` | sync | Download completed image |24| **Reference** | `list_reference_images` | sync | List available images for Sora |25| | `prepare_reference_image` | sync | Resize image to exact Sora dimensions |26| **Audio** | `create_audio` | sync | Text-to-speech (10 voices, any length) |27| | `transcribe_audio` | sync | Whisper transcription |28| | `chat_with_audio` | sync | GPT-4o audio analysis |29| | `list_audio_files` | sync | List and filter audio files |3031## Model Selection3233### Video (Sora)34- **`sora-2`** (default): Faster, cheaper, good for iteration35- **`sora-2-pro`**: Higher quality, supports larger resolutions (1024x1792, 1792x1024)3637### Image Generation38| Tool | API | Best For |39|------|-----|----------|40| `generate_image` | Images API | New generation — **synchronous, no polling** (RECOMMENDED) |41| `edit_image` | Images API | Editing existing images, composition |42| `create_image` | Responses API | Iterative refinement with `previous_response_id` |4344- **gpt-image-1.5**: STATE-OF-THE-ART (recommended default)45- **gpt-image-1-mini**: Fast, cost-effective for iteration4647### Audio (TTS)48- **gpt-4o-mini-tts**: Recommended default49- Voices: alloy, ash, ballad, coral, echo, fable, nova, onyx, sage, shimmer5051## The Golden Rule: Reference Images5253> **CRITICAL**: When using `input_reference_filename` with Sora, describe **motion/action ONLY**. Do NOT re-describe what's already in the image.5455The reference image already contains: character, setting, framing, style, lighting.56Your prompt should only describe: what happens next, motion, camera movement.5758**BAD** — re-describing the image:59```60create_video(61 prompt="A pilot in orange suit in cockpit with glowing instruments...",62 input_reference_filename="pilot.png"63)64```6566**GOOD** — motion only:67```68create_video(69 prompt="The pilot glances up, takes a breath, then returns focus to the instruments.",70 input_reference_filename="pilot.png"71)72```7374## Sora Prompt Anatomy7576Write prompts in this order for best results:77781. **Style** — "1970s film grain," "IMAX scale," "16mm black-and-white"792. **Scene** — Characters, setting, framing803. **Camera** — "wide establishing shot, eye level" or "medium close-up, tracking left"814. **Action in beats** — Small, grounded steps: "takes four steps to window, pauses, pulls curtain"825. **Lighting & color** — 3-5 concrete anchors: "warm lamp fill, cool rim from hallway, amber highlights"8384| Weak | Strong |85|------|--------|86| "A beautiful street at night" | "Wet asphalt, neon signs reflecting in puddles, steam from grate" |87| "Person moves quickly" | "Cyclist pedals three times, brakes, stops at crosswalk" |88| "Cinematic look" | "Anamorphic 2.0x lens, shallow DOF, volumetric light" |8990**Duration tips**: 4s clips have best instruction following. Use 8s for simple scenes. 12s only for slow, ambient shots.9192## Async Polling Pattern9394```95# Video: create → poll → download96video = create_video(prompt="...", size="1280x720")97status = get_video_status(video.id) # Poll until "completed"98download_video(video.id, filename="output.mp4")99100# Image (Responses API): create → poll → download101resp = create_image(prompt="...")102status = get_image_status(resp.id) # Poll until "completed"103download_image(resp.id, filename="output.png")104105# Image (Images API): SYNCHRONOUS — no polling!106result = generate_image(prompt="...") # Returns immediately107```108109## Common Pitfalls1101111. **Re-describing reference images** — Describe motion only (see Golden Rule above)1122. **Using `create_image` when `generate_image` is simpler** — Most cases don't need async polling1133. **Dimension mismatch** — Reference image MUST match target video size exactly. Use `prepare_reference_image` to resize.1144. **Vague motion** — "walks around" is weak. Use beats: "takes three steps, pauses, looks up"1155. **Integer seconds** — `seconds` must be a string: `"8"` not `8`1166. **Complex long clips** — Shorter (4s) clips follow instructions better than 12s1177. **Forgetting to poll** — `create_video` and `create_image` are async; always poll status before downloading118119## Deep Reference120121For detailed guidance:122- [Sora Prompting Guide](reference/SORA-PROMPTING.md) — Camera vocabulary, lighting, dialogue, remix strategy123- [Workflows](reference/WORKFLOWS.md) — Step-by-step patterns for common tasks124125---126> Converted and distributed by [TomeVault](https://tomevault.io/claim/tjc-lp) — claim your Tome and manage your conversions.127<!-- tomevault:4.0:skill_md:2026-04-11 -->