Skip to main content
Glama

Convert a website to markdown

render_markdown
Destructive

Render a page in a real browser and return its full content as clean markdown (website to markdown), keeping headings, links, lists and tables, for reading or feeding to an LLM. Pick this when you want the page itself; pick render_text instead when you want its metadata (title, description, OpenGraph) or structured data extracted with an LLM prompt. 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_markdown"
  }
}

Input Schema

NameRequiredDescriptionDefault
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.
readableNoMake the pdf into a readable document by removing unnecessary elements such as navigation bars, ads, etc.
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.
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

A4.1/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, open-world, non-idempotent call, and the description does not contradict that — it correctly frames the tool as driving a real browser against an arbitrary live URL. However, it never mentions that this consumes render quota/credits or that each call is billable and non-idempotent in practice, which is the behavior an agent most needs to know before calling repeatedly. The description does add genuinely useful routing context (options go to describe_options), so it is above a bare minimum but leaves the cost/side-effect profile to the annotations.

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?

The description is two tight sentences front-loaded with the core action and output, followed by the disambiguation and the escape hatch for advanced options. No filler or restatement of the tool name; the only mild redundancy is repeating "render" between title and body, which is negligible.

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 10-parameter tool with no output schema, the description covers the essential shape: what comes back (markdown), what it is good for, the alternative, and where to find unlisted options. The remaining gap is behavioral rather than structural — no mention of quota consumption, async/queued renders, or how `intent` should be composed — but the schema carries the parameter detail at full coverage.

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 baseline is 3 — every parameter including url, html, delay, wait_for, wait_seconds, readable and project is already documented inline. The description adds only one piece of extra meaning: that arbitrary Urlbox options belong in `options` and should be looked up with describe_options rather than guessed. It says nothing about the required `intent` parameter or when to prefer `html` over `url`.

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?

"Render a page in a real browser and return its full content as clean markdown" gives a specific verb, resource and output format, and the parenthetical "(website to markdown)" plus the list of preserved structures (headings, links, lists, tables) makes the result unambiguous. It explicitly contrasts with the sibling render_text, so an agent can pick between them without opening either schema.

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

Usage Guidelines5/5

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

"Pick this when you want the page itself; pick render_text instead when you want its metadata ... or structured data extracted with an LLM prompt" names both the use case and the alternative with the condition that selects it. It also routes advanced configuration away from web search and toward describe_options, which is actionable guidance rather than generic advice.

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.