Tool definitions for both Rendobar MCP servers. The local stdio server (Documentation Index
Fetch the complete documentation index at: https://rendobar.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
@rendobar/mcp) exposes six tools including upload_file. The remote HTTP server keeps upload_media for browser-based clients that have no disk access.
Annotations
| Tool | readOnlyHint | destructiveHint | idempotentHint | openWorldHint |
|---|---|---|---|---|
upload_file | false | false | false | true |
upload_media | false | false | false | true |
submit_job | false | false | when key set | true |
get_job | true | false | true | true |
list_jobs | true | false | true | true |
cancel_job | false | true | true | true |
get_account | true | false | true | true |
upload_file
Local server only. Reads a file from disk and uploads it to ephemeral R2 storage.
Absolute or working-directory-relative path to the file.
Filename hint sent to Rendobar. Defaults to the basename of
path.{ downloadUrl: string, sizeBytes: number }. Pass downloadUrl as a value in submit_job’s inputs map. Files auto-delete after 24 hours.
The pre-stream gate rejects files larger than your plan’s maxInputFileSize before any bytes leave the disk.
upload_media
Remote server only. Returns instructions for the user to upload via curl.
Filename with extension.
MIME type. Auto-detected from the extension if omitted.
{ uploadEndpoint, method, contentType, maxFileSize, expiresIn, instructions }. The agent passes the curl command back to the user; the user runs it; the response contains a downloadUrl to use in submit_job.
For seamless local uploads, use the local server’s upload_file instead.
submit_job
Submit any active job type. The tool description enumerates current types at server startup.
Job type from the registry.
raw.ffmpeg is the only Live type today.Map of input name to URL. For
raw.ffmpeg, keys match filenames in the command.Type-specific parameters. For
raw.ffmpeg: { command: "ffmpeg -i input -c copy output.mp4" }.Resubmitting the same key returns the original job instead of creating a duplicate.
{ jobId: string, status: "waiting" | "complete", url?: string }. Sync-eligible jobs (e.g. some QR generation) return complete immediately with url. Everything else returns waiting.
get_job
Poll a job by ID.
Job ID from
submit_job, e.g. job_abc123.waiting/dispatched:{ id, type, status }running: addsprogress(0–1) andstep(current step name)complete: addscost(e.g."$0.05"),durationMs,outputUrl,output: { format, resolution, durationMs, fileSizeBytes }failed: addserror: { code, message }cancelled: terminal, no extra fields
list_jobs
Recent jobs.
waiting | dispatched | running | complete | failed | cancelledFilter by job type, e.g.
raw.ffmpeg.1 to 50.
{ jobs: [{ id, type, status, createdAt, cost, outputUrl? }], total }. outputUrl is included only when status is complete.
cancel_job
Cancel a job that has not started running.
Job ID to cancel.
{ id, status: "cancelled" } on success.
Returns isError: true with code CONFLICT if the job is already running, complete, failed, or cancelled. Only waiting and dispatched jobs can be cancelled.
get_account
Current account state.
No parameters.
Returns:
balance— formatted dollars, e.g."$29.42"balanceUsd— raw numberplan—free | proisPro— booleanlimits.concurrentJobs— max concurrent jobslimits.maxFileSize— formatted, e.g."100 MB"limits.maxFileSizeBytes— raw integerlimits.jobTimeoutMin— per-job timeout in minutes
Errors
Tool failures return aCallToolResult with isError: true and a JSON payload:
UNAUTHORIZED, INSUFFICIENT_CREDITS, RATE_LIMITED, VALIDATION_ERROR, NOT_FOUND, CONFLICT, INVALID_JOB_TYPE. The full list lives in Errors.