Zovo Photo to PDF MCP
Converts up to 60 JPG or PNG images into a single PDF document with one image per page. It handles EXIF orientation for phone photos, supports various page sizes (Letter, A4, Legal), and includes validation to ensure page count matches image count.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://image-to-pdf.zovo.one/mcpWhat its tools do
2 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (2)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Combine scanned receipts into one PDF on Letter pages
- Turn phone photos of notes into one A4 PDF with a margin
- Check images and show page plan before making the PDF
Source and maintenance
Protocol and capabilities
- Server
- image-to-pdf 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 2 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
2 advertised
images_to_pdf — Images to PDF
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.
{
"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."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file",
"images",
"pages",
"pages_verified",
"pdf_bytes",
"page_plan",
"warnings",
"downloads",
"note"
],
"properties": {
"file": {
"type": "string"
},
"note": {
"type": "string"
},
"pages": {
"type": "number"
},
"images": {
"type": "number"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"required": [
"pdf"
],
"properties": {
"pdf": {
"type": "string"
}
},
"additionalProperties": false
},
"page_plan": {
"type": "array",
"items": {
"type": "object",
"required": [
"n",
"name",
"type",
"pixels",
"exif_orientation",
"correction",
"dpi",
"color",
"page",
"page_orientation"
],
"properties": {
"n": {
"type": "number"
},
"dpi": {
"type": "string"
},
"name": {
"type": "string"
},
"page": {
"type": "string"
},
"type": {
"type": "string"
},
"color": {
"type": "string"
},
"pixels": {
"type": "string"
},
"status": {
"type": "string"
},
"correction": {
"type": "string"
},
"exif_orientation": {
"type": "number"
},
"page_orientation": {
"type": "string"
}
},
"additionalProperties": false
}
},
"pdf_bytes": {
"type": "number"
},
"pages_verified": {
"type": "number"
},
"page_plan_count": {
"type": "object",
"required": [
"shown",
"total"
],
"properties": {
"shown": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Images to PDF",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}inspect_images — Inspect images
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.
{
"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."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"images",
"ready",
"refused",
"total_bytes",
"page_plan",
"warnings",
"note"
],
"properties": {
"note": {
"type": "string"
},
"ready": {
"type": "number"
},
"images": {
"type": "number"
},
"refused": {
"type": "number"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"page_plan": {
"type": "array",
"items": {
"type": "object",
"required": [
"n",
"name",
"type",
"pixels",
"exif_orientation",
"correction",
"dpi",
"color",
"page",
"page_orientation"
],
"properties": {
"n": {
"type": "number"
},
"dpi": {
"type": "string"
},
"name": {
"type": "string"
},
"page": {
"type": "string"
},
"type": {
"type": "string"
},
"color": {
"type": "string"
},
"pixels": {
"type": "string"
},
"status": {
"type": "string"
},
"correction": {
"type": "string"
},
"exif_orientation": {
"type": "number"
},
"page_orientation": {
"type": "string"
}
},
"additionalProperties": false
}
},
"total_bytes": {
"type": "number"
},
"page_plan_count": {
"type": "object",
"required": [
"shown",
"total"
],
"properties": {
"shown": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Inspect images",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
image-to-pdf-widget — Zovo Photo to PDF view
Interactive view for Zovo Photo to PDF.
ui://widget/image-to-pdf-v1-1.0.0-b97cda2bbe06fb855925a91afeb9b41b0b57f853012aa3c80e86655efaec0070.htmlimage-to-pdf-widget-legacy — Zovo Photo to PDF view (previous versions)
ui://widget/image-to-pdf-{version}.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 515 ms
- 95th percentile latency
- 515 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 515 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http zovo-photo-to-pdf-mcp https://image-to-pdf.zovo.one/mcpCodex
codex mcp add zovo-photo-to-pdf-mcp --url https://image-to-pdf.zovo.one/mcpCursor
{
"mcpServers": {
"zovo-photo-to-pdf-mcp": {
"url": "https://image-to-pdf.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"zovo-photo-to-pdf-mcp": {
"type": "streamableHttp",
"url": "https://image-to-pdf.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"zovo-photo-to-pdf-mcp": {
"type": "http",
"url": "https://image-to-pdf.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http zovo-photo-to-pdf-mcp https://image-to-pdf.zovo.one/mcpClaude Desktop
https://image-to-pdf.zovo.one/mcpWindsurf
{
"mcpServers": {
"zovo-photo-to-pdf-mcp": {
"serverUrl": "https://image-to-pdf.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like Zovo Photo to PDF MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.