Skip to main content
Glama

rendex_render_link

Render URL, HTML, or Markdown into a hosted, edge-cached image URL for use in OG images or img tags. Returns image URL, expiry, format, and cache TTL.

Instructions

Render a URL, raw HTML, or Markdown and get back a signed, hosted, edge-cached image URL instead of the bytes — ideal for dynamic OG images: drop the URL into or an tag and Rendex serves a cached copy on every share. Takes the same options as rendex_screenshot, plus an optional expiresIn. Returns { url, expiresAt, format, cacheTtl } as JSON.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNoThe webpage URL to capture. Mutually exclusive with 'html' and 'markdown'.
htmlNoRaw HTML to render and capture. Mutually exclusive with 'url' and 'markdown'. Great for invoices, social cards, email templates, OG images.
markdownNoMarkdown to render to an image or PDF. Mutually exclusive with 'url' and 'html'. The server converts it to HTML before rendering. Great for reports, release notes, README snapshots, documentation cards.
formatNoOutput format — png (lossless), jpeg (smaller), webp (smallest), or pdf (document). Use pdf for invoices, reports, archival.png
fullPageNoCapture the full scrollable page instead of just the viewport
darkModeNoEmulate dark color scheme (prefers-color-scheme: dark)
widthNoViewport width in pixels (320-3840)
heightNoViewport height in pixels (240-2160)
qualityNoImage quality 1-100 (JPEG/WebP only, ignored for PNG/PDF)
delayNoMilliseconds to wait after page load before capture (useful for JS-rendered content)
blockAdsNoBlock ads and trackers before capture
blockResourceTypesNoBlock specific resource types to speed up capture. E.g. ['font', 'image'] for text-only screenshots.
deviceScaleFactorNoDevice pixel ratio (1 = standard, 2 = retina). Defaults to 2× Retina.
deviceNoDevice preset that sets viewport, scale factor, and user agent in one shot. E.g. 'iphone_15' for a mobile screenshot. Overrides width/height/deviceScaleFactor/userAgent.
timeoutNoMaximum seconds to wait for page load (5-60). Cloudflare has a 60s hard cap.
waitUntilNoPage readiness event. networkidle2 (default) is best for most sites. Use domcontentloaded for speed, networkidle0 for completeness.networkidle2
waitForSelectorNoCSS selector to wait for before capture. Essential for SPAs (e.g. '.main-content', '#app-loaded')
bestAttemptNoIf true (default), capture whatever is rendered on timeout instead of failing. Set to false to get a hard error on timeout.
selectorNoCSS selector of a specific element to capture instead of the full page. Useful for OG images, component extraction (e.g. '#hero', '.pricing-card')
hideSelectorsNoCSS selectors to hide (display:none) before capture. E.g. ['.modal', '#newsletter-popup'] to remove overlays. Max 50 selectors.
blockCookieBannersNoHide common cookie/consent walls (GDPR/CCPA banners) before capture. A curated selector list, lighter than custom hideSelectors.
resizeWidthNoDownscale the captured image to this width in pixels (16-3840). Aspect ratio is preserved if resizeHeight is omitted. Ignored for PDF.
resizeHeightNoDownscale the captured image to this height in pixels (16-2160). Aspect ratio is preserved if resizeWidth is omitted. Ignored for PDF.
cssNoCustom CSS to inject into the page before capture. Hide cookie banners, add watermarks, override styles. Max 50KB.
jsNoCustom JavaScript to execute in the page before capture. Runs in the browser sandbox. Max 50KB.
cookiesNoCookies to set before capture. Useful for authenticated pages. Max 50 cookies.
headersNoCustom HTTP headers to send with the page request. Cannot override Host, Connection, Content-Length, or Transfer-Encoding.
userAgentNoOverride the browser user agent string.
pdfFormatNoPDF page size. Only used when format='pdf'. Default: A4
pdfLandscapeNoPDF landscape orientation. Only used when format='pdf'.
pdfPrintBackgroundNoPrint background colors/images in PDF. Default: true
pdfScaleNoPDF scale factor (0.1-2). Default: 1
pdfMarginNoPDF page margins. Only used when format='pdf'. Accepts CSS values.
asyncNoProcess capture asynchronously. Returns a jobId immediately instead of waiting. Poll GET /v1/jobs/:jobId for status, or use webhookUrl for push notification.
webhookUrlNoURL to receive a POST callback when async capture completes. Payload is HMAC-SHA256 signed. Requires async=true.
cacheTtlNoSeconds to cache the result in R2 storage (3600-2592000). Returns a signed URL for retrieval. Requires async=true.
dataNoKey-value data object for Mustache templating. When provided, the 'html' or 'markdown' string is rendered as a logic-less Mustache template before capture — {{var}} inserts HTML-escaped, {{{var}}} inserts raw, {{#items}}...{{/items}} iterates arrays, {{a.b}} accesses nested fields. Not valid with 'url'. Max 256KB serialized.
geoNoISO 3166-1 alpha-2 country code for geo-targeted capture (e.g., 'US', 'DE', 'JP'). Renders the page as seen from that country. Pro/Enterprise only. Note: CSS/JS injection, cookies, element capture, dark mode, and some other features are not available with geo-targeting.
geoCityNoCity for more precise geo-targeting (e.g., 'Berlin', 'New York'). Requires 'geo'.
geoStateNoState or region for more precise geo-targeting (e.g., 'California'). Requires 'geo'.
expiresInNoSeconds until the signed URL expires (60–2592000). Defaults to the server's TTL.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It describes the output format and that the result is a signed URL served from edge cache. However, it does not disclose potential side effects, authentication requirements, rate limits, or what happens on errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is approximately four sentences, front-loaded with the core action and use case. Every sentence provides value, and the structure is clear and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the large parameter set (41) with 100% schema coverage and no output schema, the description explains the return format and references a sibling tool. It is mostly complete, though it could mention expected behavior for common edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description adds limited value beyond the schema. It provides a useful summary that the tool takes the same options as `rendex_screenshot` plus expiresIn, but does not add new parameter-level details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool renders a URL, raw HTML, or Markdown and returns a signed, hosted, edge-cached image URL. It distinguishes itself from the sibling tool `rendex_screenshot` by noting it takes the same options plus an optional expiresIn, and from `rendex_extract` by its different purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states it is ideal for dynamic OG images and can be used in meta tags. It also notes it takes the same options as `rendex_screenshot`, implying that for raw screenshot bytes, one should use that tool. However, it does not provide explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/copperline-labs/rendex-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server