One ask, full campaign
The MCP exposes individual tools (studio_generate_image, studio_brandshot, studio_generate_video, …) and the LLM orchestrates them. Ask Claude something like “research product X and build a full brand campaign” and it will plan and fire the right sequence on its own — each call returns a hosted asset URL the next call consumes.
Claude conversation
Copy
User: Research the AirPods Pro 3 and build me a full brand campaign —
hero shot, 3 angle variants, an in-context lifestyle image, and a 5s motion ad.
Claude (plans + fires tool calls automatically):
1. (web_search) → product info + reference image URL
2. studio_brandshot → hero shot
3. studio_camera_angles × 3 → low / dutch / over-the-shoulder
4. studio_ugc_room → desk-in-context lifestyle still
5. studio_generate_video (image-to-video) → 5s motion ad from the hero
6. studio_video_enhance (2×) → final delivery clip
Returned to user: 6 hosted asset URLs + creditsRemaining.
director_* pipelines (full briefs in a single call)
When you want the entire video pipeline — script, storyboard, generated shots, generated clips, master cut — in one tool call, use the director_* family. These run as background pipeline jobs and return a run_id you can poll or stream.
director_creative_brief_to_run— brief → production plan + run.director_run_create— execute the full pipeline.director_creative_batch_variations— N variations in parallel (e.g. 3 different tones).director_creative_remix— reuse an existing run, re-run only the stages you specify.
json
// One call → finished 60s product launch video for an entire campaign
{
"name": "director_creative_brief_to_run",
"arguments": {
"brief": "A product launch video for noise-cancelling headphones targeting remote workers, emphasizing focus and deep work.",
"duration_target_seconds": 60,
"platform": "youtube",
"style": "cinematic"
}
}
// Or 3 variations in parallel — different tones, different pacing
{
"name": "director_creative_batch_variations",
"arguments": {
"base_prompt": "Premium espresso brand campaign, modernist still lifes",
"variation_dimensions": ["tone:serious,playful", "pacing:slow,fast"],
"max_concurrent": 3,
"project_id": "<your-project-id>"
}
}
Generate → refine
The bread-and-butter pipeline: prompt → image → upscale.
json
// 1. Generate
{ "name": "studio_generate_image",
"arguments": {
"prompt": "espresso machine on a marble counter, soft morning light",
"model": "fal-ai/flux/dev",
"aspect_ratio": "4:3"
} }
// 2. Upscale the returned image URL to 4×
{ "name": "studio_upscale_image",
"arguments": {
"image_url": "https://v3b.fal.media/files/.../out.jpg",
"upscale_factor": 4,
"topaz_model": "High Fidelity V2"
} }
Photo → angle exploration
Each call renders one shot from one explicit camera descriptor. To explore an angle set, fire the tool repeatedly with different camera values (low angle, dutch tilt, over-the-shoulder, …). Claude does this fan-out automatically when you ask for “multiple angles”.
json
{
"name": "studio_camera_angles",
"arguments": {
"prompt": "intimate portrait, cinematic 35mm look",
"camera": "low angle",
"image_url": "https://v3b.fal.media/files/.../portrait.jpg"
}
}
Brand → hero shot
One product reference + a brand palette → a single luxury-grade marketing composition. For a multi-panel campaign, repeat the call with different prompts and palettes — or hand the brief to director_creative_batch_variations.
json
{
"name": "studio_brandshot",
"arguments": {
"prompt": "premium espresso, slow rituals, modernist still life, calm editorial mood",
"product_image_url": "https://v3b.fal.media/files/.../packshot.jpg",
"brand_palette": ["#3B2A20", "#F5EFE6", "#C79A52"],
"aspect_ratio": "1:1"
}
}
Cast a character → UGC
Cast once with studio_casting, then reuse the front portrait as a character lock for UGC variations.
json
// 1. Cast a character from a structured profile (no photo needed)
{ "name": "studio_casting",
"arguments": {
"character_name": "Maya",
"prompt": "studio portrait, soft Rembrandt lighting",
"character_profile": {
"genderIdentity": "female",
"hairStyle": "shoulder-length wavy",
"hairColor": "auburn",
"outfitStyle": "tailored beige trench coat",
"characterArchetype": "detective"
}
} }
// 2. UGC scene with the product
{ "name": "studio_ugc_room",
"arguments": {
"prompt": "morning commute, focused-work vibes, soft city light",
"product_image_url": "https://v3b.fal.media/files/.../headphones.jpg",
"room_style": "minimalist home office"
} }
Image → enhanced video
Lift a still into motion, then upscale the clip.
json
// 1. Image to video
{ "name": "studio_generate_video",
"arguments": {
"prompt": "slow dolly-in, golden hour reflection on the mug",
"model": "fal-ai/kling-video/v2.5-turbo/standard/image-to-video",
"image_url": "https://v3b.fal.media/files/.../mug.jpg",
"duration": 5
} }
// 2. Enhance the resulting clip
{ "name": "studio_video_enhance",
"arguments": {
"video_url": "https://v3b.fal.media/files/.../clip.mp4",
"upscale_factor": 2
} }
Image → 3D asset
Turn a packshot into a GLB suitable for AR or engine import.
json
{
"name": "studio_convert_to_3d",
"arguments": {
"image_url": "https://v3b.fal.media/files/.../sneaker.jpg"
}
}