PDF4me
PYPI · PDF4ME-MCP · 2 COMPONENTS · SCANNED SEP 21
PDF & document automation via the PDF4me API — convert, OCR, extract, edit, secure.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 1 of 23 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency32
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: the license (MIT License) isn't a recognized OSI-approved license. See how to fix → Fail
- Actively maintained (last published 44 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability77
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 14930 tokens (~160/item across 93 items; 92 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage76
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 29% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_blank_pages_from_pdf" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 93 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the PDF4me MCP server?
PDF4me runs locally as a PyPI package, launched with uvx pdf4me-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · pdf4me-mcp
claude mcp add pdf4me-pdf4me-mcp -- uvx pdf4me-mcp
{
"mcpServers": {
"pdf4me-pdf4me-mcp": {
"command": "uvx",
"args": [
"pdf4me-mcp"
]
}
}
} {
"servers": {
"pdf4me-pdf4me-mcp": {
"command": "uvx",
"args": [
"pdf4me-mcp"
]
}
}
} codex mcp add pdf4me-pdf4me-mcp -- uvx pdf4me-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"pdf4me-pdf4me-mcp": {
"type": "local",
"command": [
"uvx",
"pdf4me-mcp"
],
"enabled": true
}
}
} openclaw mcp add pdf4me-pdf4me-mcp --command uvx --arg pdf4me-mcp
mcp_servers:
pdf4me-pdf4me-mcp:
command: "uvx"
args: ["pdf4me-mcp"] {
"McpServers": {
"pdf4me-pdf4me-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"pdf4me-mcp"
]
}
}
} assistant mcp add pdf4me-pdf4me-mcp -t stdio -c uvx -a pdf4me-mcp
{
"mcpServers": {
"pdf4me-pdf4me-mcp": {
"command": "uvx",
"args": [
"pdf4me-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 −3
- Stability: pass → 0.77 functional
- 16 Sept 26 +1
- Stability: 0.97 → pass security
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 −3
- Security disclosure: unverified → fail ▼ functional
- Stability: pass → 0.80 functional
- 9 Sept 26 +1
- Stability: 0.97 → pass security
- Security disclosure: fail → unverified ▼ functional
- 8 Sept 26 −15
- Malware scan: pass → unverified ▼ security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/pdf4me-mcp@1.0.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 23 packages
| Packages resolved | 23 |
|---|---|
| Stale | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
flip_image Flip Image ~84
Flip an image horizontally or vertically via PDF4me /api/v2/FlipImage. Inputs: image_file_path and orientation ('horizontal' or 'vertical'); optional request_doc_name and output path.
| Name | Type | Req | Description |
|---|---|---|---|
| image_file_path | string | yes | – |
| orientation | string | – | – |
| output_dir | – | – | – |
| output_file_name | – | – | – |
| request_doc_name | – | – | – |
No output schema declared.
No examples provided.
generate_document_single Generate Document Single ~252
Generate a single document from a template using PDF4me GenerateDocumentSingle API (POST /api/v2/GenerateDocumentSingle). Supports template file, document data text/file, output type, and async polling.
| Name | Type | Req | Description |
|---|---|---|---|
| document_data_file_path | – | – | Local data file path to send as base64 documentDataFile. |
| document_data_text_path | – | – | Local path to text data (JSON/XML text) for documentDataText. |
| document_data_type | string | yes | One of backend-supported values: Json, XML, or Text (plain text data). |
| file_meta_data | – | – | Optional fileMetaData string. |
| meta_data_json | – | – | Optional metaDataJson string. |
| output_dir | string | yes | Directory to save output (required). |
| output_file_name | string | yes | Output file name (required). |
| output_type | string | yes | One of backend-supported values: PDF, Docx, Html. |
| template_file_name | string | yes | Template file name sent to API. |
| template_file_path | string | yes | Local path to template file (html/docx/pdf/etc). |
| template_file_type | string | yes | One of backend-supported values: Docx, Html, Pdf, MailMerge, GoogleDocs. |
No output schema declared.
No examples provided.
generate_documents_multiple Generate Documents Multiple ~253
Generate multiple documents from one template and data using PDF4me GenerateDocumentMultiple API (POST /api/v2/GenerateDocumentMultiple). Supports async polling on 202; saves each output from outputDocuments[].streamFile.
| Name | Type | Req | Description |
|---|---|---|---|
| document_data_file_path | – | – | Local file read as base64 for documentDataFile. |
| document_data_text_path | – | – | Path to a UTF-8 file whose contents are sent as documentDataText. |
| document_data_type | string | yes | Json or XML. |
| file_meta_data | – | – | Optional fileMetaData string. |
| meta_data_json | – | – | Optional metaDataJson string. |
| output_dir | string | yes | Directory where generated files are written. |
| output_file_name | string | yes | Base output file name; multiple files use name_1.ext, name_2.ext, etc. |
| output_type | string | yes | Desired output format (PDF, Docx, Html, Excel, Word). |
| template_file_name | string | yes | File name for the template in the request. |
| template_file_path | string | yes | Local path to the template file. |
| template_file_type | string | yes | Template kind sent to the API (e.g. Docx, Html, Pdf, Word). |
No output schema declared.
No examples provided.
get_document_from_pdf4me Get Document From Pdf4Me ~75
Subscribe a callback webhook via PDF4me WebhookSubscribe (/api/v2/WebhookSubscribe). Provide callback_url and doc_name. Saves API response as JSON.
| Name | Type | Req | Description |
|---|---|---|---|
| callback_url | string | yes | – |
| doc_name | string | yes | – |
| output_dir | – | – | – |
| output_file_name | string | – | – |
No output schema declared.
No examples provided.
get_image_metadata Get Image Metadata ~87
Extract metadata from a local image using the PDF4me GetImageMetadata API. Provide the file path to a JPG or PNG image. Returns structured metadata JSON including image properties and available EXIF details.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the image file. |
| image_type | string | – | Declared image type for the API payload ("JPG" or "PNG"). |
No output schema declared.
No examples provided.
get_pdf_metadata Get Pdf Metadata ~67
Extract metadata from a local PDF using the PDF4me GetPdfMetadata API. Provide the file path to the PDF. Returns metadata such as title, author, page count, size, dates, and security properties.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the PDF file. |
No output schema declared.
No examples provided.
get_tracking_changes_in_word Get Tracking Changes In Word ~85
Extract tracking changes data from a Word file via PDF4me /api/v2/GetTrackingChangesInWord. Input is a local .docx/.doc file. Saves the API response as JSON (or raw text fallback).
| Name | Type | Req | Description |
|---|---|---|---|
| output_dir | – | – | – |
| output_file_name | – | – | – |
| request_doc_name | – | – | – |
| word_file_path | string | yes | – |
No output schema declared.
No examples provided.
linearize_pdf Linearize Pdf ~125
Linearize a PDF file with the PDF4me API for faster web loading and progressive display. Provide the local file path to the PDF. Choose optimize_profile: web, Max, Print, Default, WebMax, PrintMax, PrintGray, Compress, or CompressMax. Optionally specify an output directory and output file name.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the PDF file to linearize. |
| optimize_profile | string | – | Optimization preset (see PDF4me LinearizePdf docs). |
| output_dir | – | – | – |
| output_file_name | – | – | – |
No output schema declared.
No examples provided.
merge_multiple_pdfs Merge Multiple PDFs ~79
Merge multiple PDF files into one via PDF4me /api/v2/Merge. Inputs: pdf_file_paths (list of local PDFs), optional request_doc_name, and output path.
| Name | Type | Req | Description |
|---|---|---|---|
| output_dir | – | – | – |
| output_file_name | – | – | – |
| pdf_file_paths | array | yes | – |
| request_doc_name | string | – | – |
No output schema declared.
No examples provided.
merge_pdf_overlay Merge PDF Overlay ~87
Overlay one PDF over another via PDF4me /api/v2/MergeOverlay. Inputs: base_pdf_file_path and overlay_pdf_file_path; optional output naming and async mode.
| Name | Type | Req | Description |
|---|---|---|---|
| base_pdf_file_path | string | yes | – |
| output_dir | – | – | – |
| output_doc_name | string | – | – |
| output_file_name | – | – | – |
| overlay_pdf_file_path | string | yes | – |
No output schema declared.
No examples provided.
parse_document Parse Document ~109
Parse a PDF with a PDF4me parse template via ParseDocument (/api/v2/ParseDocument). Requires pdf_file_path, doc_name (or uses PDF basename), parse_id (or auto-generated UUID), and either template_id (GUID) or template_name. Saves parsed_document.json under output_dir.
| Name | Type | Req | Description |
|---|---|---|---|
| output_dir | – | – | – |
| parse_id | – | – | – |
| pdf_file_path | string | yes | – |
| request_doc_name | – | – | – |
| template_id | – | – | – |
| template_name | – | – | – |
No output schema declared.
No examples provided.
process_bank_cheque AI-Process Bank Cheque ~223
AI-Process Bank Cheque: extract structured data from a bank cheque via PDF4me POST /api/v2/ProcessBankCheque (isAsync true: 202 + Location poll until JSON result). Request body uses isAsync (camelCase) and CustomFieldKeys (PascalCase) when custom keys are sent—not the IsAsync/customFieldKeys shape used by AI-Invoice Parser. Provide exactly one of: pdf_file_path (local .pdf/.png/.jpg/.jpeg as Base64) or doc_content (Base64, blob id, or URL per your PDF4me setup). doc_name: logical file name (e.g. cheque.pdf); optional with pdf_file_path (defaults to basename), defaults to 'cheque.pdf' when using doc_content if omitted. Optional custom_field_keys: include only as a non-empty list (property omitted when unused). Saves the full API JSON to process_bank_cheque.json.
| Name | Type | Req | Description |
|---|---|---|---|
| custom_field_keys | – | – | – |
| doc_name | – | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
No output schema declared.
No examples provided.
process_bank_statement AI-Process Bank Statement ~294
AI-Process Bank Statement (processBankStatement): extract structured data via PDF4me POST /api/v2/ProcessBankStatement. JSON uses camelCase isAsync (true), analyzePatterns (boolean, default true), and customFieldKeys (camelCase, not CustomFieldKeys)—omit customFieldKeys when there are no keys. Provide exactly one of pdf_file_path (local .pdf/.png/.jpg/.jpeg) or doc_content (PDF base64, blob id, or URL). doc_name is the logical docName sent to the API (optional with a file path: defaults to basename; with doc_content alone defaults to 'bank_statement.pdf'). Optional bank_name (omitted when empty). Optional custom_field_keys (list) and/or custom_field_keys_csv (comma-separated; trimmed, empty segments dropped)—merged and deduped. Optional profiles string: trimmed empty omits the property; otherwise if it does not start with an opening curly brace or square bracket, the value is wrapped in outer curly braces for custom profiles. Data URL doc_content: prefix before first comma is stripped. 202 + Location poll; saves process_bank_statement.json.
| Name | Type | Req | Description |
|---|---|---|---|
| analyze_patterns | boolean | – | – |
| bank_name | – | – | – |
| custom_field_keys | – | – | – |
| custom_field_keys_csv | – | – | – |
| doc_name | – | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
| profiles | – | – | – |
No output schema declared.
No examples provided.
process_contract AI-Process Contract ~174
AI-Process Contract: extract structured data from a contract via PDF4me POST /api/v2/ProcessContract. Request JSON has only docContent, docName, and IsAsync (must be true); this action does not send customFieldKeys or CustomFieldKeys. Provide exactly one of: pdf_file_path (local .pdf/.png/.jpg/.jpeg as Base64) or doc_content (Base64, blob id, or URL per your PDF4me setup). doc_name: logical file name (e.g. contract.pdf); optional with pdf_file_path (defaults to basename), defaults to 'contract.pdf' when using doc_content if omitted. Async: 202 + Location poll until JSON; saves process_contract.json.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_name | – | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
No output schema declared.
No examples provided.
process_credit_card AI-Process Credit Card ~215
AI-Process Credit Card: extract structured data from a credit card image/PDF via PDF4me POST /api/v2/ProcessCreditCard. Body uses IsAsync (must be true) and CustomFieldKeys (PascalCase) only when custom_field_keys is non-empty—omit CustomFieldKeys when unused. Provide exactly one of: pdf_file_path (local .pdf/.png/.jpg/.jpeg as Base64) or doc_content (Base64 without requiring a PDF prefix—PNG/JPEG etc., blob id, or URL). If doc_content is a data URL (data:...;base64,...), the prefix before the first comma is stripped. doc_name optional with file path (defaults to basename); with doc_content alone defaults to 'credit_card.png'; names without an extension get .png (not .pdf). 202 + Location poll; saves process_credit_card.json.
| Name | Type | Req | Description |
|---|---|---|---|
| custom_field_keys | – | – | – |
| doc_name | – | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
No output schema declared.
No examples provided.
process_health_card AI-Process Health Card ~198
AI-Process Health Card: extract structured data from a health card image/PDF via PDF4me POST /api/v2/ProcessHealthCard. Request JSON is only docContent, docName, and IsAsync (must be true); no customFieldKeys or CustomFieldKeys. Provide exactly one of: pdf_file_path (local .pdf/.png/.jpg/.jpeg as Base64) or doc_content (Base64, blob id, or URL—JPEG and other images are valid; not PDF-only). If doc_content is a data URL (data:...;base64,...), the prefix before the first comma is stripped. doc_name optional with file path (defaults to basename); with doc_content alone defaults to 'health_card.jpeg'; names without an extension get .jpeg. 202 + Location poll; saves process_health_card.json.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_name | – | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
No output schema declared.
No examples provided.
process_invoice AI-Invoice Parser ~213
AI-Invoice Parser: extract structured invoice data from a document via PDF4me POST /api/v2/ProcessInvoice (async: 202 + Location poll until JSON result). Provide exactly one of: pdf_file_path (local .pdf/.png/.jpg/.jpeg read as Base64) or doc_content (Base64 file content, upload blob id, or public URL string—per your PDF4me setup). doc_name: logical document name for the API (e.g. invoice.pdf); optional when using pdf_file_path (defaults to the file basename), required when using doc_content. Optional custom_field_keys: non-empty list of extra field names for the model to extract; omit the parameter when you have no custom keys (empty lists are not sent). Saves the full API JSON to process_invoice.json and returns key fields (invoiceNumber, vendorName, total, success, …).
| Name | Type | Req | Description |
|---|---|---|---|
| custom_field_keys | – | – | – |
| doc_name | – | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
No output schema declared.
No examples provided.
process_marriage_certificate AI-Process Marriage Certificate ~211
AI-Process Marriage Certificate: extract structured data via PDF4me POST /api/v2/ProcessMarriageCertificate. Base body: docContent, docName, IsAsync (true). VerifyAuthenticity is sent only when verify_authenticity is true (property omitted when false). CustomFieldKeys (PascalCase) is sent only when custom_field_keys is a non-empty list. Provide exactly one of: pdf_file_path (local .pdf/.png/.jpg/.jpeg) or doc_content (Base64, data URL—prefix before comma stripped—blob id, or URL; non-PDF images allowed). doc_name optional with file path (basename); with doc_content alone defaults to 'marriage_certificate.pdf'; names without an extension get .pdf. 202 + Location poll; saves process_marriage_certificate.json.
| Name | Type | Req | Description |
|---|---|---|---|
| custom_field_keys | – | – | – |
| doc_name | – | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
| verify_authenticity | boolean | – | – |
No output schema declared.
No examples provided.
process_mortgage_document AI-Process Mortgage Document ~203
AI-Process Mortgage Document: extract structured data via PDF4me POST /api/v2/ProcessMortgageDocument. Uses camelCase isAsync (true), not IsAsync. Body: docContent, docName, isAsync; optional documentType (hint, e.g. loan—omitted when empty); CustomFieldKeys (PascalCase) only when custom_field_keys is non-empty. Exactly one of pdf_file_path (local .pdf only, must be a PDF file) or doc_content (PDF base64, blob id, or URL). For base64 after stripping a data: URL prefix, long base64 payloads must start with 'JVBERi0x'. doc_name optional (basename or mortgage.pdf); 202 + Location poll; saves process_mortgage_document.json.
| Name | Type | Req | Description |
|---|---|---|---|
| custom_field_keys | – | – | – |
| doc_name | – | – | – |
| document_type | – | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
No output schema declared.
No examples provided.
process_order AI-Process Order ~194
AI-Process Order (processOrder): extract structured order data via PDF4me POST /api/v2/ProcessOrder. JSON body: docName, docContent, isAsync (true), and optional profiles only. doc_name is sent as docName as provided or defaulted (basename from pdf_file_path, or 'order.pdf' with doc_content only)—not overwritten by the server. Exactly one of pdf_file_path (local .pdf/.png/.jpg/.jpeg) or doc_content (PDF base64, blob id, or URL). Optional profiles: trim then omit if empty; otherwise if it does not start with an opening curly brace or square bracket, wrap in outer curly braces. Data URL doc_content: strip prefix before first comma. 202 + Location poll; saves process_order.json.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_name | – | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
| profiles | – | – | – |
No output schema declared.
No examples provided.
process_pay_stub AI-Process Pay Stub ~211
AI-Process Pay Stub: extract structured data from a pay stub image/PDF via PDF4me POST /api/v2/ProcessPayStub. Body uses IsAsync (must be true) and CustomFieldKeys (PascalCase) only when custom_field_keys is non-empty—omit CustomFieldKeys when unused. Provide exactly one of: pdf_file_path (local .pdf/.png/.jpg/.jpeg as Base64) or doc_content (Base64 without requiring a PDF prefix—PNG/JPEG etc., blob id, or URL). If doc_content is a data URL (data:...;base64,...), the prefix before the first comma is stripped. doc_name optional with file path (defaults to basename); with doc_content alone defaults to 'pay_stub.png'; names without an extension get .png. 202 + Location poll; saves process_pay_stub.json.
| Name | Type | Req | Description |
|---|---|---|---|
| custom_field_keys | – | – | – |
| doc_name | – | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
No output schema declared.
No examples provided.
process_receipt AI-Process Receipt ~283
AI-Process Receipt (processReceipt): extract structured receipt data via PDF4me POST /api/v2/ProcessReceipt. Body: docName, docContent, analyzeItems, extractMerchantInfo, calculateTotals (all booleans, defaults true), isAsync (true); optional receiptType (omit when empty or 'none'); customFieldKeys camelCase when keys present (list and/or CSV merged); optional profiles (sanitized like other process tools). Exactly one of pdf_file_path or doc_content (PDF base64, blob id, or URL). docName resolution: file path uses basename unless doc_name is set; URL uses last URL path segment when present else doc_name or 'receipt.pdf'; base64/blob uses doc_name or 'receipt.pdf'. receipt_type examples: meal, supplies, hotel, fuel and energy, transportation, communication, subscriptions, entertainment, training, healthcare, generic. Data URL: strip prefix before first comma. 202 + Location poll; saves process_receipt.json.
| Name | Type | Req | Description |
|---|---|---|---|
| analyze_items | boolean | – | – |
| calculate_totals | boolean | – | – |
| custom_field_keys | – | – | – |
| custom_field_keys_csv | – | – | – |
| doc_name | – | – | – |
| extract_merchant_info | boolean | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
| profiles | – | – | – |
| receipt_type | – | – | – |
No output schema declared.
No examples provided.
process_shipping_label AI-Process Shipping Label ~198
AI-Process Shipping Label (processShippingLabel): extract structured data via PDF4me POST /api/v2/ProcessShippingLabel. Body: docName (non-empty), docContent, isAsync (true), optional profiles. docName resolution: binary/file path uses doc_name if set else basename; URL uses trimmed doc_name if provided else last URL path segment (decoded) else falls back to 'shipping_label.pdf'; base64/blob uses doc_name or 'shipping_label.pdf'. Exactly one of pdf_file_path or doc_content (PDF base64, blob id, or URL). Optional profiles: trim, omit if empty; wrap in outer braces when not starting with an opening curly brace or square bracket. Data URL doc_content: strip prefix before first comma. 202 + Location poll; saves process_shipping_label.json.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_name | – | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
| profiles | – | – | – |
No output schema declared.
No examples provided.
process_tax_document AI-Process Tax Document ~268
AI-Process Tax Document (processTaxDocument): extract structured tax data via PDF4me POST /api/v2/ProcessTaxDocument. Body: docName (sent exactly as doc_name—trimmed—or 'tax_document.pdf' if omitted; never replaced by local file basename or URL path in the request), docContent, isAsync (true); optional taxModel (omit when empty or 'none'); customFieldKeys camelCase when keys present (list and/or custom_field_keys_csv merged); optional profiles (sanitized). Exactly one of pdf_file_path or doc_content (PDF base64, blob id, or URL). tax_model examples: W2, 1099, 1099-SSA, 1040, 1040-SR, 1040-NR, 1098, 1098-E, 1098-T, 1095A, 1095C, W-4, UnifiedTaxUS. Data URL doc_content: strip prefix before first comma. 202 + Location poll; saves process_tax_document.json.
| Name | Type | Req | Description |
|---|---|---|---|
| custom_field_keys | – | – | – |
| custom_field_keys_csv | – | – | – |
| doc_name | – | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
| profiles | – | – | – |
| tax_model | – | – | – |
No output schema declared.
No examples provided.
process_universal_document AI - Universal Document Data Extraction ~224
AI - Universal Document Data Extraction (processUniversalDocument): extract named fields via PDF4me POST /api/v2/ProcessUniversalDocument. docName = trimmed inputDocName if set, else doc_name, else 'document.pdf'. inputDocName: file basename, or URL last path segment (decoded) or doc_name, or base64 uses doc_name. fields (required): at least one field name—use fields and/or fields_csv (comma-separated, trimmed). mode: 0 Standard (default) or 1 Strict. isAsync true. Optional documentType (omit if empty); optional profiles (sanitized). Exactly one of pdf_file_path or doc_content (base64, blob id, or URL). Data URL: strip prefix before comma. 202 + Location poll; saves process_universal_document.json.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_name | – | – | – |
| document_type | – | – | – |
| fields | – | – | – |
| fields_csv | – | – | – |
| mode | integer | – | – |
| output_dir | – | – | – |
| pdf_file_path | – | – | – |
| profiles | – | – | – |
No output schema declared.
No examples provided.
protect_pdf Protect Pdf ~113
Password-protect a local PDF using the PDF4me Protect API. Provide the file path, open password, and pdf_permission (for example All). Optionally specify output directory and file name.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the PDF file to protect. |
| output_dir | – | – | – |
| output_file_name | – | – | – |
| password | string | yes | Open password for the protected PDF (required). |
| pdf_permission | string | – | PDF permission profile string (for example All); matches API pdfPermission. |
No output schema declared.
No examples provided.
read_barcodes Read Barcodes ~155
Read barcodes and QR codes from a local PDF using the PDF4me ReadBarcodes API. Provide the file path, barcode types (e.g. all, qrCode, dataMatrix, code128), and pages. Always requests async processing (isAsync true); on HTTP 202 the tool polls the Location URL. Returns structured barcode data as JSON.
| Name | Type | Req | Description |
|---|---|---|---|
| barcode_type | – | – | Barcode type filters sent to the API (defaults to ["all"]). |
| file_path | string | yes | Local path to the PDF file. |
| pages | string | – | Pages expression like "all", "1", "1,3,5", "2-5", "1,3,7-10", "2-". |
No output schema declared.
No examples provided.
read_barcodes_from_image Read Barcodes From Image ~109
Read barcodes and QR codes from a local image using the PDF4me ReadBarcodesfromImage API. Provide the image path and optionally image type (JPG, PNG, GIF, BMP, TIFF, WEBP). (payload key isAsync). Returns structured barcode data as JSON.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the image file. |
| image_type | – | – | Image type passed to API payload. If omitted, inferred from extension (unknown defaults to JPG). |
No output schema declared.
No examples provided.
read_swiss_qr_bill Read Swiss Qr Bill ~63
Read Swiss QR bill data from a local PDF using the PDF4me ReadSwissQRBill API. Provide the file path to the PDF. Returns structured Swiss QR data as JSON.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the PDF file. |
No output schema declared.
No examples provided.
remove_exif_tags_from_image Remove Exif Tags From Image ~131
Remove EXIF metadata tags from a local image using the PDF4me RemoveEXIFTagsFromImage API. Supports sync and async processing with 202 polling. Uses long HTTP timeouts for large uploads and slow jobs. Input supports JPG/PNG; imageType is optional. output_file_name is required; output_dir is optional.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the source image. |
| image_type | – | – | Payload image type ("JPG" or "PNG"). If omitted, inferred from file extension. |
| output_dir | – | – | – |
| output_file_name | string | yes | – |
No output schema declared.
No examples provided.
repair_pdf Repair Pdf ~73
Repair a damaged or problematic PDF using the PDF4me RepairPdf API. Provide the local file path to the PDF. Optionally specify an output directory and output file name.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the PDF file to repair. |
| output_dir | – | – | – |
| output_file_name | – | – | – |
No output schema declared.
No examples provided.
replace_text_with_image Replace Text With Image ~242
Replace occurrences of a text string in a PDF with an image using the PDF4me ReplaceTextWithImage API (POST /api/v2/ReplaceTextWithImage). Provide the PDF path, image path, text to replace, page sequence (e.g. all, 1, 1,3,5, 2-5), and image width/height in pixels. Supports async via isAsync and 202 Location polling. Optional output directory and file name.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the input PDF. |
| image_file_path | string | yes | Local path to the replacement image (e.g. PNG, JPG). |
| image_height | integer | – | Display height of the placed image in pixels (API integer). |
| image_width | integer | – | Display width of the placed image in pixels (API integer). |
| output_dir | – | – | – |
| output_file_name | – | – | – |
| page_sequence | string | – | Pages to search (e.g. "all", "1", "1,3,5", "2-5"). |
| replace_text | string | yes | Literal text in the PDF to replace with the image. |
No output schema declared.
No examples provided.
replace_text_with_image_in_word Replace Text With Image In Word ~218
Replace placeholder text in a Word document with an image using the PDF4me ReplaceTextWithImageInWord API (POST /api/v2/ReplaceTextWithImageInWord). Provide paths to the .docx/.doc file and image, SearchText to find, PageNumbers (e.g. 1 or 1,2), and optional first-page skip. Uses isAsync with 202 Location polling. Saves the modified Word file to disk.
| Name | Type | Req | Description |
|---|---|---|---|
| image_file_path | string | yes | Local path to the replacement image. |
| is_first_page_skip | boolean | – | Maps to IsFirstPageSkip. |
| output_dir | – | – | – |
| output_file_name | – | – | – |
| page_numbers | string | – | Pages to process, as accepted by the API (e.g. "1", "1,2"). |
| search_text | string | yes | Placeholder text in the document to replace (e.g. SIGN_HERE). |
| word_file_path | string | yes | Local path to the Word document (.docx or .doc). |
No output schema declared.
No examples provided.
resize_image Resize Image ~180
Resize a local image using the PDF4me ResizeImage API (Percentage or Specific dimensions). Provide the image path, resize mode, and options (percentage or width/height, aspect ratio). Optional output directory and file name; saves the resized image to disk.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the source image. |
| height | integer | – | Target height in pixels when using Specific mode. |
| image_resize_type | string | – | Percentage (ResizePercentage) or Specific (Width/Height in pixels). |
| maintain_aspect_ratio | boolean | – | Passed through to the API. |
| output_dir | – | – | – |
| output_file_name | – | – | – |
| resize_percentage | string | – | Used when image_resize_type is Percentage (decimal string, e.g. "50.0"). |
| width | integer | – | Target width in pixels when using Specific mode. |
No output schema declared.
No examples provided.
rotate_image Rotate Image ~145
Rotate a local image using the PDF4me RotateImage API. Supports rotation angle, background color, proportionate resize, and async 202 polling. Optional output directory and file name; saves the rotated image to disk.
| Name | Type | Req | Description |
|---|---|---|---|
| background_color | string | – | Fill color behind rotated bounds (e.g. #FFFFFF). Sent as API key Backgroundcolor. |
| file_path | string | yes | Local path to the source image. |
| output_dir | – | – | – |
| output_file_name | – | – | – |
| proportionate_resize | boolean | – | Whether to keep proportions during rotation (API ProportionateResize). |
| rotation_angle | integer | – | Rotation in degrees (integer, e.g. 90). |
No output schema declared.
No examples provided.
rotate_image_by_exif_data Rotate Image By Exif Data ~89
Automatically rotate a local image according to EXIF orientation metadata using the PDF4me RotateImageByExifData API. Supports async 202 polling. Requires output_dir; saves the rotated image under that directory.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the source image. |
| output_dir | string | yes | Directory for the output image (required). |
| output_file_name | – | – | – |
No output schema declared.
No examples provided.
rotate_pdf Rotate Pdf ~110
Rotate all pages of a PDF the same way using the PDF4me Rotate API. Provide the local PDF path and rotationType (NoRotation, Clockwise, CounterClockwise, UpsideDown). Optional output directory and file name.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the PDF file. |
| output_dir | – | – | – |
| output_file_name | – | – | – |
| rotation_type | string | – | How to rotate all pages (NoRotation, Clockwise, CounterClockwise, UpsideDown). |
No output schema declared.
No examples provided.
rotate_pdf_page Rotate Pdf Page ~142
Rotate selected pages of a PDF using the PDF4me RotatePage API. Provide the PDF path, page spec (e.g. "1", "1,3,5", "2-4"), and rotationType. Optional output directory and file name.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the PDF file. |
| output_dir | – | – | – |
| output_file_name | – | – | – |
| page | string | yes | Pages to rotate (e.g. "1", "1,3,5", "2-4"). |
| rotation_type | string | – | Rotation per API (NoRotation, Clockwise, CounterClockwise, UpsideDown). |
No output schema declared.
No examples provided.
sign_pdf Sign Pdf ~309
Add a signature image to a PDF using the PDF4me SignPdf API. Provide paths to the PDF and signature image (e.g. JPG/PNG). Supports page ranges, alignment, size, margins, opacity, and async 202 polling. Optional output directory and file name; saves the signed PDF to disk.
| Name | Type | Req | Description |
|---|---|---|---|
| align_x | string | – | Horizontal alignment (e.g. Left, Center, Right — API may accept any casing). |
| align_y | string | – | Vertical alignment (e.g. Top, Middle, Bottom). |
| file_path | string | yes | Local path to the PDF to sign. |
| height_in_mm | string | – | – |
| height_in_px | string | – | – |
| is_background | boolean | – | Maps to isBackground. |
| margin_x_mm | string | – | – |
| margin_x_px | string | – | – |
| margin_y_mm | string | – | – |
| margin_y_px | string | – | – |
| opacity | string | – | Opacity 0–100 as a string. |
| output_dir | – | – | – |
| output_file_name | – | – | – |
| pages | string | – | Page spec (e.g. "1", "1,3,5", "2-5", "1-3"). |
| show_only_in_print | boolean | – | Maps to showOnlyInPrint. |
| signature_file_path | string | yes | Local path to the signature image file. |
| width_in_mm | string | – | – |
| width_in_px | string | – | – |
No output schema declared.
No examples provided.
split_pdf Split Pdf ~122
Split a PDF via PDF4me SplitPDF (/api/v2/SplitPdf). split_action supports RecurringSplitAfterPage, SplitAfterPage, SplitSequence, SplitRanges. Provide split_action_number for first two, split_sequence for SplitSequence, split_ranges for SplitRanges.
| Name | Type | Req | Description |
|---|---|---|---|
| file_naming | string | – | – |
| output_dir | – | – | – |
| pdf_file_path | string | yes | – |
| request_doc_name | – | – | – |
| split_action | string | yes | – |
| split_action_number | – | – | – |
| split_ranges | – | – | – |
| split_sequence | – | – | – |
No output schema declared.
No examples provided.
split_pdf_by_barcode Split Pdf By Barcode ~145
Split a PDF by barcode text via PDF4me SplitByBarcode (/api/v2/SplitByBarcode). Provide barcode_string, barcode_filter, barcode_type, split_barcode_page, combine_pages_with_same_consecutive_barcodes, and pdf_render_dpi.
| Name | Type | Req | Description |
|---|---|---|---|
| barcode_filter | string | – | – |
| barcode_string | string | yes | – |
| barcode_type | string | – | – |
| combine_pages_with_same_consecutive_barcodes | boolean | – | – |
| output_dir | – | – | – |
| pdf_file_path | string | yes | – |
| pdf_render_dpi | string | – | – |
| request_doc_name | – | – | – |
| split_barcode_page | string | – | – |
No output schema declared.
No examples provided.
split_pdf_by_swiss_qr Split Pdf By Swiss Qr ~174
Split a PDF by Swiss QR via PDF4me SplitPdfByBarcode (/api/v2/SplitPdfByBarcode) (SplitDocBySwissQrCode). pdf_file_path, barcode_string (default SPC), barcode_filter, barcode_type, split_qr_page (before/after), pdf_render_dpi, combine_pages_with_same_barcodes (maps to combinePagesWithSameConsecutiveBarcodes).
| Name | Type | Req | Description |
|---|---|---|---|
| barcode_filter | string | – | – |
| barcode_string | string | – | – |
| barcode_type | string | – | – |
| combine_pages_with_same_barcodes | boolean | – | – |
| output_dir | – | – | – |
| pdf_file_path | string | yes | – |
| pdf_render_dpi | string | – | – |
| request_doc_name | – | – | – |
| split_qr_page | string | – | – |
No output schema declared.
No examples provided.
split_pdf_by_text Split Pdf By Text ~99
Split a PDF by matching text via PDF4me SplitByText (/api/v2/SplitByText). Provide pdf_file_path, text, split_text_page (before/after), and file_naming.
| Name | Type | Req | Description |
|---|---|---|---|
| file_naming | string | – | – |
| output_dir | – | – | – |
| pdf_file_path | string | yes | – |
| request_doc_name | – | – | – |
| split_text_page | string | – | – |
| text | string | yes | – |
No output schema declared.
No examples provided.
unlock_pdf Unlock Pdf ~86
Remove password protection from a local PDF using the PDF4me Unlock API. Provide the file path and the current open password. Optionally specify output directory and file name.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the protected PDF file. |
| output_dir | – | – | – |
| output_file_name | – | – | – |
| password | string | yes | Current open password for the PDF (required). |
No output schema declared.
No examples provided.
update_hyperlink_annotation Update Hyperlink Annotation ~220
Update hyperlink annotations in a PDF using PDF4me UpdateHyperlinkAnnotation API (POST /api/v2/UpdateHyperlinkAnnotation). Provide a local PDF path and all hyperlink update fields (SearchOn, SearchValue, IsExpression, TextCurrentValue, TextNewValue, URLCurrentValue, URLNewValue). Supports async via isAsync and 202 Location polling. Saves the updated PDF to disk.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the input PDF. |
| is_expression | boolean | yes | Whether the search is treated as an expression. |
| output_dir | string | – | – |
| output_file_name | string | – | – |
| search_on | string | yes | Search criteria type (e.g. Text). |
| search_value | string | yes | Value to search for. |
| text_current_value | string | yes | Existing display text to replace. |
| text_new_value | string | yes | New display text. |
| url_current_value | string | yes | Existing hyperlink URL to replace. |
| url_new_value | string | yes | New hyperlink URL destination. |
No output schema declared.
No examples provided.
upload_file Upload File ~73
Upload a local file to PDF4me storage using the UploadFile API (POST /api/v2/UploadFile). Sends payload with docName and docContent (base64). Returns the API response JSON/text (for example uploaded file reference details).
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to any file to upload. |
No output schema declared.
No examples provided.
What is the PDF4me MCP server?
PDF4me is an MCP server listed in the public MCP registry as io.github.pdf4me/pdf4me-mcp. PDF & document automation via the PDF4me API, convert, OCR, extract, edit, secure. This page covers its PyPI package (pdf4me-mcp).
Is the PDF4me MCP server safe to use?
PDF4me scores 62 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the PDF4me MCP server expose?
PDF4me exposes 92 tools: add_attachment_to_pdf, add_barcode_to_pdf, add_form_fields_to_pdf, add_html_header_footer_to_pdf, add_image_stamp_to_pdf, and 87 more. Their descriptions and schemas cost roughly 14,915 tokens of context every time the server is loaded.
Is the PDF4me MCP server still maintained?
PDF4me is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.