Skip to main content
Glama

Screenshots of a website

take_screenshots

Capture clean desktop, mobile, and full-page screenshots of a website by opening it in a headless browser, hiding cookie banners and floating boxes, and saving images plus a manifest.

Instructions

Opens a website in a headless browser, picks the pages worth showing (home, pricing, features and the like), hides cookie banners, chat bubbles and other floating boxes, and saves desktop, phone and whole-page screenshots in one folder. SCREENSHOTS.md is for people and agents, manifest.json for tools, sheet.png shows every page on one picture. Sizes: desktop is 1600x900 at 2x, mobile 360x640 at 3x, iphone 440x956 at 3x, full the whole page at 1x, mobile-full the whole phone page at 2x, or any WxH with an optional @scale (1270x760@2 is a Product Hunt gallery image). (easyscreenshotkit 0.1.1, on this machine.)

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": "take_screenshots"
  }
}

Input Schema

NameRequiredDescriptionDefault
pwaNoAlso save screenshots for a web app manifest in pwa/: each page's first screen at 1920x1080 and on a phone at 1080x1920, checked against Chrome's rules for its richer install dialog, with the manifest entries in pwa/manifest-screenshots.json.
urlYesThe website, like https://linear.app
hideNoCSS selectors of more elements to hide.
langNoThe site's version in this language, when it has one, like de.
pageNoPages to take too, like /pricing.
cleanNoSet to false to take the pages as they come, banners and bubbles included.
pagesNoHow many pages, the home page included (default 5).
sizesNoAny of desktop, mobile, iphone, full, mobile-full or WxH, each with an optional @scale (default desktop, mobile and full).
themeNoThe site's light or dark look, or both (default light).
out_dirNoFolder to save into, absolute or relative to /app. Default: easyscreenshotkit-{host}.
wait_secondsNoHow long to wait for the result before returning a job_id to wait on. 45 is safe for clients that stop a tool call after 60 seconds.
reduced_motionNoAsk the site for its reduced-motion version.
timeout_secondsNoGive up after this many seconds (default 300).

Output Schema

NameRequiredDescriptionDefault
kitYes
toolYes
filesNo
folderNoWhere the kit saved its files.
job_idYes
passedNoFor checks: whether the check passed.
statusYes
exit_codeNo
last_lineNoWhat the kit was doing last.
expires_atNoWhen the download links stop working.
next_actionNo
elapsed_secondsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag openWorldHint=true and idempotentHint=false, but the description adds real context beyond them: what gets hidden by default, what artifacts land in the output folder and who each is for, and that long runs return a job_id to wait on. It does not discuss failure modes or rate limits, keeping it short of 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core behavior is front-loaded in the first sentence, which is good, but the remainder is a dense run-on that spends substantial space on size specifications already covered by the schema. The trailing version string '(easyscreenshotkit 0.1.1, on this machine.)' adds little for tool selection.

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 13-parameter tool with an output schema and full schema coverage, the description supplies what structured fields cannot: the overall workflow, the on-disk artifacts, and the job_id/wait_seconds contract. Only the lack of guidance on pwa vs. check_pwa_screenshots leaves a gap.

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 every parameter is already documented in the schema, and the description largely restates defaults (desktop/mobile/full, light theme). It does add a useful size-syntax example (1270x760@2 as a Product Hunt gallery image), but that duplicates explanations already present in the sizes parameter.

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 names a concrete pipeline with specific verbs and resources: opens a site in a headless browser, picks pages, hides cookie banners, saves desktop/mobile/whole-page screenshots. It is distinguishable from siblings like record_demo_video or make_launch_stills because the output artifacts (SCREENSHOTS.md, manifest.json, sheet.png) are explicitly named.

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?

Usage is implied by the described pipeline (point it at a URL to get a screenshot set), and the pwa and clean parameters hint at common variations. But there is no explicit when-to-use vs. when-not guidance and it never routes the agent to a sibling such as check_pwa_screenshots or record_demo_video.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.