Turns JPG and PNG images into one PDF document.
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.
Use this when the user wants to convert JPG to PDF, PNG to PDF, combine photos into one PDF, turn scanned pages or phone photos of documents into a PDF, or make a PDF from pictures or screenshots. It places 1 to 60 JPG or PNG images in the given order, one per page, turns each photo upright from its EXIF orientation, and returns a PDF download that is kept for about 1 hour. Page size fit (each page matches its image), letter, a4 or legal; orientation auto, portrait or landscape; margin 0 to 25 mm; fit contain or cover. Does not read HEIC, WebP, GIF or TIFF (the result says how to export them), does not run OCR and does not edit pixels. Do not use for merging existing PDF files or for converting a PDF into images.
The JPG or PNG images, in page order, e.g. scan-1.jpg, scan-2.jpg.
contain (default) shows the whole image; cover fills the page inside the margin and crops the overflow. Paper sizes only, e.g. contain.
White margin on each side in millimetres, 0 to 25, e.g. 10. Default 0.
Page size, e.g. a4. fit (default) makes each page the size of its image at the image's DPI (72 when the file has none).
Paper orientation for letter, a4 or legal, e.g. auto (default: landscape for wide images, portrait otherwise). Ignored for fit.
File name for the PDF, e.g. receipts-november. Default: the first image name.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http image-to-pdf https://image-to-pdf.zovo.one/mcp
Use this when the user wants to convert JPG to PDF, PNG to PDF, combine photos into one PDF, turn scanned pages or phone photos of documents into a PDF, or make a PDF from pictures or screenshots. It places 1 to 60 JPG or PNG images in the given order, one per page, turns each photo upright from its EXIF orientation, and returns a PDF download that is kept for about 1 hour. Page size fit (each page matches its image), letter, a4 or legal; orientation auto, portrait or landscape; margin 0 to 25 mm; fit contain or cover. Does not read HEIC, WebP, GIF or TIFF (the result says how to export them), does not run OCR and does not edit pixels. Do not use for merging existing PDF files or for converting a PDF into images.
| Argument | Type | Description |
|---|---|---|
| fit | string | contain (default) shows the whole image; cover fills the page inside the margin and crops the overflow. Paper sizes only, e.g. contain. |
| images* | array | The JPG or PNG images, in page order, e.g. scan-1.jpg, scan-2.jpg. |
| margin_mm | number | White margin on each side in millimetres, 0 to 25, e.g. 10. Default 0. |
| page_size | string | Page size, e.g. a4. fit (default) makes each page the size of its image at the image's DPI (72 when the file has none). |
| orientation | string | Paper orientation for letter, a4 or legal, e.g. auto (default: landscape for wide images, portrait otherwise). Ignored for fit. |
| output_name | string | File name for the PDF, e.g. receipts-november. Default: the first image name. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"images"
],
"properties": {
"fit": {
"enum": [
"contain",
"cover"
],
"type": "string",
"description": "contain (default) shows the whole image; cover fills the page inside the margin and crops the overflow. Paper sizes only, e.g. contain."
},
"images": {
"type": "array",
"items": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "ChatGPT file id, e.g. file_abc123."
},
"file_name": {
"type": "string",
"description": "Original file name if known, e.g. statement.pdf."
},
"mime_type": {
"type": "string",
"description": "Media type if known, e.g. application/pdf."
},
"download_url": {
"type": "string",
"description": "Temporary download link for the file, supplied by ChatGPT."
}
}
},
"maxItems": 60,
"minItems": 1,
"description": "The JPG or PNG images, in page order, e.g. scan-1.jpg, scan-2.jpg."
},
"margin_mm": {
"type": "number",
"maximum": 25,
"minimum": 0,
"description": "White margin on each side in millimetres, 0 to 25, e.g. 10. Default 0."
},
"page_size": {
"enum": [
"fit",
"letter",
"a4",
"legal"
],
"type": "string",
"description": "Page size, e.g. a4. fit (default) makes each page the size of its image at the image's DPI (72 when the file has none)."
},
"orientation": {
"enum": [
"auto",
"portrait",
"landscape"
],
"type": "string",
"description": "Paper orientation for letter, a4 or legal, e.g. auto (default: landscape for wide images, portrait otherwise). Ignored for fit."
},
"output_name": {
"type": "string",
"maxLength": 200,
"description": "File name for the PDF, e.g. receipts-november. Default: the first image name."
}
}
}Use this when the user wants to check photos or scans before making a PDF: it lists each attached JPG or PNG with its type, pixel size, EXIF orientation and the rotation it needs, DPI, colour mode, and the page size it would get, and flags files that are not usable (HEIC, WebP, GIF, TIFF, damaged or too large). Makes no file. Takes the same page options as images_to_pdf. Do not use for reading text in an image (no OCR) or for editing images.
| Argument | Type | Description |
|---|---|---|
| fit | string | contain (default) shows the whole image; cover fills the page inside the margin and crops the overflow. Paper sizes only, e.g. contain. |
| images* | array | The JPG or PNG images, in page order, e.g. scan-1.jpg, scan-2.jpg. |
| margin_mm | number | White margin on each side in millimetres, 0 to 25, e.g. 10. Default 0. |
| page_size | string | Page size, e.g. a4. fit (default) makes each page the size of its image at the image's DPI (72 when the file has none). |
| orientation | string | Paper orientation for letter, a4 or legal, e.g. auto (default: landscape for wide images, portrait otherwise). Ignored for fit. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"images"
],
"properties": {
"fit": {
"enum": [
"contain",
"cover"
],
"type": "string",
"description": "contain (default) shows the whole image; cover fills the page inside the margin and crops the overflow. Paper sizes only, e.g. contain."
},
"images": {
"type": "array",
"items": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "ChatGPT file id, e.g. file_abc123."
},
"file_name": {
"type": "string",
"description": "Original file name if known, e.g. statement.pdf."
},
"mime_type": {
"type": "string",
"description": "Media type if known, e.g. application/pdf."
},
"download_url": {
"type": "string",
"description": "Temporary download link for the file, supplied by ChatGPT."
}
}
},
"maxItems": 60,
"minItems": 1,
"description": "The JPG or PNG images, in page order, e.g. scan-1.jpg, scan-2.jpg."
},
"margin_mm": {
"type": "number",
"maximum": 25,
"minimum": 0,
"description": "White margin on each side in millimetres, 0 to 25, e.g. 10. Default 0."
},
"page_size": {
"enum": [
"fit",
"letter",
"a4",
"legal"
],
"type": "string",
"description": "Page size, e.g. a4. fit (default) makes each page the size of its image at the image's DPI (72 when the file has none)."
},
"orientation": {
"enum": [
"auto",
"portrait",
"landscape"
],
"type": "string",
"description": "Paper orientation for letter, a4 or legal, e.g. auto (default: landscape for wide images, portrait otherwise). Ignored for fit."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.