snaprender-mcp
<p align="center">
<a href="https://snap-render.com">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://snap-render.com/brand/snaprender-lockup-dark.png">
<img src="https://snap-render.com/brand/snaprender-lockup-light.png" alt="SnapRender" width="320">
</picture>
</a>
</p>
# SnapRender Integrations
[](https://glama.ai/mcp/connectors/com.snap-render.app/snap-render)
[](https://smithery.ai/server/snaprender/snaprender)
[](https://www.npmjs.com/package/snaprender-mcp)
[](https://www.npmjs.com/package/snaprender)
[](https://pypi.org/project/snaprender/)
[](./LICENSE)
[](https://codeguilds.dev/packages/snaprender-integrations)
[](https://lobehub.com/mcp/user0856-snaprender-integrations)
Official integrations for the [SnapRender Screenshot API](https://snap-render.com): give AI agents eyes. Capture any public web page as PNG, JPEG, WebP or PDF, or read it as clean markdown.
## Remote MCP Server (recommended)
SnapRender runs a hosted MCP server. Connect from any MCP client with nothing to install:
```
https://app.snap-render.com/mcp
```
- **Transport:** [Streamable HTTP](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http)
- **Sign in:** OAuth 2.0 (the client opens a SnapRender sign-in window; Google, GitHub or email), or an API key in the `Authorization: Bearer` or `X-API-Key` header
- **Tools (11):** capture, cache check, usage, signed links, content extraction, batches and webhooks ([full list below](#mcp-tools))
- **Prompts:** `screenshot_website`, `compare_devices`
- **Free plan:** 200 screenshots a month, no credit card
- **Directory listing:** [SnapRender on Glama](https://glama.ai/mcp/connectors/com.snap-render.app/snap-render) (health-checked, tool quality graded)
### Claude (claude.ai and Claude Desktop)
Open Customize, then Connectors, click + Add, then Add custom connector, and paste `https://app.snap-render.com/mcp`. Claude opens a SnapRender sign-in window; approve it and the tools are ready. Step-by-step guide: [snap-render.com/claude](https://snap-render.com/claude).
### Cursor, VS Code, Windsurf and other clients
Setup pages for each client, with one-click install where the client supports it: [snap-render.com/ai-connectors](https://snap-render.com/ai-connectors).
A client that takes headers instead of OAuth:
```json
{
"mcpServers": {
"snaprender": {
"url": "https://app.snap-render.com/mcp",
"headers": {
"Authorization": "Bearer sk_live_your_key_here"
}
}
}
}
```
### Any MCP client (curl)
```bash
# Initialize a session
curl -X POST https://app.snap-render.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-API-Key: sk_live_your_key_here" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
```
The server returns an `Mcp-Session-Id` header: include it in later requests to reuse the session.
### Smithery
Install via [Smithery](https://smithery.ai/server/snaprender/snaprender) for automatic setup with any MCP client.
## Local MCP Server (npm)
If you prefer running locally via stdio transport:
```json
{
"mcpServers": {
"snaprender": {
"command": "npx",
"args": ["-y", "snaprender-mcp"],
"env": {
"SNAPRENDER_API_KEY": "sk_live_your_key_here"
}
}
}
}
```
See [mcp-server/](./mcp-server/) for full documentation.
### Remote vs Local
| | Remote (hosted) | Local (`npx`) |
|---|---|---|
| **Install** | None, just an HTTPS URL | Requires Node.js + npx |
| **Transport** | Streamable HTTP | stdio |
| **Sign in** | OAuth or API key | API key (`SNAPRENDER_API_KEY`) |
| **Use case** | Claude, ChatGPT, Cursor, any MCP client | Clients that only run local servers |
## MCP Tools
The hosted server and the npm package expose the same 11 tools. Parameters are documented in each tool's schema and in the [API docs](https://snap-render.com/docs#mcp-server).
| Tool | What it does | Cost |
|------|--------------|------|
| `take_screenshot` | Capture a URL as PNG, JPEG, WebP or PDF: device presets, full page, dark mode, ad and cookie banner removal, hide or click selectors | 1 capture (cached copies free) |
| `check_screenshot_cache` | Check whether a capture with these options is already cached | Free |
| `get_usage` | Captures used and left this month, the limit and the reset date | Free |
| `sign_screenshot_url` | Create a signed link that renders a screenshot when opened, no API key needed | 1 capture when opened |
| `extract_content` | Read a page as markdown, text, HTML, article, links or metadata | 1 capture (failures free) |
| `batch_screenshots` | Capture up to 50 URLs in one background job | 1 capture per URL (failures refunded) |
| `get_batch_status` | Poll a batch job and get its download links | Free |
| `list_webhooks` | List webhook subscriptions | Free |
| `create_webhook` | Get notified when a batch finishes, the quota runs low, or a scheduled capture changes | Free |
| `delete_webhook` | Delete a webhook subscription | Free |
| `test_webhook` | Send a test payload to a webhook | Free |
## Agent Framework Integrations
| Framework | Directory | Description |
|-----------|-----------|-------------|
| [LangChain Python](./langchain/) | `langchain/` | `@tool` decorated functions for LangChain / LangGraph agents ([PyPI](https://pypi.org/project/langchain-snaprender/)) |
| [LangChain.js](./langchain-js/) | `langchain-js/` | `StructuredTool` classes for LangChain.js agents ([npm](https://www.npmjs.com/package/langchain-snaprender)) |
| [CrewAI](./crewai/) | `crewai/` | `BaseTool` subclasses for CrewAI agents ([PyPI](https://pypi.org/project/crewai-snaprender/)) |
| [AutoGen](./autogen/) | `autogen/` | `FunctionTool` wrappers for Microsoft AutoGen agents ([PyPI](https://pypi.org/project/autogen-ext-snaprender/)) |
| [n8n](https://github.com/User0856/n8n-nodes-snaprender) | Separate repo | Community node for n8n workflows ([npm](https://www.npmjs.com/package/n8n-nodes-snaprender)) |
## Other Integrations
| Integration | Description | Setup Time |
|------------|-------------|------------|
| [OpenClaw Skill](./openclaw/) | Skill file for OpenClaw AI agent | 5 min |
| [ChatGPT Actions](./chatgpt-actions/) | OpenAPI spec for Custom GPTs and OpenAI function calling | 5 min |
| [Postman Collection](./postman/) | Pre-built API requests for Postman | 1 min |
## SDKs
```bash
# Node.js
npm install snaprender
# Python
pip install snaprender
```
## Direct API
```bash
curl "https://app.snap-render.com/v1/screenshot?url=https://example.com" \
-H "X-API-Key: sk_live_your_key_here" \
-o screenshot.png
```
## Get an API Key
Sign up free at [snap-render.com](https://snap-render.com/auth/signup): 200 screenshots a month, no credit card required.
## Links
- [Documentation](https://snap-render.com/docs)
- [Remote MCP Server](https://app.snap-render.com/mcp): Streamable HTTP endpoint
- [MCP Connector on Glama](https://glama.ai/mcp/connectors/com.snap-render.app/snap-render)
- [MCP Server on npm](https://www.npmjs.com/package/snaprender-mcp) (`npx snaprender-mcp`)
- [MCP Server on Smithery](https://smithery.ai/server/snaprender/snaprender)
- [Node.js SDK](https://www.npmjs.com/package/snaprender) (`npm install snaprender`)
- [Python SDK](https://pypi.org/project/snaprender/) (`pip install snaprender`)
- [LangChain Python Tool](https://pypi.org/project/langchain-snaprender/) (`pip install langchain-snaprender`)
- [LangChain.js Tool](https://www.npmjs.com/package/langchain-snaprender) (`npm install langchain-snaprender`)
- [CrewAI Tool](https://pypi.org/project/crewai-snaprender/) (`pip install crewai-snaprender`)
- [AutoGen Tool](https://pypi.org/project/autogen-ext-snaprender/) (`pip install autogen-ext-snaprender`)
- [n8n Community Node](https://www.npmjs.com/package/n8n-nodes-snaprender) (`npm install n8n-nodes-snaprender`)
- [OpenAPI Spec](./chatgpt-actions/openapi.json)
- [Postman Collection](./postman/snaprender-postman-collection.json)
## License
MIT
TDQS
Scored across 11 tools
Each tool targets a distinct action+resource: single capture, batch capture, cache check, URL signing, batch polling, content extraction, webhook CRUD/test, and usage. The capture-family tools (take_screenshot, batch_screenshots, extract_content) are clearly differentiated by descriptions covering single vs. bulk vs. structured extraction.
Mostly a consistent verb_noun pattern (take_screenshot, check_screenshot_cache, get_batch_status, extract_content, list_webhooks, create_webhook, delete_webhook, test_webhook, get_usage). The lone deviation is batch_screenshots, which is noun-first but still readable and unambiguous.
11 tools is well within the sweet spot for a screenshot/rendering service, with each tool covering a distinct capability (capture, batch, cache, signing, extraction, webhooks, usage). No tool feels redundant or padded.
Covers the core lifecycle: single/batch capture, cache check, signed sharing, content extraction, webhook management, and usage reporting. Minor gaps exist such as no batch cancel/list or update_webhook (delete-and-recreate is the workaround), but no workflow dead-ends.