Skip to main content

arcade-snaprender

Arcade tools for SnapRender, so AI agents can see and read public web pages. Pages load in a real Chrome browser, so content drawn by JavaScript is included.

Tool What it does
SnapRender.TakeScreenshot Captures a page as PNG, JPEG, WebP or PDF (full page, phone or tablet presets, dark mode, hidden elements, click before capture) and returns a link to the file
SnapRender.ExtractContent Reads a page as markdown, plain text, HTML, article fields, a list of links, or metadata
SnapRender.GetUsage Shows the plan, captures used this month and captures left

Built with arcade-mcp. Works as a local MCP server (stdio or HTTP) or deployed to Arcade Cloud.

Get an API key

Create a free account at app.snap-render.com. The free plan includes 200 captures a month with no card. Screenshots and extractions share the allowance; failed captures are not counted.

The tools read the key from an Arcade secret named SNAPRENDER_API_KEY. The key is never passed to the model.

Install

pip install arcade_snaprender

or with uv:

uv pip install arcade_snaprender

Run it

Local MCP server

Export the key, or put it in a .env file in the folder you start the server from:

echo "SNAPRENDER_API_KEY=sk_live_..." > .env

Then start the server over stdio (for Claude Desktop, Cursor and other local clients):

arcade-snaprender

or over HTTP on 127.0.0.1:8000:

arcade-snaprender http

You can also load it with the Arcade CLI, which finds installed arcade_* packages:

arcade mcp --tool-package snaprender

Arcade Cloud

Clone this repository, log in and deploy:

arcade login
arcade deploy -e arcade_snaprender/__main__.py

Then add SNAPRENDER_API_KEY under Secrets in the Arcade dashboard, or with the CLI:

arcade secret set SNAPRENDER_API_KEY=sk_live_...

Tools

TakeScreenshot

Parameter Type Default Notes
url string required Full URL starting with https:// or http://
format png, jpeg, webp, pdf png
full_page bool false Whole scrollable page
device iphone_14, iphone_15_pro, pixel_7, ipad_pro, macbook_pro none Overrides width and height
width int 1280 320 to 3840
height int 800 200 to 10000
dark_mode bool false Asks the page for its dark color scheme
block_ads bool true
block_cookie_banners bool true
hide_selectors string none Comma-separated CSS selectors to hide
click_selector string none Element to click before the capture
delay int 0 Extra wait in ms after load, 0 to 10000
quality int 90 JPEG and WebP only
include_image_data bool false Also return the file as a base64 data URI
link_expires_in int 86400 Link lifetime in seconds, 60 to 2592000

Returns screenshot_url (a link anyone can open, ready to paste into Slack, an email or a ticket), link_expires_at, format, width, height, size_bytes, served_from_cache, render_time and remaining_credits.

Each capture uses one credit. When the same page with the same options was captured in the last 24 hours, that copy comes back for free. Opening the link serves the stored copy, so it does not use another credit while the copy is kept (24 hours on the free plan, longer on paid plans).

ExtractContent

Parameter Type Default Notes
url string required
content_type markdown, text, html, article, links, metadata markdown
selector string none Read only part of the page, e.g. main
block_ads bool true
block_cookie_banners bool true
delay int 0 0 to 10000 ms
max_length int 100000 1 to 500000 characters

Returns url, type, content, word_count and processing_time_ms.

GetUsage

No parameters. Returns plan, period_start, period_end, used, limit and remaining. Free to call.

Limits

SnapRender only captures public pages. Pages behind a login, localhost and private network addresses are refused. If a site you own shows a security check instead of the page, see allowing SnapRender through your firewall.

Development

python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
pytest -q
ruff check . && mypy

The tests mock the SnapRender API, so they need no key.

License

MIT

Metadata

Release files for arcade-snaprender 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for arcade-snaprender 0.1.0
File Size Uploaded Provenance Actions
arcade_snaprender-0.1.0.tar.gz 12.7 kB Without provenance Details for arcade_snaprender-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for arcade-snaprender 0.1.0
File Interpreter ABI Platform Actions
arcade_snaprender-0.1.0-py3-none-any.whl Python 3 none any Details for arcade_snaprender-0.1.0-py3-none-any.whl

Total release size: 25.2 kB

Release files / arcade_snaprender-0.1.0.tar.gz

Download URL arcade_snaprender-0.1.0.tar.gz
Size 12.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b6c56d42b668b6380845bf48f9c37b0947b4e96db39e800c3bf975582d918a19
BLAKE2b-256 checksum
How to use checksums
963ec26543baa6bbb29dd93495bc894ff02f49c6c1ab64f3ff2a587a2651fae4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.2

Release files / arcade_snaprender-0.1.0-py3-none-any.whl

Download URL arcade_snaprender-0.1.0-py3-none-any.whl
Size 12.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
12323aa8955d84d896aa4d8b7d50116726482052da2934d72b50436abe313f00
BLAKE2b-256 checksum
How to use checksums
80f23e5495a851d43a03e25896f66863422ab866fab224e64ea61cfc7c646a60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.2

Security for arcade-snaprender 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page