snapforge-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@snapforge-mcpScreenshot https://example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
snapforge-mcp
MCP server for SnapForge — give your AI agents three tools to read and render the web:
snapforge_screenshot— capture any URL or HTML as PNG/JPEG (full-page by default)snapforge_pdf— render a URL or HTML to PDF (singlePageoption + clean pagination, no cut blocks)snapforge_markdown— extract clean Markdown from any page (article extraction) → perfect for feeding live web content to an LLM
Works with Claude Code & Desktop, Cursor, Kilo Code, Cline, Windsurf, Zed, VS Code, Hermes, OpenClaw — and any MCP client.
Examples
Real outputs, generated live from the API:

More samples: full-page screenshot (any height) · pricing page · mobile viewport · PDFs (invoice, single-page article, multi-page report, certificate) · a page as Markdown
Related MCP server: RendShot MCP Server
Setup
Get a free API key at https://snapforge.org (100 one-time renders, no card), then:
Hosted (zero install) — recommended
Point any MCP client at the remote server, with your key in the x-api-key header:
https://snapforge.org/mcpLocal (stdio) — Claude Desktop / Claude Code / any client
{
"mcpServers": {
"snapforge": {
"command": "npx",
"args": ["-y", "snapforge-mcp"],
"env": { "SNAPFORGE_API_KEY": "sf_your_key" }
}
}
}Claude Code plugin (one-click)
/plugin marketplace add sporty303/snapforge-mcp
/plugin install snapforge@snapforgeEnvironment
SNAPFORGE_API_KEY(required)SNAPFORGE_BASE_URL(optional, defaults tohttps://snapforge.org)
License
MIT
Available Tools
3 toolssnapforge_markdownSnapForge URL to MarkdownARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public http/https URL to render. Provide either url or html. | |
| html | No | Raw HTML to render instead of a URL (max 2MB). Provide either url or html. | |
| delay | No | Extra wait in milliseconds before capture (0–10000) | |
| waitUntil | No | When to consider the page ready: "load" (default) or "networkidle" |
Output Schema
| Name | Required | Description |
|---|---|---|
| markdown | Yes | The extracted Markdown content |
| savedPath | Yes | Absolute path to the saved .md file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds behavioral context by mentioning 'article extraction + HTML→Markdown', which implies content processing beyond simple conversion. No contradictions. No mention of rate limits or auth, but acceptable given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and contains no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (4 parameters, output schema exists), the description is fairly complete. It explains the core transformation and a primary use case. Lacks mention of error conditions or output details, but the output schema covers return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well-documented. The description adds little beyond reiterating that 'url' or 'html' are alternatives, which is already in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool extracts a clean Markdown version of a public URL or raw HTML, and distinguishes itself from sibling tools (screenshot, PDF) by focusing on text extraction. The verb 'Extract' and resource 'Markdown version' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('great for feeding live web content to an LLM') and implicitly distinguishes from siblings by format (Markdown vs screenshot/PDF). However, it does not explicitly state when not to use or name alternatives, limiting full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapforge_pdfSnapForge PDFBRead-onlyInspect
Render a public URL or raw HTML to a PDF. The PDF is written to a temp file and its path is returned.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public http/https URL to render. Provide either url or html. | |
| html | No | Raw HTML to render instead of a URL (max 2MB). Provide either url or html. | |
| delay | No | Extra wait in milliseconds before capture (0–10000) | |
| margin | No | CSS size applied to all margins, e.g. "1cm" | |
| landscape | No | Landscape orientation (default false) | |
| waitUntil | No | When to consider the page ready: "load" (default) or "networkidle" | |
| pageFormat | No | Paper size when paginating (default A4) | |
| singlePage | No | Output one continuous page sized to the content height (no A4 pagination) | |
| printBackground | No | Include CSS background colors and images (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| bytes | Yes | Size of the PDF in bytes |
| savedPath | Yes | Absolute path to the saved PDF file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, but the description explicitly says 'PDF is written to a temp file and its path is returned', which indicates a write operation. This is a direct contradiction. The description fails to align with annotations, providing misleading behavioral cues.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and contains no fluff. Every word contributes to understanding the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, output schema), the description covers the main action but omits important context like parameter relationships (e.g., url vs html exclusivity) and lifecycle of the temp file. It is adequate but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The description adds no supplemental information about parameters (e.g., mutual exclusivity of url and html, default values). It does not exceed the value already provided by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Render') and resource ('public URL or raw HTML') and output ('PDF, path returned'). It inherently distinguishes from sibling tools which render to screenshot or markdown, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool over siblings (snapforge_screenshot, snapforge_markdown) or any prerequisites. Usage context is only implied by the tool name and output format; no guidance on exclusions or alternatives is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapforge_screenshotSnapForge screenshotARead-onlyInspect
Capture a screenshot of a public URL or raw HTML and return it as an image (PNG/JPEG). Full-page by default.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public http/https URL to render. Provide either url or html. | |
| html | No | Raw HTML to render instead of a URL (max 2MB). Provide either url or html. | |
| delay | No | Extra wait in milliseconds before capture (0–10000) | |
| scale | No | Device pixel ratio for high-DPI/retina output (1–3) | |
| width | No | Viewport width in pixels (100–3840) | |
| format | No | Image format: "png" (default) or "jpeg" | |
| height | No | Viewport height in pixels (100–2160) | |
| quality | No | JPEG quality 1–100 (ignored for PNG) | |
| fullPage | No | Capture the full scrollable page (default true) | |
| waitUntil | No | When to consider the page ready: "load" (default) or "networkidle" |
Output Schema
| Name | Required | Description |
|---|---|---|
| bytes | Yes | Size of the image in bytes |
| mimeType | Yes | Image MIME type, e.g. image/png |
| savedPath | Yes | Absolute path to the saved image file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, making the read-only nature clear. The description adds only that full-page is the default, which is a minor behavioral detail. There is no contradiction, but the description does not significantly enhance transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences that front-load the core purpose. Every word serves a purpose, with no redundancy or filler. It is well-structured for quick parsing by an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters and a complex input schema, the description is too sparse. It only highlights the full-page default, ignoring other important configurable options like delay, scale, width, height, and waitUntil. While the output schema may document return values, the description fails to guide the agent on how to effectively use the tool's capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter already has a description in the input schema. The tool description does not add any additional meaning or usage context for parameters like delay, scale, or waitUntil. Thus, it meets the baseline but adds no extra semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Capture a screenshot'), the resource ('public URL or raw HTML'), and the output format ('image (PNG/JPEG)'). It also mentions 'Full-page by default,' which adds specificity. This distinguishes it from sibling tools snapforge_pdf and snapforge_markdown, which handle different output types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for capturing visual representations of web content, but it does not explicitly state when to use this tool versus alternatives like snapforge_pdf or snapforge_markdown. No 'when-not' or exclusion criteria are provided, leaving the agent to infer context from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
snapforge_markdown - First observed
snapforge_pdf - First observed
snapforge_screenshot
TDQS
Scored across 3 tools
Each tool targets a distinct output format (image, PDF, markdown) with no overlap in functionality, making selection unambiguous.
All tools follow the consistent prefix 'snapforge_' followed by a clear noun describing the output, forming a predictable pattern.
Three tools is an appropriate scope for a server focused on converting web content to common formats—neither too few nor too many.
Covers the three most common output conversions (image, PDF, markdown), though additional options like plain text or specific rendering parameters are absent.
Maintenance
Related MCP Connectors
Generate images, GIFs, and PDFs from HTML, URLs, or templates — from your AI agent.
Screenshot, PDF and HTML-to-image rendering API so Claude and Cursor can see any web page.
Screenshot, PDF and HTML-to-image rendering API so Claude and Cursor can see any web page.
Read a URL as clean markdown, screenshot a website, url to PDF. Web access for agents, no signup.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to capture webpage screenshots, generate PDFs from URLs or HTML, and extract rich metadata like Open Graph and JSON-LD data. It provides tools for web-to-image/PDF conversion and structured data extraction through the Junipr API.8 npm1MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to generate images from HTML/CSS, capture URL screenshots, and manage reusable templates through the RendShot API. Provides tools for rendering visual content programmatically within AI workflows.13 npm-

@rendershot/mcp-serverofficial
AlicenseAqualityDmaintenanceEnables AI agents to capture screenshots and generate PDFs from URLs or HTML via the Rendershot API.417 npm3MIT- AlicenseNot gradedqualityBmaintenanceEnables AI agents to capture any public URL as PNG, JPEG, or PDF via REST API or MCP tools, including screenshot capture, page description, and PDF rendering.17 npmMIT