MCP screenshot service Cloudflare Workers
Give your agent a clear view of the page.
RenderSight turns generated HTML into a screenshot your agent can inspect, compare, and improve. No more editing a page it cannot see.
01 / The gap
Agents can write a page. They just can't see it.
ChatGPT's built-in cloud browser runs in an environment isolated from the agent. RenderSight closes that gap over MCP, so visual feedback becomes part of the work.
-
01
Close the isolation gap
HTML, CSS, and JavaScript created in the agent's environment can finally be loaded, presented, and inspected.
-
02
Render where the page lives
Cloudflare Browser Run renders the content in the cloud, waits for webfonts, and captures a PNG when it is ready.
-
03
Keep the loop moving
Screenshot, inspect, fix, screenshot again. Give landing pages, email templates, and reports a visual quality check.
-
04
Share without keeping it forever
Store results in R2 and pass along a temporary download link that stays valid for 24 hours.
02 / How it works
A render loop the agent can actually use.
The Worker is protected by Cloudflare Access Managed OAuth. A successful call returns image content, a temporary URL, or both.
-
01
Send the draft
ChatGPT connects to the MCP server through Managed OAuth and calls
renderwith HTML. -
02
Run the browser
Browser Run renders the page in the cloud, waits for content and webfonts, then captures a PNG.
-
03
Stage the result
R2 stores the PNG and returns a presigned download URL valid for 24 hours when a URL is requested.
-
04
Review and iterate
The agent reads the image content or URL, then turns what it sees into the next useful edit.
render({ html, output: "both" })
screenshot + metadata
03 / Tool reference
One tool. The details you need.
Render HTML to a PNG image, returned inline, as a temporary download URL, or both.
render({ html, output: "both" })
Parameters
htmlrequired- The HTML to render.
width,height- Viewport size. Defaults to
800 x 800, with each value clamped to 1-4096 px. omitBackground- Use a transparent background instead of the default opaque background.
waitForFonts- Wait for
document.fonts.readyplus two repaints before capture. Defaults totrue. waitForSelector-
Optional readiness condition: a CSS selector with
attached,visible, orhiddenstate and a 30-second time budget. waitForTimeout- Extra fixed wait after readiness, from 0-10000 ms. Defaults to
0. output- Choose
inline,url, orboth. Defaults toboth. filename- Filename shown on download. A missing
.pngextension is appended automatically.
Timed-out wait conditions return a tool error instead of capturing an unfinished page. Inline encoding is capped at 8 MiB to stay under the Workers 128 MB isolate memory limit.
Output modes
Choose how the screenshot comes back.
-
inlineReturns MCP image content; nothing is written to R2.
-
urlStreams the result to R2 and returns only a text presigned URL with resource metadata.
-
bothReturns both, degrading automatically to
inlineorurlwhen needed.
Every successful result includes output, filename, mimeType, width,
height, and byteLength. Temporary URLs are valid for 24 hours.
A better next edit
Stop guessing. Start iterating.
Connect RenderSight to ChatGPT, send a page, and give the agent something concrete to look at.