Puptra PDF Snapshot
Server Details
One-call URL-to-PDF and full-page screenshot API with Puppeteer's page.pdf()/page.screenshot()...
- Status
- Healthy
- Uptime
- 100.0% over 15 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 5 tools
snapshot is explicitly a superset that bundles rendered HTML plus a base64 screenshot and optional Markdown, so it overlaps meaningfully with both markdown and screenshot, leaving an agent to guess when to use the single-purpose tools versus the bundle. The descriptions do clarify the tradeoff (one call, several formats), which keeps the overlap manageable rather than fatal.
All five names are short, lowercase, single-word nouns in a uniform style, which reads predictably. The only minor deviation is 'links' being plural while the rest are singular or format labels, and 'snapshot' is a somewhat vaguer term than the concrete format names.
Five tools is well-scoped for a page-rendering/snapshot service, with each covering a distinct output format plus one convenience aggregator. Nothing feels padded or missing at the count level.
The surface covers the main rendering outputs (PDF, screenshot, Markdown, links) plus a combined snapshot, which is solid lifecycle coverage for this domain. Minor gaps: the accessibility tree and raw rendered HTML exist only as options inside snapshot, with no standalone tool if a caller wants just those.
Available Tools
5 toolslinksEvery link on the page as absolute URLs, with optional same-domain-only and visiBInspect
Every link on the page as absolute URLs, with optional same-domain-only and visible-only filters. Price: $0.005 a call (3 free calls a day without an API key).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The page (https). Set url or html, not both. | |
| html | No | HTML to render instead of a URL. | |
| cookies | No | ||
| viewport | No | ||
| userAgent | No | ||
| addStyleTag | No | ||
| bestAttempt | No | ||
| gotoOptions | No | ||
| addScriptTag | No | ||
| authenticate | No | ||
| waitForTimeout | No | ||
| waitForSelector | No | ||
| emulateMediaType | No | ||
| visibleLinksOnly | No | Only links visible on the page (default false) | |
| allowResourceTypes | No | ||
| allowRequestPattern | No | ||
| rejectResourceTypes | No | ||
| setExtraHTTPHeaders | No | ||
| excludeExternalLinks | No | Only same-origin links (default false) | |
| rejectRequestPattern | No | ||
| setJavaScriptEnabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds genuinely useful non-schema context — cost per call and the 3-free-calls-per-day limit without an API key — which is exactly the kind of behavioral detail annotations would otherwise supply. It still omits that the operation is a read-only fetch, whether auth is required for full access, and whether results are paginated or capped.
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?
Two sentences, no padding, with the output definition front-loaded and the pricing constraint placed after. The only waste is that the title restates the first sentence almost verbatim, so the opening clause is largely duplicated rather than additive.
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?
For a 21-parameter, zero-annotation, no-output-schema scraping tool, the description covers only the two filter flags and the price. It leaves the url-vs-html input choice, rendering and wait behavior, and auth requirements unaddressed, so an agent cannot call it correctly on the first try without reading the schema in full.
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?
21 parameters at 19% schema description coverage means the description must compensate, and it only maps to two of them (excludeExternalLinks via 'same-domain-only', visibleLinksOnly via 'visible-only'). The other 19 parameters — cookies, viewport, userAgent, gotoOptions, waitForSelector, bestAttempt, authenticate, and the url/html mutual exclusion — receive no explanation in the description.
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?
States a specific verb and resource: extracts 'every link on the page as absolute URLs', with the two result-shaping options named. The resource ('links') clearly contrasts with siblings markdown, pdf, screenshot, and snapshot, so an agent can pick it without opening the schema. No sibling is named explicitly, keeping it short of a 5.
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?
Usage is implied by the narrow resource: use this when you want link URLs rather than rendered content. However, there is no explicit when-to-use versus markdown/snapshot guidance, no exclusions, and no mention of when the same-domain or visible-only filters should be applied. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markdownThe page's rendered content as MarkdownCInspect
The page's rendered content as Markdown. Price: $0.005 a call (3 free calls a day without an API key).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The page (https). Set url or html, not both. | |
| html | No | HTML to render instead of a URL. | |
| cookies | No | ||
| viewport | No | ||
| userAgent | No | ||
| addStyleTag | No | ||
| bestAttempt | No | ||
| gotoOptions | No | ||
| addScriptTag | No | ||
| authenticate | No | ||
| waitForTimeout | No | ||
| waitForSelector | No | ||
| emulateMediaType | No | ||
| allowResourceTypes | No | ||
| allowRequestPattern | No | ||
| rejectResourceTypes | No | ||
| setExtraHTTPHeaders | No | ||
| rejectRequestPattern | No | ||
| setJavaScriptEnabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses only cost and a free-tier/rate limit ('$0.005 a call, 3 free calls a day without an API key'). It says nothing about JS execution, timeouts, redirects, failure handling, or the url-vs-html interaction, leaving most behavior opaque.
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?
Two short, front-loaded sentences with no filler; the output format is stated first and the cost second. It is efficient, though arguably too terse for a tool with this much surface area.
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?
For a 19-parameter, nested-object, no-output-schema, no-annotation rendering tool, the description is grossly insufficient. An agent cannot determine required inputs, mutual exclusivity beyond the one schema note, timeout/retry behavior, or how rendering options affect output.
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 only 11% (roughly url and html out of 19 parameters), and the description adds zero parameter meaning. Nineteen parameters — cookies, viewport, waitForSelector, authenticate, allowResourceTypes, etc. — are left entirely to inference, so the description does nothing to compensate for the coverage gap.
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 ('The page's rendered content as Markdown') does convey what the tool returns, and the format distinguishes it from siblings like links, pdf, and screenshot. However, it is a near-verbatim restatement of the title, provides no verb for the fetch/render action, and gives no explicit sibling differentiation.
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?
There is no when-to-use guidance at all. Nothing tells the agent to pick markdown over links, snapshot, screenshot, or pdf, nor what conditions (JS-heavy pages, need for readable text) favor this tool. The pricing note is context, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdfRender a URL or HTML to PDF with Puppeteer's pageBInspect
Render a URL or HTML to PDF with Puppeteer's page.pdf() options (format letter by default, scale, margins, header/footer templates, printBackground, pageRanges). Price: $0.005 a call (3 free calls a day without an API key).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The page to render (https). Set url or html, not both. | |
| html | No | HTML to render instead of a URL. | |
| cookies | No | Cookies to set before loading | |
| deliver | No | {store: "1d"|"7d"|"30d"|"365d", name?}: keep the PDF in file storage and answer with metadata instead of bytes | |
| viewport | No | {width,height,deviceScaleFactor,isMobile,hasTouch,isLandscape}; default 1920x1080 | |
| userAgent | No | ||
| pdfOptions | No | Puppeteer page.pdf() options as documented at pptr.dev/api/puppeteer.pdfoptions. | |
| addStyleTag | No | [{content|url}] | |
| bestAttempt | No | Proceed when awaited events fail or time out | |
| gotoOptions | No | {waitUntil: load|domcontentloaded|networkidle0|networkidle2, timeout} | |
| addScriptTag | No | [{content|url}] | |
| authenticate | No | {username,password} | |
| waitForTimeout | No | Extra wait in ms (0-120000) | |
| waitForSelector | No | {selector, visible?, hidden?, timeout} | |
| emulateMediaType | No | screen|print | |
| allowResourceTypes | No | ||
| allowRequestPattern | No | ||
| rejectResourceTypes | No | e.g. ["image"] | |
| setExtraHTTPHeaders | No | Extra HTTP headers | |
| rejectRequestPattern | No | ||
| setJavaScriptEnabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the cost model ($0.005/call, 3 free calls/day without an API key) and defaults, but says nothing about permissions, failure/timeout behavior, or that output can be bytes or stored metadata (covered only by the schema's deliver param).
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?
Two sentences, front-loaded with the core action and options, then the pricing detail. Efficient with no filler, though the parenthetical option list borders on redundant with the schema.
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?
For a 21-parameter tool with nested objects, no annotations and no output schema, the description is thin. The pricing note is a genuine addition, but it omits any mention of the bytes-vs-metadata delivery choice, error handling, or prerequisite auth, leaving notable gaps.
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 coverage is 76%, so the schema already documents most parameters well (defaults, ranges, formats). The description merely re-lists a subset of pdfOptions (format, scale, margins, templates, printBackground, pageRanges) that the schema already covers, adding no meaning beyond it.
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?
States a specific verb (render) and both resource types (URL or HTML) producing a PDF, with the mechanism named (Puppeteer page.pdf). It is clear what the tool does, though it does not explicitly differentiate itself from siblings like screenshot or markdown.
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?
No guidance on when to choose this tool over the sibling rendering tools (screenshot, markdown, snapshot, links). The url-vs-html exclusivity lives in the schema, not the description, so there is essentially no usage routing here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotCapture a PNG, JPEG or WebP screenshot with Puppeteer's pageBInspect
Capture a PNG, JPEG or WebP screenshot with Puppeteer's page.screenshot() options (fullPage, clip, omitBackground, quality 0-100 for jpeg/webp only). Price: $0.005 a call (3 free calls a day without an API key).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The page to capture (https). Set url or html, not both. | |
| html | No | HTML to render instead of a URL. | |
| cookies | No | ||
| deliver | No | {store, name?}: keep the image in file storage | |
| selector | No | Screenshot this element instead of the page | |
| viewport | No | {width,height,deviceScaleFactor,...}; default 1920x1080 | |
| userAgent | No | ||
| scrollPage | No | Scroll the page before capturing (lazy content) | |
| addStyleTag | No | ||
| bestAttempt | No | ||
| gotoOptions | No | {waitUntil, timeout} | |
| addScriptTag | No | ||
| authenticate | No | ||
| waitForTimeout | No | ||
| waitForSelector | No | ||
| emulateMediaType | No | ||
| screenshotOptions | No | Puppeteer page.screenshot() options as documented at pptr.dev/api/puppeteer.screenshotoptions. | |
| allowResourceTypes | No | ||
| allowRequestPattern | No | ||
| rejectResourceTypes | No | ||
| setExtraHTTPHeaders | No | ||
| rejectRequestPattern | No | ||
| setJavaScriptEnabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add genuinely useful non-schema context: the $0.005 per-call price and 3 free calls/day rate limit. However it omits the return format (URL vs base64 image), whether auth is required beyond the free tier, and any timeout/error behavior for a 23-param network-driven tool.
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?
Two compact sentences, front-loaded with the core capability followed by the cost model. No filler or repetition, though the pricing sentence could arguably be deferred to a general note.
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?
For a 23-parameter tool with no annotations and no output schema, the description is thin: it never states what the tool returns (image bytes, a stored-file URL, etc.) and leaves most behavioral and parameter surface undocumented. This is well short of what an agent needs to invoke it confidently.
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 coverage is only 35% across 23 params, so the description must compensate. It partially does by naming fullPage, clip, omitBackground, and the quality 0-100 jpeg/webp constraint, but the large majority of parameters (cookies, authenticate, waitForSelector, deliver, bestAttempt, etc.) get no explanation anywhere.
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 states a specific verb and resource ('Capture a PNG, JPEG or WebP screenshot') and names the underlying mechanism (Puppeteer's page.screenshot()). It is clearly distinguishable from pdf/markdown/links siblings, though it does not explicitly contrast with the closest sibling, snapshot.
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 gives no when-to-use or when-not-to-use guidance and names no alternative among the siblings (links, markdown, pdf, snapshot). The only routing hint (url vs html) lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshotOne call, several formatsCInspect
One call, several formats: rendered HTML content and a base64 screenshot (plus optional Markdown and accessibility tree), with the page's status and title. Price: $0.005 a call (3 free calls a day without an API key).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The page to snapshot (https). Set url or html, not both. | |
| html | No | HTML to render instead of a URL. | |
| cookies | No | ||
| deliver | No | {store, name?}: keep the snapshot's screenshot in file storage | |
| formats | No | At least two of: content, screenshot, markdown, accessibilityTree (default content+screenshot) | |
| viewport | No | ||
| userAgent | No | ||
| addStyleTag | No | ||
| bestAttempt | No | ||
| gotoOptions | No | ||
| addScriptTag | No | ||
| authenticate | No | ||
| waitForTimeout | No | ||
| waitForSelector | No | ||
| emulateMediaType | No | ||
| screenshotOptions | No | Puppeteer screenshot options for the snapshot's screenshot format | |
| allowResourceTypes | No | ||
| allowRequestPattern | No | ||
| rejectResourceTypes | No | ||
| setExtraHTTPHeaders | No | ||
| rejectRequestPattern | No | ||
| setJavaScriptEnabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the return shape (content, screenshot, optional markdown/accessibility tree, status, title) and useful pricing/auth context ('$0.005 a call, 3 free calls a day without an API key'), but says nothing about failure behavior, rate limits beyond the free tier, or how errors surface for a 22-parameter rendering tool.
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?
Two tightly packed sentences that front-load the multi-format benefit, then append pricing. Every clause carries information, though the pricing detail competes with functional content for the lead position.
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?
For a 22-parameter tool with no annotations, no output schema, and 23% schema coverage, the description is far too thin. It explains the return values adequately but leaves the majority of parameters and most behavioral traits undocumented.
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 only 23% across 22 parameters, so the description must compensate and largely does not. It only alludes to the formats parameter (content, screenshot, markdown, accessibilityTree) and says nothing about the many undocumented options like cookies, viewport, authenticate, bestAttempt, or request-pattern filters.
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 states a clear purpose: produce rendered HTML content and a base64 screenshot in one call, plus optional Markdown and accessibility tree, with status and title. The 'one call, several formats' framing implicitly distinguishes it from the single-format siblings (screenshot, markdown, pdf), but it never names or routes to them explicitly.
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 'one call, several formats' framing implies the usage condition (use when you want multiple outputs at once rather than separate single-format calls), but there is no explicit when-to-use, when-not, or named alternative guidance. An agent must infer the selection rule from the tagline.
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.
5 tool updates
- First observed
links - First observed
markdown - First observed
pdf - First observed
screenshot - First observed
snapshot
Related MCP Connectors
Screenshot, PDF and Open Graph image API for AI agents: capture pages, render PDFs, make OG images.
Pixel-perfect webpage screenshots rendered in a real browser, full-page or viewport, via one POST.
Screenshots and PDFs of web pages or your HTML/Markdown, paid per call in sats. No account.
31Screenshot, PDF and HTML-to-image rendering API so Claude and Cursor can see any web page.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceCaptures full-page screenshots and PDFs from any URL using Chromium rendering, with pay-per-call via x402 micropayments.MIT
- AlicenseAqualityCmaintenanceScreenshot, visual-diff, and AI page-analysis API for AI agents. Capture any URL as PNG, JPEG, WebP, PDF, or HTML, diff two versions of a page to catch visual regressions, and get an AI summary of what a page contains.319 npm1MIT
- AlicenseNot gradedqualityBmaintenanceTurn HTML or a URL into a pixel-accurate PDF in a single tool call.MIT
- AlicenseAqualityBmaintenanceCapture screenshots, generate PDFs, and render HTML to images via AI agents. Supports batch capture, geo-targeting, async webhooks, and CSS/JS injection.1149 npm6MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.