An open source Creatomate MCP server and shared CLI with 17 tools, free validation and exact approved batches.
Key takeaways
This free Creatomate MCP server and CLI gives your AI real access to the intended Creatomate project’s templates, video/image rendering and documented feeds. Inspect sources, validate a design without render credits and submit only the exact render or template changes you approve.
It's one install with 2 ways in. Claude, Codex, Cursor or any other MCP app calls its 17 tools for you, and the same tools work as a CLI that agents like Claude Code, Codex and OpenCode run, or that you type yourself.
Here's what the Creatomate MCP server and CLI is, how to set it up in each app, and every tool it has.
What is the Creatomate MCP server & CLI?
The Creatomate MCP server & CLI is a free, open source program that lets AI agents work with project templates, free design validation, approved renders and exact reviewed batches for you, in 2 ways. The MCP server is what an AI app like Claude, Codex or Cursor connects to, through MCP (Model Context Protocol), the open standard AI apps use to call outside tools.
You ask in plain language. Your AI picks the right tool, and the server makes the call directly to the fixed Creatomate API, using documented v2 and explicitly separate legacy v1 routes.
The CLI is the same program as commands. creatomate-cli get-template runs the same code your AI runs when you inspect the chosen project template before rendering, whether an agent like Claude Code runs it or you do.
What can you ask it?
Once it's set up, you ask the way you'd ask an assistant. These are real prompts it handles:
Try askingList this project’s templates and inspect the one I choose.
Validate this design without queuing a paid render.
Change only the template name I approve.
Review these exact two render payloads and give me their approval hash.
Submit only that matching approved batch in my work profile.
Check these existing job IDs without an automatic polling loop.
Read the requested feed’s latest sample.
Creatomate already has an official hosted MCP with OAuth, project connections, template CRUD, raw renders, free validation and client approvals. This owned companion adds a shared task CLI/local MCP, isolated private profiles, exact ordered batch review and bounded status reads. The official product and actual community repository are compared below without invented gaps or token-saving claims.
How to install the Creatomate MCP server
Choose CLI, local MCP or the versioned desktop bundle using the existing install controls. Codex setup comes first; full instructions for every advertised client and OS follow below.
Watch out: Installation does not grant provider access. Do not submit a paid render merely to test setup.
Set up Creatomate access
Private project API keys
- Open the intended project in Creatomate, then Project Settings → API Integration. The editor’s Use Template → Integrate with API also shows the template ID and integration examples.
- Save that project’s API key outside repositories. Set CREATOMATE_TOKEN_FILE to an absolute owner-private token-only file, or set CREATOMATE_API_KEY in private client settings. A profile is a project, not an account-wide unrestricted connection.
- Run creatomate-cli doctor for local settings. Deliberately run doctor --network for one GET /v2/templates: it reports count, not full template data. Success proves that request, not account ownership, every endpoint or rendering quality.
- Read the intended template’s source and the current provider guide. Prepare the exact requested design; use validate_render before paid submission. A free provider dry run returns effective source, errors and warnings.
- Approve only the requested paid render or template mutation. Do not submit a render just to test installation.
Keys are project-specific and sent only to api.creatomate.com in Authorization: Bearer. Named {name,api_key,token_file} profiles never fall back to a global key or another profile. The exact selected label and requested IDs matter. login prints setup instructions only; it does not store credentials, start OAuth, load .env or reuse official MCP sessions. The hosted official MCP supports OAuth or project-key Bearer access separately, and reaches one project per connection.
Token files override the selected profile’s environment key and are cached until restart. Use a canonical private directory (0700) and regular absolute non-symlink file (0600), at most 64 KiB, on macOS/Linux. Windows users must restrict ACLs to themselves; POSIX mode checks do not prove Windows ACL protection. GUI and remote clients have their own environment and filesystem.
Credits, plans and limits
This AGPL wrapper is free; provider access, credits, media rights and external generation services remain separate. Check current pricing, your project and API Log before approving spending. A provider dry run with dry_run:true uses no credits and queues nothing. Our validate_render forces that flag; preview_render_batch is local only and does not validate through the provider.
Current credit documentation states one credit per image. Video credits depend on width × height × frame_rate × duration / 100000000, rounded up, with subtitle/provider rules and actual plan behavior still relevant. A half-scale draft is approximately one quarter of full-resolution video credits, not free. Current free-plan output is clamped so both dimensions are at most 480 pixels. Wrapper limits are not a spending cap or reliable quote; inspect the provider estimate under Single Export and actual API Log usage.
The current API rate limit is 30 requests per ten seconds per account, across projects. Every request counts; X-RateLimit-Remaining and Retry-After report provider guidance. Default 350 ms process-wide spacing serializes starts across this client’s project profiles. Other processes/apps still share the provider limit. There is no automatic retry, including 429/402, redirects, network timeouts and 5xx. Respect Retry-After before an intentional repeat; do not replay an unknown paid submission.
JSON request bodies are capped at 1 MiB, API responses at 5 MiB. Local exact batches contain one to ten separate v2 submissions; status batches contain one to twenty unique IDs. Native v1 tag rendering can select any number of matching templates and is explicitly not covered by the exact-batch count bound. Provider render concurrency is separate from accepted request rate; a planned job can remain queued. Webhooks are preferred over repeatedly polling large batches.
Rotation, disconnection and retention
Rotate/revoke the intended project key through provider settings, update private files/config and restart every process using it. Removing npm or a client entry does not revoke a key or undo submissions. Official OAuth connections can be revoked through Account Settings → MCP Connections; removing a client-side connector alone does not revoke the provider grant.
Generated renders, status records, snapshots and download URLs expire after 30 days. Template input media is a different retention scope. Save requested finished files to your own storage through an explicitly approved external workflow; this wrapper never automatically fetches media or uploads files. Current v2 template deletion is soft deletion, recoverable for 30 days; no undocumented wrapper restore endpoint is added. Keep keys, project profiles, source/media URLs and private render metadata out of public issues.
Check that it works
Start with local discovery and configuration. Deliberately opt into one project-template read only when private access is configured.
creatomate-cli --version
creatomate-cli doctor
creatomate-cli list-accounts --agent
creatomate-cli doctor --networkcreatomate-cli doctor
creatomate-cli doctor --network
creatomate-cli list-accounts --agent
creatomate-cli list-templates --agent
creatomate-cli get-template --template-id YOUR_TEMPLATE_ID --agentLocal doctor verifies presence/settings, not authentication. Network doctor deliberately reads compact template metadata and prints its count. It does not verify account ownership or submit a render. Read-only discovery leaves eleven tools and refuses hidden confirmed mutations.
Use the Creatomate CLI
The CLI is the same 17 tools as commands. AI agents that run commands, like Claude Code, Codex and OpenCode, use it on their own, and you can type the same commands in a terminal or a script.
Every tool name becomes a command with dashes, so validate_render runs as creatomate-cli validate-render.
creatomate-cli tools
creatomate-cli validate-render --help
creatomate-cli schema create-render
creatomate-cli get-template --template-id TEMPLATE_ID --agent
creatomate-cli validate-render --payload '{"template_id":"TEMPLATE_ID","render_scale":0.5}' --agent
creatomate-cli preview-render-batch --renders '{"template_id":"TEMPLATE_A"}' --renders '{"template_id":"TEMPLATE_B","render_scale":0.5}' --agentThe bare creatomate-cli lists every command, and creatomate-cli <command> --help shows what a command takes. All six render/template mutations require --confirm; --agent/--yes do not approve spending. validate_render forces a free provider dry run. A local batch preview makes no request and is not provider validation. Repeat --renders once per JSON object; the CLI does not take one JSON array for that flag.
These flags work on every command:
| Flag | What it does |
|---|---|
| --agent | Compact JSON without prompts/color; never mutation approval |
| --select a,b.c | Local result field selection |
| --confirm | Approve only the requested mutation |
| --account NAME | Exact private project label |
| --payload JSON | One native render body as a JSON object |
| --renders JSON | Repeat once per batch object, in exact intended order |
| --review-sha256 SHA256 | Hash returned by the matching local batch review |
A script can branch on the exit code:
| Exit code | What it means |
|---|---|
| 0 | Successful response; inspect dry-run valid/errors/warnings |
| 2 | Invalid arguments, review mismatch or refused mutation |
| 3 | Missing project resource |
| 4 | Rejected credentials |
| 5 | Provider/transport/content failure |
| 7 | Rate limit or insufficient credits |
| 10 | Missing/invalid private configuration |
MCP server or CLI: which one?
Both surfaces call the same tools. Codex can connect to the local MCP server or run the CLI directly. Neither requires Claude Code.
MCP provides structured tool discovery; the CLI supports scripts, compact JSON, field selection and command/schema discovery. Official hosted MCP connection and local CLI authentication have different setup requirements.
Codex-specific token measurements are pending. Record the actual client/model versions, discovery configuration, input/output usage, caching, latency and equivalent successful outcomes. Standing definitions and full task cost are separate measurements; CLI commands, selected help, results and reasoning still consume tokens.
No efficiency percentage or Claude-derived figure is presented as a Codex result. Other-client benchmarks can be added separately.
Template and rendering workflows
Start with the intended template
Read list_templates and get_template using the exact private profile. Lists contain compact metadata; a full template read contains source. No guessed page/per_page controls are sent. Filters use native comma-separated tags and match any supplied tag.
A confirmed create_template adds name/source/tags; update_template PATCH changes only supplied fields. Tags/source replace those fields, not merge recursively. At least one name/source/tags change is required. delete_template returns explicit deleted:true for 204; recovery remains the provider’s documented interface, not an invented restore tool.
Validate, draft, inspect, then finish
creatomate-cli validate-render --payload '{"template_id":"YOUR_TEMPLATE_ID","modifications":{"Title":"Requested headline"}}' --agent
creatomate-cli create-render --payload '{"template_id":"YOUR_TEMPLATE_ID","render_scale":0.5}' --confirm --agent
creatomate-cli get-render --render-id YOUR_RENDER_ID --agentvalidate_render forces dry_run:true and preserves valid/errors/warnings/effective source. valid:true does not prove assets resolve, external provider keys exist, captions/design look right or media rights. Check warnings such as a modification that matched no element. Visual preview in the provider editor is useful; the wrapper does not implement it.
create_render uses current /v2/renders and raw RenderScript at the top level. Normal 202 responses are a single object and may include advisory errors/warnings even though the job was queued. Do not interpret those warnings as preventing credits. planned/waiting/transcribing/rendering are unfinished; succeeded is ready, failed/cancelled are terminal outcomes to investigate. No automatic polling, failed-render repair, retry, paid final render, media download or external publishing occurs.
Use raw native property names, existing element names and exact dot paths; do not invent CSS or SDK camel-case fields. Provider semantics validate beyond the basic local input. A full-quality final submission needs its own explicit approval. Media URLs are sent to the provider for its rendering; this local wrapper does not fetch them itself.
Exact batches, feeds and legacy rendering
Review an exact ordered paid batch
creatomate-cli preview-render-batch --renders '{"template_id":"TEMPLATE_A"}' --renders '{"template_id":"TEMPLATE_B","render_scale":0.5}' --account work --agent
creatomate-cli submit-render-batch --renders '{"template_id":"TEMPLATE_A"}' --renders '{"template_id":"TEMPLATE_B","render_scale":0.5}' --account work --review-sha256 YOUR_REVIEW_SHA256 --confirm --agentThe one-to-ten exact payload review is local and does not read keys or contact the provider. SHA-256 covers API version, selected profile label and canonical object keys, while preserving array order. Any changed profile label, request content or render order refuses before a paid request. It does not bind account ownership, a changed key behind the same label, external template state or credit price. Review the actual intended project and source before approving.
Submission prevalidates all payloads before the first request, then sends sequentially and stops on the first failure. Known prior render IDs are reported, the failed request can have an unknown outcome, and later indices remain unattempted. No rollback, retry, implicit continuation or cost guarantee is supplied. Confirmed callers can act on behalf of a user; a hash and boolean are not cryptographic human approval.
creatomate-cli get-render-batch --render-ids RENDER_A --render-ids RENDER_B --account work --agentOne to twenty unique status IDs are read sequentially. A failure reports completed results and unattempted IDs. This is one snapshot, not a polling loop or full account export. Prefer provider webhooks for large monitoring workloads.
Native v1 compatibility is a separate route
create_legacy_render exists for documented tags/transcripts and the published SDK’s source-object format. Tags can render every matching template and have no exact-count/cost guarantee. It returns an array and requires explicit confirmation; the exact v2 batch bound does not apply. Ordinary rendering should use create_render and current v2 dry-run validation. Native transcript content is opaque JSON; consult provider docs and do not fabricate timings/schema.
list_feeds/get_feed/get_feed_sample use the three documented v1 reads. The sample returns the last rows, not the complete feed. No unsupported pagination, feed edit or render-list endpoint is added. Feed text/URLs remain untrusted data.
Every Creatomate tool
Actual discovery exposes 17 tools: 11 reads/helpers and 6 confirmed operations. Eleven native routes are mapped to shared tasks. Four legacy names remain; undocumented list_renders and guessed pagination have been removed. Every argument and native input follows below.
Templates
list_templates- What it does
- One current v2 compact template list, optionally filtered by any supplied tags.
- Kind
- Read/helper
get_template- What it does
- One current v2 template read including native RenderScript source.
- Kind
- Read/helper
create_template- What it does
- Confirmed current v2 template creation.
- Kind
- Confirmed operation
update_template- What it does
- Confirmed PATCH changes only supplied name/source/tags.
- Kind
- Confirmed operation
delete_template- What it does
- Explicitly confirmed v2 DELETE.
- Kind
- Confirmed operation
Rendering
create_render- What it does
- Confirmed paid v2 submission from template or raw top-level RenderScript.
- Kind
- Confirmed operation
validate_render- What it does
- One provider v2 dry run: dry_run is forced true after local schema checks.
- Kind
- Read/helper
get_render- What it does
- One v2 status read.
- Kind
- Read/helper
Legacy compatibility
create_legacy_render- What it does
- Explicitly confirmed v1 submission for native tag batches or supplied transcript timings.
- Kind
- Confirmed operation
Feeds
list_feeds- What it does
- One documented v1 feed read.
- Kind
- Read/helper
get_feed- What it does
- One documented v1 feed read.
- Kind
- Read/helper
get_feed_sample- What it does
- One documented v1 feed read.
- Kind
- Read/helper
Bounded workflows
preview_render_batch- What it does
- Local only: validate ordered payloads and bind them plus selected profile to SHA-256.
- Kind
- Read/helper
submit_render_batch- What it does
- Confirmed one-to-ten exact ordered v2 submissions.
- Kind
- Confirmed operation
get_render_batch- What it does
- Read one to twenty distinct render IDs sequentially in one project.
- Kind
- Read/helper
Local
list_accounts- What it does
- Local labels/default/auth-method availability only.
- Kind
- Read/helper
get_operation_schema- What it does
- Local current reviewed method/path/body/query metadata for eleven documented operations, with source URLs/version distinctions.
- Kind
- Read/helper
Is the Creatomate MCP server safe?
Every create/update/delete template, regular v2 render, legacy v1 render and exact batch submission requires confirm:true or --confirm. The shared guard runs before execution. CREATOMATE_READ_ONLY=1 hides all six operations and refuses direct confirmed calls; CREATOMATE_ALLOW_DESTRUCTIVE=0 also refuses them. --agent/--yes never approves spending or changes.
validate_render is an explicit provider request classified as read-only because dry_run:true is forced and provider docs say no render/credits. The same project data still leaves the machine and request rate still applies. Local preview_render_batch is separate and does not make that provider request.
Confirmation records caller intent; it is not provider permission, a budget reservation or verified human identity. Optional metadata-only audit logs record guard outcomes, not full native payloads, credentials or guaranteed provider success. Protect the private audit path; an audit write failure does not make execution transactional. No request automatically retries and no hidden paid follow-up is performed.
Confirmation records caller intent, not provider authorization, a quote or a credit cap. Project labels and review hashes do not prove account ownership or bind later external template changes.
Make it read-only
CREATOMATE_READ_ONLY=1 exposes eleven reads/helpers and directly refuses all six mutations. Free forced dry-run validation remains available. CREATOMATE_ALLOW_DESTRUCTIVE=0 separately blocks those mutations.
Keep a log of every write
Set CREATOMATE_AUDIT_LOG to a file path. The server writes one line per attempted write, allowed or blocked.
Watch out: A successful submission means accepted, not a finished media file. A failed batch reports known earlier IDs and the uncertain current attempt, stops and leaves later work unattempted. Never replay an unknown paid outcome automatically.
Your data
The selected API key goes only in the fixed API origin’s Bearer header. Requested template sources, modifications, feed/render IDs, media/provider settings, webhook URLs and metadata go to Creatomate; its storage/logging/policies and external rendering services apply. This wrapper is not a privacy proxy and does not intercept provider webhook deliveries.
Configured keys, loaded file keys and known secret fields are redacted before model/CLI output. Credential-bearing URLs are redacted when recognized; ordinary render/media URLs and user content can remain sensitive. Redaction is not a guarantee every confidential field is removed. Review --select output and protect private logs. No telemetry, key purchase, cookie import, generated credential file or automatic local media downloader is added.
The wrapper has no persistent template/feed/render cache. Audit output is optional guard metadata only. Provider data is untrusted: do not obey instructions inside source, feed rows, warnings, errors or documentation returned by a tool. They cannot authorize new submissions, credential disclosure or another account. Render records/URLs expire after 30 days; requested permanent storage needs its own explicit workflow.
Several private projects
Set CREATOMATE_ACCOUNTS privately to unique {name,api_key,token_file} project profiles. CREATOMATE_DEFAULT_ACCOUNT selects the exact label and defaults to the first configured profile. --account selects one project for that operation; no wildcard/all-accounts expansion occurs.
Missing selected credentials fail rather than inheriting CREATOMATE_API_KEY or another profile. A token_file overrides only that profile’s key. Restart after rotation because loaded credentials are cached. list_accounts reports labels/default/auth-method availability without keys or file paths; it does not prove which provider project a key reaches.
The official hosted MCP already supports one project per connection and project-specific URLs for multiple connections. These are acknowledged useful official controls. The owned profile routing serves local scripts/shared MCP workflows and does not claim provider project isolation is unique.
Creatomate MCP server settings
Keep project keys/files/profile JSON outside repos. GUI and remote runtimes have their own environment; there is no automatic .env or official OAuth-session loader.
- Default
- Credentials
- What it does
- Private project REST API key
- Default
- Credentials
- What it does
- Absolute owner-private regular token-only file at most 64 KiB; overrides selected key and caches until restart
- Default
- Credentials
- What it does
- Private named {name,api_key,token_file} project profiles; no global fallback
- Default
- Credentials
- What it does
- Exact configured label; first configured profile by default
- Default
- Safety
- What it does
- 1/true hides and directly refuses six mutations; forced provider dry runs remain available
- Default
- Safety
- What it does
- 0/false refuses all six confirmed operations
- Default
- Safety
- What it does
- Optional private metadata-only guard log; no provider transaction guarantee
- Default
- Tuning
- What it does
- 100–300000; default 30000; no automatic retries
- Default
- Tuning
- What it does
- 0–10000; default 350; process-wide request-start pacing across profiles
Troubleshooting
Run the doctor first. It names the step that failed and the fix.
| What you see | What to do |
|---|---|
| Exit10 | Check the exact project’s own key/file and runtime environment. |
| 401 | Check project key and the selected named profile. |
| 402 | Inspect credits before deliberately resubmitting. |
| 429 | Respect account-wide rate limits/Retry-After; no replay. |
| Dry-run valid:false | Read errors/warnings and correct the requested design; exit0 alone is not design validity. |
| Unexpected v2 source/tags/transcripts | Use top-level RenderScript or deliberately select create_legacy_render for native v1 inputs. |
| Batch review mismatch | Re-review the exact profile, order and payloads. |
| Partial submission | Inspect known IDs and uncertain attempt; later work was not submitted. |
| Missing list_renders | Use known IDs and provider API Log; current reviewed docs do not establish that route. |
| Desktop installation refused | Check host runtime and custom-extension policy. |
If the server doesn't show up in your app at all, run the command your app runs, in a terminal, and read the error.
Every tool argument and native input
list_templates- CLI command
creatomate-cli list-templates- Policy
- Read/helper
get_template- CLI command
creatomate-cli get-template- Policy
- Read/helper
create_template- CLI command
creatomate-cli create-template- Policy
- Explicit confirmation
update_template- CLI command
creatomate-cli update-template- Policy
- Explicit confirmation
delete_template- CLI command
creatomate-cli delete-template- Policy
- Explicit confirmation
create_render- CLI command
creatomate-cli create-render- Policy
- Explicit confirmation
validate_render- CLI command
creatomate-cli validate-render- Policy
- Read/helper
get_render- CLI command
creatomate-cli get-render- Policy
- Read/helper
create_legacy_render- CLI command
creatomate-cli create-legacy-render- Policy
- Explicit confirmation
list_feeds- CLI command
creatomate-cli list-feeds- Policy
- Read/helper
get_feed- CLI command
creatomate-cli get-feed- Policy
- Read/helper
get_feed_sample- CLI command
creatomate-cli get-feed-sample- Policy
- Read/helper
preview_render_batch- CLI command
creatomate-cli preview-render-batch- Policy
- Read/helper
submit_render_batch- CLI command
creatomate-cli submit-render-batch- Policy
- Explicit confirmation
get_render_batch- CLI command
creatomate-cli get-render-batch- Policy
- Read/helper
list_accounts- CLI command
creatomate-cli list-accounts- Policy
- Read/helper
get_operation_schema- CLI command
creatomate-cli get-operation-schema- Policy
- Read/helper
list_templates
creatomate-cli list-templates
One current v2 compact template list, optionally filtered by any supplied tags. No sources, guessed page/per_page parameters or automatic paging.
tags- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Exact tags; comma inside one tag is rejected because the native list query is comma-separated. uniqueItems:
true.
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
get_template
creatomate-cli get-template
One current v2 template read including native RenderScript source. Does not render or mutate.
template_id- Required
- Yes
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
create_template
creatomate-cli create-template
Confirmed current v2 template creation. Preserves native source JSON and returns provider template metadata; not a render.
name- Required
- Yes
- Type
- string
- Details
- Nonempty template name. minLength:
1. maxLength:4096.
source- Required
- Yes
- Type
- object
- Details
- Native RenderScript object; consult the current guide. Not fully locally validated.
tags- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Exact tags; comma inside one tag is rejected because the native list query is comma-separated. uniqueItems:
true.
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
confirm- Required
- No; schema/guard rules still apply
- Type
- boolean
- Details
- Must be true for this exact user-requested mutation or paid render.
update_template
creatomate-cli update-template
Confirmed PATCH changes only supplied name/source/tags. Source or tags replace those fields; requires at least one change. No automatic duplicate/archive/retry.
template_id- Required
- Yes
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
name- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Nonempty new template name. minLength:
1. maxLength:4096.
source- Required
- No; schema/guard rules still apply
- Type
- object
- Details
- Native field; inspect current provider documentation.
tags- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Exact tags; comma inside one tag is rejected because the native list query is comma-separated. uniqueItems:
true.
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
confirm- Required
- No; schema/guard rules still apply
- Type
- boolean
- Details
- Must be true for this exact user-requested mutation or paid render.
delete_template
creatomate-cli delete-template
Explicitly confirmed v2 DELETE. Provider documents recoverable deletion for 30 days; existing renders remain unaffected. No wrapper restore operation is invented.
template_id- Required
- Yes
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
confirm- Required
- No; schema/guard rules still apply
- Type
- boolean
- Details
- Must be true for this exact user-requested mutation or paid render.
create_render
creatomate-cli create-render
Confirmed paid v2 submission from template or raw top-level RenderScript. Returns one object, not legacy array. Read advisory errors/warnings even after 202; never auto-poll, resubmit or download.
payload- Required
- Yes
- Type
- object
- Details
- V2 render fields are at the top level. Pass template_id or raw elements. RenderScript properties beyond these basics remain opaque and require provider validation. dry_run is reserved for validate_render; v1 source/tags/transcripts belong to create_legacy_render.
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
confirm- Required
- No; schema/guard rules still apply
- Type
- boolean
- Details
- Must be true for this exact user-requested mutation or paid render.
input.payload
template_id- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
modifications- Required
- No; schema/guard rules still apply
- Type
- object
- Details
- Native modification names and JSON values; preserve names/dot paths exactly.
elements- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Native raw top-level RenderScript elements. Complete property semantics are provider-validated via dry run.
output_format- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. enum:
["mp4", "gif", "png", "jpg"].
width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
frame_rate- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
render_scale- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. minimum:
0.1. maximum:10.
max_width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
max_height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
metadata- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation.
webhook_url- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. pattern:
"^https://[^\\s]+$".
source- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
tags- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
transcripts- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
dry_run- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
At least one documented alternative is required: template_id, elements.
Additional native RenderScript properties pass through unchanged. They are not fully validated locally; use validate_render and the current provider guide.
validate_render
creatomate-cli validate-render
One provider v2 dry run: dry_run is forced true after local schema checks. Provider documents zero credits and no queue. Returns effective source/errors/warnings; valid:true does not prove media reachability, provider credentials or appearance.
payload- Required
- Yes
- Type
- object
- Details
- V2 render fields are at the top level. Pass template_id or raw elements. RenderScript properties beyond these basics remain opaque and require provider validation. dry_run is reserved for validate_render; v1 source/tags/transcripts belong to create_legacy_render.
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
input.payload
template_id- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
modifications- Required
- No; schema/guard rules still apply
- Type
- object
- Details
- Native modification names and JSON values; preserve names/dot paths exactly.
elements- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Native raw top-level RenderScript elements. Complete property semantics are provider-validated via dry run.
output_format- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. enum:
["mp4", "gif", "png", "jpg"].
width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
frame_rate- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
render_scale- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. minimum:
0.1. maximum:10.
max_width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
max_height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
metadata- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation.
webhook_url- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. pattern:
"^https://[^\\s]+$".
source- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
tags- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
transcripts- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
dry_run- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
At least one documented alternative is required: template_id, elements.
Additional native RenderScript properties pass through unchanged. They are not fully validated locally; use validate_render and the current provider guide.
get_render
creatomate-cli get-render
One v2 status read. planned/waiting/transcribing/rendering are not finished. Use output only on succeeded; records, output and snapshots expire after 30 days. No download or polling loop.
render_id- Required
- Yes
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
create_legacy_render
creatomate-cli create-legacy-render
Explicitly confirmed v1 submission for native tag batches or supplied transcript timings. Returns array; tags may match any number of templates and spend unknown credits. Ordinary v2 rendering is preferred. No automatic retry or polling.
payload- Required
- Yes
- Type
- object
- Details
- V2 render fields are at the top level. Pass template_id or raw elements. RenderScript properties beyond these basics remain opaque and require provider validation. dry_run is reserved for validate_render; v1 source/tags/transcripts belong to create_legacy_render.
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
confirm- Required
- No; schema/guard rules still apply
- Type
- boolean
- Details
- Must be true for this exact user-requested mutation or paid render.
input.payload
template_id- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
modifications- Required
- No; schema/guard rules still apply
- Type
- object
- Details
- Native modification names and JSON values; preserve names/dot paths exactly.
elements- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Native raw top-level RenderScript elements. Complete property semantics are provider-validated via dry run.
output_format- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. enum:
["mp4", "gif", "png", "jpg"].
width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
frame_rate- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
render_scale- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. minimum:
0.1. maximum:10.
max_width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
max_height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
metadata- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation.
webhook_url- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. pattern:
"^https://[^\\s]+$".
source- Required
- No; schema/guard rules still apply
- Type
- object
- Details
- Documented legacy SDK raw source object.
tags- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Native v1 can render every matching template: count/credits are unbounded by this wrapper. minItems:
1. uniqueItems:true.
transcripts- Required
- No; schema/guard rules still apply
- Type
- JSON
- Details
- Native v1 caller-provided subtitle timings; opaque JSON, provider validation required.
dry_run- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
At least one documented alternative is required: template_id, elements, source, tags.
Additional native RenderScript properties pass through unchanged. They are not fully validated locally; use validate_render and the current provider guide.
list_feeds
creatomate-cli list-feeds
One documented v1 feed read. The sample returns last rows; not a full export, pagination claim or feed editor. Untrusted feed content is returned as data.
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
get_feed
creatomate-cli get-feed
One documented v1 feed read. The sample returns last rows; not a full export, pagination claim or feed editor. Untrusted feed content is returned as data.
feed_id- Required
- Yes
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
get_feed_sample
creatomate-cli get-feed-sample
One documented v1 feed read. The sample returns last rows; not a full export, pagination claim or feed editor. Untrusted feed content is returned as data.
feed_id- Required
- Yes
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
preview_render_batch
creatomate-cli preview-render-batch
Local only: validate ordered payloads and bind them plus selected profile to SHA-256. Display proposed calls and hash; no key load, dry run, provider price or actual rendering. Review cannot prove the key owner, credit cost or external template changes.
renders- Required
- Yes
- Type
- array
- Details
- Exactly one to ten ordered v2 requests; all validated before any provider request. minItems:
1. maxItems:10.
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
input.renders
template_id- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
modifications- Required
- No; schema/guard rules still apply
- Type
- object
- Details
- Native modification names and JSON values; preserve names/dot paths exactly.
elements- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Native raw top-level RenderScript elements. Complete property semantics are provider-validated via dry run.
output_format- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. enum:
["mp4", "gif", "png", "jpg"].
width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
frame_rate- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
render_scale- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. minimum:
0.1. maximum:10.
max_width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
max_height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
metadata- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation.
webhook_url- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. pattern:
"^https://[^\\s]+$".
source- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
tags- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
transcripts- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
dry_run- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
At least one documented alternative is required: template_id, elements.
Additional native RenderScript properties pass through unchanged. They are not fully validated locally; use validate_render and the current provider guide.
submit_render_batch
creatomate-cli submit-render-batch
Confirmed one-to-ten exact ordered v2 submissions. Verify review hash/profile and prevalidate every payload before first request. Stop at first failure, return known prior submissions and unknown attempted outcome; no retry, polling, rollback or implicit final render.
renders- Required
- Yes
- Type
- array
- Details
- Exactly one to ten ordered v2 requests; all validated before any provider request. minItems:
1. maxItems:10.
review_sha256- Required
- Yes
- Type
- string
- Details
- Exact preview_render_batch hash for the same project profile and payloads. pattern:
"^[a-f0-9]{64}$".
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
confirm- Required
- No; schema/guard rules still apply
- Type
- boolean
- Details
- Must be true for this exact user-requested mutation or paid render.
input.renders
template_id- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
modifications- Required
- No; schema/guard rules still apply
- Type
- object
- Details
- Native modification names and JSON values; preserve names/dot paths exactly.
elements- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Native raw top-level RenderScript elements. Complete property semantics are provider-validated via dry run.
output_format- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. enum:
["mp4", "gif", "png", "jpg"].
width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
frame_rate- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
render_scale- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. minimum:
0.1. maximum:10.
max_width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
max_height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
metadata- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation.
webhook_url- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. pattern:
"^https://[^\\s]+$".
source- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
tags- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
transcripts- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
dry_run- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
At least one documented alternative is required: template_id, elements.
Additional native RenderScript properties pass through unchanged. They are not fully validated locally; use validate_render and the current provider guide.
get_render_batch
creatomate-cli get-render-batch
Read one to twenty distinct render IDs sequentially in one project. Prevalidate all IDs, stop on failure with completed status records. No paging, auto-poll, file download or spent-credit recovery.
render_ids- Required
- Yes
- Type
- array
- Details
- Native field; inspect current provider documentation. minItems:
1. maxItems:20. uniqueItems:true.
account- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact private project profile label; no inherited/global key fallback.
list_accounts
creatomate-cli list-accounts
Local labels/default/auth-method availability only. No API keys, private file paths, provider requests or project-owner validation.
No fields, or provider-defined opaque JSON. Inspect the full schema.
get_operation_schema
creatomate-cli get-operation-schema
Local current reviewed method/path/body/query metadata for eleven documented operations, with source URLs/version distinctions. Opaque RenderScript is not claimed fully locally validated.
operation- Required
- Yes
- Type
- string
- Details
- Native field; inspect current provider documentation. enum:
["createRender", "getRender", "createTemplate", "listTemplates", "getTemplate", "updateTemplate", "deleteTemplate", "createLegacyRender", "listFeeds", "getFeed", "getFeedSample"].
Native operation metadata
API provenance pins the reviewed primary source. get_operation_schema returns these method/path/basic shapes. RenderScript and transcripts remain opaque provider data; this is not a complete semantic RenderScript validator.
##### createRender
POST /v2/renders; native reference.
No fields, or provider-defined opaque JSON. Inspect the full schema.
template_id- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
modifications- Required
- No; schema/guard rules still apply
- Type
- object
- Details
- Native modification names and JSON values; preserve names/dot paths exactly.
elements- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Native raw top-level RenderScript elements. Complete property semantics are provider-validated via dry run.
output_format- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. enum:
["mp4", "gif", "png", "jpg"].
width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
frame_rate- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
render_scale- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. minimum:
0.1. maximum:10.
max_width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
max_height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
metadata- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation.
webhook_url- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. pattern:
"^https://[^\\s]+$".
source- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
tags- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
transcripts- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
dry_run- Required
- No; schema/guard rules still apply
- Type
- boolean
- Details
- Native provider dry-run option. Owned create_render forbids this field; validate_render forces true.
At least one documented alternative is required: template_id, elements.
Additional native RenderScript properties pass through unchanged. They are not fully validated locally; use validate_render and the current provider guide.
V2 dry_run:true returns 200 with valid/errors/warnings/source and no queued render. Regular submission returns 202 object with advisory errors/warnings.
##### getRender
GET /v2/renders/{render_id}; native reference.
render_id- Required
- Yes
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
No JSON request body.
Current documented route; no undocumented behavior inferred.
##### createTemplate
POST /v2/templates; native reference.
No fields, or provider-defined opaque JSON. Inspect the full schema.
name- Required
- Yes
- Type
- string
- Details
- Nonempty template name. minLength:
1. maxLength:4096.
source- Required
- Yes
- Type
- object
- Details
- Native RenderScript object; consult the current guide. Not fully locally validated.
tags- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Exact tags; comma inside one tag is rejected because the native list query is comma-separated. uniqueItems:
true.
Raw RenderScript is provider-validated; only supplied changes replace fields.
##### listTemplates
GET /v2/templates; native reference.
tags- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Comma-separated tags; matches any supplied tag.
No JSON request body.
No documented paging parameters; no guessed page/per_page support.
##### getTemplate
GET /v2/templates/{template_id}; native reference.
template_id- Required
- Yes
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
No JSON request body.
Current documented route; no undocumented behavior inferred.
##### updateTemplate
PATCH /v2/templates/{template_id}; native reference.
template_id- Required
- Yes
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
name- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Nonempty new template name. minLength:
1. maxLength:4096.
source- Required
- No; schema/guard rules still apply
- Type
- object
- Details
- Native field; inspect current provider documentation.
tags- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Exact tags; comma inside one tag is rejected because the native list query is comma-separated. uniqueItems:
true.
At least one documented alternative is required: name, source, tags.
Raw RenderScript is provider-validated; only supplied changes replace fields.
##### deleteTemplate
DELETE /v2/templates/{template_id}; native reference.
template_id- Required
- Yes
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
No JSON request body.
Current documented route; no undocumented behavior inferred.
##### createLegacyRender
POST /v1/renders; native reference.
No fields, or provider-defined opaque JSON. Inspect the full schema.
template_id- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
modifications- Required
- No; schema/guard rules still apply
- Type
- object
- Details
- Native modification names and JSON values; preserve names/dot paths exactly.
elements- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Native raw top-level RenderScript elements. Complete property semantics are provider-validated via dry run.
output_format- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. enum:
["mp4", "gif", "png", "jpg"].
width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
frame_rate- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
render_scale- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. minimum:
0.1. maximum:10.
max_width- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
max_height- Required
- No; schema/guard rules still apply
- Type
- number
- Details
- Native field; inspect current provider documentation. exclusiveMinimum:
0.
metadata- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation.
webhook_url- Required
- No; schema/guard rules still apply
- Type
- string
- Details
- Native field; inspect current provider documentation. pattern:
"^https://[^\\s]+$".
source- Required
- No; schema/guard rules still apply
- Type
- object
- Details
- Documented legacy SDK raw source object.
tags- Required
- No; schema/guard rules still apply
- Type
- array
- Details
- Native v1 can render every matching template: count/credits are unbounded by this wrapper. minItems:
1. uniqueItems:true.
transcripts- Required
- No; schema/guard rules still apply
- Type
- JSON
- Details
- Native v1 caller-provided subtitle timings; opaque JSON, provider validation required.
dry_run- Required
- No; schema/guard rules still apply
- Type
- Forbidden
- Details
- Refused by this input schema.
At least one documented alternative is required: template_id, elements, source, tags.
Additional native RenderScript properties pass through unchanged. They are not fully validated locally; use validate_render and the current provider guide.
Native v1 returns render array; tags can match an unbounded number of templates. Provider-defined transcripts are opaque JSON.
##### listFeeds
GET /v1/feeds; native reference.
No fields, or provider-defined opaque JSON. Inspect the full schema.
No JSON request body.
Current documented route; no undocumented behavior inferred.
##### getFeed
GET /v1/feeds/{feed_id}; native reference.
feed_id- Required
- Yes
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
No JSON request body.
Current documented route; no undocumented behavior inferred.
##### getFeedSample
GET /v1/feeds/{feed_id}/sample; native reference.
feed_id- Required
- Yes
- Type
- string
- Details
- Exact project template/render/feed ID. No URL, slash, traversal or query string. minLength:
1. maxLength:128. pattern:"^[A-Za-z0-9_-]+$".
No JSON request body.
Current documented route; no undocumented behavior inferred.
Complete client, OS and desktop setup
Codex
Codex is the current validation priority. Private token paths must exist in the process or remote environment where the server runs.
codex mcp add creatomate -- npx -y @thenavidm/creatomate-mcp-cli@latest
codex mcp listAccount credentials must reach the server through private environment settings. codex mcp add --env NAME=value stores values in your local config, so never commit that config or put secrets in a shared command. In TOML, the equivalent server is:
[mcp_servers.creatomate]
command = "npx"
args = ["-y", "@thenavidm/creatomate-mcp-cli@latest"]
env_vars = ["CREATOMATE_API_KEY", "CREATOMATE_TOKEN_FILE", "CREATOMATE_ACCOUNTS", "CREATOMATE_DEFAULT_ACCOUNT", "CREATOMATE_READ_ONLY", "CREATOMATE_ALLOW_DESTRUCTIVE"]env_vars forwards those names from the environment available to Codex. If that environment does not contain them, configure private env settings locally. Codex can also call the CLI directly with SKILL.md and --agent output.
Claude Code
For a user-scoped connection, after privately configuring credentials:
claude mcp add --scope user creatomate -- npx -y @thenavidm/creatomate-mcp-cli@latest
claude mcp listUse the client's private local environment settings for the account variable if they are not inherited. Claude's -e NAME=value registration option writes values into its config; only use it locally through your secret manager, with no shared command transcript. Never place credentials in a project .mcp.json. Reconnect and ask Claude to verify credentials.
Alternatively install the CLI, make SKILL.md available to Claude, and use shell commands. Registering both surfaces is optional.
Claude Desktop
Install the .mcpb extension
- Download
creatomate-2.0.0.mcpbfrom GitHub Releases. - In a supported Claude Desktop build, open Settings > Extensions > Advanced settings > Install Extension… and select it.
- Enter a private API key in the sensitive setting, or an absolute private token-file path. Leave the unused credential method empty. Requests use Authorization: Bearer at the fixed Creatomate endpoint. Use the intended project API key; named profiles are configured separately in private client environments.
- Enable read-only if you want only the 11 read operations. Reconnect and ask for account verification.
The bundle includes production dependencies and no credentials. Use a regular private token-only file if you prefer file-based credentials. The manifest requires Node 22 or newer from a compatible host. Organization policy may restrict custom extensions. Manual bundle updates require installing the new version; no automatic directory updates are promised. GUI installation remains unverified separately from archive/protocol checks.
Manual config
Open Settings > Developer > Edit Config, or use your platform's config file:
| OS | Typical config path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json; confirm the location through Edit Config in your installed build |
{
"mcpServers": {
"creatomate": {
"command": "npx",
"args": ["-y", "@thenavidm/creatomate-mcp-cli@latest"],
"env": {
"CREATOMATE_API_KEY": "YOUR_PRIVATE_API_KEY",
"CREATOMATE_TOKEN_FILE": ""
}
}
}
}Replace the placeholders only in your private file. Merge the server entry into an existing mcpServers object instead of replacing other integrations. Fully quit and reopen Claude Desktop. Do not enable an extension and a manual entry with the same name; choose one route.
If a Windows launcher cannot execute npx directly, use "command": "cmd" with "args": ["/c", "npx", "-y", "@thenavidm/creatomate-mcp-cli@latest"]. An absolute node executable and installed dist/index.js path also avoids launcher/PATH problems.
Cursor
Use private user settings at ~/.cursor/mcp.json, or Settings > Tools & MCP. Cursor documents environment interpolation and envFile support.
{
"mcpServers": {
"creatomate": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/creatomate-mcp-cli@latest"],
"env": {
"CREATOMATE_API_KEY": "${env:CREATOMATE_API_KEY}",
"CREATOMATE_TOKEN_FILE": "${env:CREATOMATE_TOKEN_FILE}"
}
}
}
}The environment values must exist for the Cursor process. If you use envFile, keep that file private and outside version control. A project's .cursor/mcp.json must not contain actual credentials. Reconnect the server after saving.
VS Code and Copilot
Use MCP: Open User Configuration. VS Code uses servers and secure inputs, rather than a mcpServers root:
{
"inputs": [
{"type": "promptString", "id": "creatomate-api-token", "description": "Creatomate API key (leave empty for a private token file)", "password": true},
{"type": "promptString", "id": "creatomate-token-file", "description": "Optional private token-file path (leave empty for API key)"}
],
"servers": {
"creatomate": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/creatomate-mcp-cli@latest"],
"env": {
"CREATOMATE_API_KEY": "${input:creatomate-api-token}",
"CREATOMATE_TOKEN_FILE": "${input:creatomate-token-file}"
}
}
}
}Start Creatomate through the MCP controls, approve trust if prompted, and enter credentials in the private input prompts. Workspace .vscode/mcp.json may contain this placeholder-only structure, but never resolved secret values. Remote development runs the server in the selected remote environment, so local file paths refer to that environment.
Windsurf
Open Cascade's MCP settings or edit the private user file ~/.codeium/windsurf/mcp_config.json. Use the Claude Desktop manual mcpServers block above with your locally configured env values. See Windsurf's current MCP documentation. Restart or reconnect Creatomate in Cascade; project files must not contain secrets.
Zed
Open Settings > AI > MCP Servers > Add Server > Add Local Server, or your user settings file. Zed uses context_servers:
{
"context_servers": {
"creatomate": {
"command": "npx",
"args": ["-y", "@thenavidm/creatomate-mcp-cli@latest"],
"env": {
"CREATOMATE_API_KEY": "YOUR_PRIVATE_API_KEY",
"CREATOMATE_TOKEN_FILE": ""
}
}
}
}Enter actual values only in private user settings. Check the active-server indicator before prompting. Do not wrap command and args inside a nested command object from older Zed examples.
Gemini CLI
Merge the Claude Desktop manual mcpServers block into your private ~/.gemini/settings.json. Configure the private credential values locally, then restart Gemini CLI and inspect /mcp. See Gemini CLI's MCP configuration. Its project settings must not contain real credentials. You can instead use the CLI from an agent shell.
Other local stdio clients use the same command and arguments, adapted to their config format. A client that only accepts a remote MCP URL cannot connect directly: this package does not ship a public HTTP listener. ChatGPT's remote connector setup is not a substitute for local stdio installation.
Docker
Build locally from the reviewed source; no prebuilt registry image is claimed:
git clone https://github.com/thenavidm/creatomate-mcp-cli.git
cd creatomate-mcp-cli
docker build -t creatomate-mcp-cli .
docker run --rm -i -e CREATOMATE_API_KEY creatomate-mcp-cliCline and other local MCP clients
Use the client's Add MCP server flow with command npx, arguments -y and @thenavidm/creatomate-mcp-cli@latest, stdio transport, and private local CREATOMATE_API_KEY or CREATOMATE_TOKEN_FILE settings. UI names depend on the installed client. Reconnect and discover tools before an account call. Browser-only clients need a remote HTTPS connector; use Creatomate's official server rather than this local stdio command.
Output, flags and exit codes
MCP names use underscores; CLI hyphen names, flags/help and schemas derive from the same shared definitions. V2 rendering returns one object; v1 rendering returns an array. Advisory errors/warnings are preserved and do not mean a 202 job was prevented.
| Flag or command | Contract |
|---|---|
| tools / COMMAND --help / schema COMMAND | Actual current discovery, flags and input schema |
| --agent | Compact JSON, no color/prompts; --yes is not confirmation |
| --select a,b.c | Local output selection; no reduction in provider requests or render credits |
| --payload JSON | Native render object as quoted JSON |
| --renders JSON | Repeat once per native object, preserving batch order |
| --render-ids ID | Repeat for up to twenty unique status IDs |
| --tags LABEL | Repeat template-list tag filter |
| --account NAME | Exact private project profile |
| --review-sha256 HASH | Hash from the same selected profile/ordered payload review |
| --confirm | Approve only the exact requested mutation/render |
creatomate-cli create-render --payload '{"template_id":"YOUR_TEMPLATE_ID","render_scale":0.5}' --confirm --agent
creatomate-cli get-render --render-id YOUR_RENDER_ID --agent --select id,status,url,errors,warnings| Exit | Meaning |
|---|---|
| 0 | Successful call; provider dry-run valid:false is still a successfully received validation report |
| 2 | Invalid local arguments or refused mutation/review |
| 3 | Provider not found |
| 4 | Authentication or permission failure |
| 5 | Provider semantic/transport/content failure |
| 7 | Rate limit or exhausted credits |
| 10 | Missing/invalid private configuration |
Never infer render success from CLI exit0 or the presence of url. A paid render must reach succeeded before its file is ready. A dry run’s valid:false must be handled deliberately.
Official and community comparisons
- Reviewed surface
- Provider URL https://api.creatomate.com/mcp or project-specific /mcp/PROJECT-ID
- Strengths and limits
- Eight documented tools: get_guide, list_templates, get_template, create_template, update_template, delete_template, create_render and get_render. OAuth or project API-key Bearer, one project per connection, provider-maintained current guide and template/render workflows. Client approvals are explicitly documented. No authenticated hosted discovery is claimed here.
- Reviewed surface
- Published creatomate 1.2.1, npm source/fixture
- Strengths and limits
- Node application SDK, not a task CLI. Source still uses v1 and exposes startRender plus an optional polling render helper. Actual exported startRender with injected HTTP submitted once without a confirmation argument. No missing hosted-MCP approval claim follows from an SDK call.
- Reviewed surface
- @creatomate/preview 1.6.1 package metadata
- Strengths and limits
- Browser preview/editor integration, useful for visual design; not an agent task CLI and not recreated by this package.
- Reviewed surface
- @creatomate/n8n-nodes-creatomate 1.0.1 metadata
- Strengths and limits
- Workflow-node integration, a separate surface from local CLI/MCP. No live installation or task comparison claimed.
- Reviewed surface
- Source c48577bc95de4ce8e77ed7e12d902dcd7766fdca, package version 1.0.0 / server string 2.0.0
- Strengths and limits
- One render_video tool, animation resource and social-ad prompt, with guided style/TTS/caption inputs and SDK polling. Inspected source has no task CLI binary, named project routing or shared confirmation guard. Source inspection is not a runtime or visual-quality benchmark.
- Reviewed surface
- Shared task CLI, local stdio MCP and versioned desktop bundle
- Strengths and limits
- Seventeen tools, eleven reads/helpers and six confirmed operations; current v2 template CRUD and single-object renders, documented v1 feeds/tag compatibility, forced free dry-run validation and exact bounded paid/status workflows. Isolated projects and direct-call read-only controls. No hosted OAuth, guide tool, visual editor, media downloader or automatic publishing.
Checked October 3, 2026. The current account inventory contains no newer owned Creatomate repository. The old five-tool MCP uses v1 and has no declared task CLI. The official npm SDK fixture uses a fake key and injected HTTP; no provider request or credits were spent. Our equivalent confirmed render fixture refuses before fetch without explicit approval, and the exact batch hash refuses changes to profile label, order or payloads before the first submission. On first failure it reports known earlier submissions and leaves subsequent work unattempted. These are useful local execution and review differences, not universal superiority or measured token savings.
The official hosted product already has project-specific connections, template creation/editing/deletion, raw-source renders, guide fetching, free dry runs and client approvals. None are presented as invented official gaps. The owned shared MCP offers the same local task workflows as the CLI for stdio users. Native v1 tag batches already exist; our ordered one-to-ten exact payload review serves a different task from rendering every tagged template. Native v1 feeds are documented and absent from the reviewed hosted eight-tool list, not claimed absent from every provider client.
No dedicated official task CLI was found in the reviewed provider docs, ten official GitHub repositories or current Creatomate npm search results; this is a checked-search finding, not proof that no CLI exists anywhere. More names, SEO and a logo are not build qualification. Provider account outcomes, authenticated hosted discovery, actual desktop GUI installation and matched successful Codex task/token measurements remain unverified.
Versions and legacy migration
| Component | Verified local version |
|---|---|
| Owned package / desktop | 2.0.0 |
| Runtime | Node22+ |
| API | V2 templates/renders, documented V1 feeds/tag compatibility |
| @modelcontextprotocol/sdk | 1.32.0 |
| ajv | 8.20.0 |
| ajv-formats | 3.0.1 |
| typescript | 7.0.2 |
| vitest | 5.0.3 |
| vite | 8.3.2 |
| @anthropic-ai/mcpb | 2.1.2 |
The private 1.0.0 package exposed five MCP tools and no CLI. Version2.0.0 preserves list_templates, get_template, create_render and get_render names while changing their native contract deliberately: rendering uses payload JSON on /v2/renders and returns one object; templates use current v2 sources/tag filters. list_renders and old page/per_page arguments are removed because current docs do not establish those endpoints/options. Do not send requests to guessed paths for compatibility. PDF is absent from the documented render formats; it is no longer advertised.
Raw v2 RenderScript is top-level. Native legacy source/tags/transcripts require create_legacy_render and explicit approval; v1 results are arrays. All paid/template operations require confirmation and both read-only policy and private credential routing are enforced. Full client docs, package keywords, topics, dated changelog, annotated tags, public npm/desktop artifacts and complete guide are maintained together.
Fifty-two behavior/shared-CLI tests, local build/typecheck and full/read-only stdio discovery passed with fixture-only credentials. The official SDK’s actual startRender comparison used injected HTTP. Public source/platform CI/npm/desktop/CMS checks must be recorded separately in release proof before claiming publication. Actual account outcomes, desktop GUI, fresh matched successful Codex task/token usage and private site deployment remain pending.
Updates and removal
npm install -g @thenavidm/creatomate-mcp-cli@latest
creatomate-cli --version
npm uninstall -g @thenavidm/creatomate-mcp-cli
codex mcp remove creatomatenpx @latest resolves when a process starts; restart/reconnect for a released update. Global npm and desktop bundles require explicit updates. Install the new versioned .mcpb and verify its reported version. Remove client entries and revoke provider key/OAuth grants separately. Uninstalling does not undo renders/template edits, revoke keys or copy expiring output into permanent storage.
Validation and remaining evidence
Typecheck/build, 52 meaningful behavior/shared-CLI tests, actual full/read-only stdio discovery and eleven real CLI process cases pass. Invalid/unconfigured/refused CLI cases make zero provider requests. Native route maintenance checks the pinned source/checksum without executing downloaded vendor code. Local source/npm/desktop scans and the production dependency audit report zero findings. Codex CLI0.159.3 accepts the documented registration in an isolated credential-free configuration.
Actual public artifacts, platform CI and saved/live CMS checks are tracked separately in the maintained release proof. Provider account outcomes, authenticated official MCP discovery, desktop GUI installation, fresh matched successful Codex task/token usage and private site scene/shared-install-helper deployment remain pending. No blanket superiority or measured token saving is claimed.
More tools for your creative workflow
Connect the tools needed for the exact media work you want to do.
Creatomate MCP Server & CLI FAQs
Official/community differences, project keys, free validation, paid renders, reviewed batches, feeds, legacy v1, desktop installation and maintenance.
Seventeen shared CLI/local MCP tools, eleven reads/helpers and six confirmed operations covering eleven reviewed native routes, with a versioned desktop bundle.
Yes.
Its hosted OAuth/project-key service supplies guide fetching, template CRUD, rendering and status with client approvals and free dry runs.
For shared task CLI/local execution, isolated project profiles, mandatory direct-call confirmation and bounded exact reviewed paid/status workflows.
Official hosted and preview capabilities remain useful.
No dedicated task CLI was found in the reviewed current provider docs, official repositories and npm results.
SDK, preview and n8n packages are different surfaces; this does not establish global absence.
Use the documented private stdio config or shipped SKILL and task CLI.
Isolated config/protocol checks and successful account/task usage are tracked separately.
The versioned .mcpb bundles production dependencies.
Downloaded archive discovery is distinct from a real desktop GUI installation.
Manual Node22+ paths target macOS, Windows and Linux, with Node22/24 CI.
Configure Windows owner-only ACLs yourself; POSIX checks do not verify them.
In the intended project’s Project Settings → API Integration.
Use Template → Integrate with API also shows integration examples and the template ID.
No.
It prints private configuration instructions.
It does not store keys, create OAuth grants, load .env or import official sessions.
No.
The selected profile uses only its own key or file; a missing credential fails locally.
Profile labels alone do not prove provider ownership.
validate_render forces the documented provider dry_run:true, which queues nothing and costs no render credits.
Request rate and data transmission still apply.
No.
It does not prove asset reachability, external provider keys, appearance, captions or rights.
Inspect effective source/warnings and the actual visual result.
The render may still be queued.
Advisory errors/warnings do not block submission or guarantee credits were avoided.
Inspect the returned job status before repeating.
API version, selected profile label, canonical payload values and array order.
It does not bind changed keys, project ownership, external template state or price.
Execution stops at the first failure and reports known earlier submissions plus unattempted items.
The failed request can have an unknown outcome; there is no retry or rollback.
No.
Native v1 tags can render every matching template with an unknown count/cost.
The one-to-ten exact v2 payload review is a separate workflow.
Current docs do not establish a render-list endpoint or old pagination arguments.
Use known job IDs/status batches, provider webhooks and the provider’s dashboard.
No.
It returns provider data/status.
Finished render records, files and snapshots expire after30days; permanent storage is a separately approved workflow.
No fresh matched successful Codex task/token measurements establish that.
Local --select output filtering is proven but counts and character estimates are not token savings.
Restart npx @latest, update global npm or install the new desktop bundle.
Remove client entries and revoke provider key/OAuth grants separately; prior renders/edits remain.
Navid.me is reader-supported. When you buy through links on this site, I may earn an affiliate commission. Learn more.
More MCP servers & CLIs
Related free tools
Free AI newsletterThe most actionable AI newsletter for founders
Every week, get proven AI strategies, curated tools, and step-by-step systems to grow your audience, create better content, and build a profitable creator business.
No fluff, no filler, no BS. Just five minutes each week that might level up your online business and life.
P.S. Sign up now to get free access to my ultimate AI tools guide for creators.













