Read PDFs and images as markdown or text, with exact costs and hard spend caps. $0.75/1k pages.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer pk_live_... — free API key from https://pennyocr.com/dashboard/ (100 pages/month included)
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.
Free: return the page count and exact cost_usd to read a document URL with read_document, without running OCR. Use before reading large documents.
http(s) URL of the PDF or image
Optional page range like '1-20'.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Free: return the page count and exact cost_usd to read a document URL with read_document, without running OCR. Use before reading large documents.
| Argument | Type | Description |
|---|
| url* | string | http(s) URL of the PDF or image |
| pages | string | Optional page range like '1-20'. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "http(s) URL of the PDF or image"
},
"pages": {
"type": "string",
"description": "Optional page range like '1-20'."
}
}
}Read a document (PDF or image) from a URL and return its contents as markdown (tables preserved) or plain text. Costs $0.00075 per page, billed to the PennyOCR account; the response includes the exact cost_usd and per-page citations. Use estimate_cost first for big documents. Supports page ranges and hard spend caps.
| Argument | Type | Description |
|---|---|---|
| url* | string | http(s) URL of the PDF or image |
| pages | string | Page range like '1-20,25'. Default: all pages. |
| output | string | Output format. Default markdown. |
| max_pages | integer | Refuse (with the numbers) if selection exceeds this many pages. |
| max_cost_usd | number | Refuse (with the numbers) if the run would cost more than this. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "http(s) URL of the PDF or image"
},
"pages": {
"type": "string",
"description": "Page range like '1-20,25'. Default: all pages."
},
"output": {
"enum": [
"markdown",
"text"
],
"type": "string",
"description": "Output format. Default markdown."
},
"max_pages": {
"type": "integer",
"description": "Refuse (with the numbers) if selection exceeds this many pages."
},
"max_cost_usd": {
"type": "number",
"description": "Refuse (with the numbers) if the run would cost more than this."
}
}
}