Skip to main content
Glama

render_html

Render raw HTML/CSS to an image. Perfect for generating OG images, social cards, email previews, and dynamic content from templates. No URL needed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cssNoAdditional CSS to inject
htmlYesRaw HTML content to render (max 2MB)
widthNoViewport width (default: 1280)
formatNoImage format (default: png)
heightNoViewport height (default: 720)
localeNoBCP 47 locale tag for the browser context (e.g., "en-US")
qualityNoImage quality 1-100 (default: 80)
evaluateNoJavaScript code to execute on the page before capture (max 10KB). Runs in the browser context.
selectorNoCSS selector to capture specific element
timezoneNoIANA timezone for the browser context (e.g., "America/New_York")
dark_modeNoEnable dark mode emulation
full_pageNoCapture full page scroll height
wait_untilNoContent load strategy (default: domcontentloaded). Use "networkidle" for content with external resources.
device_scaleNoDevice scale factor (default: 1)
disable_javascriptNoDisable JavaScript execution on the page
ignore_https_errorsNoIgnore HTTPS/TLS certificate errors

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed2 schema fields changed
    • addedInput schema / properties / ignore_https_errors
      Added value: +{
      +  "description": "Ignore HTTPS/TLS certificate errors",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / wait_until
      Added value: +{
      +  "description": "Content load strategy (default: domcontentloaded). Use \"networkidle\" for content with external resources.",
      +  "enum": [
      +    "commit",
      +    "domcontentloaded",
      +    "load",
      +    "networkidle"
      +  ],
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / disable_javascript
      Added value: +{
      +  "description": "Disable JavaScript execution on the page",
      +  "type": "boolean"
      +}
  3. Changed2 schema fields changed
    • addedInput schema / properties / locale
      Added value: +{
      +  "description": "BCP 47 locale tag for the browser context (e.g., \"en-US\")",
      +  "type": "string"
      +}
    • addedInput schema / properties / timezone
      Added value: +{
      +  "description": "IANA timezone for the browser context (e.g., \"America/New_York\")",
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / evaluate
      Added value: +{
      +  "description": "JavaScript code to execute on the page before capture (max 10KB). Runs in the browser context.",
      +  "type": "string"
      +}
  5. Added

TDQS

A4/5.0
Behavior3/5

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

Without annotations, the description must disclose behavioral traits. It clearly states it renders raw HTML/CSS and doesn't need a URL, which sets expectations. However, it does not disclose details about execution context (e.g., headless browser, loading strategies) or any constraints beyond the schema. It adds minimal behavioral context beyond what parameters already imply.

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?

Two sentences, front-loaded with the core function, and each sentence adds value: one defines the action, the other lists use cases and differentiation. No filler.

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 tool's moderate complexity (16 parameters, rich schema), the description provides a high-level context and use-case guidance but doesn't elaborate on the output or advanced behaviors. However, the schema covers the parameters, so the description is sufficient for a basic understanding. It could be more complete by mentioning the image output format or that it can capture elements, but it's acceptable.

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 all 16 parameters are documented. The description adds no parameter-specific information, relying on the schema. Baseline 3 applies.

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 opens with a clear verb-resource pair: 'Render raw HTML/CSS to an image.' It further specifies scope by noting 'No URL needed' and gives concrete use cases (OG images, social cards, etc.), distinguishing it from URL-based screenshot siblings like take_screenshot.

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?

It states it is 'Perfect for generating OG images, social cards, email previews, and dynamic content from templates' – explicit use cases. The phrase 'No URL needed' differentiates it from URL-based tools and implies it should be used when HTML/CSS is available directly, though it doesn't mention sibling tools by name or state when not to use it.

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.

TDQS

A3.7/5.0
Disambiguation4/5

take_screenshot and batch_screenshot both capture screenshots, but batch_screenshot handles multiple URLs while take_screenshot handles a single page, making them distinct enough. render_html and generate_pdf are clearly separate (image vs. PDF, HTML input vs. URL/HTML). Minor confusion possible between the two screenshot tools.

Naming Consistency4/5

Three tools follow the verb_noun pattern (take_screenshot, generate_pdf, render_html), but batch_screenshot breaks the pattern by leading with an adjective/noun rather than a verb. The inconsistency is minor and the names remain readable.

Tool Count5/5

Four tools is well-scoped for a page capture server. Each tool covers a distinct use case: single screenshot, batch screenshot, HTML rendering to image, and PDF generation. No redundancy or excessive bloat.

Completeness4/5

The set covers core web capture needs: single page screenshots, batch captures, HTML/CSS to image, and PDF conversion. Minor gaps include no explicit full-page screenshot option or advanced viewport control, but common workflows are supported.

Resources