Screenshots and PDFs of web pages or your HTML/Markdown, paid per call in sats. No account.
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.
PDF of a public web page (url) or of HTML/Markdown you send, printed by Chromium (first 50 pages). Returns the PDF as an embedded resource. 30 sats. Paid per call, no account. Without payment the call returns payment_required with a Lightning invoice and a Cashu payment request: pay the invoice and call again with the same arguments plus l402='<macaroon>:<preimage>', or call with cashu='<token>'. Every request is checked for free before an invoice is made; use quote to check first.
Absolute http(s) URL of a public page (ports 80/443, at most 2048 characters).
An HTML document to render instead of a URL (at most 1 MiB; its JavaScript runs).
Lightning payment proof for a retry: '<macaroon>:<preimage>', where macaroon comes from the payment_required answer of the previous call and preimage is the 64-hex proof your wallet returns after paying its invoice. Use it with the same tool and arguments.
Cashu token (cashuA... or cashuB...) worth at least the price, from an accepted mint (see quote). Pays without a previous call.
CSS media type to emulate (default print; screen = what a browser window shows).
Paper size (default letter).
Extra wait after the page's load event, in milliseconds (default 0).
Markdown to render in a plain page template instead of a URL (at most 1 MiB).
Landscape orientation (default false).
Margin on all sides in inches (default 0.4).
Print background colours and images (default true).
PDF of a public web page (url) or of HTML/Markdown you send, printed by Chromium (first 50 pages). Returns the PDF as an embedded resource. 30 sats. Paid per call, no account. Without payment the call returns payment_required with a Lightning invoice and a Cashu payment request: pay the invoice and call again with the same arguments plus l402='<macaroon>:<preimage>', or call with cashu='<token>'. Every request is checked for free before an invoice is made; use quote to check first.
| Argument | Type | Description |
|---|---|---|
| url | string | Absolute http(s) URL of a public page (ports 80/443, at most 2048 characters). |
| html | string | An HTML document to render instead of a URL (at most 1 MiB; its JavaScript runs). |
| l402 | string | Lightning payment proof for a retry: '<macaroon>:<preimage>', where macaroon comes from the payment_required answer of the previous call and preimage is the 64-hex proof your wallet returns after paying its invoice. Use it with the same tool and arguments. |
| cashu | string | Cashu token (cashuA... or cashuB...) worth at least the price, from an accepted mint (see quote). Pays without a previous call. |
| media | string | CSS media type to emulate (default print; screen = what a browser window shows). |
| paper | string | Paper size (default letter). |
| wait_ms | integer | Extra wait after the page's load event, in milliseconds (default 0). |
| markdown | string | Markdown to render in a plain page template instead of a URL (at most 1 MiB). |
| landscape | boolean | Landscape orientation (default false). |
| margin_in | number | Margin on all sides in inches (default 0.4). |
| print_background | boolean | Print background colours and images (default true). |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute http(s) URL of a public page (ports 80/443, at most 2048 characters)."
},
"html": {
"type": "string",
"description": "An HTML document to render instead of a URL (at most 1 MiB; its JavaScript runs)."
},
"l402": {
"type": "string",
"description": "Lightning payment proof for a retry: '<macaroon>:<preimage>', where macaroon comes from the payment_required answer of the previous call and preimage is the 64-hex proof your wallet returns after paying its invoice. Use it with the same tool and arguments."
},
"cashu": {
"type": "string",
"description": "Cashu token (cashuA... or cashuB...) worth at least the price, from an accepted mint (see quote). Pays without a previous call."
},
"media": {
"enum": [
"print",
"screen"
],
"type": "string",
"description": "CSS media type to emulate (default print; screen = what a browser window shows)."
},
"paper": {
"enum": [
"letter",
"legal",
"tabloid",
"a3",
"a4",
"a5"
],
"type": "string",
"description": "Paper size (default letter)."
},
"wait_ms": {
"type": "integer",
"maximum": 10000,
"minimum": 0,
"description": "Extra wait after the page's load event, in milliseconds (default 0)."
},
"markdown": {
"type": "string",
"description": "Markdown to render in a plain page template instead of a URL (at most 1 MiB)."
},
"landscape": {
"type": "boolean",
"description": "Landscape orientation (default false)."
},
"margin_in": {
"type": "number",
"maximum": 2,
"minimum": 0,
"description": "Margin on all sides in inches (default 0.4)."
},
"print_background": {
"type": "boolean",
"description": "Print background colours and images (default true)."
}
},
"additionalProperties": false
}Free: runs the same checks a paid call runs before payment (parameters, URL, DNS, public address, robots.txt, queue) without creating an invoice, and returns the price in sats and the accepted payment methods and Cashu mints.
| Argument | Type | Description |
|---|---|---|
| tool* | string | The paid tool you intend to call. |
| arguments* | object | The arguments you would pass to that tool (payment arguments are ignored). |
{
"type": "object",
"required": [
"tool",
"arguments"
],
"properties": {
"tool": {
"enum": [
"screenshot",
"pdf"
],
"type": "string",
"description": "The paid tool you intend to call."
},
"arguments": {
"type": "object",
"description": "The arguments you would pass to that tool (payment arguments are ignored)."
}
},
"additionalProperties": false
}Screenshot of a public web page (url) or of HTML/Markdown you send, rendered by headless Chromium. Returns the image. 20 sats for the viewport, 30 with full_page. Paid per call, no account. Without payment the call returns payment_required with a Lightning invoice and a Cashu payment request: pay the invoice and call again with the same arguments plus l402='<macaroon>:<preimage>', or call with cashu='<token>'. Every request is checked for free before an invoice is made; use quote to check first.
| Argument | Type | Description |
|---|---|---|
| url | string | Absolute http(s) URL of a public page (ports 80/443, at most 2048 characters). |
| html | string | An HTML document to render instead of a URL (at most 1 MiB; its JavaScript runs). |
| l402 | string | Lightning payment proof for a retry: '<macaroon>:<preimage>', where macaroon comes from the payment_required answer of the previous call and preimage is the 64-hex proof your wallet returns after paying its invoice. Use it with the same tool and arguments. |
| cashu | string | Cashu token (cashuA... or cashuB...) worth at least the price, from an accepted mint (see quote). Pays without a previous call. |
| width | integer | Viewport width in CSS px (default 1280). |
| format | string | Image format. Default png, or jpeg when full_page is true (keeps long pages small). |
| height | integer | Viewport height in CSS px (default 800). |
| quality | integer | jpeg/webp quality (default 80). |
| wait_ms | integer | Extra wait after the page's load event, in milliseconds (default 0). |
| markdown | string | Markdown to render in a plain page template instead of a URL (at most 1 MiB). |
| full_page | boolean | Capture the whole page, up to 8000 px tall (30 sats instead of 20). Default false. |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute http(s) URL of a public page (ports 80/443, at most 2048 characters)."
},
"html": {
"type": "string",
"description": "An HTML document to render instead of a URL (at most 1 MiB; its JavaScript runs)."
},
"l402": {
"type": "string",
"description": "Lightning payment proof for a retry: '<macaroon>:<preimage>', where macaroon comes from the payment_required answer of the previous call and preimage is the 64-hex proof your wallet returns after paying its invoice. Use it with the same tool and arguments."
},
"cashu": {
"type": "string",
"description": "Cashu token (cashuA... or cashuB...) worth at least the price, from an accepted mint (see quote). Pays without a previous call."
},
"width": {
"type": "integer",
"maximum": 1920,
"minimum": 320,
"description": "Viewport width in CSS px (default 1280)."
},
"format": {
"enum": [
"png",
"jpeg",
"webp"
],
"type": "string",
"description": "Image format. Default png, or jpeg when full_page is true (keeps long pages small)."
},
"height": {
"type": "integer",
"maximum": 1920,
"minimum": 240,
"description": "Viewport height in CSS px (default 800)."
},
"quality": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "jpeg/webp quality (default 80)."
},
"wait_ms": {
"type": "integer",
"maximum": 10000,
"minimum": 0,
"description": "Extra wait after the page's load event, in milliseconds (default 0)."
},
"markdown": {
"type": "string",
"description": "Markdown to render in a plain page template instead of a URL (at most 1 MiB)."
},
"full_page": {
"type": "boolean",
"description": "Capture the whole page, up to 8000 px tall (30 sats instead of 20). Default false."
}
},
"additionalProperties": false
}