mcpField
C
CurlShot

CurlShot

Remote
curlshot.comBrowser Automation0Updated 4d ago

About CurlShot

CurlShot is a hosted MCP server that captures public web pages as images, PDFs, or scrolling videos. It is for AI agents and MCP clients that need visual page captures without installing the server.

Key features

  1. 01Captures pages as PNG, JPEG, WebP, or PDF
  2. 02Records scrolling page videos
  3. 03Captures full pages or CSS-selected elements
  4. 04Sets device presets and viewport dimensions
  5. 05Supports dark mode and request caching

Use cases

  1. 01Capture a public page for an agent to inspect
  2. 02Save a full-page capture or selected page element
  3. 03Record a page scrolling from top to bottom

MCP support

CurlShot exposes `take_screenshot` and `list_devices` tools through a hosted MCP endpoint over streamable HTTP. Screenshot requests require a bearer API key; device preset listing does not.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://curlshot.com/api/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

All endpoints
Streamable HTTPhttps://curlshot.com/api/mcpAuth required

Tools

2
ParameterTypeRequiredDescription
urlstringYesFull address of the page, starting with http:// or https://.
cachebooleanNoReuse a stored copy when the same request was made before.
delaynumberNoExtra seconds to wait after the page has loaded.
formatenumNoFile format of the result. mp4, webm and gif record a video of the page scrolling from top to bottom.png | jpeg | webp | pdf | mp4 | webm | gif
selectorstringNoCapture only the first element matching this CSS selector.
block_adsbooleanNoBlock requests to ad networks.
dark_modebooleanNoAsk the page for its dark theme.
full_pagebooleanNoCapture the whole page, not just the first screen.
wait_untilenumNoPage event that marks the page as loaded.load | domcontentloaded | networkidle | commit
viewport_widthintegerNoWidth of the browser window in pixels.
viewport_deviceenumNoEmulate a device preset (see list_devices).iphone_se | iphone_12 | iphone_13 | iphone_13_mini | iphone_14 | iphone_14_plus | iphone_14_pro | iphone_14_pro_max | iphone_15 | iphone_15_plus | iphone_15_pro | iphone_15_pro_max | iphone_16 | iphone_16_plus | iphone_16_pro | iphone_16_pro_max | pixel_5 | pixel_7 | pixel_8 | pixel_8_pro | pixel_9 | pixel_9_pro | galaxy_s23 | galaxy_s24 | galaxy_s24_ultra | galaxy_a54 | ipad | ipad_mini | ipad_air | ipad_pro_11 | ipad_pro_13 | galaxy_tab_s9 | pixel_tablet | macbook_air_13 | macbook_pro_14 | macbook_pro_16 | laptop_hd | laptop_hidpi | desktop_hd | desktop_full_hd | desktop_qhd | desktop_4k | imac_24
viewport_heightintegerNoHeight of the browser window in pixels.
block_cookie_bannersbooleanNoHide cookie consent banners.

Details

From the project README

CurlShot MCP server

Let your AI agent take screenshots of web pages. CurlShot runs a hosted Model Context Protocol server, so there is nothing to install: point your MCP client at the endpoint and add your API key.

https://curlshot.com/api/mcp
  • Transport: streamable HTTP (JSON-RPC 2.0 over POST). The server is stateless, so a GET answers 405.
  • Auth: Authorization: Bearer YOUR_API_KEY
  • Protocol versions: 2025-06-18, 2025-03-26, 2024-11-05

This repository holds the documentation, the server.json manifest (MCP Registry format) and the license. The server itself runs at curlshot.com.

Tools

ToolWhat it doesNeeds a key
take_screenshotRenders a public web page and returns it as an image, a PDF, or a video of the page scrolling. Each successful call uses one screenshot of your quota. Cache hits and failed renders are free.Yes
list_devicesLists the device presets (phones, tablets, desktops) that take_screenshot accepts in viewport_device.No

take_screenshot arguments:

ArgumentMeaning
url (required)Full address of the page, starting with http:// or https://.
formatpng, jpeg (default), webp, pdf, mp4, webm or gif. The video formats record the page scrolling from top to bottom, on plans that include video.
full_pageCapture the whole page, not only the first screen.
viewport_deviceA device preset such as iphone_15_pro (see list_devices).
viewport_width, viewport_heightBrowser window size in pixels (default 1280 x 1024).
dark_modeAsk the page for its dark theme.
block_ads, block_cookie_bannersOn by default.
selectorCapture only the first element matching this CSS selector.
wait_until, delayWhen the page counts as loaded, plus extra seconds to wait.
cacheReuse a stored copy of the same request.

Small results come back inline as an image the model can see. Results over 6 MB come back as a download link valid for about a day.

Get an API key

  1. Sign up at curlshot.com/register. The free plan includes 100 screenshots a month, no card needed.
  2. Create a separate API key for your agent in the dashboard, so you can revoke it on its own.
  3. Leave Require signature off for that key. MCP calls are not signed.

Keep the key in your client configuration, not in a prompt. The examples below use YOUR_API_KEY as a placeholder.

Client setup

Claude Code
claude mcp add --transport http curlshot https://curlshot.com/api/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

Or install it as a Claude Code plugin (MCP server plus the agent skill). Set CURLSHOT_API_KEY in your environment first; the plugin sends it as the bearer token:

/plugin install curlshot --marketplace SergiuPogor/curlshot-mcp
Claude Desktop

Claude Desktop starts local (stdio) servers from its config file, so connect through the mcp-remote proxy. Edit claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "curlshot": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://curlshot.com/api/mcp",
        "--transport",
        "http-only",
        "--header",
        "Authorization: Bearer YOUR_API_KEY"
      ]
    }
  }
}

Restart Claude Desktop after saving. This needs Node.js.

Cursor

Add to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):

{
  "mcpServers": {
    "curlshot": {
      "url": "https://curlshot.com/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
VS Code (GitHub Copilot)

Add to .vscode/mcp.json. VS Code asks for the key once and stores it securely:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "curlshot-api-key",
      "description": "CurlShot API key",
      "password": true
    }
  ],
  "servers": {
    "curlshot": {
      "type": "http",
      "url": "https://curlshot.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${input:curlshot-api-key}"
      }
    }
  }
}
Gemini CLI

This repository is also a Gemini CLI extension. Install it and enter your API key when asked:

gemini extensions install https://github.com/SergiuPogor/curlshot-mcp

The key is stored as the CURLSHOT_API_KEY setting and sent as Authorization: Bearer ....

Agent skill (no MCP)

For agents that use Agent Skills instead of MCP, skills/curlshot/SKILL.md teaches the agent to call the HTTP API directly with curl, reading the key from CURLSHOT_API_KEY:

npx skills add SergiuPogor/curlshot-mcp
Other clients

Any client that supports remote servers over streamable HTTP works. Most take a config like this:

{
  "mcpServers": {
    "curlshot": {
      "type": "http",
      "url": "https://curlshot.com/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Clients that only start local servers can use the mcp-remote command shown for Claude Desktop.

Try it with curl

curl -X POST "https://curlshot.com/api/mcp" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "take_screenshot",
      "arguments": { "url": "https://example.com", "format": "webp" }
    }
  }'

Limits and pricing

  • Free plan: 100 screenshots a month, no card. Paid plans start at $19 a month. See pricing.
  • Only successful renders count. Cache hits and failed renders are free.
  • The MCP endpoint accepts 120 requests per minute per IP address, on top of your plan's own limits.
  • When the monthly limit is reached, the tool returns an error with an upgrade link instead of an image.

Links

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.