Skip to main content
Glama

Screenshot Capture

screenshot_capture
Read-onlyIdempotent

Capture a static screenshot of any webpage and get a shareable download URL. Choose full page, specific element, format, and more for a customized capture.

Instructions

Capture a static screenshot of a webpage and return a JSON response containing the screenshot URL which can be downloaded or shared directly. Always ask the user before calling this tool:

  • Full page or just the visible viewport?

  • Specific element, or the whole page? (If a specific element is needed, help identify the CSS selector via web_fetch on the target URL first.)

  • Image format: PNG, JPG, WebP, or PDF?

  • Should ads or cookie banners be blocked for a cleaner result?

  • Any viewport size / device to simulate?

Use screenshot_capture_scrolling instead when the user wants a scrolling video/GIF of the page.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of the webpage to screenshot (e.g. 'https://example.com').
full_pageNoIf true, captures the entire scrollable page height — not just the visible viewport. Ideal for long landing pages, documentation, or blog posts.
file_typeNoOutput image format. PNG (default) — lossless with transparency support. JPG — smaller file size, lossy. WebP — modern format, good compression. PDF — renders the page as a PDF document.PNG
image_qualityNoJPEG compression quality from 0 (smallest file) to 100 (best quality), default 80. Only applies when file_type is JPG — ignored for PNG, WebP, and PDF.
widthNoViewport width in pixels (default 1680, max 7680). Use to simulate specific device widths (e.g. 375 for iPhone, 768 for tablet).
heightNoViewport height in pixels (default 867, max 4320).
selectorNoCSS selector to capture only a specific element on the page (e.g. '#hero', '.pricing-table'). Falls back to full-page capture if the selector is not found.
remove_selectorNoCSS selector(s) for elements to remove from the page before rendering (e.g. '.cookie-bar, #live-chat'). Multiple selectors separated by commas.
no_cookie_bannersNoBlock cookie consent banners before rendering for a clean, overlay-free screenshot.
block_adsNoBlock advertisements before rendering.
dark_modeNoEnable dark mode for websites that support it via CSS prefers-color-scheme.
delayNoDelay in milliseconds before rendering begins. Useful to let animations finish or dynamic content settle after page load.
lazy_loadNoIf true, automatically scrolls the page before rendering to trigger lazy-loaded images and off-screen content.
wait_for_eventNo'load' (default) — fires when the page load event completes. 'domcontentloaded' — fires earlier, before images/stylesheets finish. 'networkidle' — waits for all network activity to stop (slowest but most complete — good for heavy SPAs).load
extract_htmlNoIf true, the response includes a URL to the raw HTML source of the page as a .html file. ⚠️ Token usage warning: downloading and reading that file can significantly increase token consumption — only enable if the user explicitly needs the HTML source.
extract_textNoIf true, the response includes a URL to the plain-text content of the page as a .txt file. ⚠️ Token usage warning: reading that content will increase token usage — only enable if the user explicitly needs the extracted text.
Behavior4/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint. Description adds that it returns a URL, warns about token usage for extract_html/extract_text, and requires user confirmation. Adds value beyond 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?

Description is well-structured with bullet points for user questions and a clear alternative instruction. It is not overly long; each part serves a purpose. Slightly verbose but justified.

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 16 parameters and no output schema, description explains the output (JSON with URL) and includes token warnings. It covers the key interaction pattern (asking user). Could mention more about response structure, but sufficient.

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 baseline 3. Description does not add parameter-level details beyond what the schema provides, but it does list questions to ask the user which indirectly guide parameter usage. Adequate.

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 captures a static screenshot and returns a JSON response with a shareable URL. It distinguishes from sibling tool screenshot_capture_scrolling, which is for scrolling video/GIF. Verb and resource are specific.

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?

Explicitly advises to ask the user for preferences (full page vs viewport, format, ads blocking, etc.) and names the alternative screenshot_capture_scrolling for scrolling animations. Missing explicit when-not-to-use scenarios, but practical for this tool.

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/api-freaks/apifreaks-mcp'

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