How to take screenshots with Claude Code

Claude Code writes your code, but it cannot see the result in a browser. The Shotbot MCP server gives it eyes: one command to install, then you ask for screenshots in plain language and Claude sees the real rendered page.

~/permalink · claude
> Capture permalink.fr and tell me if the hero looks right
 I'll capture the page with Shotbot.
  capture(url: "https://www.permalink.fr/", viewport_width: 1280)
  ✓ done in 2s · https://static.shotbot.net/8/8f/8f3cA1b2….jpg
 The hero renders correctly: the headline is legible, the call-to-action
  button is visible, and no cookie banner is covering the content.
> _

The MCP server exposes four tools to Claude Code: capture (capture a URL), get_status (track a capture), batch (up to 500 URLs at once), and account_status (plan, credits, quota). Claude calls them on its own when your request needs them.

One-line install

One command. No Node.js, no npm, no local files. Replace your-key with your Shotbot API key.

Claude Code | HTTP transport
claude mcp add --scope user shotbot --transport http "https://api.shotbot.net/mcp?key=your-key"
No key yet? Get a free API key (200 screenshots a month, no credit card).

Check the server is registered:

verify
claude mcp list

shotbot should appear in the list. That's it: open Claude Code and ask for a screenshot. The user scope makes the tool available in every project; drop --scope user to limit it to the current project.

What to ask Claude

No syntax to learn. Ask in plain language and Claude picks the tool and the right options. A few prompts that work out of the box:

See a page

Capture permalink.fr and show me the result.

What does my homepage look like right now?

Compare mobile and desktop

Capture my site at 390 px then at 1280 px and tell me if the mobile menu works.

Check dark mode

Capture this page in dark mode and check the text stays readable against the background.

Capture full page

Take a full-page screenshot of the docs and export it as a PDF.

Capture several URLs

Capture these 5 competitor pages in one go and list the links.

(batch tool)

Check your account

How many Shotbot screenshots do I have left this month?

(account_status tool)

Because Claude Code reads images, it does not just fire off the capture: it actually looks at the rendered result and reports back on it (readability, layout, a missing element, a banner in the way).

Example: detecting CSS bugs across screen widths

This is where Claude Code really pays off: it does not just capture, it fixes. Ask it to check a page at several widths and it captures each viewport, spots the overflow or overlap, edits your CSS, then re-captures to confirm it is solved. A genuine loop: see, fix, verify.

~/my-site · claude
> My header overflows on mobile. Capture the page at 390, 768 and 1280 px
 Capturing all three widths.
  capture(url: "https://my-site.com/", viewport_width: 390)
  capture(url: "https://my-site.com/", viewport_width: 768)
  capture(url: "https://my-site.com/", viewport_width: 1280)
 At 390 px the menu drops below the logo and overflows 40 px to the right.
  Cause: .nav has min-width: 720px. Fixing it.
 Edit style.css · re-capture at 390 px · the header now fits the width.
> _

Widths 390, 768 and 1280 px are available on the free account. Shotbot Pro unlocks any width from 280 to 3840 px, to test a precise breakpoint.

Full audit: sweep an entire breakpoint range

Something breaks somewhere between 280 and 640 px but you can't pin down where? Ask Claude to test the whole range at once. It fires a batch of captures, reads every screenshot, and comes back with an exact list of what breaks, at which pixel, and why: no browser resizing, no manual clicks, no guesswork.

~/my-site · claude
> Scan every viewport from 280 to 640 px in 20 px steps and find all CSS bugs
 Launching 19 captures in parallel.
  batch(19 viewports · 280 → 640 px · my-site.com/)
  ✓ 19 screenshots · 7s
 Reading 19 images…
  280-300 px  logo overflows 14 px right: .site-logo has no max-width
  380 px      CTA button wraps to 2 lines: padding-inline: 2rem too wide
  520-560 px  horizontal scroll: gap: 1.5rem pushes the 2-col grid past the edge
 3 fixes applied to style.css. Verifying at the critical viewports.
  ✓ 280 px · ✓ 380 px · ✓ 520 px · ✓ 560 px - no overflow detected.
> _

All 19 captures fire in one request via the batch tool. Custom viewports from 280 to 3840 px require Shotbot Pro.

The four tools

  • capture: capture any public URL. Options: format (jpg, png, webp, avif, pdf), viewport_width, full page, color_scheme, wait, presets, and the Shotbot Pro options (CSS selector, cookie-banner handling, HTTP auth, ad blocking, geolocated rendering).
  • get_status: track a capture by token (queued, processing, done, failed) and return the image URL once it is ready.
  • batch: up to 500 URLs (5000 with Shotbot Pro) in one atomic request, ideal for comparing pages or archiving a whole site.
  • account_status: plan (free or Pro), credit balance and monthly quota.

Free or Shotbot Pro

The MCP server works on the free account: 200 screenshots a month, JPG format, 390 / 768 / 1280 px viewports, up to 5 seconds of wait. Shotbot Pro unlocks every format, custom viewports up to 3840 px, CSS-selector clipping, cookie-banner handling, HTTP auth, ad blocking and geolocated rendering. Claude filters nothing: the API controls eligibility and returns a clear error if an option needs Shotbot Pro.

Get started

Free account includes 200 screenshots/month. No credit card required. API key available immediately after sign-up.

Go further