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
rendertool; 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.
MCP server (Cloudflare Workers)
ChatGPT connects via Managed OAuth and calls the render tool with HTML.
Browser Run
The page is rendered in the cloud; once content and webfonts are ready, a PNG is captured.
R2 staging
The PNG is stored in R2 and a presigned download URL valid for 24 hours is returned.
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.
RenderSight