Skip to main content
Glama

Scrape the rendered HTML of a website

render_html
Destructive

Render a page with JavaScript and return the final HTML (after scripts run), optionally also as MHTML. Any other Urlbox option (proxies, cookies, headers, user agent and many more) goes in options: look it up with describe_options.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "intent": "<intent>"
    },
    "name": "render_html"
  }
}

Input Schema

NameRequiredDescriptionDefault
jsNoExecute custom JavaScript in the context of the page. The JS gets executed after the page's dom has loaded, but before the screenshot is taken. No need to use load etc event handlers to run code, as these events will already have fired by the time this JS gets executed. You can use await to wait for promises to resolve. Assign window.customUrlboxData to return data at metadata.custom. Requires the ultra plan or above.
urlNoThe URL or domain of the website you want to screenshot. We will automatically prepend http:// if it is missing.
htmlNoHTML to render instead of a URL (HTML to PDF, HTML to image).
delayNoThe amount of time to wait before Urlbox captures a render in milliseconds.
intentYesRequired. In one or two sentences, what you are trying to achieve for the user with this call and why (for example: 'Screenshot the pricing page so the user can compare plans'). Recorded for analytics and audit; do not include secrets.
optionsNoAny other Urlbox render option by name, e.g. { "gpu": true }. For an option this tool doesn't list, look it up with describe_options first (it covers every option); don't search the web. Validated by the Urlbox API.
projectNoProject id (proj_…) or exact name to render with. Defaults to your default project.
wait_forNoWaits for the element specified by this selector to be present in the DOM before taking a screenshot or PDF. By default, Urlbox will take a screenshot or PDF if the wait_for element is not found after waiting for the time specified by the wait_timeout option. If you prefer Urlbox to fail the request when the wait_for element is not found, pass fail_if_selector_missing=true
block_adsNoBlocks requests from popular advertising networks from loading.
save_mhtmlNoAlso save the page as MHTML (a single-file web archive).
wait_untilNoWaits until the specified DOM event has fired before capturing a render. The available options are: domloaded (the DOMContentLoaded event is fired); mostrequestsfinished (consider navigation to be finished when there are no more than 2 network connections for at least 500 ms); requestsfinished (there are no more than 0 network connections for at least 500 ms); loaded (the load event is fired); One of: domloaded, mostrequestsfinished, requestsfinished, loaded.
wait_secondsNoHow long to wait for the render before returning. 0 queues it and returns a render id at once. If the wait runs out the render keeps going; fetch it with get_render.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.6/5.0
Behavior3/5

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

The description adds one genuinely useful behavioral fact beyond the annotations: the page is actually executed with JavaScript and the HTML is captured only after scripts run. However, the annotations declare destructiveHint=true and openWorldHint=true, and the description says nothing about the side effects of executing arbitrary page scripts or about credit/cost implications, leaving the risky part of the behavior unexplained.

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

Conciseness4/5

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

Two sentences, front-loaded with the action and output, with the discovery pointer to describe_options placed immediately after the escape-hatch parameter is mentioned. Minor redundancy: the MHTML mention duplicates the `save_mhtml` parameter description.

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?

For a 12-parameter tool with no output schema, the description covers what comes back (the final HTML) and how to reach the many unlisted options. Remaining gaps — timeout/queue behavior, failure modes, and the consequences of running page scripts — are either in the schema or genuinely absent, but the destructive hint is never acknowledged in prose.

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 coverage is 100%, so every parameter including the nested `options` bag is already documented in the schema, and the description's two parameter mentions (MHTML, options→describe_options) largely restate what `save_mhtml` and `options` already say. It earns the baseline but adds no syntax, format, or precedence guidance the schema lacks.

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

Purpose4/5

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

"Render a page with JavaScript and return the final HTML (after scripts run)" gives a concrete verb plus the distinguishing output artifact, which separates it in spirit from render_screenshot/render_pdf/render_markdown. It never names a sibling outright, so the differentiation is inferable rather than explicit.

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?

Clear operating context: use this when you want post-JS HTML, and use `options` plus describe_options for anything not surfaced as a top-level parameter. It stops short of saying when to prefer render_screenshot or render_markdown over this tool, so the exclusions are left implicit.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.