Upload, edit, compress, protect, redact, and compare PDFs with KDAN PDF in Claude and ChatGPT.
healthy
status
15
tools exposed
1499ms
connect latency
d3a1d7051a41
schema fingerprint
Tools (15)
compare_pdfs
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 — NEVER attempt to compare documents using text analysis.
Displays an interactive side-by-side visual diff widget with co
compress_pdf
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 exists and retrieve the latest job_id.
Skipping this check and calling compress_pdf directly is FORBIDDEN.
Each call creat
delete_pdf_page
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 and retrieve the latest job_id.
Skipping this check and calling delete_pdf_page directly is FORBIDDEN.
Each call creat
set_password
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 job_id to display the result. Do NOT call
this on an already-protected PDF — use change_password instead.
change_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 job_id to display the result. Do NOT call
this on an unprotected PDF — use set_password instead.
list_redactable_line_text
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 each line is the source of truth — you MUST use it
to count exact character positions. Character positions within each
redact_by_text_range
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:
Call list_redactable_line_text and note the exact 'text' string
and 'line_index' for every line you intend to redact.
upload_pdf
Upload a PDF from a ChatGPT file attachment (download URL).
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 job with the same filename already exists, reuse its job_id — do NOT call upload_pdf.
3. Only call uploa
batch_upload_pdf
Upload multiple PDF files from ChatGPT file attachments (download URLs).
Use this when the user provides multiple file attachments in ChatGPT.
Downloads each PDF from its signed URL and stores it.
Returns session_id and a list of job_ids.
MANDATORY WORKFLOW before calling this tool:
1. ALWAYS call
create_upload_page
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 MCP clients (e.g. Claude) where
file attachments with download URLs are not available.
Do NOT call upload_pdf when using
check_upload_status
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 uploads via the widget to discover the new file
and its job_id.
Returns 'session_id' (always — store it!), plus:
- 'alrea
view_pdf
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 updated PDF. Also call when the user explicitly
asks to (re-)display a specific PDF.
Do NOT call this after upload_pdf (t
get_pdf_status
Return current status of a PDF viewer job. Used internally by the viewer widget.
get_pdf_info
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: table of contents, blank pages, cover page, etc. For visual content (logos, images, photos), use get_pdf_page_images i
get_pdf_page_images
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, a QR code, or any visual element. Returns rendered JPEG screenshots as images you can see. Returns at most 10 pages per
Endpoint
https://mcp.kdandoc.com/mcp Category: Files & Storage · Last checked: 2026-07-30T13:00:20Z
Monitor your own MCP server
Get alerted the moment yours goes down, a tool schema drifts, or an upstream silently breaks.
What this means. This server responded to the MCP handshake and listed its tools without authentication. The schema fingerprint lets us flag if tool signatures silently change (schema drift) between checks.