https://api.rendobar.com/mcp gives any MCP client 10 tools: submit a job, upload a file, poll status, and chain a completed job into the next one. Connect it with one command over OAuth, no API key to copy.
Connect
- Claude Code
- claude.ai
- Other MCP clients
What you can do
Calllist_job_types first. It returns every active job type fresh, so it never goes stale like a hardcoded list would. Pass type (for example "compose") to get that one job type’s complete parameter schema instead, with per-field documentation: ranges, defaults, units, and usage notes. Agents should do this before authoring a complex payload like a compose timeline.
{ job: "job_..." } inside submit_job’s inputs chains a completed job straight into the next one today for ffmpeg inputs. For any other job type, pass the prior job’s output URL (from get_job) as a plain URL input instead.
A failed call returns isError: true with { error: { code, message, retryable } } instead of throwing, so the agent can react to it. See the error catalogue for codes.
From your phone
A phone has no filesystem the agent can reach, so a media file routes through a page you open yourself.1
Connect on claude.ai mobile
Settings, Connectors, Add custom connector, paste
https://api.rendobar.com/mcp, approve.2
Ask for the edit
“Trim this video to the first 10 seconds and burn in captions.” Claude calls
list_job_types, then upload_media with no files declared, since it can’t read anything off your phone.3
Tap the upload link
upload_media returns a pageUrl. Claude sends it to you in the chat. Open it, pick the file from your camera roll, and it uploads.4
Get the result in chat
Claude polls
get_upload({ wait: true }) until the asset is ready, calls submit_job with its URL, then get_job({ wait: true }), and replies with the finished clip.From an agent with shell access
An agent that can run shell commands skips the upload page and PUTs bytes directly.1
Declare the file
Pass the filename and size. A known size gets you a presigned URL right away: a single PUT under 100 MB, part URLs above it.
2
PUT the bytes
3
Finalize the asset
url. For a multipart upload, pass parts: [{ partNumber, etag }] collected from each part’s PUT response.4
Submit the job
{ jobId: "job_9c31", status: "waiting" }.5
Chain a second job off the first
Pass the completed job’s id as the next job’s input. No download, no re-upload.
6
Wait for the result
output.file.url.Run the local server for direct disk access
The hosted server can’t read your disk, so even a shell-capable agent goes through the presigned-URL handshake above.@rendobar/mcp, the local stdio server, skips that: its upload_file tool reads a file off disk and uploads it in a single call.
Get an API key at app.rendobar.com, Settings, API keys.
- Claude Code
- Claude Desktop
- Other clients
Needs Node 20.10 or later. The server checks at startup and exits with a clear message if it’s older.
See also
- FFmpeg reference: the job type
submit_jobcalls in every example on this page - How a job works: the job lifecycle and the
outputshape - Error codes: every code behind an
isErrorresponse - Plan limits: file size caps and concurrency by plan