fixmypdf

Privacy-first PDF tools over MCP: merge, split, rotate, delete, compress, protect, inspect.

Should I use this

Quality & Safety

A
Description quality
89%
Schema completeness
100%
Naming quality
86%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'merge_pdf' description lacks action verbin merge_pdf
  • LOWTool 'split_pdf' description lacks action verbin split_pdf

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~753Tokens (tool definitions)
~771 BTypical response size
Moderate attention impact (0.59% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "fixmypdf": {
      "url": "https://www.fixmypdfonline.com/api/mcp"
    }
  }
}

Remote endpoints

https://www.fixmypdfonline.com/api/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_pdf_info(pdf)

Read-only. Return a PDF's page count and per-page dimensions (in points). Use this first to plan a split or rotate.

Input Schema

{
  "type": "object",
  "properties": {
    "pdf": {
      "type": "string",
      "description": "The PDF as a base64 string or an https URL."
    }
  },
  "required": [
    "pdf"
  ]
}
⚪merge_pdf(pdfs)

Merge two or more PDFs into one, in the order given. Returns the merged PDF as base64.

Input Schema

{
  "type": "object",
  "properties": {
    "pdfs": {
      "type": "array",
      "minItems": 2,
      "items": {
        "type": "string"
      },
      "description": "Ordered list of PDFs, each a base64 string or https URL."
    }
  },
  "required": [
    "pdfs"
  ]
}
🟢split_pdf(pdf, from, to)

Extract an inclusive, 1-based page range from a PDF into a new PDF. e.g. from=5,to=10 keeps pages 5–10. Returns base64.

Input Schema

{
  "type": "object",
  "properties": {
    "pdf": {
      "type": "string",
      "description": "The PDF as a base64 string or https URL."
    },
    "from": {
      "type": "integer",
      "minimum": 1,
      "description": "First page to keep (1-based, inclusive)."
    },
    "to": {
      "type": "integer",
      "minimum": 1,
      "description": "Last page to keep (1-based, inclusive)."
    }
  },
  "required": [
    "pdf",
    "from",
    "to"
  ]
}
⚪rotate_pdf(pdf, degrees, pages)

Rotate pages of a PDF clockwise by 90, 180, or 270 degrees. Omit "pages" to rotate every page; otherwise pass 1-based page numbers. Returns base64.

Input Schema

{
  "type": "object",
  "properties": {
    "pdf": {
      "type": "string",
      "description": "The PDF as a base64 string or https URL."
    },
    "degrees": {
      "type": "integer",
      "enum": [
        90,
        180,
        270
      ],
      "description": "Clockwise rotation to add."
    },
    "pages": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1
      },
      "description": "Optional 1-based page numbers to rotate; omit for all pages."
    }
  },
  "required": [
    "pdf",
    "degrees"
  ]
}
🔴delete_pages(pdf, pages)

Remove specific pages from a PDF by their 1-based page numbers, keeping the rest in order. Returns base64.

Input Schema

{
  "type": "object",
  "properties": {
    "pdf": {
      "type": "string",
      "description": "The PDF as a base64 string or https URL."
    },
    "pages": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "integer",
        "minimum": 1
      },
      "description": "1-based page numbers to delete."
    }
  },
  "required": [
    "pdf",
    "pages"
  ]
}
⚪compress_pdf(pdf, level)

Reduce a PDF's file size losslessly by consolidating object streams (keeps text selectable). Returns base64 plus before/after sizes. Note: does not re-encode embedded images.

Input Schema

{
  "type": "object",
  "properties": {
    "pdf": {
      "type": "string",
      "description": "The PDF as a base64 string or https URL."
    },
    "level": {
      "type": "string",
      "enum": [
        "light",
        "medium"
      ],
      "description": "medium also strips subject/keywords metadata. Default medium."
    }
  },
  "required": [
    "pdf"
  ]
}
⚪protect_pdf(pdf, password)

Encrypt a PDF with a password (AES). The result requires the password to open. Returns base64.

Input Schema

{
  "type": "object",
  "properties": {
    "pdf": {
      "type": "string",
      "description": "The PDF as a base64 string or https URL."
    },
    "password": {
      "type": "string",
      "minLength": 1,
      "description": "Password required to open the output PDF."
    }
  },
  "required": [
    "pdf",
    "password"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded7 tools