Screenshots, PDFs and Markdown from any URL or HTML for AI agents, via the SnapForge API
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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).
Public http/https URL to render. Provide either url or html.
Raw HTML to render instead of a URL (max 2MB). Provide either url or html.
Extra wait in milliseconds before capture (0–10000)
When to consider the page ready: "load" (default) or "networkidle"
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).
| Argument | Type | Description |
|---|---|---|
| url | string | Public http/https URL to render. Provide either url or html. |
| html | string | Raw HTML to render instead of a URL (max 2MB). Provide either url or html. |
| delay | integer | Extra wait in milliseconds before capture (0–10000) |
| waitUntil | string | When to consider the page ready: "load" (default) or "networkidle" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"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."
},
"delay": {
"type": "integer",
"maximum": 10000,
"minimum": 0,
"description": "Extra wait in milliseconds before capture (0–10000)"
},
"waitUntil": {
"enum": [
"load",
"networkidle"
],
"type": "string",
"description": "When to consider the page ready: \"load\" (default) or \"networkidle\""
}
},
"additionalProperties": false
}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).
| Argument | Type | Description |
|---|---|---|
| url | string | Public http/https URL to render. Provide either url or html. |
| html | string | Raw HTML to render instead of a URL (max 2MB). Provide either url or html. |
| delay | integer | Extra wait in milliseconds before capture (0–10000) |
| margin | string | CSS size applied to all margins, e.g. "1cm" |
| landscape | boolean | Landscape orientation (default false) |
| waitUntil | string | When to consider the page ready: "load" (default) or "networkidle" |
| pageFormat | string | Paper size when paginating (default A4) |
| singlePage | boolean | Output one continuous page sized to the content height (no A4 pagination) |
| printBackground | boolean |
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).
| Argument | Type | Description |
|---|---|---|
| url | string | Public http/https URL to render. Provide either url or html. |
| html | string | Raw HTML to render instead of a URL (max 2MB). Provide either url or html. |
| delay | integer | Extra wait in milliseconds before capture (0–10000) |
| scale | integer | Device pixel ratio for high-DPI/retina output (1–3) |
| width | integer | Viewport width in pixels (100–3840) |
| format | string | Image format: "png" (default) or "jpeg" |
| height | integer | Viewport height in pixels (100–2160) |
| quality | integer | JPEG quality 1–100 (ignored for PNG) |
| fullPage | boolean | Capture the full scrollable page (default true) |
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.
| Argument | Type | Description |
|---|---|---|
| email* | string | Email address to attach the API key to (the key is also emailed there) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"description": "Email address to attach the API key to (the key is also emailed there)"
}
},
"additionalProperties": false
}| Include CSS background colors and images (default true) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"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."
},
"delay": {
"type": "integer",
"maximum": 10000,
"minimum": 0,
"description": "Extra wait in milliseconds before capture (0–10000)"
},
"margin": {
"type": "string",
"description": "CSS size applied to all margins, e.g. \"1cm\""
},
"landscape": {
"type": "boolean",
"description": "Landscape orientation (default false)"
},
"waitUntil": {
"enum": [
"load",
"networkidle"
],
"type": "string",
"description": "When to consider the page ready: \"load\" (default) or \"networkidle\""
},
"pageFormat": {
"enum": [
"Letter",
"Legal",
"Tabloid",
"A0",
"A1",
"A2",
"A3",
"A4",
"A5",
"A6"
],
"type": "string",
"description": "Paper size when paginating (default A4)"
},
"singlePage": {
"type": "boolean",
"description": "Output one continuous page sized to the content height (no A4 pagination)"
},
"printBackground": {
"type": "boolean",
"description": "Include CSS background colors and images (default true)"
}
},
"additionalProperties": false
}| waitUntil | string | When to consider the page ready: "load" (default) or "networkidle" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"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."
},
"delay": {
"type": "integer",
"maximum": 10000,
"minimum": 0,
"description": "Extra wait in milliseconds before capture (0–10000)"
},
"scale": {
"type": "integer",
"maximum": 3,
"minimum": 1,
"description": "Device pixel ratio for high-DPI/retina output (1–3)"
},
"width": {
"type": "integer",
"maximum": 3840,
"minimum": 100,
"description": "Viewport width in pixels (100–3840)"
},
"format": {
"enum": [
"png",
"jpeg"
],
"type": "string",
"description": "Image format: \"png\" (default) or \"jpeg\""
},
"height": {
"type": "integer",
"maximum": 2160,
"minimum": 100,
"description": "Viewport height in pixels (100–2160)"
},
"quality": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "JPEG quality 1–100 (ignored for PNG)"
},
"fullPage": {
"type": "boolean",
"description": "Capture the full scrollable page (default true)"
},
"waitUntil": {
"enum": [
"load",
"networkidle"
],
"type": "string",
"description": "When to consider the page ready: \"load\" (default) or \"networkidle\""
}
},
"additionalProperties": false
}