Puptra PDF Snapshot

One-call URL-to-PDF and full-page screenshot API with Puppeteer's page.pdf()/page.screenshot()...

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
77%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,917Tokens (tool definitions)
~4.3 KBTypical response size
Moderate attention impact (1.50% of 128k context)

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": {
    "puptra-pdf-snapshot": {
      "url": "https://puptra-pdf-snapshot.saastemly.com/mcp"
    }
  }
}

Remote endpoints

https://puptra-pdf-snapshot.saastemly.com/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪pdf(url, html, pdfOptions, viewport, gotoOptions, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The page to render (https). Set url or html, not both."
    },
    "html": {
      "type": "string",
      "description": "HTML to render instead of a URL."
    },
    "pdfOptions": {
      "type": "object",
      "description": "Puppeteer page.pdf() options as documented at pptr.dev/api/puppeteer.pdfoptions.",
      "properties": {
        "scale": {
          "type": "number",
          "description": "0.1-2, default 1"
        },
        "format": {
          "type": "string",
          "description": "letter|legal|tabloid|ledger|a0|a1|a2|a3|a4|a5|a6 (default letter)"
        },
        "width": {
          "type": "string",
          "description": "Paper width, e.g. \"8.5in\""
        },
        "height": {
          "type": "string",
          "description": "Paper height, e.g. \"11in\""
        },
        "landscape": {
          "type": "boolean"
        },
        "printBackground": {
          "type": "boolean"
        },
        "displayHeaderFooter": {
          "type": "boolean"
        },
        "headerTemplate": {
          "type": "string",
          "description": "HTML with date/title/url/pageNumber/totalPages classes"
        },
        "footerTemplate": {
          "type": "string"
        },
        "margin": {
          "type": "object",
          "description": "{top,bottom,left,right}"
        },
        "pageRanges": {
          "type": "string",
          "description": "e.g. \"1-5, 8, 11-13\""
        },
        "preferCSSPageSize": {
          "type": "boolean"
        },
        "omitBackground": {
          "type": "boolean"
        },
        "tagged": {
          "type": "boolean"
        },
        "outline": {
          "type": "boolean"
        },
        "timeout": {
          "type": "number",
          "description": "0-60000 ms, default 30000"
        }
      }
    },
    "viewport": {
      "type": "object",
      "description": "{width,height,deviceScaleFactor,isMobile,hasTouch,isLandscape}; default 1920x1080"
    },
    "gotoOptions": {
      "type": "object",
      "description": "{waitUntil: load|domcontentloaded|networkidle0|networkidle2, timeout}"
    },
    "waitForSelector": {
      "type": "object",
      "description": "{selector, visible?, hidden?, timeout}"
    },
    "waitForTimeout": {
      "type": "number",
      "description": "Extra wait in ms (0-120000)"
    },
    "addScriptTag": {
      "type": "array",
      "description": "[{content|url}]"
    },
    "addStyleTag": {
      "type": "array",
      "description": "[{content|url}]"
    },
    "cookies": {
      "type": "array",
      "description": "Cookies to set before loading"
    },
    "authenticate": {
      "type": "object",
      "description": "{username,password}"
    },
    "setExtraHTTPHeaders": {
      "type": "object",
      "description": "Extra HTTP headers"
    },
    "userAgent": {
      "type": "string"
    },
    "setJavaScriptEnabled": {
      "type": "boolean"
    },
    "emulateMediaType": {
      "type": "string",
      "description": "screen|print"
    },
    "bestAttempt": {
      "type": "boolean",
      "description": "Proceed when awaited events fail or time out"
    },
    "rejectResourceTypes": {
      "type": "array",
      "description": "e.g. [\"image\"]"
    },
    "rejectRequestPattern": {
      "type": "array"
    },
    "allowResourceTypes": {
      "type": "array"
    },
    "allowRequestPattern": {
      "type": "array"
    },
    "deliver": {
      "type": "object",
      "description": "{store: \"1d\"|\"7d\"|\"30d\"|\"365d\", name?}: keep the PDF in file storage and answer with metadata instead of bytes"
    }
  },
  "required": []
}
⚪screenshot(url, html, screenshotOptions, selector, scrollPage, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The page to capture (https). Set url or html, not both."
    },
    "html": {
      "type": "string",
      "description": "HTML to render instead of a URL."
    },
    "screenshotOptions": {
      "type": "object",
      "description": "Puppeteer page.screenshot() options as documented at pptr.dev/api/puppeteer.screenshotoptions.",
      "properties": {
        "type": {
          "type": "string",
          "description": "png|jpeg|webp (default png)"
        },
        "quality": {
          "type": "number",
          "description": "0-100, jpeg/webp only"
        },
        "fullPage": {
          "type": "boolean"
        },
        "clip": {
          "type": "object",
          "description": "{x,y,width,height,scale?}"
        },
        "omitBackground": {
          "type": "boolean"
        },
        "optimizeForSpeed": {
          "type": "boolean"
        },
        "captureBeyondViewport": {
          "type": "boolean"
        },
        "fromSurface": {
          "type": "boolean"
        }
      }
    },
    "selector": {
      "type": "string",
      "description": "Screenshot this element instead of the page"
    },
    "scrollPage": {
      "type": "boolean",
      "description": "Scroll the page before capturing (lazy content)"
    },
    "viewport": {
      "type": "object",
      "description": "{width,height,deviceScaleFactor,...}; default 1920x1080"
    },
    "gotoOptions": {
      "type": "object",
      "description": "{waitUntil, timeout}"
    },
    "waitForSelector": {
      "type": "object"
    },
    "waitForTimeout": {
      "type": "number"
    },
    "addScriptTag": {
      "type": "array"
    },
    "addStyleTag": {
      "type": "array"
    },
    "cookies": {
      "type": "array"
    },
    "authenticate": {
      "type": "object"
    },
    "setExtraHTTPHeaders": {
      "type": "object"
    },
    "userAgent": {
      "type": "string"
    },
    "setJavaScriptEnabled": {
      "type": "boolean"
    },
    "emulateMediaType": {
      "type": "string"
    },
    "bestAttempt": {
      "type": "boolean"
    },
    "rejectResourceTypes": {
      "type": "array"
    },
    "rejectRequestPattern": {
      "type": "array"
    },
    "allowResourceTypes": {
      "type": "array"
    },
    "allowRequestPattern": {
      "type": "array"
    },
    "deliver": {
      "type": "object",
      "description": "{store, name?}: keep the image in file storage"
    }
  },
  "required": []
}
⚪snapshot(url, html, formats, screenshotOptions, viewport, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The page to snapshot (https). Set url or html, not both."
    },
    "html": {
      "type": "string",
      "description": "HTML to render instead of a URL."
    },
    "formats": {
      "type": "array",
      "description": "At least two of: content, screenshot, markdown, accessibilityTree (default content+screenshot)"
    },
    "screenshotOptions": {
      "type": "object",
      "description": "Puppeteer screenshot options for the snapshot's screenshot format"
    },
    "viewport": {
      "type": "object"
    },
    "gotoOptions": {
      "type": "object"
    },
    "waitForSelector": {
      "type": "object"
    },
    "waitForTimeout": {
      "type": "number"
    },
    "addScriptTag": {
      "type": "array"
    },
    "addStyleTag": {
      "type": "array"
    },
    "cookies": {
      "type": "array"
    },
    "authenticate": {
      "type": "object"
    },
    "setExtraHTTPHeaders": {
      "type": "object"
    },
    "userAgent": {
      "type": "string"
    },
    "setJavaScriptEnabled": {
      "type": "boolean"
    },
    "emulateMediaType": {
      "type": "string"
    },
    "bestAttempt": {
      "type": "boolean"
    },
    "rejectResourceTypes": {
      "type": "array"
    },
    "rejectRequestPattern": {
      "type": "array"
    },
    "allowResourceTypes": {
      "type": "array"
    },
    "allowRequestPattern": {
      "type": "array"
    },
    "deliver": {
      "type": "object",
      "description": "{store, name?}: keep the snapshot's screenshot in file storage"
    }
  },
  "required": []
}
⚪markdown(url, html, viewport, gotoOptions, waitForSelector, ...)

The page's rendered content as Markdown. Price: $0.005 a call.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The page (https). Set url or html, not both."
    },
    "html": {
      "type": "string",
      "description": "HTML to render instead of a URL."
    },
    "viewport": {
      "type": "object"
    },
    "gotoOptions": {
      "type": "object"
    },
    "waitForSelector": {
      "type": "object"
    },
    "waitForTimeout": {
      "type": "number"
    },
    "addScriptTag": {
      "type": "array"
    },
    "addStyleTag": {
      "type": "array"
    },
    "cookies": {
      "type": "array"
    },
    "authenticate": {
      "type": "object"
    },
    "setExtraHTTPHeaders": {
      "type": "object"
    },
    "userAgent": {
      "type": "string"
    },
    "setJavaScriptEnabled": {
      "type": "boolean"
    },
    "emulateMediaType": {
      "type": "string"
    },
    "bestAttempt": {
      "type": "boolean"
    },
    "rejectResourceTypes": {
      "type": "array"
    },
    "rejectRequestPattern": {
      "type": "array"
    },
    "allowResourceTypes": {
      "type": "array"
    },
    "allowRequestPattern": {
      "type": "array"
    }
  },
  "required": []
}
⚪links(url, html, excludeExternalLinks, visibleLinksOnly, viewport, ...)

Every link on the page as absolute URLs, with optional same-domain-only and visible-only filters. Price: $0.005 a call.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The page (https). Set url or html, not both."
    },
    "html": {
      "type": "string",
      "description": "HTML to render instead of a URL."
    },
    "excludeExternalLinks": {
      "type": "boolean",
      "description": "Only same-origin links (default false)"
    },
    "visibleLinksOnly": {
      "type": "boolean",
      "description": "Only links visible on the page (default false)"
    },
    "viewport": {
      "type": "object"
    },
    "gotoOptions": {
      "type": "object"
    },
    "waitForSelector": {
      "type": "object"
    },
    "waitForTimeout": {
      "type": "number"
    },
    "addScriptTag": {
      "type": "array"
    },
    "addStyleTag": {
      "type": "array"
    },
    "cookies": {
      "type": "array"
    },
    "authenticate": {
      "type": "object"
    },
    "setExtraHTTPHeaders": {
      "type": "object"
    },
    "userAgent": {
      "type": "string"
    },
    "setJavaScriptEnabled": {
      "type": "boolean"
    },
    "emulateMediaType": {
      "type": "string"
    },
    "bestAttempt": {
      "type": "boolean"
    },
    "rejectResourceTypes": {
      "type": "array"
    },
    "rejectRequestPattern": {
      "type": "array"
    },
    "allowResourceTypes": {
      "type": "array"
    },
    "allowRequestPattern": {
      "type": "array"
    }
  },
  "required": []
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools