Koskamo

Zovo Booklet Print MCP

Rearranges PDF pages to create saddle-stitch booklets, 2-up, or 4-up handouts. It handles page ordering, adds blank pages for multiples of 4, supports various paper sizes, and preserves vector text quality for sharp printing.

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.

Zovo Booklet Print MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-08Published by Zovo
MCP endpoint (Streamable HTTP)
https://pdf-booklet.zovo.one/mcp
Vendor documentation

What its tools do

2 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

2 of 2 have a description · 2 of 2 declare behavior hints · 2 of 2 with parameters document them all

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

  • Create a folded booklet from a PDF
  • Generate 2-up or 4-up handouts
  • Determine page order for saddle-stitch binding

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
pdf-booklet 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
2 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "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.

Zovo Booklet Print re-arranges the pages of an attached PDF for printing (make_booklet): a saddle-stitch booklet to fold and staple, or 2 or 4 pages per sheet side, on Letter, A4, Tabloid or A3 paper. Blank pages are added at the end to fill a booklet to a multiple of 4. plan_booklet shows the page order for a page count without a file. Pages stay vector (not turned into images). Each output is read again before the link is given. Files are processed in memory; the new PDF is kept for 1 hour, then deleted.

Tools

2 advertised

make_booklet — Make a print booklet from a PDF
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants to print a PDF as a booklet (saddle stitch: print double-sided, fold in half, staple), make a zine or program booklet, or put 2 or 4 pages per sheet side for a handout. Takes one attached PDF (up to 200 pages), layout booklet, 2up or 4up, sheet auto, letter, a4, tabloid or a3, binding left or right, gutter in mm and creep in mm for thick booklets, and returns the imposed PDF, the page order per sheet side, a CSV of the order and the print setting. Blank pages are added at the end to fill a booklet to a multiple of 4. Does not open password-protected or restricted PDFs, does not carry links or form fields, and does not print. Do not use to merge or split PDFs.

make_booklet input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "file"
  ],
  "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": "The PDF to print as a booklet, e.g. program.pdf."
    },
    "sheet": {
      "type": "string",
      "maxLength": 20,
      "description": "Paper to print on: auto (default: the standard size closest to the PDF's first page), letter, a4, tabloid (11 x 17 in) or a3."
    },
    "layout": {
      "type": "string",
      "maxLength": 40,
      "description": "booklet (default: pages in fold order, 2 per sheet side, to fold and staple in the middle), 2up (2 pages per sheet side in reading order) or 4up (4 pages per sheet side)."
    },
    "binding": {
      "type": "string",
      "maxLength": 20,
      "description": "left (default, for left-to-right books) or right (right-to-left books such as Arabic or Hebrew: the first page sits on the right)."
    },
    "creep_mm": {
      "type": "number",
      "description": "Booklet only: millimetres to shift the innermost sheet's pages toward the fold (outer sheets shift less), 0 to 2, e.g. 0.5 for 40 or more pages. Default 0."
    },
    "gutter_mm": {
      "type": "number",
      "description": "Extra space in millimetres between the pages on a sheet (at the fold for a booklet), 0 to 20, e.g. 6. Default 0."
    }
  }
}
make_booklet output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "pages",
    "layout",
    "layout_label",
    "binding",
    "sheets",
    "sheets_single_sided",
    "sheet_sides",
    "blanks_added",
    "padded_pages",
    "slot_names",
    "print",
    "table",
    "table_count",
    "notes",
    "file",
    "sheet",
    "sheet_label",
    "scale_percent",
    "gutter_mm",
    "creep_mm",
    "check",
    "output_name",
    "output_size_kb",
    "expires_in_hours",
    "downloads"
  ],
  "properties": {
    "file": {
      "type": "string"
    },
    "check": {
      "type": "object",
      "required": [
        "passed",
        "what",
        "sides_checked",
        "pages_matched",
        "pages_without_text",
        "pages_text_at_edge"
      ],
      "properties": {
        "what": {
          "type": "string"
        },
        "passed": {
          "type": "boolean"
        },
        "pages_matched": {
          "type": "number"
        },
        "sides_checked": {
          "type": "number"
        },
        "pages_text_at_edge": {
          "type": "number"
        },
        "pages_without_text": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "pages": {
      "type": "number"
    },
    "print": {
      "type": "string"
    },
    "sheet": {
      "type": "string"
    },
    "table": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "sheet",
          "side",
          "slots"
        ],
        "properties": {
          "side": {
            "type": "string"
          },
          "sheet": {
            "type": "number"
          },
          "slots": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      }
    },
    "layout": {
      "type": "string"
    },
    "sheets": {
      "type": "number"
    },
    "binding": {
      "type": "string"
    },
    "creep_mm": {
      "type": "number"
    },
    "downloads": {
      "type": "object",
      "required": [
        "pdf",
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        },
        "pdf": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "gutter_mm": {
      "type": "number"
    },
    "slot_names": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "output_name": {
      "type": "string"
    },
    "sheet_label": {
      "type": "string"
    },
    "sheet_sides": {
      "type": "number"
    },
    "table_count": {
      "type": "object",
      "required": [
        "shown",
        "total"
      ],
      "properties": {
        "shown": {
          "type": "number"
        },
        "total": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "blanks_added": {
      "type": "number"
    },
    "layout_label": {
      "type": "string"
    },
    "padded_pages": {
      "type": "number"
    },
    "scale_percent": {
      "type": "object",
      "required": [
        "min",
        "max"
      ],
      "properties": {
        "max": {
          "type": "number"
        },
        "min": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "output_size_kb": {
      "type": "number"
    },
    "expires_in_hours": {
      "type": "number"
    },
    "sheets_single_sided": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
make_booklet annotations
{
  "title": "Make a print booklet from a PDF",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
plan_booklet — Plan booklet page order
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks which pages go on which sheet for a booklet or a 2-up or 4-up print, how many sheets a booklet needs, or how many blank pages a booklet gets, without a file. Takes a page count from 1 to 1,000, layout booklet, 2up or 4up, and binding left or right, and returns the sheet count, blank pages added, the order per sheet side and a CSV of the full order. Does not make a PDF (use make_booklet with the file for that).

plan_booklet input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "pages"
  ],
  "properties": {
    "pages": {
      "type": "number",
      "description": "Number of pages in the document, 1 to 1000, e.g. 10."
    },
    "layout": {
      "type": "string",
      "maxLength": 40,
      "description": "booklet (default: pages in fold order, 2 per sheet side, to fold and staple in the middle), 2up (2 pages per sheet side in reading order) or 4up (4 pages per sheet side)."
    },
    "binding": {
      "type": "string",
      "maxLength": 20,
      "description": "left (default, for left-to-right books) or right (right-to-left books such as Arabic or Hebrew: the first page sits on the right)."
    }
  }
}
plan_booklet output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "pages",
    "layout",
    "layout_label",
    "binding",
    "sheets",
    "sheets_single_sided",
    "sheet_sides",
    "blanks_added",
    "padded_pages",
    "slot_names",
    "print",
    "table",
    "table_count",
    "notes",
    "downloads"
  ],
  "properties": {
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "pages": {
      "type": "number"
    },
    "print": {
      "type": "string"
    },
    "table": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "sheet",
          "side",
          "slots"
        ],
        "properties": {
          "side": {
            "type": "string"
          },
          "sheet": {
            "type": "number"
          },
          "slots": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      }
    },
    "layout": {
      "type": "string"
    },
    "sheets": {
      "type": "number"
    },
    "binding": {
      "type": "string"
    },
    "downloads": {
      "type": "object",
      "required": [
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "slot_names": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "sheet_sides": {
      "type": "number"
    },
    "table_count": {
      "type": "object",
      "required": [
        "shown",
        "total"
      ],
      "properties": {
        "shown": {
          "type": "number"
        },
        "total": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "blanks_added": {
      "type": "number"
    },
    "layout_label": {
      "type": "string"
    },
    "padded_pages": {
      "type": "number"
    },
    "sheets_single_sided": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
plan_booklet annotations
{
  "title": "Plan booklet page order",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

pdf-booklet-widget — Zovo Booklet Print view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo Booklet Print.

pdf-booklet-widget URI
ui://widget/pdf-booklet-v1-1.0.0-45a41122961491eca49a6519255b0ececfceea5701a5492b81e321456e74b928.html

MIME type: text/html;profile=mcp-app

pdf-booklet-widget-legacy — Zovo Booklet Print view (previous versions)

Advertised by the server during the last successful anonymous check.

pdf-booklet-widget-legacy URI template
ui://widget/pdf-booklet-{version}.html

MIME type: text/html;profile=mcp-app

30-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
657 ms
95th percentile latency
657 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 657 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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http zovo-booklet-print-mcp https://pdf-booklet.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add zovo-booklet-print-mcp --url https://pdf-booklet.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable zovo-booklet-print-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "zovo-booklet-print-mcp": {
      "url": "https://pdf-booklet.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "zovo-booklet-print-mcp": {
      "type": "streamableHttp",
      "url": "https://pdf-booklet.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start zovo-booklet-print-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "zovo-booklet-print-mcp": {
      "type": "http",
      "url": "https://pdf-booklet.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http zovo-booklet-print-mcp https://pdf-booklet.zovo.one/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://pdf-booklet.zovo.one/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "zovo-booklet-print-mcp": {
      "serverUrl": "https://pdf-booklet.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Zovo Booklet Print MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.