Overview
Conditions on a reference image plus a free-form camera descriptor (e.g. low angle, dutch tilt, over-the-shoulder). WM Studio's prompt-engineer composes the final prompt downstream. image_url is required — if missing or unreachable, the response returns asset_url_required with the public upload link.
Auth
oauth-jwt
Returns
{ imageUrl, generationId, creditsCharged, creditsRemaining, lowCreditsWarning? } — or asset_url_required / upgrade_required on gate failure.
Web client
src/app/[locale]/dashboard/creative-studio/tools/camera-angles/camera-angles-nine-panel-client.tsx
MCP handler
mcp-director/src/tools/studio.py
Quick start
Invoke the tool over Streamable HTTP at {MCP_BASE_URL}/mcp/. The request below assumes you already minted an MCP JWT via the OAuth flow.
MCPcurlTypeScript
Copy
{
"name": "studio_camera_angles",
"arguments": {
"prompt": "<prompt>",
"camera": "<camera>",
"image_url": "<image_url>"
}
}
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| promptrequired | string | — | Text description of the desired shot. |
| camerarequired | string | — | Free-form camera descriptor (low angle, dutch tilt, over-the-shoulder, …). |
| image_urlrequired | string | — | Public URL of the source image. Fabricated URLs are rejected by HEAD preflight. |
| model | string | "fal-ai/flux/dev" | Provider/model id. |
| aspect_ratio | string | — | Target aspect ratio. |
Examples
Low-angle hero shot
json
Copy
{
"name": "studio_camera_angles",
"arguments": {
"prompt": "product hero shot, dramatic side light",
"camera": "low angle",
"image_url": "https://v3b.fal.media/files/.../product.jpg"
}
}