Zovo PDF Maker MCP
This MCP server converts Markdown or plain text into typeset PDFs with selectable text and editable Word (DOCX) files. It supports headings, lists, tables, and formatting options like margins and page numbers, while performing a read-back check to verify content integrity.
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://pdf-maker.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
- Turn meeting notes into a PDF
- Create an A4 PDF with a title page and contents
- Check that each heading and table cell is in the PDF
Source and maintenance
Protocol and capabilities
- Server
- pdf-maker 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
make_pdf — Make PDF and Word file
Use this when the user wants Markdown or plain text (a chat answer, notes, a report, a README) as a downloadable PDF and an editable Word (DOCX) file. Reads ATX headings 1-4, paragraphs, bold, italic, inline code, fenced code blocks, bullet and numbered lists (2 levels), pipe tables, links, block quotes and rules; other Markdown prints as plain text and is listed in notes. Options: Letter or A4, normal or narrow margins, 10-14 pt text, title page, contents page, page numbers. Returns both links, the page count, the outline with page numbers, and a read-back check of the PDF text. Does not write or edit content, embed images, or convert existing files (Word, HTML, scans). Links expire in about 1 hour.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 200000,
"description": "The Markdown or plain text to typeset, up to 200,000 characters, e.g. \"# Trip notes\\n\\n- Day 1: Lisbon\\n- Day 2: Porto\"."
},
"paper": {
"enum": [
"letter",
"a4"
],
"type": "string",
"description": "Paper size: letter (US, default) or a4."
},
"title": {
"type": "string",
"maxLength": 200,
"description": "Optional document title printed at the top (or on a title page), e.g. \"Q3 Field Report\". Up to 200 characters."
},
"format": {
"enum": [
"markdown",
"plain"
],
"type": "string",
"description": "markdown (default) reads # headings, lists, tables and so on; plain prints the text as paragraphs with no markup."
},
"margins": {
"enum": [
"normal",
"narrow"
],
"type": "string",
"description": "Page margins: normal (1 in / 25.4 mm, default) or narrow (0.5 in / 12.7 mm)."
},
"font_size": {
"type": "integer",
"maximum": 14,
"minimum": 10,
"description": "Body text size in points from 10 to 14, e.g. 11 (default)."
},
"title_page": {
"type": "boolean",
"description": "true to print the title on its own first page. Needs a title (or uses the first heading). Default false."
},
"page_numbers": {
"type": "boolean",
"description": "true (default) prints \"page / total\" at the bottom of each page except a title page."
},
"table_of_contents": {
"type": "boolean",
"description": "true to add a contents page listing headings of levels 1-3 with their page numbers. Default false."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"file_name",
"pages",
"paper",
"font_size",
"headings",
"counts",
"check",
"replaced_characters",
"notes",
"downloads",
"expires_in_hours"
],
"properties": {
"check": {
"type": "object",
"required": [
"blocks_checked",
"blocks_found_in_order",
"missing",
"out_of_order",
"toc_entries",
"toc_pages_match",
"toc_mismatches",
"docx_opens",
"docx_headings",
"docx_table_cells"
],
"properties": {
"missing": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"text"
],
"properties": {
"kind": {
"type": "string"
},
"text": {
"type": "string"
}
},
"additionalProperties": false
}
},
"docx_opens": {
"type": "boolean"
},
"toc_entries": {
"type": "number"
},
"out_of_order": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"text"
],
"properties": {
"kind": {
"type": "string"
},
"text": {
"type": "string"
}
},
"additionalProperties": false
}
},
"docx_headings": {
"type": "number"
},
"blocks_checked": {
"type": "number"
},
"toc_mismatches": {
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"toc_page",
"found_on_page"
],
"properties": {
"heading": {
"type": "string"
},
"toc_page": {
"type": "number"
},
"found_on_page": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
}
},
"toc_pages_match": {
"type": "number"
},
"docx_table_cells": {
"type": "number"
},
"blocks_found_in_order": {
"type": "number"
}
},
"additionalProperties": false
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"pages": {
"type": "number"
},
"paper": {
"type": "string"
},
"title": {
"type": "string"
},
"counts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"headings": {
"type": "array",
"items": {
"type": "object",
"required": [
"level",
"text",
"page"
],
"properties": {
"page": {
"type": "number"
},
"text": {
"type": "string"
},
"level": {
"type": "number"
}
},
"additionalProperties": false
}
},
"downloads": {
"type": "object",
"required": [
"pdf",
"docx"
],
"properties": {
"pdf": {
"type": "string"
},
"docx": {
"type": "string"
}
},
"additionalProperties": false
},
"file_name": {
"type": "string"
},
"font_size": {
"type": "number"
},
"headings_count": {},
"expires_in_hours": {
"type": "number"
},
"replaced_characters": {
"type": "array",
"items": {
"type": "object",
"required": [
"char",
"count"
],
"properties": {
"char": {
"type": "string"
},
"count": {
"type": "number"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"title": "Make PDF and Word file",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_pdf_text — Check PDF text against Markdown
Use this when the user wants to confirm that the text blocks of their Markdown (headings, paragraphs, list items, table cells, code) are present in a PDF in the same order. With an uploaded PDF it checks that file; without one it builds the PDF from the text as make_pdf does and checks it. Reports blocks found in order, missing and out of order. Compares text only: it does not check fonts, layout, images or spelling, and does not edit the PDF.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"file": {
"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."
}
},
"description": "Optional: a PDF to check, e.g. the report.pdf downloaded from make_pdf or exported from another app. Without it, the tool builds the PDF from the text and checks that."
},
"text": {
"type": "string",
"maxLength": 200000,
"description": "The Markdown whose blocks should be found in the PDF, e.g. \"# Budget\\n\\n| Item | Cost |\\n|---|---|\\n| Rent | 1200 |\"."
},
"paper": {
"enum": [
"letter",
"a4"
],
"type": "string",
"description": "Paper size: letter (US, default) or a4."
},
"title": {
"type": "string",
"maxLength": 200,
"description": "Optional document title printed at the top (or on a title page), e.g. \"Q3 Field Report\". Up to 200 characters."
},
"format": {
"enum": [
"markdown",
"plain"
],
"type": "string",
"description": "markdown (default) reads # headings, lists, tables and so on; plain prints the text as paragraphs with no markup."
},
"margins": {
"enum": [
"normal",
"narrow"
],
"type": "string",
"description": "Page margins: normal (1 in / 25.4 mm, default) or narrow (0.5 in / 12.7 mm)."
},
"font_size": {
"type": "integer",
"maximum": 14,
"minimum": 10,
"description": "Body text size in points from 10 to 14, e.g. 11 (default)."
},
"title_page": {
"type": "boolean",
"description": "true to print the title on its own first page. Needs a title (or uses the first heading). Default false."
},
"page_numbers": {
"type": "boolean",
"description": "true (default) prints \"page / total\" at the bottom of each page except a title page."
},
"table_of_contents": {
"type": "boolean",
"description": "true to add a contents page listing headings of levels 1-3 with their page numbers. Default false."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"result",
"source",
"pages",
"pages_read",
"blocks_checked",
"blocks_found_in_order",
"missing",
"out_of_order",
"notes"
],
"properties": {
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"pages": {
"type": "number"
},
"result": {
"type": "string"
},
"source": {
"type": "string"
},
"missing": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"text"
],
"properties": {
"kind": {
"type": "string"
},
"text": {
"type": "string"
}
},
"additionalProperties": false
}
},
"pages_read": {
"type": "number"
},
"out_of_order": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"text"
],
"properties": {
"kind": {
"type": "string"
},
"text": {
"type": "string"
}
},
"additionalProperties": false
}
},
"missing_count": {},
"blocks_checked": {
"type": "number"
},
"out_of_order_count": {},
"blocks_found_in_order": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Check PDF text against Markdown",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
pdf-maker-widget — Zovo PDF Maker view
Interactive view for Zovo PDF Maker.
ui://widget/pdf-maker-v1-1.0.0-b6672ecc34331d3ac6e7f24684c9144f4a407b1cd9d7e3f8a362843db67386e5.htmlpdf-maker-widget-legacy — Zovo PDF Maker view (previous versions)
ui://widget/pdf-maker-{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
- 1257 ms
- 95th percentile latency
- 1257 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1257 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-pdf-maker-mcp https://pdf-maker.zovo.one/mcpCodex
codex mcp add zovo-pdf-maker-mcp --url https://pdf-maker.zovo.one/mcpCursor
{
"mcpServers": {
"zovo-pdf-maker-mcp": {
"url": "https://pdf-maker.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"zovo-pdf-maker-mcp": {
"type": "streamableHttp",
"url": "https://pdf-maker.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"zovo-pdf-maker-mcp": {
"type": "http",
"url": "https://pdf-maker.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http zovo-pdf-maker-mcp https://pdf-maker.zovo.one/mcpClaude Desktop
https://pdf-maker.zovo.one/mcpWindsurf
{
"mcpServers": {
"zovo-pdf-maker-mcp": {
"serverUrl": "https://pdf-maker.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like Zovo PDF Maker MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.