mcpserver.lol
registry/kdan-pdf-mcp
Connection check verified live · 20h ago

kdan-pdf-mcp

Upload, edit, compress, protect, redact, and compare PDFs with KDAN PDF in Claude and ChatGPT.

Tools 16
GitHub stars
Installs / wk
Licence
Transport streamable-http
Last checked 20h ago

Tools & capabilities

16 tools

Read from the running server on 20h ago.

batch_upload_pdf pdf_files*session_id
Upload multiple PDF files from ChatGPT file attachments. Use this when the user provides multiple file attachments in ChatGPT. Downloads each PDF from its signed URL and stores it…
change_password owner*job_id*password*session_id*old_password*
Change the password of an already-protected PDF file. Creates a NEW job_id (with parent_job_id linking to the source). After the operation completes, call 'view_pdf' with the new…
check_upload_status read-only session_idpending_filenames
Check existing uploads and determine which files still need uploading. Call this BEFORE upload_pdf or create_upload_page to avoid duplicate uploads. Also call it after the user up…
compare_pdfs read-only job_id_a*job_id_b*session_id*
MANDATORY for all document comparison requests. Compare two PDFs side-by-side. When the user asks to compare, diff, or find differences between two PDFs, you MUST call this tool —…
compress_pdf job_id*session_id*
Compress a PDF to reduce its file size and return a new versioned file. MANDATORY: Before calling this tool, call 'check_upload_status' with the session_id to confirm the file exi…
create_upload_page session_id
Display an interactive PDF upload widget directly in the chat. Use this when the user wants to upload a local PDF file from their device. This is the standard upload method for MC…
delete_pdf_page job_id*session_id*page_numbers*
Delete one or more pages from a PDF and return a new versioned file. MANDATORY: Before calling this tool, call 'check_upload_status' with the session_id to confirm the file exists…
get_latest_comparison read-only session_id*
Re-run the most recent PDF comparison for a session. For widget recovery only. The comparison widget calls this when the host did not hand it the comparison payload. Prefer compar…
get_pdf_info read-only job_id*session_id*
Use this when you need to read the text content of each page to decide which pages to delete. Returns page count and a text preview of every page. Use for text-based identification…
get_pdf_page_images read-only countjob_id*session_id*start_page
Use this when you need to visually inspect PDF pages to identify content that cannot be detected from text alone — for example, pages containing a logo, a photograph, a watermark,…
get_pdf_status read-only job_idsession_id
Return current status of a PDF viewer job. Used internally by the viewer widget.
list_redactable_line_text read-only job_id*session_id*
Return per-page, per-line text for identifying redaction targets. Read-only: does not modify job state. ALWAYS call this before redact_by_text_range. The returned 'text' field for…
redact_by_text_range job_id*content*session_id*
Redact PDF text by specifying the exact text to remove on each line. MANDATORY WORKFLOW — follow every step in order before calling this tool: Step 1 — Retrieve line text: Ca…
set_password owner*job_id*password*session_id*
Add password protection to an unprotected PDF file. Creates a NEW job_id (with parent_job_id linking to the source). After the operation completes, call 'view_pdf' with the new jo…
upload_pdf pdf_file*session_id
Upload a PDF from a ChatGPT file attachment. MANDATORY WORKFLOW — follow EVERY step in order: 1. ALWAYS call check_upload_status FIRST — even if you think the file is new. 2. If a…
view_pdf read-only job_idsession_id
Display an already-uploaded PDF in an interactive viewer widget. Call this after delete_pdf_page, set_password, change_password, redact_pii, and redact_by_text_range to show the u…