Skip to main content
Glama

Screenshot a page

screenshot

Take a full-page JPEG screenshot of a web page through a proxied browser. Returns the image, plus data with an AI answer if ai_query was asked. Spends a flat number of credits. If status is "queued" or "running", call crawl_poll with the job_id to collect it.

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": {
      "url": "<url>"
    },
    "name": "screenshot"
  }
}

Input Schema

NameRequiredDescriptionDefault
jsNoRender the page in a browser so javascript runs. Turn off for static pages to pay less.
urlYesThe page to fetch. http or https, with a host.
cityNoThe city inside that country to appear to browse from, as the pool spells it: letters, digits, hyphens or underscores, e.g. berlin or new_york. Requires country. Doubles the price of the crawl.
touchNoReport the screen as touch capable. Requires viewport.
imagesNoDownload the images on the page.
mobileNoTell the page it is on a phone. Requires viewport; pair it with user_agent for sites that sniff it.
adblockNoDrop ads and trackers before the page loads. Free either way.
countryNoThe country to appear to browse from, as a two-letter ISO 3166-1 code such as es, us or de. Free. Required to use city.
premiumNoFetch through the premium proxy pool instead of the standard one. Costs more; use it for targets that refuse ordinary requests.
ai_queryNoA question to answer about the page once it has been fetched, e.g. "What is the price?". Costs extra credits.
viewportNoThe window size as WIDTHxHEIGHT, e.g. 390x844. Required for device_scale_factor, mobile, landscape and touch.
landscapeNoReport the screen as landscape. Requires viewport.
user_agentNoThe user agent to send instead of the crawler's own.
wait_untilNoWhen the page counts as loaded. Use domcontentloaded or load for pages that keep a connection open.networkidle2
cookies_bannerNoHow to answer cookie banners: accept opts in, reject opts out where the banner allows it, none leaves them on the page.accept
device_scale_factorNoThe device pixel ratio, e.g. 3 for a recent phone. Requires viewport.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / cookies_banner
      Added value: +{
      +  "default": "accept",
      +  "description": "How to answer cookie banners: accept opts in, reject opts out where the banner allows it, none leaves them on the page.",
      +  "enum": [
      +    "accept",
      +    "reject",
      +    "none"
      +  ],
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / wait_until / default
      Previous value: -"networkidle0"New value: +"networkidle2"
  3. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations only declare openWorldHint=true and destructiveHint=false, so the description carries the real behavioral weight: it discloses the return payload (image plus `data` when `ai_query` is set), that a flat number of credits is spent, and the async status/poll contract. It stops short of noting image size limits or failure modes.

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?

Four short sentences, each earning its place: output format first, then the conditional extra, then cost, then the async follow-up. Nothing is padded and the most decision-relevant facts are front-loaded.

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 tool with no output schema, the description explains what comes back and how to retrieve deferred results. The remaining gap is minor: it does not characterize the screenshot's dimensions or behavior under the many viewport/device options, though those are fully documented in the schema.

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% and the 16 parameters are richly annotated with defaults, patterns and cross-parameter requirements, so the schema does the heavy lifting. The description only adds the meaning of `ai_query` and a cost note; 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?

States a specific verb and resource ("Take a full-page JPEG screenshot of a web page") plus the delivery mechanism (proxied browser), so the agent knows exactly what artifact it gets. The mention of `crawl_poll` for queued jobs also signals how this differs from the plain crawl sibling.

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

Usage Guidelines3/5

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

The description gives a clear conditional workflow: if `status` is "queued" or "running", call `crawl_poll` with the `job_id`. However, it never says when to choose screenshot over `crawl` or `crawl_recipe`, nor any exclusion conditions, so the core routing decision is 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.

Resources