PDF tools + QR over MCP: merge, split, rotate, text, metadata, malicious-content scan.
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.
PDF metadata: page count, byte size, document info fields.
PDF file content as base64
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
PDF metadata: page count, byte size, document info fields.
| Argument | Type | Description |
|---|---|---|
| file* | string | PDF file content as base64 |
{
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "PDF file content as base64"
}
}
}Merge multiple PDF files (in order) into one PDF. Returns base64 of the merged PDF.
| Argument | Type | Description |
|---|---|---|
| files* | array | PDF file contents as base64, in merge order (2+ files) |
{
"type": "object",
"required": [
"files"
],
"properties": {
"files": {
"type": "array",
"items": {
"type": "string"
},
"description": "PDF file contents as base64, in merge order (2+ files)"
}
}
}Rotate some or all pages of a PDF by 90/180/270 degrees. Returns base64 of the rotated PDF.
| Argument | Type | Description |
|---|---|---|
| file* | string | PDF file content as base64 |
| angle | integer | rotation angle (default 90) |
| pages | string | 1-based page spec like '1-3,5' (default: all pages) |
{
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "PDF file content as base64"
},
"angle": {
"enum": [
90,
180,
270
],
"type": "integer",
"description": "rotation angle (default 90)"
},
"pages": {
"type": "string",
"description": "1-based page spec like '1-3,5' (default: all pages)"
}
}
}Scan a PDF for hostile content: JavaScript, embedded files, Launch/Open actions, XFA forms, encryption. Returns verdict (likely_safe/suspicious/dangerous), risk_score and findings. Static heuristics, NOT an antivirus.
| Argument | Type | Description |
|---|---|---|
| file* | string | PDF file content as base64 |
{
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "PDF file content as base64"
}
}
}Extract selected pages from a PDF. Returns base64 of the extracted PDF.
| Argument | Type | Description |
|---|---|---|
| file* | string | PDF file content as base64 |
| pages | string | 1-based page spec like '1-3,5' (default: all pages) |
{
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "PDF file content as base64"
},
"pages": {
"type": "string",
"description": "1-based page spec like '1-3,5' (default: all pages)"
}
}
}Extract text from a PDF, per page. Pass as_markdown=true for a clean Markdown version with '## Page N' headings.
| Argument | Type | Description |
|---|---|---|
| file* | string | PDF file content as base64 |
| as_markdown | boolean | return Markdown instead of JSON (default false) |
{
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "PDF file content as base64"
},
"as_markdown": {
"type": "boolean",
"description": "return Markdown instead of JSON (default false)"
}
}
}Generate a QR code PNG for a text or URL. Returns base64 PNG (image/png).
| Argument | Type | Description |
|---|---|---|
| size | integer | image size in px, 64-1000 (default 300) |
| text* | string | text or URL to encode |
{
"type": "object",
"required": [
"text"
],
"properties": {
"size": {
"type": "integer",
"description": "image size in px, 64-1000 (default 300)"
},
"text": {
"type": "string",
"description": "text or URL to encode"
}
}
}