New: AI voiceover + auto-captions - script to captioned video in one API call. Read the announcement

Replit markReplit

Generate videos in Replit

Paste one endpoint, and your Repl can make video. Renderly runs a hosted MCP server, so Replit renders from the templates you already built - and previews cost nothing.

5 free credits · no card · hosted MCP, nothing to install

Replitexample session

You

My Repl has a weekly_recap table. Turn each row into a video.

  1. renderly_list_projects

    Finds the Weekly Recap project on your account

    1 match · 5 dynamic variables · 30 seconds

  2. renderly_get_variables

    Reads the project's variable contract before mapping anything

    member_name, distance, pace, rank, week_of · all text

Your table calls the column miles_run; the project's variable is distance. I will map that pair, then preview one row. Previews cost nothing.

  1. renderly_preview_render0 credits

    Checks one member's row for free

    previewUrl live · resolved 5/5 · no warnings · quote 0.5 credits

You

Looks right. Do all six.

renderly_create_render is marked as not read-only, so you get a confirmation prompt before any credit moves.

  1. renderly_create_render3 credits

    Queues six renders once you approve

    6 jobs · 30s each · 0.5 credits per job

  2. renderly_get_render_status

    Polls the queue until every file lands

    6/6 complete · six MP4 URLs returned

Written back into weekly_recap.video_url, and the email job now reads from it. Nothing was posted anywhere.

1 preview, charged nothing3 credits spent, on the render alone

Replit keeps the whole stack in one browser tab. The editor, the container your app runs in, the database, the object storage and the deployment all sit under the same account, and Agent can already read every part of it. Video is the output that has never fitted. The usual route is a render pipeline: ffmpeg on a box somewhere, a worker you keep alive, a queue you now own. Renderly's MCP server is hosted, so there is nothing to stand up. You add it once in the Integrations pane at replit.com/integrations, and Replit makes the connection available across all your projects. From then on Agent can list the projects you designed in the Renderly editor, read the variables each one exposes, fill them and render. What changes is the shape of the work rather than the number of steps. Agent is already reading your schema and writing your routes, so a row in a table can become an MP4 URL written back into that same row, and the page that plays it can be edited in the same session. Previews cost nothing, so the wording and the crop get checked before a single credit moves.

Renderly is the rendering engine, not the publisher. It hands back a finished MP4 at a URL - where that file goes next is up to you or one of our no-code integrations. The same engine and the same credits drive the REST API, so nothing about a render differs because Replit asked for it.

The free preview loop

Replit can check its work before you pay for it

An agent filling in a template will get something wrong - a mistyped variable name, a headline too long for its line. Renderly gives it a way to find out for nothing. A preview takes the same arguments as a real render and resolves them exactly the same way, but produces no video and costs no credits.

  1. Preview0 credits
  2. Fix, preview again0 credits
  3. Once more0 credits
  4. Rendercredits charged

It can look at the frames

Append ?mode=grid and the preview page draws a labelled contact sheet spanning the whole video, as ordinary images. Any agent that can open a page and screenshot it can then see a collided caption or a wrong colour - the failures no validator catches.

?mode=grid

Or one exact moment

Append ?frame=N to check a specific instant, where N is the second you care about multiplied by the frame rate. The page publishes its own rate, so the agent works it out rather than guessing from the nearest tile on the grid.

?frame=N

And fix it in place

Pass the previewId back with corrected values and the same preview updates. The link never changes, so the agent reloads and looks again. A revision counter goes up each time, which is how it knows it is seeing its own latest attempt and not a cached earlier one.

previewId

The warning that saves the most credits. If a variable name does not match, Renderly ignores it silently and renders the authored default instead - so the video comes back looking fine and carrying the wrong text. A preview returns a resolved map of what actually applied plus an UNKNOWN_REPLACEMENT warning, which is how Replit catches that before it becomes a charge.

Setup

Connect Renderly to Replit

Renderly goes in through the Integrations pane at replit.com/integrations, under "MCP Servers for Replit Agent". Save it once and Replit makes the connection available across all your projects, and Agent fetches the tool list on its own.

replit.com/integrations (install-link payload, OAuth)
{
  "displayName": "Renderly",
  "baseUrl": "https://renderly.video/api/mcp"
}
This is the payload behind an "Add to Replit" install link: URL-escape the JSON, base64 it, and append the result to https://replit.com/integrations?mcp=. With no headers, Replit detects our OAuth dynamic client registration and registers a client for you.
replit.com/integrations (install-link payload, static key)
{
  "displayName": "Renderly",
  "baseUrl": "https://renderly.video/api/mcp",
  "headers": [{ "key": "Authorization", "value": "Bearer rnd_your_api_key" }]
}
Note baseUrl rather than url, and no transport or type field. headers is an array of key and value objects here; the Add-server dialog asks for the same thing as a name and value pair.
  1. Go to replit.com/integrations and scroll to "MCP Servers for Replit Agent", then click "+ Add MCP server".

  2. Set the display name to Renderly. Agent uses that name to refer to the server in chat logs.

  3. Paste https://renderly.video/api/mcp as the endpoint. To use a static key instead of OAuth, open "Advanced settings" and add a header named Authorization with the value Bearer rnd_your_api_key.

  4. Click "Test & save". Replit attempts to connect, and walks you through the OAuth flow if you did not supply a header.

  5. Open any Repl and ask Agent to list your Renderly projects. If it answers, the connection is live across every project on the account.

Either a browser sign-in or an API key

Both routes are supported and Replit documents each one. Leave the headers out and Replit detects our OAuth dynamic client registration, registers a client for you, and walks you through consent when you press Test & save. Add a header instead and Replit includes it in every MCP request, which is the route to take if you want a static Renderly key with no browser round trip. The header field is a name and value pair in the dialog, but an array of key and value objects in the install-link payload.

How this was checked. Server verified live on 2026-08-19: an unauthenticated POST returns 401 with an RFC 9728 challenge, WorkOS AuthKit advertises Dynamic Client Registration, and all ten tools are registered. The setup below was confirmed against Replit's current MCP documentation and survived an independent adversarial recheck on the same date. Nobody here drove Replit end to end. Replit’s documentation

The surface

Ten tools Replit gets

You never call these by hand. Replit picks the right one from what you asked for. They are listed because it is worth knowing which of them can cost you money - and that seven of the ten cannot.

They are thin wrappers over the same service layer the public REST API uses, so the two surfaces cannot drift apart.

Renderly MCP tools, what each does, and whether it costs credits
ToolWhat it doesCost
renderly_whoamiConnectConfirms the connection and reports your credit balancefree
renderly_list_projectsFindLists your own projects that have something to personalisefree
renderly_list_templatesFindLists the public system templatesfree
renderly_get_variablesFindReads which fields a template or project accepts, and their current valuesfree
renderly_preview_renderCheckResolves your values exactly as a render would, without producing a video - returns a public preview link, what actually applied, a credit quote and any warningsfree
renderly_create_renderRenderRenders the video. Annotated as not read-only, so clients ask before calling itcredits
renderly_get_render_statusTrackPolls the job and returns the finished video URLfree
renderly_generate_captionsAdd AITranscribes audio into word-synced captions you can drop straight onto a layercredits
renderly_generate_voiceoverAdd AITurns a script into narration saved to your media librarycredits
renderly_get_ai_jobAdd AIPolls a captions or voiceover job for its resultfree

Why Replit

What this client is good at

Replit stores an MCP connection on the account and then makes it available across all your projects, which is the phrase its own documentation uses. That fits the way Replit gets used: a shelf of half-finished Repls, any one of which might suddenly need a video, none of them needing its own setup. Two further things are specific to this client. All MCP traffic passes through Replit's security scanner, which evaluates tool definitions and planned executions and blocks anything it judges unsafe, so what Agent may call is filtered before it runs rather than trusted on sight. And a working connection travels as a link: URL-escape the JSON payload, base64 it, append it to replit.com/integrations?mcp=, and you have the two-click install that the Add to Replit badges use. Either way Agent fetches the tool list itself, so all ten Renderly tools arrive without you naming any of them.

Questions people actually hit

Why does Replit ask for a display name and a baseUrl rather than an mcpServers block?
Because the whole record lives in Replit's own UI. The Integrations pane asks for a display name, an HTTPS endpoint and optional headers, and that is all it keeps; there is no path to point at and no wrapper object to get right. If you want the machine-readable form, it is the install-link payload: displayName, baseUrl for the endpoint, and headers as an array of key and value objects. Note baseUrl rather than url, and note that no transport or type field appears anywhere in it.
I build entirely in the browser on Replit. Is there anything I have to install on my own machine?
Nothing. Not ffmpeg, not Node, not a Renderly SDK, not an stdio bridge such as mcp-remote. The Integrations dialog takes an HTTPS endpoint, and Renderly's MCP server is already one, so the two hosted halves talk to each other directly with no local process in between. You can add the server from a Chromebook, a phone browser or a machine you do not own, and it behaves the same. Rendering happens on our side and returns a file URL, so your Repl's container never needs the CPU or the disk that video encoding would otherwise demand.
Should I put my Renderly API key in Replit Secrets?
Your Renderly key does not go in Secrets, because it does not go inside your Repl at all. The Agent connection holds the Authorization header in the account-level Integrations pane, well away from your project files, so there is nothing to leak when you fork or publish the Repl. Replit Secrets is for the other case: your own server code calling the Renderly API directly, where the key belongs in an environment variable and never in a committed file. If you would rather hold no key anywhere, connect over OAuth and skip the header.
Once a render finishes, what does Agent actually do with the MP4 URL?
It gets a URL to a file, and nothing else happens on its own. Renderly renders video; it does not post to any social network. What makes that useful in Replit is that Agent is already editing the app that asked for the video, so it can write the URL into the column you render from, drop it into a seed file, or wire it into the page that plays it. Poll renderly_get_render_status for progress. Treat the free preview link as disposable, since a /p/ preview page expires after twenty four hours.
Agent told me one of the Renderly tools was blocked or needed confirmation. What happened?
That is Replit, not us. All MCP traffic passes through Replit's security scanner, which evaluates tool definitions and planned executions and blocks anything it judges unsafe before it runs; Agent then reports that a tool was rejected. Separately, tools that need confirmation raise a prompt first, and renderly_create_render is annotated as not read-only for exactly that reason, so you get a chance to stop a render before it spends credits. Approve it and the render proceeds. Neither behaviour is configured on the Renderly side.

The same server, in every other client

One endpoint, one account, one credit balance. Only the wrapper changes.

Using something not listed? Any client that speaks remote MCP over Streamable HTTP can connect to https://renderly.video/api/mcp - these pages exist because the setup differs, not the server.

Let Replit render the next one

Build a template once, then describe what you want. Previews are free, so the first thing you spend a credit on is a video you have already seen.