Webshot.site now speaks the Model Context Protocol. If you use Claude Desktop, Cursor, or anything else that talks MCP, your assistant can render a page and look at it directly — no copy-pasting URLs, no describing what you see.
Point your client at it
One line of config, no key, no signup:
{ "mcpServers": { "webshot": { "url": "https://webshot.site/mcp" } } }
The endpoint is https://webshot.site/mcp, JSON-RPC 2.0 over HTTP POST. It
exposes a single tool:
capture_sandbox_webshot(url, viewport?, full_page?, format?)
Ask your assistant to "take a screenshot of example.com and tell me what's above the fold" and it will call that tool, get back an image, and answer.
Why it returns a link, not the image
The obvious implementation is to base64 the PNG and hand it straight to the model. We deliberately don't. A modest screenshot is 25–200 KB, which becomes a wall of base64 in the model's context window and crowds out the actual conversation. Most agents can't do anything useful with those bytes anyway.
So the tool returns a short JSON envelope with a link:
{
"ok": true,
"image_url": "https://webshot.site/shot/<token>",
"format": "jpg",
"mode": "desktop_viewport",
"bytes": 26600,
"credits": 1
}
The link is public, session-free and reusable — you can hand it to another tool, drop it in a ticket, or open it yourself. The token is 128 bits of randomness, so it is unguessable, and it is the only thing that authorises access.
You don't need an agent to use this
The same JSON envelope is available over plain HTTP. Add &response=json to
a normal capture request:
curl -s 'https://webshot.site/api/capture?url=https://example.com&response=json'
Without that parameter the response is still the raw image, byte for byte as before. Nothing about the existing API changed — this is strictly additive.
Credits, not captures
Worth being precise, because this is the thing people plan around wrongly. The keyless allowance is 5 credits per 15 minutes per IP, and credits are not captures:
- A viewport capture costs 1 credit
- A full-page or custom-size capture costs 2
- The default
modeisdesktop_full, which is full-page
So a default anonymous call spends 2 credits, and you get two of them per window rather
than five. Pass full_page=false (or mode=desktop_viewport over HTTP)
to spend 1 and get five. Output format does not affect cost. Your live bucket is always
readable at GET /throttle-status.
If you need more, API plans start at $1.99/month and keys are issued immediately at checkout.
One caveat: it is slow, and that is fine
A capture is a real headless-Chrome render — it loads the page, waits for it to settle, and photographs it. That takes 10–60 seconds. Set your MCP client timeout to 90 seconds or more, or you will see spurious failures on perfectly good captures.
In-browser agents too
Pages on this site also register the same tool through document.modelContext,
the emerging W3C browser API for exposing page capabilities to AI. That works natively in
Edge 147 and in Chrome 149 behind its origin trial. Because the call is same-origin
it uses your existing session and quota, which means no API key ever enters the
model's context — a property worth having if you are handing tools to something that
might quote them back at you.
Safety
The capture runs in an isolated sandbox, and private, loopback and cloud-metadata addresses are refused. Pointing it at a suspicious URL is the intended use: you get to see what a page looks like without your own browser going there.
Docs
Machine-readable documentation for agents lives at /llms.txt, and the full human reference — including the MCP section — is on the developers page.