MCPThe Model Context Protocol lets an assistant like Claude or Cursor use Snoobl as a tool. Connect it once, then just ask for a film: it picks the brand, writes the brief, gets a storyboard, renders, and hands you the link.
1. Get a keyIn Snoobl, open Settings → API & webhooks and create an API key with the render scope. You see it once, so copy it then. A read key works too if you only want the assistant to look, not render.
The key spends your workspace's credits. The assistant is told to quote the price and ask before it renders — but the key is what actually holds the purse, so give it to clients you trust.
2. Connect your clientRun it locallyPaste this into your MCP client's config and swap in your key. In Claude Desktop that's Settings → Developer → Edit Config; in Cursor it's .cursor/mcp.json. It needs Node.js 20 or newer — nothing else to install.
mcp config · local
{ "mcpServers": { "snoobl": { "command": "npx", "args": [ "-y", "@snoobl/mcp" ], "env": { "SNOOBL_API_KEY": "snbl_live_…" } } } }
Or use the hosted serverNothing to run: point any client that takes a remote server URL with a custom header at ours. Same tools, same key.
mcp config · hosted
{ "mcpServers": { "snoobl": { "url": "https://snoobl.com/mcp", "headers": { "Authorization": "Bearer snbl_live_…" } } } }
The hosted server speaks Streamable HTTP and keeps no session — every request stands alone, authenticated by the Authorization header.
3. Ask for a filmRestart the client, then say what you want in plain words. Something like:
prompt
Make a 10-second launch film for our night serum: glass bottle on dark marble, one slow push-in. Show me the storyboard and the price before you render.
A storyboard takes a minute or two and is free. A render takes a few minutes and costs credits; if it fails, the credits come straight back.
Tools11 tools, each a thin wrapper over a REST endpoint — so a tool can never do more than the key's scope allows. The descriptions below are word for word what your assistant reads.
list_brands
read-only
List brands
Lists the workspace's brands, newest first. A brand is the product world films are made in — every project belongs to one. Start here to find the brandId other tools need.
arguments
limitintegeroptional≥ 1, ≤ 100
Page size, 1–100. Default 20.
afterstringoptional
The nextCursor from a previous page, to fetch the next one.
create_brand
free
Create a brand
Creates a brand. Free. Only needed when list_brands has no brand for the product you're filming — otherwise reuse the existing one.
arguments
namestring
The brand or product name.
typestringoptional
A free-form label, e.g. "Skincare · DTC".
list_projects
read-only
List a brand's projects
Lists a brand's projects, newest first. A project is one film effort: a brief, its storyboards and its renders.
arguments
brandIdstring
The brand whose projects to list.
limitintegeroptional≥ 1, ≤ 100
Page size, 1–100. Default 20.
afterstringoptional
The nextCursor from a previous page, to fetch the next one.
create_project
free
Create a project
Creates a project inside a brand from a brief. Free. The brief is all the Director needs — a line or two about the film beats a shot list. Next: generate_storyboard.
arguments
brandIdstring
The brand this film is for (from list_brands).
briefstring
What the film is about, in plain words.
titlestringoptional
Optional. Derived from the brief when left out.
generate_storyboard
free
Generate a storyboard
Asks the Director to write a storyboard for a project. Free. It runs in the background and usually takes 1–2 minutes: this returns a job right away — call get_storyboard every 15 seconds or so until the job is completed, then start_render.
arguments
projectIdstring
The project to storyboard.
guidestringoptional
An optional steer. A vibe beats a shot list.
creativityintegeroptional≥ 0, ≤ 100
0 = stick to the brief, 100 = surprise me.
webResearchbooleanoptional
Let the Director research the product online first.
get_storyboard
read-only
Get a project's storyboard
Returns a project's current storyboard (concept, beats, the full video prompt) and its newest storyboard job. Use it to poll after generate_storyboard: while job.status is queued or in_progress, wait and call again; when it's completed, version holds the storyboard.
arguments
projectIdstring
The project.
start_render
spends credits
Start a render
Renders a project's storyboard into a film. THIS SPENDS THE WORKSPACE'S CREDITS — check list_credit_costs and get_credit_balance first, and confirm with the user before rendering unless they already asked for it. Credits are debited up front and refunded automatically if the render fails. Returns immediately with the render(s) and what was charged; a render takes a few minutes — poll get_render. Anything left out falls back to the project's saved settings.
arguments
projectIdstring
The project to render. It needs a storyboard first.
versionIdstringoptional
Which storyboard version. Default: the current one.
aspectRatio"16:9" | "9:16" | "1:1"optional
Default: the project's setting.
durationSeconds5 | 10 | 15optional
Film length in seconds. Longer costs more.
resolution"480p" | "720p" | "1080p"optional
Higher costs more.
tier"standard" | "fast"optional
Fast is cheaper; same model. Default standard.
generateAudiobooleanoptional
countintegeroptional≥ 1, ≤ 4
How many takes to render — each one is charged. Default 1.
get_render
read-only
Get a render
Returns a render's status: queued, in_progress, completed, failed or nsfw. Use it to poll after start_render (every 20–30 seconds is plenty). Once completed it carries signed URLs to the film; a failed render was already refunded.
arguments
renderIdstring
The render (from start_render).
get_export_url
read-only
Get a film's download link
Returns fresh signed links to a completed render: downloadUrl (an MP4 attachment) and videoUrl (plays in a browser). Links expire after an hour — call this again for new ones rather than storing them.
arguments
renderIdstring
A completed render.
list_credit_costs
read-only
List render prices
Lists what a render costs in credits for each resolution, tier and duration. Free to call. Use it to tell the user the price before start_render.
get_credit_balance
read-only
Get the credit balance
Returns how many credits the workspace has left. Credits are shared by everyone in the workspace.
Need something the tools don't cover? The REST API has it →
Your films are yours. Commercial use included — no asterisk.
© 2026 Snoobl · hello@snoobl.com