MCP server · Cloudflare Workers

Let agents see the pages they build

RenderSight is a stateless MCP server on Cloudflare Workers that lets ChatGPT present, inspect, and screenshot the web pages its agent creates and edits inside its own execution environment.

Why it exists

Agents can't see their own work — so they edit blind

ChatGPT's built-in cloud browser runs in an environment isolated from the agent, so HTML, CSS, and JavaScript produced by the agent can never be loaded into it. RenderSight closes that gap over MCP.

  • Isolated environments

    After the agent produces or edits a page, the built-in browser cannot load it, so the result can't be presented, inspected, or screenshotted.

  • Cloud rendering

    The agent hands page content to the render tool; Cloudflare Browser Run renders it in the cloud and returns a PNG screenshot.

  • See and iterate

    Iterate on UI with a screenshot → inspect → fix → screenshot loop, visually checking landing pages, email templates, or report layouts.

  • Temporary sharing

    Results can be stored in R2 and shared as temporary download links valid for 24 hours.

How it works

From HTML to screenshot in one tool call

The Worker is protected by Cloudflare Access Managed OAuth; only users passing the Access Policy can connect. Screenshots return as inline MCP image content, as a temporary R2 download URL, or both.

1

MCP server (Cloudflare Workers)

ChatGPT connects via Managed OAuth and calls the render tool with HTML.

2

Browser Run

The page is rendered in the cloud; once content and webfonts are ready, a PNG is captured.

3

R2 staging

The PNG is stored in R2 and a presigned download URL valid for 24 hours is returned.

4

The agent reviews

The agent reads the screenshot via image content or download URL and iterates on the fix.

Tools

render

Render HTML to a PNG image, returned as an inline image, a temporary download URL, or both.

Parameter Description
html Required. The HTML to render.
width, height Viewport size, default 800x800, clamped to 1–4096 px.
omitBackground Whether to use a transparent background, default false.
waitForFonts Wait for document.fonts.ready plus two repaints before capture, default true.
waitForSelector Optional readiness condition: CSS selector, attached | visible | hidden state, with a 30-second time budget.
waitForTimeout Extra fixed wait after readiness, 0–10000 ms, default 0.
output inline, url, or both, default both.
filename Filename shown on download; .png is appended automatically if missing.

Timed-out wait conditions return a tool error rather than capturing an unfinished page. To stay under the Workers 128 MB isolate memory limit, inline encoding is capped at 8 MiB.

Output modes

inline, url, or both

Every successful result carries output, filename, mimeType, width, height, and byteLength structured metadata.

Mode Behavior
inline Returns MCP image content; nothing is written to R2.
url Streams the render result to R2 and returns only a text presigned URL with resource metadata.
both Returns both; on failure it degrades automatically to inline or url.

Temporary URLs are R2 S3 presigned URLs valid for 24 hours.