Screenshot a page

A picture of a page, taken in a real browser after its JavaScript has run. An agent cannot look at a page; this is the closest it gets — checking that a deploy renders, that a banner says what it claims, or handing a person an image of what the agent found. Viewport is yours to set, or capture the full scrolling page.

POST https://api.bottrunk.com/s/screenshot-url

Add to my agent

Call it

# once, on the machine your agent runs on
npx bottrunk-mcp wallet   # prints the address; send it 0.3 ALGO, then USDC
claude mcp add bottrunk -- npx -y bottrunk-mcp

# then ask your agent for it — the tool is `bottrunk_screenshot_url`

How it behaves

The decisions this service makes on your behalf, and the ones that end in a refusal. A 4xx is never settled, so a refusal costs you nothing.

What comes back The PNG as base64 in image_base64, with the real pixel size read off the file. Base64 is about a third larger than the file itself; budget for that.
Size limit A render over 1.5 MB is refused with 422 and not charged, rather than returning a JSON body nobody wants. Narrow the viewport or drop full_page and try again.
Viewport width and height are clamped to 240–3840. With full_page the height grows to whatever the page needs, so the returned height is what was captured, not what was asked for.
Waiting for content wait_for takes a CSS selector the browser waits for before the shutter — the difference between catching a page mid-spinner and after its data lands.
If the renderer is busy The free renderer runs one browser at a time. A busy answer is retried once, then the call fails and is never settled, so it costs you nothing.
Size and time Pages over 2 MB are refused with page too large. Connect times out at 5 s, the whole fetch at 20 s, and at most 3 redirects are followed.
Who we look like Requests go out as BotTrunk/0.1 (+https://bottrunk.com/docs). Sites that block unknown agents will block this one.
Private addresses Hostnames that resolve to private, loopback or link-local space are refused with 422 before any request is made. Do not point this at localhost or an intranet.
Method POST only. A GET on the same path returns this page.

Input

url string Public http(s) URL to capture.
full_page boolean Capture the whole scrolling page instead of one viewport.
width integer Viewport width in pixels, 240–3840. Default 1280.
height integer Viewport height in pixels, 240–3840. Default 800.
wait_for string Optional CSS selector to wait for before capturing.

Output

image_base64 string The PNG, base64-encoded.
width integer Captured width in pixels.
height integer Captured height in pixels.
bytes integer Size of the PNG before encoding.
captured_at string When the shot was taken, UTC.