Every tool is callable via the MCP protocol. Parameters marked required must be present; optional parameters may be omitted. All mutation tools accept an optional idempotencyKey.
list_filesFilesReturn all files stored in the authenticated account.
Response
{ id: string; originalname: string; size: number; createdAt: string }[]get_file_urlFilesGet a signed download URL valid for 15 minutes.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the file to get a URL for. |
Response
{ url: string }upload_from_urlFilesFetch a remote PDF by URL and save it to the account. The URL must return Content-Type: application/pdf.
| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | yes | Public URL of a PDF file. |
| filename | string | no | Filename to save as. Defaults to the URL basename. |
| idempotencyKey | string | no | Unique key to prevent duplicate uploads on retry. |
Response
{ fileId: string; originalname: string; size: number }merge_pdfsEditCombine two or more PDFs into a single document in the order given.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileIds | string[] | yes | Ordered array of file IDs to merge. Minimum 2. |
| outputName | string | no | Filename for the merged PDF. |
| idempotencyKey | string | no | Unique key to prevent duplicate merges on retry. |
Response
{ fileId: string; originalname: string; size: number }split_pdfEditExtract page ranges from a PDF into separate output files.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to split. |
| ranges | string | yes | Comma-separated page ranges, e.g. "1-3,4-6,7-10". |
| idempotencyKey | string | no | Unique key to prevent duplicate splits on retry. |
Response
{ fileId: string; originalname: string; size: number }[]compress_pdfEditReduce file size. The quality parameter controls the size/fidelity tradeoff.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to compress. |
| quality | 'low' | 'medium' | 'high' | 'extreme' | no · medium | low = best quality, largest file. extreme = smallest file, most quality loss. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; size: number; originalSize: number; compressionRatio: number }rotate_pagesEditRotate specific pages by 90, 180, or 270 degrees.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to modify. |
| pages | number[] | yes | 1-indexed page numbers to rotate. |
| degrees | 90 | 180 | 270 | yes | Rotation in degrees. 90 = clockwise, 270 = counter-clockwise. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string }reorder_pagesEditRearrange pages by supplying the complete desired page sequence.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to reorder. |
| pageOrder | number[] | yes | Complete new sequence as 1-indexed page numbers, e.g. [3,1,2] puts page 3 first. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; originalPageCount: number; newPageCount: number }delete_pagesEditRemove specific pages. The remaining pages keep their original order.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to edit. |
| pages | number[] | yes | 1-indexed page numbers to remove. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; originalPageCount: number; removedPages: number[]; finalPageCount: number }duplicate_pagesEditDuplicate specific pages, inserting each copy immediately after its original. Supply the complete final page sequence with repeats where you want duplicates -- can also reorder in the same call. Maximum 500 entries.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to duplicate pages in. |
| pageSequence | number[] | yes | Complete final page sequence as 1-indexed page numbers, repeats allowed, e.g. [1,1,2,3]. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; originalPageCount: number; finalPageCount: number; duplicatedCount: number }remove_duplicate_pagesEditAutomatically detect and remove duplicate pages. A page is a duplicate only when its rendered content exactly matches another page -- similar-looking pages with different data are not flagged. The first occurrence is kept.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to clean up. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string | null; originalname: string | null; originalPageCount: number; finalPageCount: number; pagesRemoved: number; nothingToRemove: boolean }remove_empty_pagesEditAutomatically detect and remove blank pages from a PDF.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to clean up. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string | null; originalname: string | null; originalPageCount: number; finalPageCount: number; pagesRemoved: number; nothingToRemove: boolean }edit_metadataEditEdit document metadata. Only the fields provided are changed; at least one is required.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to edit. |
| title | string | no | Document title. |
| author | string | no | Document author. |
| subject | string | no | Document subject. |
| keywords | string | no | Document keywords. |
| creator | string | no | Application that created the original document. |
| producer | string | no | Application that produced the PDF. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; updatedFields: string[] }pdf_to_imagesConvertConvert each page to a separate image file stored in the account. Use get_file_url on each returned fileId to download.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to convert. |
| format | 'png' | 'jpg' | no · png | Output image format. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; page: number }[]pdf_to_wordConvertConvert a PDF into an editable Word document (.docx).
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to convert. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; size: number }word_to_pdfConvertConvert a Word document (.doc or .docx) stored in the account into a PDF.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the Word file to convert. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; size: number }pdf_to_excelConvertConvert a PDF into an Excel spreadsheet (.xlsx), reconstructing the full document content -- form labels, key-value pairs, section titles, and tables -- in reading order on a single sheet. Use extract_tables instead for just the tables.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to convert. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; size: number }extract_tablesConvertExtract only the tables from a PDF into an Excel spreadsheet, one sheet per table. Everything that is not a table is left out. Use pdf_to_excel instead for the full document content.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to extract tables from. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; size: number }pdf_to_powerpointConvertConvert a PDF into an editable PowerPoint presentation (.pptx), one slide per page.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to convert. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; size: number }excel_to_pdfConvertConvert an Excel spreadsheet (.xls or .xlsx) stored in the account into a PDF.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the Excel file to convert. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; size: number }powerpoint_to_pdfConvertConvert a PowerPoint presentation (.ppt or .pptx) stored in the account into a PDF.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PowerPoint file to convert. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; size: number }ocr_pdfConvertMake a scanned or image-based PDF searchable by running OCR on it. Returns a new PDF with a real, selectable text layer; the original file is untouched. Skips OCR automatically if the PDF already has a usable text layer, unless forceOcr is set. Use pdf_to_word instead if you want a Word/Excel output -- it already runs OCR internally.
| Parameter | Type | Required | Description |
|---|---|---|---|
| fileId | string | yes | ID of the PDF to OCR. |
| language | 'eng' | 'spa' | 'por' | 'fra' | 'deu' | 'ind' | 'ara' | 'chi_sim' | 'hin' | 'jpn' | 'kor' | 'rus' | 'ita' | 'tur' | 'nld' | no · eng | Primary language of the document text. |
| forceOcr | boolean | no · false | Force a full OCR re-recognition pass even if the PDF already appears to have a text layer. |
| idempotencyKey | string | no | Unique key to prevent duplicate operations on retry. |
Response
{ fileId: string; originalname: string; size: number; ocrApplied: boolean }