Skip to main content
Glama

take_screenshot

Read-only

See a public web page the way a person does. Renders the URL in a real browser with ads and cookie banners removed and returns the image inline (PNG unless format is set; pdf comes back as base64 text), followed by a line with the captures left this month. Use device for a phone or tablet view and full_page for the whole page. Set as_file: true to get the capture as an attached file instead. To read the words, use extract_content. Most pages take a few seconds; a page still loading after about 30 seconds is captured as it stands. Uses one capture. Pass fresh: false to accept a free copy of the same URL and options captured in the last 24 hours. Public URLs only: localhost and private network addresses are refused.

Input Schema

NameRequiredDescriptionDefault
urlYesPublic page to capture: a full URL starting with https:// or http://
delayNoExtra milliseconds to wait after the page loads, 0-10000 (default: 0)
freshNoDefault true: render the page now (uses one capture). false: a copy of the same URL and options captured in the last 24 hours may be returned for free; the result then says when it was captured.
widthNoViewport width in CSS pixels, 320-3840 (default: 1280). Ignored when device is set.
deviceNoPhone, tablet or laptop preset (overrides width and height): iphone_14 (390x844), iphone_15_pro (393x852), pixel_7 (412x915), ipad_pro (1024x1366), macbook_pro (1440x900)
formatNoOutput format: png (default), jpeg, webp, or pdf
heightNoViewport height in CSS pixels, 200-10000 (default: 800). Ignored when device is set.
as_fileNoDefault false: the image comes back inline (pdf as base64 text). true: the capture comes back as an attached file (an MCP embedded resource: image/png, image/jpeg, image/webp or application/pdf), for apps that save files from tool results but not inline images, such as Harvey.
qualityNoJPEG and WebP quality, 1-100 (default: 90). Ignored for png.
metadataNoDefault true: the file carries SnapRender metadata (PNG/JPEG text with the software name and page URL, PDF creator and subject). false: the capture comes back without embedded metadata, only the page itself.
block_adsNoBlock ads and trackers (default: true)
dark_modeNoAsk the page for its dark color scheme (default: false)
full_pageNoCapture the whole scrollable page instead of one screen (default: false). Very tall pages are cut at about 32,000 px (about 8,000 px for webp, less with phone presets).
user_agentNoCustom User-Agent string. A capture with a custom user agent is always rendered new.
click_selectorNoCSS selector to click before the capture
hide_selectorsNoComma-separated CSS selectors to hide before the capture
block_cookie_bannersNoRemove cookie consent banners (default: true). false always renders a new capture.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / metadata
      Added value: +{
      +  "description": "Default true: the file carries SnapRender metadata (PNG/JPEG text with the software name and page URL, PDF creator and subject). false: the capture comes back without embedded metadata, only the page itself.",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / as_file
      Added value: +{
      +  "description": "Default false: the image comes back inline (pdf as base64 text). true: the capture comes back as an attached file (an MCP embedded resource: image/png, image/jpeg, image/webp or application/pdf), for apps that save files from tool results but not inline images, such as Harvey.",
      +  "type": "boolean"
      +}
  3. Changed15 schema fields changed
    • changedInput schema / properties / block_ads / description
      Previous value: -"Block advertisements and trackers (default: true)"New value: +"Block ads and trackers (default: true)"
    • changedInput schema / properties / block_cookie_banners / description
      Previous value: -"Remove cookie consent banners (default: true)"New value: +"Remove cookie consent banners (default: true). false always renders a new capture."
    • changedInput schema / properties / click_selector / description
      Previous value: -"CSS selector to click before capture"New value: +"CSS selector to click before the capture"
    • changedInput schema / properties / dark_mode / description
      Previous value: -"Enable dark mode CSS emulation (default: false)"New value: +"Ask the page for its dark color scheme (default: false)"
    • changedInput schema / properties / delay / description
      Previous value: -"Milliseconds to wait after page load (default: 0)"New value: +"Extra milliseconds to wait after the page loads, 0-10000 (default: 0)"
    • changedInput schema / properties / device / description
      Previous value: -"Device preset for mobile/tablet emulation"New value: +"Phone, tablet or laptop preset (overrides width and height): iphone_14 (390x844), iphone_15_pro (393x852), pixel_7 (412x915), ipad_pro (1024x1366), macbook_pro (1440x900)"
    • changedInput schema / properties / format / description
      Previous value: -"Output format (default: png)"New value: +"Output format: png (default), jpeg, webp, or pdf"
    • addedInput schema / properties / fresh
      Added value: +{
      +  "description": "Default true: render the page now (uses one capture). false: a copy of the same URL and options captured in the last 24 hours may be returned for free; the result then says when it was captured.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / full_page / description
      Previous value: -"Capture entire scrollable page (default: false)"New value: +"Capture the whole scrollable page instead of one screen (default: false). Very tall pages are cut at about 32,000 px (about 8,000 px for webp, less with phone presets)."
    • changedInput schema / properties / height / description
      Previous value: -"Viewport height in pixels (default: 800)"New value: +"Viewport height in CSS pixels, 200-10000 (default: 800). Ignored when device is set."
    • changedInput schema / properties / hide_selectors / description
      Previous value: -"Comma-separated CSS selectors to hide before capture"New value: +"Comma-separated CSS selectors to hide before the capture"
    • changedInput schema / properties / quality / description
      Previous value: -"Image quality for JPEG/WebP, 1-100 (default: 90)"New value: +"JPEG and WebP quality, 1-100 (default: 90). Ignored for png."
    • changedInput schema / properties / url / description
      Previous value: -"URL to capture (must start with http:// or https://)"New value: +"Public page to capture: a full URL starting with https:// or http://"
    • addedInput schema / properties / user_agent
      Added value: +{
      +  "description": "Custom User-Agent string. A capture with a custom user agent is always rendered new.",
      +  "type": "string"
      +}
    • changedInput schema / properties / width / description
      Previous value: -"Viewport width in pixels (default: 1280)"New value: +"Viewport width in CSS pixels, 320-3840 (default: 1280). Ignored when device is set."
  4. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Beyond the readOnly/openWorld/non-destructive annotations, the description discloses cost accounting ("Uses one capture", remaining captures line), latency and timeout behavior (~30s capture of a partially loaded page), caching semantics for fresh: false, the PDF-as-base64 return quirk, and that ads and cookie banners are stripped. The only notable omission is what happens on failure or refusal (error shape), which keeps it from a 5.

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 most decision-relevant facts (what it does, the sibling alternative, cost) are front-loaded, and nearly every sentence carries actionable information. It is dense and slightly run-on in places (return format, cost, and timeout all packed into one block), but no sentence is filler.

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

Completeness5/5

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

For a 17-parameter capture tool with no output schema, the description still covers return format (inline image, PDF base64, attached file, trailing quota line), cost, latency, and access restrictions. An agent has everything needed to invoke it correctly on the first try.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: fresh: false ties to a free 24-hour cache and to the returned capture timestamp, as_file is explained in terms of which client apps need it, and format png/pdf implies inline image versus base64 text. This is genuine semantic value beyond the field descriptions.

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 opening states a concrete verb and resource ("See a public web page... Renders the URL in a real browser") and immediately differentiates itself from the sibling extract_content by naming it for text reading. An agent can tell this apart from batch_screenshots or extract_content without opening a 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?

Explicit routing guidance is given: use extract_content to read words, device for phone/tablet views, full_page for the whole page, as_file when the app cannot display inline images, fresh: false for a free cached copy. Hard exclusions are also stated (public URLs only; localhost and private addresses refused).

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.