snapforge
Screenshots, PDFs and Markdown from any URL or HTML for AI agents, via the SnapForge API
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"snapforge": {
"command": "npx",
"args": [
"snapforge-mcp"
]
}
}
}Runnable packages
1.3.0stdioRemote endpoints
https://snapforge.org/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
π’snapforge_screenshot(url, html, waitUntil, delay, fullPage, ...)
Capture a screenshot of a public URL or raw HTML as a PNG/JPEG image. Full-page by default. Requires a SnapForge API key (no key? call snapforge_signup first).
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Public http/https URL to render. Provide either url or html."
},
"html": {
"type": "string",
"description": "Raw HTML to render instead of a URL (max 2MB). Provide either url or html."
},
"waitUntil": {
"type": "string",
"enum": [
"load",
"networkidle"
],
"description": "When to consider the page ready: \"load\" (default) or \"networkidle\""
},
"delay": {
"type": "integer",
"minimum": 0,
"maximum": 10000,
"description": "Extra wait in milliseconds before capture (0β10000)"
},
"fullPage": {
"type": "boolean",
"description": "Capture the full scrollable page (default true)"
},
"width": {
"type": "integer",
"minimum": 100,
"maximum": 3840,
"description": "Viewport width in pixels (100β3840)"
},
"height": {
"type": "integer",
"minimum": 100,
"maximum": 2160,
"description": "Viewport height in pixels (100β2160)"
},
"scale": {
"type": "integer",
"minimum": 1,
"maximum": 3,
"description": "Device pixel ratio for high-DPI/retina output (1β3)"
},
"format": {
"type": "string",
"enum": [
"png",
"jpeg"
],
"description": "Image format: \"png\" (default) or \"jpeg\""
},
"quality": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "JPEG quality 1β100 (ignored for PNG)"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"bytes": {
"type": "integer",
"description": "Size of the returned image in bytes"
},
"mimeType": {
"type": "string",
"description": "Image MIME type, e.g. image/png"
}
},
"required": [
"bytes",
"mimeType"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’snapforge_pdf(url, html, waitUntil, delay, singlePage, ...)
Render a public URL or raw HTML to a PDF (returned as an embedded resource). Requires a SnapForge API key (no key? call snapforge_signup first).
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Public http/https URL to render. Provide either url or html."
},
"html": {
"type": "string",
"description": "Raw HTML to render instead of a URL (max 2MB). Provide either url or html."
},
"waitUntil": {
"type": "string",
"enum": [
"load",
"networkidle"
],
"description": "When to consider the page ready: \"load\" (default) or \"networkidle\""
},
"delay": {
"type": "integer",
"minimum": 0,
"maximum": 10000,
"description": "Extra wait in milliseconds before capture (0β10000)"
},
"singlePage": {
"type": "boolean",
"description": "Output one continuous page sized to the content height (no A4 pagination)"
},
"pageFormat": {
"type": "string",
"enum": [
"Letter",
"Legal",
"Tabloid",
"A0",
"A1",
"A2",
"A3",
"A4",
"A5",
"A6"
],
"description": "Paper size when paginating (default A4)"
},
"landscape": {
"type": "boolean",
"description": "Landscape orientation (default false)"
},
"printBackground": {
"type": "boolean",
"description": "Include CSS background colors and images (default true)"
},
"margin": {
"type": "string",
"description": "CSS size applied to all margins, e.g. \"1cm\""
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"bytes": {
"type": "integer",
"description": "Size of the generated PDF in bytes"
},
"mimeType": {
"type": "string",
"description": "Always application/pdf"
}
},
"required": [
"bytes",
"mimeType"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π’snapforge_markdown(url, html, waitUntil, delay)
Extract a clean Markdown version of a public URL or raw HTML (article extraction + HTMLβMarkdown). Great for feeding live web content to an LLM. Requires a SnapForge API key (no key? call snapforge_signup first).
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Public http/https URL to render. Provide either url or html."
},
"html": {
"type": "string",
"description": "Raw HTML to render instead of a URL (max 2MB). Provide either url or html."
},
"waitUntil": {
"type": "string",
"enum": [
"load",
"networkidle"
],
"description": "When to consider the page ready: \"load\" (default) or \"networkidle\""
},
"delay": {
"type": "integer",
"minimum": 0,
"maximum": 10000,
"description": "Extra wait in milliseconds before capture (0β10000)"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"markdown": {
"type": "string",
"description": "The extracted Markdown content"
}
},
"required": [
"markdown"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}π‘snapforge_signup(email)
Create a free SnapForge account (100 renders, one-time free trial, not a monthly allowance) with just an email address and get the API key instantly. The key is bound to the current MCP session, so the screenshot/pdf/markdown tools work immediately after signup, no browser needed.
Input Schema
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Email address to attach the API key to (the key is also emailed there)"
}
},
"required": [
"email"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"apiKey": {
"type": "string",
"description": "Your SnapForge API key"
},
"plan": {
"type": "string",
"description": "Plan name (free)"
},
"monthlyQuota": {
"type": "integer",
"description": "Renders included: 100 in total on the free trial (no monthly reset), per month on paid plans"
}
},
"required": [
"apiKey",
"plan",
"monthlyQuota"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence