pdf_remove_password
Remove password protection from a PDF file to unlock access. Supports URLs and optional password input.
Instructions
Remove password protection from a PDF file.
Ref: https://developer.pdf.co/api-reference/pdf-password/remove.mdInput Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to the source PDF file. Supports publicly accessible links including Google Drive, Dropbox, PDF.co Built-In Files Storage. Use 'upload_file' tool to upload local files. | |
| httpusername | No | HTTP auth user name if required to access source url. (Optional) | |
| httppassword | No | HTTP auth password if required to access source url. (Optional) | |
| password | No | Password of the PDF file to be removed. (Optional) | |
| name | No | File name for the generated output. (Optional) | |
| api_key | No | PDF.co API key. If not provided, will use X_API_KEY environment variable. (Optional) |
Implementation Reference
- pdfco/mcp/tools/apis/security.py:122-158 (handler)MCP tool handler for 'pdf_remove_password'. Defines the input schema (url, httpusername, httppassword, password, name, api_key) as Pydantic Fields, constructs a ConversionParams object, and calls the remove_pdf_password helper.
@mcp.tool() async def pdf_remove_password( url: str = Field( description="URL to the source PDF file. Supports publicly accessible links including Google Drive, Dropbox, PDF.co Built-In Files Storage. Use 'upload_file' tool to upload local files." ), httpusername: str = Field( description="HTTP auth user name if required to access source url. (Optional)", default="", ), httppassword: str = Field( description="HTTP auth password if required to access source url. (Optional)", default="", ), password: str = Field( description="Password of the PDF file to be removed. (Optional)", default="" ), name: str = Field( description="File name for the generated output. (Optional)", default="" ), api_key: str = Field( description="PDF.co API key. If not provided, will use X_API_KEY environment variable. (Optional)", default="", ), ) -> BaseResponse: """ Remove password protection from a PDF file. Ref: https://developer.pdf.co/api-reference/pdf-password/remove.md """ params = ConversionParams( url=url, httpusername=httpusername, httppassword=httppassword, password=password, name=name, ) return await remove_pdf_password(params, api_key=api_key) - pdfco/mcp/services/pdf.py:109-112 (helper)Helper function 'remove_pdf_password' that makes the actual API request to 'pdf/security/remove' endpoint via the PDFCoClient.
async def remove_pdf_password( params: ConversionParams, api_key: str | None = None ) -> BaseResponse: return await request("pdf/security/remove", params, api_key=api_key) - pdfco/mcp/tools/apis/security.py:1-4 (registration)Imports: mcp server instance (used for @mcp.tool() decorator which registers the tool), the remove_pdf_password helper, and BaseResponse/ConversionParams models.
from pdfco.mcp.server import mcp from pdfco.mcp.services.pdf import add_pdf_password, remove_pdf_password from pdfco.mcp.models import BaseResponse, ConversionParams - pdfco/mcp/models.py:13-52 (schema)ConversionParams schema model used by the handler to construct the request payload (url, httpusername, httppassword, password, name, etc.).
class ConversionParams(BaseModel): url: str = Field( description="URL to the source file. Supports publicly accessible links including Google Drive, Dropbox, PDF.co Built-In Files Storage. Use 'upload_file' tool to upload local files.", default="", ) httpusername: str = Field( description="HTTP auth user name if required to access source url. (Optional)", default="", ) httppassword: str = Field( description="HTTP auth password if required to access source url. (Optional)", default="", ) pages: str = Field( description="Comma-separated page indices (e.g., '0, 1, 2-' or '1, 3-7'). Use '!' for inverted page numbers (e.g., '!0' for last page). Processes all pages if None. (Optional)", default="", ) unwrap: bool = Field( description="Unwrap lines into a single line within table cells when lineGrouping is enabled. Must be true or false. (Optional)", default=False, ) rect: str = Field( description="Defines coordinates for extraction (e.g., '51.8,114.8,235.5,204.0'). (Optional)", default="", ) lang: str = Field( description="Language for OCR for scanned documents. Default is 'eng'. See PDF.co docs for supported languages. (Optional, Default: 'eng')", default="eng", ) line_grouping: str = Field( description="Enables line grouping within table cells when set to '1'. (Optional)", default="0", ) password: str = Field( description="Password of the PDF file. (Optional)", default="" ) name: str = Field( description="File name for the generated output. (Optional)", default="" ) autosize: bool = Field( - pdfco/mcp/models.py:5-10 (schema)BaseResponse schema model returned by the tool (status, content, credits_used, credits_remaining, tips).
class BaseResponse(BaseModel): status: str content: Any credits_used: int | None = None credits_remaining: int | None = None tips: str | None = None