PDF Agent MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PDF Agent MCPShow me the outline and search for 'results' in /Users/data/report.pdf"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PDF Agent MCP
🌐 Visit the Landing Page for an overview and easy download
⚠️ Important Setup Instructions
Before using this extension, you MUST configure Claude Desktop properly:
Required Configuration
Install Node.js LTS: Visit nodejs.org and download the LTS version
Configure Claude Desktop:
Go to Claude > Settings > Extensions > Advanced Settings
Disable "Use Built-in Node.js for MCP"
Restart Claude Desktop
This extension will NOT work with Claude's built-in Node.js. You must use your system's Node.js installation.
Troubleshooting
If you experience issues loading the extension:
Verify Node.js is installed: Run
node --versionin your terminalEnsure "Use Built-in Node.js for MCP" is disabled in Claude Desktop settings
Restart Claude Desktop completely
Check the logs at
~/Library/Logs/Claude/mcp-server-PDF Agent MCP.log(macOS) or%LOCALAPPDATA%\Claude\Logs\mcp-server-PDF Agent MCP.log(Windows)
A Model Context Protocol server designed for agentic reading and selective PDF processing. Enables AI systems to efficiently navigate and extract content from PDFs without overwhelming context windows.
Related MCP server: MokuPDF
Features
Metadata Extraction: Get PDF properties, page count, and file information
Text Extraction: Native text extraction with hybrid processing for better results
Image Conversion: Convert PDF pages to optimized images for visual analysis
Content Search: Pattern/regex search with context snippets
Table of Contents: Extract bookmarks and document outline
Flexible Path Support: Use absolute paths or relative paths from
~/pdf-agent/
Usage Guide
PDF Agent MCP solves the common problem of context window overflow when working with PDFs in AI tools.
Important: Do not drag PDFs into the chat - this will load the entire PDF content traditionally and bypass the intelligent processing. Instead, provide file paths or URLs to activate the PDF Agent tools for selective processing.
How to Use
For Local PDFs:
Provide the absolute file path to your PDF
Quick tip: Right-click your PDF → "Open with Chrome" → copy the address bar URL for the absolute path
For Online PDFs:
Simply provide the PDF URL - the agent will download and process it locally
Key Benefits
Selective Reading: The AI first examines metadata and outline, then opens only relevant pages
Token Efficiency: Avoids images when possible, uses them only when necessary for visual analysis
Scalable: Works with large documents (1000+ page textbooks) and multiple PDFs simultaneously
Search Capability: Built-in pattern/regex search across PDF content
Approach
This MCP uses agentic search with simple tools rather than complex alternatives:
No embedding creation, chunking, or vector storage required
No multi-agent coordination or handoff complexity
Just clean, effective tools that modern AI systems can use intelligently
Perfect for researchers, students, and professionals working with extensive PDF libraries.
AI Assistant Prompt for Optimal Usage
Copy this prompt into your AI assistant's custom instructions or context for best results:
When working with PDFs using the PDF Agent MCP tools, follow this strategic approach:
### 1. Query Analysis & PDF Identification
- **Think carefully** about the user's search query and information needs
- **Identify which PDF(s)** are most likely to contain the answer
- Consider the document type, domain, and likely structure based on the query
### 2. Exploratory Phase (Always Start Here)
- **Get metadata** first using `get_pdf_metadata` to understand document size, creation date, and properties
- **Extract table of contents** with `get_pdf_outline` to understand document structure and navigation
- **Analyze the outline** to identify which sections are most relevant to the query
### 3. Strategic Content Extraction
Based on the outline and metadata:
- **Use page ranges** (`"5:10"`, `"20:"`) to focus on specific sections rather than entire documents
- **Extract images** with `get_pdf_images` when visual content is critical (charts, diagrams, tables, equations)
- **Choose text extraction strategy**: `hybrid` (default) for most cases, `native` for clean PDFs, `ocr` for scanned documents
### 4. Advanced Search Strategies
- **Use multiple search queries** with different keywords and synonyms
- **Apply regex patterns** for flexible matching: `/budget|cost|expense/gi` instead of single terms
- **Combine searches**: Start broad, then narrow down with specific terms
- **Use context characters** (150+ chars) to understand search result context
- **Implement early stopping** with `max_results` for large documents
### 5. Iterative Refinement
- **Start with targeted searches** based on outline analysis
- **Follow up with broader searches** if initial queries don't yield results
- **Extract specific page ranges** identified through search results
- **Use visual analysis** (images) when text extraction seems incomplete or when layout matters
### 6. Performance Optimization
- **Avoid processing entire large PDFs** - always use page ranges when possible
- **Use search with early stopping** before extracting large sections
- **Prefer search over full text extraction** for finding specific information
- **Extract images selectively** only when visual analysis is needed
### 7. Multi-Document Workflows
- **Process documents in parallel** when comparing multiple PDFs
- **Use consistent search terms** across documents for comparison
- **Combine results strategically** rather than processing everything at once
### Key Principles:
- **Strategic before comprehensive**: Understand document structure before diving deep
- **Search before extract**: Use pattern matching to locate relevant content first
- **Visual when necessary**: Extract images only when text extraction is insufficient
- **Iterative refinement**: Start targeted, expand scope as needed
- **Context preservation**: Always maintain enough context around search results
This approach maximizes efficiency, minimizes token usage, and provides more accurate, focused results than traditional "dump entire PDF" methods.Installation
Option 1: DXT Package (Recommended)
First, ensure you have completed the Required Configuration above
Download the latest
pdf-agent-mcp.dxtfile from the releasesDouble-click the
.dxtfile to install it in Claude Desktop
Option 2: Manual Installation
First, ensure you have completed the Required Configuration above
Clone this repository
Build the project:
npm install && npm run buildFind your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Add the following:
{
"mcpServers": {
"pdf-agent": {
"command": "node",
"args": [
"PATH_TO_REPO/server/index.js"
]
}
}
}Replace PATH_TO_REPO with the actual path to your cloned repository.
Development
# Install dependencies
npm install
# Build the project
npm run build
# Create DXT package
npm run build:dxt
# Pack the final .dxt file for distribution
dxt packViewing Logs
To debug issues, you can view the MCP server logs:
# View logs (macOS)
open "$HOME/Library/Logs/Claude/mcp-server-PDF Agent MCP.log"
# Stream logs in real-time (macOS)
tail -f "$HOME/Library/Logs/Claude/mcp-server-PDF Agent MCP.log"
# Clear/delete logs (macOS)
rm "$HOME/Library/Logs/Claude/mcp-server-PDF Agent MCP.log"
# View logs (Windows)
notepad "%LOCALAPPDATA%\Claude\Logs\mcp-server-PDF Agent MCP.log"
# Clear/delete logs (Windows)
del "%LOCALAPPDATA%\Claude\Logs\mcp-server-PDF Agent MCP.log"License
MIT
Available Tools
7 toolsdownload_pdfA
Download a PDF from a URL and save it to the PDF agent home directory. Downloads to a specified subfolder (default: 'downloads') and returns the full path of the downloaded PDF.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL of the PDF to download. Must be a valid HTTP/HTTPS URL. | |
| subfolder | No | Subfolder within ~/pdf-agent/ to save the PDF (default: 'downloads'). Will be created if it doesn't exist. | downloads |
| filename | No | Optional filename for the downloaded PDF. If not provided, will be derived from URL. Extension .pdf will be added if missing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions default subfolder and filename extension handling but omits critical behaviors such as overwrite policy, error handling for invalid URLs, or required permissions. For a download tool, more detail is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. Front-loaded with the primary action. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description appropriately states the return value (full path). It also covers home directory and default subfolder. Missing details on size limits, supported protocols, and overwrite policy, but these are secondary for a tool whose siblings are text/metadata extractors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds context about the home directory (~/pdf-agent/) not in the schema. However, it largely restates schema descriptions (e.g., default subfolder, filename extension). No additional semantic depth beyond this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (download a PDF from a URL) and the resource (save to PDF agent home directory), with specific details about subfolder and return path. It effectively distinguishes from sibling tools that focus on extracting content from already-downloaded PDFs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: this tool is a prerequisite for sibling tools. However, there is no explicit guidance on when to use it vs. alternatives, nor any mention of when not to use it (e.g., for non-PDF URLs).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pdf_imagesA
Extract specific pages or page ranges from a PDF as images for visual analysis. Essential for understanding charts, diagrams, tables, figures, mathematical equations, handwritten content, or any visual elements that text extraction cannot capture. Use when you need to see the actual layout, formatting, or visual content. Supports Python-style slicing: '5' (single page), '5:10' (range), '7:' (from page 7 to end), ':5' (from start to page 5). Returns images as base64-encoded data in MCP image format. Use either absolute_path for any location or relative_path for files in ~/pdf-agent/ directory.
| Name | Required | Description | Default |
|---|---|---|---|
| absolute_path | No | Absolute path to the PDF file (e.g., '/Users/john/documents/report.pdf') | |
| relative_path | No | Path relative to ~/pdf-agent/ directory (e.g., 'reports/annual.pdf') | |
| use_pdf_home | No | Use PDF agent home directory for relative paths (default: true) | |
| page_range | No | Page range in enhanced Python-style format: '5' (page 5), '5:10' (pages 5-10), '7:' (page 7 to end), ':5' (start to page 5). Also supports comma-separated combinations: '1,3:5,7' (pages 1, 3-5, and 7), '1-3,7,10:' (pages 1-3, 7, and 10 to end). Default: '1:' (all pages) | 1: |
| format | No | Image format: 'jpeg' (smaller file size) or 'png' (higher quality). Default: 'jpeg' | jpeg |
| quality | No | JPEG quality (1-100) - only applies to JPEG format. Higher = better quality but larger size. Default: 85 | |
| max_width | No | Maximum image width in pixels (100-3000). Images will be resized proportionally if larger. Optional. | |
| max_height | No | Maximum image height in pixels (100-3000). Images will be resized proportionally if larger. Optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses base64 return format, slicing syntax, and path handling. Does not mention potential side effects or performance but is otherwise transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat long but front-loaded with purpose. Each sentence adds value, covering purpose, usage, syntax, and return format. Could be slightly more concise but overall well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains return format. It covers all 8 parameters with default values and syntax. Provides sufficient context for the agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the page_range syntax in detail (including comma-separated combinations) and clarifying the path options, which is beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool extracts specific pages or page ranges from a PDF as images, for visual analysis of charts, diagrams, etc. It distinguishes from text extraction tools and explicitly mentions what it captures that text cannot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use (for visual content), and implies when not to use (use text extraction for text). It gives explicit slicing syntax and path options. Could be more explicit about alternatives but is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pdf_metadataA
Extract metadata and basic information from a PDF file, including page count, file size, creation dates, and document properties. Use either absolute_path for any location or relative_path for files in ~/pdf-agent/ directory.
| Name | Required | Description | Default |
|---|---|---|---|
| absolute_path | No | Absolute path to the PDF file (e.g., '/Users/john/documents/report.pdf') | |
| relative_path | No | Path relative to ~/pdf-agent/ directory (e.g., 'reports/annual.pdf') | |
| use_pdf_home | No | Use PDF agent home directory for relative paths (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It correctly indicates a read-only operation (extract metadata) and implies no side effects. However, it does not mention potential behaviors for edge cases like encrypted PDFs or missing files, which would be useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the action and listing key metadata types. Every sentence adds value without unnecessary words, achieving high efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 3 optional parameters, no output schema, and no annotations, the description adequately covers the tool's purpose and parameter usage. It lists expected return values (page count, file size, etc.) but could mention error handling for invalid paths.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 3 parameters with descriptions, so schema coverage is 100%. The description adds marginal value by explaining when to use each path parameter, but does not enrich beyond the schema's existing detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool extracts metadata and basic information from PDF files, listing specific items like page count, file size, creation dates, and document properties. This clearly distinguishes it from sibling tools that handle downloading, text extraction, or search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on parameter selection: use absolute_path for any location or relative_path for files in ~/pdf-agent/ directory. While it doesn't explicitly state when not to use the tool, the context is sufficient for most use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pdf_outlineA
Extract the table of contents (TOC) or outline/bookmarks structure from a PDF file. Returns hierarchical or flattened list of document sections with titles, page references, and navigation structure. Use either absolute_path for any location or relative_path for files in ~/pdf-agent/ directory.
| Name | Required | Description | Default |
|---|---|---|---|
| absolute_path | No | Absolute path to the PDF file (e.g., '/Users/john/documents/report.pdf') | |
| relative_path | No | Path relative to ~/pdf-agent/ directory (e.g., 'reports/annual.pdf') | |
| use_pdf_home | No | Use PDF agent home directory for relative paths (default: true) | |
| include_destinations | No | Resolve internal destinations to page numbers when possible (default: true) | |
| max_depth | No | Maximum nesting depth to process (1-10). Optional - limits deep hierarchies | |
| flatten_structure | No | Return flat list instead of hierarchical tree structure (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It fully describes the output: hierarchical or flattened list with titles, page references, and navigation structure. No contradictions or omissions of behavioral traits like read/destructive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently deliver the core purpose and key usage guidance. No redundant information, front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description sufficiently describes the return format. It covers the key parameters but could mention edge cases like missing outline. Still, it provides enough for an agent to understand inputs and outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value by explaining the usage of 'absolute_path' vs 'relative_path' in context, and implies the effect of 'flatten_structure' by mentioning both hierarchical and flat outputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool extracts the table of contents/outline/bookmarks from a PDF, which distinguishes it from siblings like get_pdf_text (text extraction) and get_pdf_images (image extraction). The verb 'extract' and resource are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly guides the agent to use 'absolute_path' for any location or 'relative_path' for files in ~/pdf-agent/. This provides clear context on parameter selection, though it lacks explicit when-not-to-use or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pdf_textA
Extract text from specific pages or page ranges of a PDF file using native text extraction. Supports Python-style slicing: '5' (single page), '5:10' (range), '7:' (from page 7 to end), ':5' (from start to page 5). Use either absolute_path for any location or relative_path for files in ~/pdf-agent/ directory. Note: Works best with PDFs containing native text; scanned PDFs may yield limited results.
| Name | Required | Description | Default |
|---|---|---|---|
| absolute_path | No | Absolute path to the PDF file (e.g., '/Users/john/documents/report.pdf') | |
| relative_path | No | Path relative to ~/pdf-agent/ directory (e.g., 'reports/annual.pdf') | |
| use_pdf_home | No | Use PDF agent home directory for relative paths (default: true) | |
| page_range | No | Page range in enhanced Python-style format: '5' (page 5), '5:10' (pages 5-10), '7:' (page 7 to end), ':5' (start to page 5). Also supports comma-separated combinations: '1,3:5,7' (pages 1, 3-5, and 7), '1-3,7,10:' (pages 1-3, 7, and 10 to end). Default: '1:' (all pages) | 1: |
| extraction_strategy | No | Text extraction strategy: 'hybrid' (enhanced native extraction with better error handling), 'native' (standard PDF.js extraction). Default: 'hybrid' | hybrid |
| preserve_formatting | No | Preserve text formatting and spacing (default: true) | |
| line_breaks | No | Preserve line breaks in extracted text (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully carries behavioral disclosure. It details native extraction, Python-style slicing, default page range, and extraction strategy. It also notes the 'hybrid' strategy and preservation options, giving agents a clear understanding of behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, well-structured description: starts with purpose, then gives examples, usage notes, and limitations. Every sentence is informative with no redundancy. Front-loaded with core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameter usage, defaults, limitations, and extraction strategies. Minor gap: no description of output format (e.g., raw text concatenation), but overall sufficient given sibling tools and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3, but description adds significant value beyond schema: explicit Python slicing examples, clarification of absolute vs relative paths, explanation of extraction strategies, and defaults. This greatly aids agent in parameter selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states extraction of text from PDF pages using native text extraction. It specifies the resource (PDF file) and action (extract text), and supports page ranges, distinguishing it from siblings like get_pdf_images or get_pdf_metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use (PDFs with native text) and limitations (scanned PDFs may yield limited results). It explains path options and slicing syntax, but does not explicitly compare to siblings like search_pdf for alternative use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_multiple_pdfsA
Search for text patterns across multiple PDF files in parallel. Processes files concurrently based on the parallelism factor for optimal performance. Increase parallelism (max: 50) to search more files simultaneously and reduce total search time. For large batches of files, prefer a single call with high parallelism rather than multiple smaller calls (e.g., search 100 files with parallelism=50 in one call instead of multiple calls with 20 files each). Returns matches and errors for each file separately.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Array of PDF files to search. Each file must specify either absolute_path or relative_path. | |
| search_pattern | Yes | Search pattern: '/regex/flags' format or plain text. Applied to all files. | |
| parallelism | No | Number of files to process concurrently. Higher values = faster search. Default: 4, Max: 50 | |
| page_range | No | Page range to search in each file. Default: '1:' (all pages) | 1: |
| max_results_per_file | No | Max matches per file before stopping. Optional. | |
| max_pages_scanned_per_file | No | Max pages to scan per file. Optional. | |
| context_chars | No | Characters of context around matches. Default: 150 | |
| search_timeout | No | Timeout per file in milliseconds. Default: 10000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description effectively discloses parallel processing behavior, concurrency limits, and per-file error handling. Adequately covers behavioral expectations for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences with no redundancy. Front-loaded with the main purpose, followed by performance tips and result structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and no output schema, the description covers core behavior, parallelism advice, and result structure (matches and errors). Could elaborate on output format but remains largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds context on parallelism optimization and page range defaults but does not significantly deepen understanding beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches text patterns across multiple PDF files in parallel, distinguishing it from the sibling 'search_pdf' which likely handles single files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on using high parallelism for large batches and preferring single calls over multiple smaller calls. Lacks explicit when-not-to-use, but sibling context implies single-file scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_pdfA
Search for text patterns (including regex) within a PDF file and return matching pages with context snippets. Supports Python-style page ranges and early stopping for performance. Use /pattern/flags format for regex (e.g., '/budget|forecast/gi') or plain text for literal search.
| Name | Required | Description | Default |
|---|---|---|---|
| absolute_path | No | Absolute path to the PDF file (e.g., '/Users/john/documents/report.pdf') | |
| relative_path | No | Path relative to ~/pdf-agent/ directory (e.g., 'reports/annual.pdf') | |
| use_pdf_home | No | Use PDF agent home directory for relative paths (default: true) | |
| page_range | No | Page range in enhanced Python-style format: '5' (page 5), '5:10' (pages 5-10), '7:' (page 7 to end), ':5' (start to page 5). Also supports comma-separated combinations: '1,3:5,7' (pages 1, 3-5, and 7), '1-3,7,10:' (pages 1-3, 7, and 10 to end). Default: '1:' (all pages) | 1: |
| search_pattern | No | Search pattern: '/regex/flags' format (e.g., '/budget|forecast/gi') or plain text for literal search. Required. | |
| max_results | No | Stop after finding this many total matches. Optional - use for quick searches. | |
| max_pages_scanned | No | Stop after scanning this many pages. Optional - use for quick searches. | |
| context_chars | No | Number of characters to include before/after each match for context. Default: 150 | |
| search_timeout | No | Timeout for search operations in milliseconds. Default: 10000 (10 seconds) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description handles transparency. It discloses early stopping behavior and regex format, and implies it is a read-only operation. It could add error handling details but is sufficient for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding unique value: purpose, features, regex syntax. Front-loaded and no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters with full schema descriptions and no output schema, the description covers the main behavior. It could brief the return format, but 'matching pages with context snippets' is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the regex format (/pattern/flags) and early stopping parameters, enhancing understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for searching text patterns (including regex) within a PDF and returning matching pages with context snippets. It distinguishes from siblings like search_multiple_pdfs (multi-PDF) and get_pdf_text (full text extraction).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (searching for patterns) and mentions performance features (early stopping). However, it does not explicitly state when not to use it or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: downloading, metadata extraction, outline extraction, text extraction, image extraction, and searching (single or multiple PDFs). No two tools overlap in functionality.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., download_pdf, get_pdf_metadata, search_pdf). No mixing of conventions.
Seven tools is a well-scoped set for a PDF agent, covering essential operations without being excessive or insufficient for the domain.
The tool set covers core read-only operations (download, metadata, outline, text, images, search). A minor gap is the lack of OCR for scanned PDFs, but overall coverage is strong.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Generate and read PDFs for AI agents: a generate_pdf and a read_pdf tool, priced per document.
Agent-native document parsing: PDF, scans and FR/EU invoices to structured JSON or Markdown.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Parse, extract, split, and ask over digital PDFs (text layer, no OCR) from Cursor and Claude.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to securely read and extract information from PDF files including text content, metadata, and page counts from both local files and URLs within the project context.12,322MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI applications to read and process PDF files with intelligent file search, text extraction, image processing, and optional OCR support for scanned documents.MIT
- AlicenseNot gradedqualityDmaintenanceProvides random access to PDF contents with selective page extraction, text search, outline navigation, image extraction, and page rendering capabilities. Reduces token usage by allowing targeted content extraction instead of processing entire documents.4MIT
- AlicenseAqualityDmaintenanceEnables reading, searching, and metadata extraction from PDF files without loading the entire content into the context window. It provides efficient tools for text cleaning, page-specific extraction, and context-aware search results.3581MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vlad-ds/pdf-agent-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server