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 DesktopSettings → 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).

CursorSettings → 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 initialize call is rejected with 401.
  • Protocol versions 2025-06-18 and 2025-03-26 are both supported; the server assumes 2025-03-26 if you don't send an MCP-Protocol-Version header.
  • Rate limits are the same as /v1/* (60/min free, 600/min paid) — a normal initializetools/listtools/call handshake is well within that.