MCP Server
RenderOG exposes a remote Model Context Protocol endpoint at POST /mcp, so AI agents (Claude Desktop, Claude Code, Cursor, or any MCP client) can generate OG images directly — no code, just a tool call.
It's a stateless Streamable-HTTP endpoint: a single POST per request, Authorization: Bearer sk_live_... on every call, no session state.
Setup
Add RenderOG as an MCP server in your client's config, pointing at the deployed endpoint with your API key as a bearer header:
{
"mcpServers": {
"renderog": {
"url": "https://api.renderog.app/mcp",
"headers": {
"Authorization": "Bearer sk_live_your_key_here"
}
}
}
}
Claude Desktop — Settings → Developer → Edit Config, add the block above under mcpServers, restart.
Claude Code — add the same block to your project or user MCP config (.claude/mcp.json or the equivalent for your setup).
Cursor — Settings → MCP, add a new server with the URL and header above.
Get an API key from your dashboard — see the Quickstart if you don't have one yet.
Tools
generate_og_image
Generates an OG image and returns a signed URL (valid 24 hours) to it.
| Argument | Type | Required | Notes |
|---|---|---|---|
title |
string | yes | Main headline text |
subtitle |
string | no | Supporting text under the title |
template |
enum | no | basic | gradient | blog | product — defaults to basic |
theme |
enum | no | light | dark — defaults to dark |
format |
enum | no | png | webp | avif — defaults to png |
Each call renders and logs usage exactly like POST /v1/render — it counts against your plan the same way, and is billed the same way (free tier: never billed; PAYG: billed only on a successful, non-cached render).
Example call (from an agent's perspective):
{ "name": "generate_og_image", "arguments": { "title": "Ship It", "template": "gradient", "theme": "dark" } }
Returns:
{ "content": [{ "type": "text", "text": "https://api.renderog.app/og?template=gradient&title=Ship+It&theme=dark&expires=...&sig=..." }] }
take_screenshot — coming soon
Ships once website screenshot capture launches (Cloudflare Browser Rendering — see the screenshot docs). Not advertised yet, so agents won't discover a tool that can't work.
Notes
- Authentication is a static
Authorization: Bearer sk_live_...header — the same API keys as everywhere else in the API, not OAuth. - An unauthenticated
initializecall is rejected with401. - Protocol versions
2025-06-18and2025-03-26are both supported; the server assumes2025-03-26if you don't send anMCP-Protocol-Versionheader. - Rate limits are the same as
/v1/*(60/min free, 600/min paid) — a normalinitialize→tools/list→tools/callhandshake is well within that.