Reelrail

The Reelrail MCP server

Reelrail speaks the Model Context Protocol, so an assistant can browse video models, price a shot, start a generation and hand you back a playable clip without leaving the chat. Jobs run against your workspace, under the same plan limits, credit ceilings and job history as the web app - they show up in your jobs list either way.

Server URL
https://api.reelrail.app/mcp

Before you connect

Tools

Everything below is available today: video, speech and captions, storyboards and share links - the same surface the web app has. Image tools are not listed because nothing renders an image yet; they arrive with image generation. Prefer plain HTTPS? The /v1 API reference is at /docs/api.

ToolScopeWhat it doesCost
list_video_modelsreelrail:readEvery video model Reelrail currently routes to, with resolutions, durations, audio and reference support, plus a price hint.Free
estimate_videoreelrail:readPrice a generation before running it: credits, the upper bound Reelrail will hold, and your balance.Free
generate_videoreelrail:generate:videoStart a generation with a prompt, duration, resolution, optional references and first/last frames. Pass pipeline edit, extend or upscale with parentJobId to work from a clip you already made. Returns a job id immediately.Spends creditsSpends credits. A hold is placed when the job starts and settled against the provider's real cost when it finishes. An edit or an upscale is priced on the source clip.
get_job_statusreelrail:readPoll a job, optionally waiting up to 60 seconds. Returns a playable link and a poster once the job succeeds.Free
list_jobsreelrail:readPage through the workspace's jobs, filtered by status or model.Free
cancel_jobreelrail:generate:videoStop a queued or running job.Free. A cancelled job is never charged and its hold is released.
upload_referencereelrail:generate:videoFetch a public image or video URL into the workspace so a later generate_video call can reference it.Free. Counts against the workspace's storage retention window.
get_credit_balancereelrail:readCurrent balance, plan, per-job ceiling and monthly ceiling.Free
synthesize_speechreelrail:generate:videoRead a script aloud in one of twelve voices and store it as an audio asset a talking-head generation can use.Spends creditsSpends credits: $0.015 per 1 000 characters at your plan's markup, never less than 1 credit. Repeat a requestId to retry without paying twice.
transcribe_captionsreelrail:generate:videoTranscribe an asset or a finished job's clip to WebVTT and store the captions as a downloadable asset.Spends creditsSpends credits: billed per audio minute, which is 1 credit for any realistic clip.
attest_asset_rightsreelrail:generate:videoRecord that the person in an uploaded photo may be used. A talking-head job is refused until its avatar image carries this.Free. Only call it after the person using the assistant has confirmed the likeness statement themselves.
create_sequencereelrail:generate:videoCreate a storyboard: one model, shared references and defaults, and up to 24 shots that each render as their own job.Free. Nothing renders until run_sequence.
get_sequencereelrail:readRead a sequence with every shot, its job status and a playable link per finished shot.Free
list_sequencesreelrail:readPage through the workspace's sequences, newest first.Free
run_sequencereelrail:generate:videoSubmit the sequence's unrendered shots, as many as the plan's concurrency cap allows; the rest come back with the reason they were skipped.Spends creditsSpends credits: one job per submitted shot, at the same price generate_video would charge.
regenerate_shotreelrail:generate:videoRe-shoot one shot, optionally with a new prompt, preset or parameter overrides.Spends creditsSpends credits: a fresh job for that shot. Repeat a requestId to retry without paying twice.
archive_sequencereelrail:generate:videoPut a sequence away. It stops appearing in lists and can no longer be run.Free. The rendered jobs and clips are kept.
create_share_linkreelrail:generate:videoPublish a finished job or sequence at a public URL that anyone with the link can watch - prompt, model, parameters and the clip, never your reference files or workspace details.Free. Optional expiry from 1 hour to 90 days; revocable at any time.
list_share_linksreelrail:readWhat the workspace has published, with each link's URL and view count.Free
revoke_share_linkreelrail:generate:videoStop a share link working. The public page 404s from the next request on.Free

What you are approving

The first time a client connects, Reelrail asks you to approve its request on https://app.reelrail.app/consent. You can approve a subset, and you can take it back at any time from Connected apps.

ScopeMeans
reelrail:readList available models, read your jobs and their results, and see your credit balance.
reelrail:generate:videoStart video generations, upload references and cancel jobs. Spends credits from the workspace below.
offline_accessKeep working after you close the browser, without asking you to sign in again. Revoke it any time under Connected apps.

Connect your client

Claude.ai and Claude Desktop (custom connector)

  1. Settings -> Connectors -> Add custom connector.
  2. Paste the server URL and click Connect.
  3. Sign in to Reelrail in the browser window, approve the request, and you are done.
Server URL
https://api.reelrail.app/mcp

Claude Desktop (JSON config, via mcp-remote)

  1. Open the Developer settings and edit claude_desktop_config.json.
  2. Add the entry below, then restart Claude Desktop. A browser window opens for the OAuth flow.
claude_desktop_config.json
{
  "mcpServers": {
    "reelrail": {
      "command": "npx",
      "args": ["mcp-remote", "https://api.reelrail.app/mcp"]
    }
  }
}

Claude Code

  1. Add the server, then run /mcp inside Claude Code and authenticate in the browser.
  2. Prefer a headless setup (CI, a shared box)? Skip OAuth and pass an organization API key instead.
OAuth
claude mcp add --transport http reelrail https://api.reelrail.app/mcp
Organization API key
claude mcp add --transport http reelrail https://api.reelrail.app/mcp \
  --header "Authorization: Bearer rr_org_xxxxxxxxxxxxxxxx"

ChatGPT

  1. Settings -> Connectors (developer mode) -> Create.
  2. Enter the server URL, choose OAuth authentication, then Connect and approve.
Server URL
https://api.reelrail.app/mcp

Cursor and Windsurf

  1. Add the server to the editor's MCP config and reload. Both open the OAuth flow.
Cursor (.cursor/mcp.json)
{
  "mcpServers": {
    "reelrail": { "url": "https://api.reelrail.app/mcp" }
  }
}
Windsurf (mcp_config.json)
{
  "mcpServers": {
    "reelrail": { "serverUrl": "https://api.reelrail.app/mcp" }
  }
}

MCP Inspector (for testing)

  1. Run the inspector, paste the server URL, set the transport to Streamable HTTP.
  2. Open Auth settings and run Quick OAuth Flow, then call tools/list.
Terminal
npx @modelcontextprotocol/inspector

Without OAuth: organization API keys

Scripts, CI jobs and any client that cannot run a browser flow can send an organization key instead. Create one under API keys - it starts with rr_org_, belongs to the workspace rather than to you, and carries whatever permissions you gave it. Treat it like a password: it is shown once and it spends real credits.

JSON-RPC tools/list over curl
curl -sS https://api.reelrail.app/mcp \
  -H "Authorization: Bearer rr_org_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Revoking the key stops every client using it on the next request. OAuth grants are revoked separately under Connected apps.