---
title: ToolRouter — Tool Detail
description: Detailed documentation for a ToolRouter tool including skills, parameters, and examples.
url: https://toolrouter.com/tools/web-screenshot
---
# Web Screenshot

Capture pixel-perfect screenshots of any URL with full JS rendering. Single or multi-viewport (desktop, tablet, mobile) in one call. Supports full-page captures, retina output, and configurable wait times. For visual QA, design reviews, and competitive research.

- **Version:** 0.02
- **Categories:** media, development

## Skills (2)

### Capture Screenshot (`capture`)

Take a screenshot of a single URL at a specified viewport size. Supports desktop, tablet, mobile, and custom viewport dimensions with configurable image format and retina scaling.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | The URL to screenshot. Must be a fully qualified URL (e.g. https://example.com). |
| `viewport` | string | No | Viewport preset to use. desktop=1440x900, tablet=768x1024, mobile=390x844. Use "custom" with width/height for arbitrary sizes. (desktop, tablet, mobile, custom) [default: "desktop"] |
| `width` | number | No | Custom viewport width in pixels. Only used when viewport is "custom". |
| `height` | number | No | Custom viewport height in pixels. Only used when viewport is "custom". |
| `full_page` | boolean | No | Capture the full scrolling page instead of just the visible viewport. [default: false] |
| `image_format` | string | No | Output image format. (png, jpeg, webp) [default: "png"] |
| `wait_for` | number | No | Milliseconds to wait after page load for JS rendering to complete. [default: 2000] |
| `device_scale_factor` | number | No | Device pixel ratio for retina/HiDPI screenshots. 2 produces @2x images. [default: 2] |

**Returns:** Screenshot image path (auto-uploaded to S3), viewport dimensions, URL, and viewport preset used

**Examples:**

*Screenshot a website at desktop resolution:*

```json
{
  "url": "https://example.com"
}
```

*Full-page mobile screenshot in JPEG format:*

```json
{
  "url": "https://example.com",
  "viewport": "mobile",
  "full_page": true,
  "image_format": "jpeg"
}
```

*Custom viewport screenshot:*

```json
{
  "url": "https://example.com",
  "viewport": "custom",
  "width": 1920,
  "height": 1080
}
```

### Capture Responsive Screenshots (`capture_responsive`)

Screenshot the same URL at multiple viewport sizes in one call. Efficiently reuses a single browser session across all viewports. Returns an array of screenshots for desktop, tablet, and mobile.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | The URL to screenshot. Must be a fully qualified URL (e.g. https://example.com). |
| `viewports` | array | No | Array of viewport presets to capture. Defaults to all three: desktop, tablet, mobile. |
| `full_page` | boolean | No | Capture the full scrolling page instead of just the visible viewport. [default: false] |
| `image_format` | string | No | Output image format for all screenshots. (png, jpeg, webp) [default: "png"] |
| `wait_for` | number | No | Milliseconds to wait after page load for JS rendering to complete. [default: 2000] |

**Returns:** Array of screenshot image paths (auto-uploaded to S3) with viewport dimensions, URL, and total count

**Examples:**

*Responsive screenshots at all viewports:*

```json
{
  "url": "https://example.com"
}
```

*Only desktop and mobile, full-page:*

```json
{
  "url": "https://example.com",
  "viewports": [
    "desktop",
    "mobile"
  ],
  "full_page": true
}
```

## Quick Start

```bash
# Via CLI
TOOLROUTER_API_KEY=tr_live_xxx npx -y toolrouter-mcp call web-screenshot capture --url https://example.com

# Via REST API
curl -H "Authorization: Bearer tr_live_xxx" \
     -d '{"tool":"web-screenshot","skill":"capture","input":{"url":"https://example.com"}}' \
     https://api.toolrouter.com/v1/tools/call
```

## Frequently Asked Questions

### What is the difference between a single capture and a responsive capture?

Use `capture` for one viewport, and `capture_responsive` when you want desktop, tablet, and mobile screenshots from the same URL in one run.

### Can I capture the full page, not just the fold?

Yes. Set `full_page` to true when you want the entire scrolling page instead of only the visible viewport.

### How do I get a sharper screenshot for design review?

Set `device_scale_factor` to 2 for retina output, and keep text-heavy shots in `png` if you want the sharpest result.

### What if a page needs extra time to render?

Increase `wait_for` for heavy JavaScript pages so the screenshot is taken after the UI finishes loading.

---

## Get Started with ToolRouter

**Already connected?** Call any tool with `use_tool({ tool, skill, input })`. Browse tools with `discover` or visit https://toolrouter.com/llms-full.txt

**New to ToolRouter?** Connect with one command (no API key needed — auto-provisions on first use):

```bash
# MCP (Claude Code, Codex CLI)
claude mcp add toolrouter -- npx -y toolrouter-mcp

# MCP (Cursor, Windsurf, Cline, VS Code, Gemini CLI, Claude Desktop)
{"mcpServers":{"toolrouter":{"command":"npx","args":["-y","toolrouter-mcp"]}}}

# Claude Chat / Claude Cowork / Claude Mobile — add as a connector:
# Settings → Connectors → Add custom connector → URL: https://api.toolrouter.com/mcp

# ChatGPT — add as an app:
# Settings → Apps → Advanced settings → enable Developer mode → Create app → MCP Server URL: https://api.toolrouter.com/mcp

# CLI (works instantly, no restart needed)
npx -y toolrouter-mcp tools                    # browse all tools
npx -y toolrouter-mcp search "seo"             # search by keyword
npx -y toolrouter-mcp call seo analyze_page --url https://example.com
```

Free tools work immediately. For paid tools, visit https://toolrouter.com/claim to add credits.

All platforms: https://toolrouter.com/connect | Full catalog: https://toolrouter.com/llms-full.txt | Docs: https://toolrouter.com/docs