Free PDF tools for AI agents: merge, split, rotate, watermark, page numbers, metadata, flatten.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Stamp page numbers onto every page of a PDF. Returns base64.
The PDF file, base64-encoded (max 10 MB)
Font size 6–24, default 12
First number, default 1
Default n
Default bottom-center
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Stamp page numbers onto every page of a PDF. Returns base64.
| Argument | Type | Description |
|---|---|---|
| file* | string | The PDF file, base64-encoded (max 10 MB) |
| size | number | Font size 6–24, default 12 |
| start | number | First number, default 1 |
| format | string | Default n |
| position | string | Default bottom-center |
{
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "The PDF file, base64-encoded (max 10 MB)"
},
"size": {
"type": "number",
"description": "Font size 6–24, default 12"
},
"start": {
"type": "number",
"description": "First number, default 1"
},
"format": {
"enum": [
"n",
"page-n",
"n-of-total"
],
"type": "string",
"description": "Default n"
},
"position": {
"enum": [
"bottom-center",
"bottom-right",
"bottom-left",
"top-center"
],
"type": "string",
"description": "Default bottom-center"
}
}
}Extract the given pages into a new PDF (original order). Returns base64.
| Argument | Type | Description |
|---|---|---|
| file* | string | The PDF file, base64-encoded (max 10 MB) |
| pages* | string | Page list like "2, 5-7" (1-based) |
{
"type": "object",
"required": [
"file",
"pages"
],
"properties": {
"file": {
"type": "string",
"description": "The PDF file, base64-encoded (max 10 MB)"
},
"pages": {
"type": "string",
"description": "Page list like \"2, 5-7\" (1-based)"
}
}
}Flatten fillable form fields into permanent page content so answers can't be edited. Returns base64.
| Argument | Type | Description |
|---|---|---|
| file* | string | The PDF file, base64-encoded (max 10 MB) |
{
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "The PDF file, base64-encoded (max 10 MB)"
}
}
}Read a PDF's document properties (title, author, subject, keywords, creator, producer, dates, page count).
| Argument | Type | Description |
|---|---|---|
| file* | string | The PDF file, base64-encoded (max 10 MB) |
{
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "The PDF file, base64-encoded (max 10 MB)"
}
}
}Merge multiple PDF files into one, in the order given. Returns the merged PDF as base64.
| Argument | Type | Description |
|---|---|---|
| files* | array | 2+ PDFs, base64-encoded, in merge order |
{
"type": "object",
"required": [
"files"
],
"properties": {
"files": {
"type": "array",
"items": {
"type": "string",
"description": "The PDF file, base64-encoded (max 10 MB)"
},
"description": "2+ PDFs, base64-encoded, in merge order"
}
}
}Delete the given pages from a PDF. Returns the remaining document as base64.
| Argument | Type | Description |
|---|---|---|
| file* | string | The PDF file, base64-encoded (max 10 MB) |
| pages* | string | Page list like "2, 5-7" (1-based) |
{
"type": "object",
"required": [
"file",
"pages"
],
"properties": {
"file": {
"type": "string",
"description": "The PDF file, base64-encoded (max 10 MB)"
},
"pages": {
"type": "string",
"description": "Page list like \"2, 5-7\" (1-based)"
}
}
}Rotate pages clockwise by 90, 180, or 270 degrees. Rotates all pages unless a page list is given. Returns base64.
| Argument | Type | Description |
|---|---|---|
| file* | string | The PDF file, base64-encoded (max 10 MB) |
| pages | string | Optional page list like "1, 3"; omit to rotate all |
| degrees* | number |
{
"type": "object",
"required": [
"file",
"degrees"
],
"properties": {
"file": {
"type": "string",
"description": "The PDF file, base64-encoded (max 10 MB)"
},
"pages": {
"type": "string",
"description": "Optional page list like \"1, 3\"; omit to rotate all"
},
"degrees": {
"enum": [
90,
180,
270
],
"type": "number"
}
}
}Rewrite a PDF's document properties. Pass empty strings to strip identifying metadata before sharing. Returns base64.
| Argument | Type | Description |
|---|---|---|
| file* | string | The PDF file, base64-encoded (max 10 MB) |
| title | string | |
| author | string | |
| creator | string | |
| subject | string | |
| keywords | string | Comma-separated |
| producer | string |
{
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "The PDF file, base64-encoded (max 10 MB)"
},
"title": {
"type": "string"
},
"author": {
"type": "string"
},
"creator": {
"type": "string"
},
"subject": {
"type": "string"
},
"keywords": {
"type": "string",
"description": "Comma-separated"
},
"producer": {
"type": "string"
}
}
}Split a PDF into parts. Provide ranges like "1-3, 5, 8-10" (each comma group becomes one output PDF), or omit ranges to get every page as its own PDF. Returns base64 files.
| Argument | Type | Description |
|---|---|---|
| file* | string | The PDF file, base64-encoded (max 10 MB) |
| ranges | string | e.g. "1-3, 5, 8-10"; omit for one file per page |
{
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "The PDF file, base64-encoded (max 10 MB)"
},
"ranges": {
"type": "string",
"description": "e.g. \"1-3, 5, 8-10\"; omit for one file per page"
}
}
}Stamp a diagonal text watermark (e.g. "CONFIDENTIAL", "DRAFT") across every page. Returns base64.
| Argument | Type | Description |
|---|---|---|
| file* | string | The PDF file, base64-encoded (max 10 MB) |
| size | number | Font size in points, 8–200, default 60 |
| text* | string | Watermark text |
| color | string | Default gray |
| opacity | number | 0.02–1, default 0.15 |
{
"type": "object",
"required": [
"file",
"text"
],
"properties": {
"file": {
"type": "string",
"description": "The PDF file, base64-encoded (max 10 MB)"
},
"size": {
"type": "number",
"description": "Font size in points, 8–200, default 60"
},
"text": {
"type": "string",
"description": "Watermark text"
},
"color": {
"enum": [
"gray",
"red",
"blue"
],
"type": "string",
"description": "Default gray"
},
"opacity": {
"type": "number",
"description": "0.02–1, default 0.15"
}
}
}