pdfops-mcp
dev.pdfops/pdfops-mcpVersion 0.4.5PDF tools for AI agents: inspect, fill, merge, split, rotate, watermark, protect and invoice PDFs.
Status
Responds4552 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 14:27 UTC
- Latency
- 4552 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 21:12 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://pdfops.dev/api/mcpResponds4552 msNo sign-in
Claude Code
claude mcp add --transport http pdfops-mcp https://pdfops.dev/api/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: pdfops-mcp
Remote MCP server URL: https://pdfops.dev/api/mcpCursor
{
"mcpServers": {
"pdfops-mcp": {
"url": "https://pdfops.dev/api/mcp"
}
}
}VS Code
code --add-mcp '{"name":"pdfops-mcp","type":"http","url":"https://pdfops.dev/api/mcp"}'Streamable HTTP
npm: pdfops-mcp 0.4.5Package only
npm (npx)
claude mcp add pdfops-mcp -- npx -y pdfops-mcp@0.4.5Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
17 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
pdf_delete_pagesRemove the listed pages from a PDF and return the remaining pages in their original order. Use this to drop a cover, blank or sensitive pages; use pdf_extract_pages when it is easier to name the pages to keep. Returns the result inline as an application/pdf resource; the source is never modified. Deleting every page fails with no_pages_left. | No | No | Yes | Yes |
pdf_editStamp text and images (logos, signature images, photos) onto specific pages of an existing PDF at exact positions. Coordinates are PDF points measured from the bottom-left corner of the page as the viewer sees it (1 inch = 72 pt; US Letter is 612 x 792), so stamps land upright on any page size or rotation. Text uses standard fonts (WinAnsi characters only: CJK and emoji fail with unsupported_characters) and can wrap to max_width. Images are PNG or JPEG, up to 2 MB each and 10 distinct images per call (the PDF and all images together must stay under 4.5 MB), given as an https:// URL or a data:image/png;base64,... URI. Barcodes (QR, Data Matrix, PDF417, Aztec, Code 128, Code 39, EAN-13/8, UPC-A, ITF-14, Interleaved 2 of 5, GS1-128) are generated from a value and drawn as vector paths, so they scan at any print size (up to 25 per call). Use pdf_fill for fillable form fields and pdf_watermark for a diagonal stamp on every page. Returns the result inline as an application/pdf resource; the source is never modified. | No | No | Yes | Yes |
pdf_extract_pagesKeep only the listed pages of a PDF, in the order given, and return them as a new PDF. Because order follows the spec, it also reorders pages ("3,1,2") and can duplicate them. Use this to pull a section out of a document; use pdf_delete_pages to remove pages instead, pdf_split for several output files, and pdf_merge to join documents. Returns the result inline as an application/pdf resource; the source is never modified. Fails with invalid_pages if a page is out of range. | No | No | Yes | Yes |
pdf_extract_textRead the text of a born-digital PDF (one made by software: invoices, statements, reports, contracts, forms), page by page, in reading order, plus any tables found from the text layout as rows of cells. Scanned PDFs (images of pages) have no text layer and come back listed in pages_without_text: OCR is not supported. Set include_lines to also get each line with its position in PDF points from the bottom-left of the page as the viewer sees it, the same frame pdf_edit uses, so you can stamp text next to something you found. Up to 200 pages per call; pass pages to read a large document in parts. Read-only: the source is never modified. | No | Yes | Yes | Yes |
pdf_fillFill AcroForm form fields in a PDF and return the result. Field names must exist in the PDF (use pdf_inspect first). All values are strings; checkboxes take "true"/"false"; dropdown/radio/optionlist values must be one of the field's options; text values must respect the field's maxLength from pdf_inspect. The source PDF is never modified. Returns the filled PDF inline as an application/pdf resource. Owner-locked PDFs (empty user password, common for government blanks) fill without a password; a user-password PDF needs the password parameter, otherwise it is rejected with encrypted_pdf. | No | No | Yes | Yes |
pdf_inspectList a PDF's AcroForm form fields — names, types, options, current values, per-field maxLength where declared — plus a paste-ready fillTemplate object for pdf_fill and a hasXFA flag (hybrid AcroForm/XFA inputs lose their XFA layer when filled). A PDF with no fillable form returns count 0. Read-only: the PDF is fetched but never modified. Call this FIRST when filling an unfamiliar PDF, since pdf_fill rejects unknown field names and over-length values. | No | Yes | Yes | Yes |
pdf_invoiceGenerate a complete, professionally laid-out invoice PDF from structured data — no template needed. Deterministic: the same input produces byte-identical output (safe to re-run). Note: without a paid PDFops key the output carries a small "Generated with pdfops.dev" footer line. Returns the invoice inline as an application/pdf resource. Use this when you have invoice DATA and no document; if you already have an invoice PDF or a fillable template to populate, use pdf_fill instead. | No | No | Yes | Yes |
pdf_mergeMerge two or more PDFs into one, in the order given, and return the result. Sources are read only and never modified. Returns the merged PDF inline as an application/pdf resource. This tool only concatenates whole documents: it does not reorder, rotate or delete pages within them, and it does not fill forms — use pdf_fill for a fillable form and pdf_invoice to build a document from data. An unreadable or rejected input fails with an error, so a partial merge is never returned. | No | No | Yes | Yes |
pdf_metadataRead a PDF's document info: page_count, per-page width/height (points) and rotation, title, author, subject, keywords, creator, producer, creation_date, modification_date (ISO 8601, null when absent), whether it was encrypted, and has_form / form_field_count. Call this to learn a document's size and shape before splitting, rotating or filling. Read-only: the PDF is fetched but never modified. | No | Yes | Yes | Yes |
pdf_page_numbersPrint page numbers on a PDF using a format template with {n} (page number) and {total} (page count), e.g. "Page {n} of {total}". Default is "{n} / {total}" at bottom-center, 10 pt. Numbers sit upright for any page size or rotation. Standard Helvetica only (WinAnsi characters). Page i always shows start+i-1 even when pages selects only some pages. Returns the result inline as an application/pdf resource; the source is never modified. | No | No | Yes | Yes |
pdf_protectEncrypt a PDF with a password. user_password is required to open the result; owner_password lifts the permission restrictions. Give at least one (each 1 to 32 Latin-1 chars). permissions lists what stays ALLOWED from print, copy, modify, annotate, fill-forms (default all, except modify when an owner password is set; an empty list allows none). Restrictions only bind viewers when an owner password is set. Not byte-deterministic (random salts). Returns the result inline as an application/pdf resource; the source is never modified. | No | No | No | Yes |
pdf_rotateRotate pages of a PDF clockwise by 90, 180 or 270 degrees (or -90). Rotation adds to each page's existing rotation. Omit pages to rotate every page. Use this to fix sideways scans. Returns the result inline as an application/pdf resource; the source is never modified. | No | No | Yes | Yes |
pdf_set_metadataWrite document info fields (title, author, subject, creator, keywords) into a PDF. Give at least one; an empty string sets an empty value. Unicode is fine. Keywords may be a list or a comma-separated string. The output is saved unencrypted. Use pdf_metadata to read the current values. Returns the result inline as an application/pdf resource; the source is never modified. | No | No | Yes | Yes |
pdf_splitSplit one PDF into several PDFs, either by explicit ranges (each comma group becomes one part: "1-2,3-5" gives two parts) or into fixed-size chunks (every=2 on 5 pages gives 1-2, 3-4, 5). Give exactly one of ranges or every. Returns each part inline as an application/pdf resource plus a structured parts list (pages, page_count, bytes, resource_uri). Limited to 100 parts and about 4 MB of total output; use pdf_extract_pages for a single range. | No | No | Yes | Yes |
pdf_unlockSave a PDF without encryption so print/copy/modify restrictions are gone. Works for owner-locked files (empty user password) with no password, and for user-password files when you pass the password. It does NOT crack unknown passwords: a wrong or missing user password fails with encrypted_pdf. A PDF that was not encrypted is returned re-saved, with note "not-encrypted". Returns the result inline as an application/pdf resource; the source is never modified. | No | No | Yes | Yes |
pdf_watermarkStamp a diagonal text watermark on pages of a PDF (default: centered, 45 degrees, grey, 15% opacity). Text is upright and centered for any page size or existing page rotation. Standard Helvetica only: characters outside WinAnsi (e.g. CJK, emoji) fail with unsupported_characters. Use this for DRAFT / CONFIDENTIAL stamps; use pdf_page_numbers for numbering. Returns the result inline as an application/pdf resource; the source is never modified. | No | No | Yes | Yes |
pdfops_usageCheck the current PDFops API quota for the configured key: tier, limit, used, remaining, the billing period, and the reset timestamp. Read-only and safe to call before a batch to confirm there is headroom. Uses the API key this connection authenticated with. | No | Yes | Yes | Yes |
Details
- Registry status
- Active
- Published
- Nov 12, 2026
- Updated
- Nov 12, 2026
- Categories (suggested)
- DocumentsSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared