Skip to main content
Glama
screenshotrun

screenshotrun-mcp

Official

screenshotrun-mcp

npm version License: MIT

Give your AI agent the ability to see any webpage. MCP server for ScreenshotRun Screenshot API.

Features

  • Capture screenshots of any public webpage as PNG, JPEG, WebP, or PDF

  • Device emulation — desktop, mobile, and tablet viewports

  • Dark mode rendering with prefers-color-scheme: dark

  • Full-page capture with automatic scrolling

  • Block ads and cookie consent banners

  • Inject custom CSS/JavaScript before capture

  • Target specific elements with CSS selectors

  • Retina (2x) resolution support

  • Monitor your API usage and remaining quota

Related MCP server: ShotAPI

Quick Start

1. Get your API key

Sign up for a free API key at screenshotrun.com.

2. Configure your AI client

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "screenshotrun": {
      "command": "npx",
      "args": ["-y", "screenshotrun-mcp"],
      "env": {
        "SCREENSHOTRUN_API_KEY": "sr_live_your_key_here"
      }
    }
  }
}

Claude Code

claude mcp add screenshotrun \
  npx -y screenshotrun-mcp \
  -e SCREENSHOTRUN_API_KEY=sr_live_your_key_here

Cursor

Add to .cursor/mcp.json in your project:

{
  "mcpServers": {
    "screenshotrun": {
      "command": "npx",
      "args": ["-y", "screenshotrun-mcp"],
      "env": {
        "SCREENSHOTRUN_API_KEY": "sr_live_your_key_here"
      }
    }
  }
}

Windsurf

Add to your Windsurf MCP configuration with the same npx -y screenshotrun-mcp command and set the SCREENSHOTRUN_API_KEY environment variable.

Available Tools

take_screenshot

Capture a screenshot of any webpage. Returns the image as base64-encoded data that AI agents can analyze and describe.

Parameter

Type

Default

Description

url

string

required

URL to screenshot (must include http:// or https://)

format

png | jpeg | webp | pdf

png

Output image format

width

number

1280

Viewport width in pixels (320–3840)

height

number

800

Viewport height in pixels (200–2160)

full_page

boolean

false

Capture the entire scrollable page

quality

number

80

Image quality for JPEG/WebP (1–100)

device

desktop | mobile | tablet

—

Device preset (overrides width/height with device defaults)

dark_mode

boolean

false

Enable dark mode rendering

block_ads

boolean

false

Block advertisements during capture

block_cookies

boolean

true

Block cookie consent dialogs

delay

number

0

Delay in seconds after page load before capturing (0–10)

retina

boolean

false

Capture at 2x resolution

css

string

—

Custom CSS to inject into the page (max 10KB)

js

string

—

Custom JavaScript to execute before capture (max 10KB)

selector

string

—

CSS selector to capture a specific element

hide_selectors

string[]

—

CSS selectors of elements to hide before capture

click_selector

string

—

CSS selector of element to click before capture

scroll_to

string

—

CSS selector of element to scroll into view

check_usage

Check your ScreenshotRun API usage for the current billing period. Returns screenshots used, remaining quota, usage percentage, and days remaining.

No parameters required.

Example Prompts

  • "Take a screenshot of screenshotrun.com"

  • "Screenshot snapshotarchive.com in dark mode on mobile"

  • "Capture full-page screenshot of my website and describe what you see"

  • "Take a retina screenshot of screenshotrun.com in JPEG format"

  • "Screenshot snapshotarchive.com on tablet with ad blocking"

  • "Take a screenshot of my site with the cookie banner hidden using hide_selectors"

  • "Check my ScreenshotRun API usage"

How It Works

  1. Your AI agent receives a user request involving a webpage screenshot

  2. The agent calls the take_screenshot tool with the URL and options

  3. The MCP server sends the request to the ScreenshotRun API

  4. The API renders the page in a real browser and returns the screenshot

  5. The image is returned to the AI agent as base64, which it can analyze and describe

Requirements

Other Projects by ScreenshotRun

  • SnapshotArchive — Automated website monitoring with visual diff detection

  • WatchCron — Cron job & heartbeat monitoring for developers

License

MIT

Available Tools

2 tools
check_usageA

Check your ScreenshotRun API usage for the current billing period. Shows screenshots used, remaining, and limits.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the read-only nature ('Check'), the temporal scope (current billing period), and the returned fields, but says nothing about auth requirements, rate limits, or whether usage is real-time.

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?

Two short sentences, front-loaded with the action and scope, followed by the concrete return content. No waste.

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 zero-parameter read-only tool with no output schema, the description is largely complete: it explains what is queried and what is returned. Minor gap is lack of auth/real-time context, but nothing needed to invoke it correctly is missing.

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?

Zero parameters, so there is nothing to document; baseline is 4. The description correctly requires no input, matching the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check) and resource (API usage) plus the scope (current billing period) and what is shown (screenshots used, remaining, limits). It is unambiguous what it does, though it does not explicitly name or distinguish itself from the sibling take_screenshot.

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 'current billing period' — the agent infers this is a read-only status check. There is no explicit statement of when to use it, no exclusions, and no mention of the sibling, so guidance is implied rather than stated.

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

take_screenshotA

Capture a screenshot of any webpage. Returns the image as base64-encoded data. Supports custom viewport sizes, device emulation, dark mode, full-page capture, ad blocking, and more.

NameRequiredDescriptionDefault
jsNoCustom JavaScript to execute before capture
cssNoCustom CSS to inject into the page
urlYesURL of the page to screenshot (must start with http:// or https://)
delayNoDelay in seconds after page load before capturing
widthNoViewport width in pixels
deviceNoDevice preset (affects viewport and user agent)
formatNoOutput image formatpng
heightNoViewport height in pixels
retinaNoCapture at 2x resolution (retina)
qualityNoImage quality for JPEG/WebP (1-100)
selectorNoCSS selector to capture a specific element instead of the full viewport
block_adsNoBlock advertisements during capture
dark_modeNoEnable dark mode (prefers-color-scheme: dark)
full_pageNoCapture the entire scrollable page
scroll_toNoCSS selector of an element to scroll into view before capture
block_cookiesNoBlock cookie consent dialogs
click_selectorNoCSS selector of an element to click before capture
hide_selectorsNoCSS selectors of elements to hide before capture

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It usefully discloses that the result is base64-encoded image data and mentions several feature areas, but it does not disclose important behavioral traits such as permissions, rate limits, timeout behavior, or the fact that custom JS and click actions can affect the target page.

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 short and front-loads the core action and return format. The phrase 'and more' is slightly vague, but overall the structure is efficient and appropriately sized for a tool whose parameter details are covered by the schema.

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

Completeness3/5

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

For an 18-parameter tool with no annotations and no output schema, the description is adequate but not fully complete. It explains the return value and major capabilities, but it does not cover behavioral context such as side effects from JS execution, rate limits, or error conditions.

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 input schema already documents all 18 parameters, including url, viewport, format, and selectors. The description highlights a subset of capabilities such as viewport sizes, device emulation, dark mode, and full-page capture, but adds no syntax or format detail beyond what the schema provides.

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 states a specific verb and resource: 'Capture a screenshot of any webpage.' It also clarifies the return format as base64-encoded image data. The purpose is unambiguous and distinct from the unrelated sibling check_usage.

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 implies usage by saying it captures 'any webpage' and listing supported features, but it gives no explicit when-to-use guidance, prerequisites, or exclusions. Since the only sibling is check_usage, there is no alternative screenshot tool to compare against, but the guidance remains implied rather than stated.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.3
    • First observedcheck_usage
    • First observedtake_screenshot

TDQS

A3.9/5.0

Scored across 2 tools

Disambiguation5/5

The two tools serve completely different purposes: one queries billing/quota usage, the other performs screenshot capture. There is no plausible way an agent would confuse them.

Naming Consistency5/5

Both tools follow the same snake_case verb_noun convention (check_usage, take_screenshot), making the pattern predictable and readable.

Tool Count4/5

Two tools is thin but defensible for a focused screenshot API wrapper—capture plus quota check are the core operations. It sits just below the typical 3+ range, so not a full 5.

Completeness4/5

The essential workflow (take a screenshot, check remaining quota) is covered, but there is no way to retrieve previously captured screenshots, list history, or manage account settings. These are minor gaps agents can work around for the primary use case.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers