Rendex Screenshot MCP Server

Capture website screenshots as PNG/JPEG via AI agents. Full-page capture, dark mode, ad blocking, custom viewports. Edge-deployed on Cloudflare Workers, free tier included.

Documentation

@copperline/rendex-mcp

npm version npm downloads License: MIT

MCP server for Rendex — render raw HTML, Markdown, or any URL to an image or PDF via AI agents using the Model Context Protocol.

Quick Start

Claude Desktop / Cursor / Windsurf (npx)

Add to your MCP client config:

{
  "mcpServers": {
    "rendex": {
      "command": "npx",
      "args": ["-y", "@copperline/rendex-mcp"],
      "env": {
        "RENDEX_API_KEY": "your-api-key"
      }
    }
  }
}

Where to add this:

ClientConfig location
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
Cursor.cursor/mcp.json in project root, or Settings > MCP
WindsurfSettings > MCP Servers

Claude Code (CLI)

Add a .mcp.json to your project root with the same config above. Then restart Claude Code.

Important: Add .mcp.json to your .gitignore — it contains your API key.

Remote (zero-install)

Connect directly — no installation needed (Claude Desktop only):

{
  "mcpServers": {
    "rendex": {
      "url": "https://mcp.rendex.dev/mcp",
      "headers": {
        "Authorization": "Bearer your-api-key"
      }
    }
  }
}

Tools

rendex_screenshot

Capture a screenshot or PDF of any webpage, raw HTML, or Markdown.

"Take a screenshot of https://example.com"
"Capture the full page of https://news.ycombinator.com in dark mode"
"Generate a PDF of https://github.com with A4 page size"
"Capture https://amazon.de as seen from Germany"
"Render this HTML invoice as a PDF"
"Render this Markdown release note as a PDF"

Parameters:

ParameterTypeDefaultDescription
urlstringrequired*Webpage URL to capture. Mutually exclusive with html and markdown.
htmlstringRaw HTML to render. Mutually exclusive with url and markdown.
markdownstringMarkdown to render (server converts to HTML). Mutually exclusive with url and html.
dataobjectKey-value data for Mustache templating. When set, the html or markdown string is rendered as a logic-less Mustache template before capture. Invalid with url.
format"png" | "jpeg" | "webp" | "pdf""png"Output format
fullPagebooleanfalseCapture full scrollable page
darkModebooleanfalseEmulate dark color scheme
widthnumber1280Viewport width (320-3840)
heightnumber800Viewport height (240-2160)
resizeWidthnumberDownscale output to this width in px (aspect ratio preserved if resizeHeight omitted). Ignored for PDF
resizeHeightnumberDownscale output to this height in px (aspect ratio preserved if resizeWidth omitted). Ignored for PDF
qualitynumber80Image quality 1-100 (JPEG/WebP only, default 80)
delaynumber0Wait ms before capture
blockAdsbooleantrueBlock ads and trackers
blockCookieBannersbooleanHide common cookie/consent banners (GDPR/CCPA) before capture
blockResourceTypesstring[]Block resource types: font, image, media, stylesheet, other
devicestringDevice preset: desktop, iphone_15, iphone_se, pixel_8, ipad, ipad_pro — sets viewport, scale, and user agent in one shot. Overrides width/height/deviceScaleFactor/userAgent
deviceScaleFactornumber2Device pixel ratio (1-3). 2× Retina by default
timeoutnumber30Max seconds to wait for page load (5-60)
waitUntilstring"networkidle2"Page readiness: load, domcontentloaded, networkidle0, networkidle2
waitForSelectorstringCSS selector to wait for before capture
bestAttemptbooleantrueReturn partial render on timeout instead of failing
selectorstringCSS selector of element to capture instead of full page
hideSelectorsstring[]CSS selectors to hide (display:none) before capture, e.g. ['.modal', '#newsletter-popup']. Max 50
cssstringCustom CSS to inject before capture (max 50KB)
jsstringCustom JavaScript to execute before capture (max 50KB)
cookiesarrayCookies to set for authenticated captures (max 50)
headersobjectCustom HTTP headers for the page request
userAgentstringOverride browser user agent string
pdfFormatstringPDF page size: A4, Letter, Legal, Tabloid, A3
pdfLandscapebooleanPDF landscape orientation
pdfPrintBackgroundbooleantruePrint background in PDF
pdfScalenumber1PDF scale factor (0.1-2)
pdfMarginobjectPDF margins: {top, right, bottom, left} as CSS values
geostringISO country code for geo-targeted capture (Pro/Enterprise)
geoCitystringCity for geo-targeting (requires geo)
geoStatestringState for geo-targeting (requires geo)
asyncbooleanProcess asynchronously (returns job ID)
webhookUrlstringURL to receive callback when async capture completes
cacheTtlnumberSeconds to cache result (3600-2592000)

rendex_extract

Extract clean reader-mode content from any webpage as Markdown, JSON, or HTML. Runs the same Chromium render pass as a screenshot, so it captures content after JavaScript runs — handling SPAs that fetch-only readers miss. Strips nav, ads, and boilerplate, returning the article body plus title, byline, and excerpt. Great for feeding page content to an LLM, summarization, or RAG ingestion.

"Extract the article text from https://example.com/post as Markdown"
"Pull the readable content from this SPA as JSON so I can summarize it"

Parameters:

ParameterTypeDefaultDescription
urlstringrequiredWebpage URL to extract readable content from
extractFormat"markdown" | "json" | "html""markdown"Output shape — markdown (LLM-friendly prose), json (structured: title/byline/excerpt/siteName/length), or html (cleaned reader-mode HTML)
devicestringDevice preset (desktop, iphone_15, iphone_se, pixel_8, ipad, ipad_pro) — extract the mobile/tablet version of a page
blockAdsbooleantrueBlock ads and trackers before extraction
blockCookieBannersbooleanHide common cookie/consent walls before extraction
hideSelectorsstring[]CSS selectors to hide before extraction, e.g. ['.modal', '#newsletter-popup']. Max 50
waitUntilstring"networkidle2"Page readiness: load, domcontentloaded, networkidle0, networkidle2
timeoutnumber30Max seconds to wait for page load (5-60)

Data templating

Turn one reusable template into many documents. Pass a data object alongside html or markdown, and Rendex renders the string as a logic-less Mustache template before capture — {{var}} interpolation, {{#items}}…{{/items}} loops, and nested {{a.b}} access. Great for invoices, reports, certificates, and OG cards.

"Render this HTML invoice template to a PDF, filling it with this data:
 <h1>Invoice {{number}}</h1><p>Total: {{total}}</p>
 data = { number: 'INV-014', total: '$2,400' }"

data is valid only with html or markdown — combining it with url returns a validation error.

Authentication

Get your API key at rendex.dev.

Set the RENDEX_API_KEY environment variable in your MCP client configuration.

Pricing

PlanCalls/MonthRate
Free50010/min
Starter10,00060/min
Pro100,000300/min
EnterpriseCustom1,000/min

License

MIT — Copperline Labs LLC