Skip to main content
Glama

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

  1. Install Node.js LTS: Visit nodejs.org and download the LTS version

  2. 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:

  1. Verify Node.js is installed: Run node --version in your terminal

  2. Ensure "Use Built-in Node.js for MCP" is disabled in Claude Desktop settings

  3. Restart Claude Desktop completely

  4. 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

  1. First, ensure you have completed the Required Configuration above

  2. Download the latest pdf-agent-mcp.dxt file from the releases

  3. Double-click the .dxt file to install it in Claude Desktop

Option 2: Manual Installation

  1. First, ensure you have completed the Required Configuration above

  2. Clone this repository

  3. Build the project: npm install && npm run build

  4. Find your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %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 pack

Viewing 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 tools
download_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the PDF to download. Must be a valid HTTP/HTTPS URL.
subfolderNoSubfolder within ~/pdf-agent/ to save the PDF (default: 'downloads'). Will be created if it doesn't exist.downloads
filenameNoOptional filename for the downloaded PDF. If not provided, will be derived from URL. Extension .pdf will be added if missing.

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
absolute_pathNoAbsolute path to the PDF file (e.g., '/Users/john/documents/report.pdf')
relative_pathNoPath relative to ~/pdf-agent/ directory (e.g., 'reports/annual.pdf')
use_pdf_homeNoUse PDF agent home directory for relative paths (default: true)
page_rangeNoPage 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:
formatNoImage format: 'jpeg' (smaller file size) or 'png' (higher quality). Default: 'jpeg'jpeg
qualityNoJPEG quality (1-100) - only applies to JPEG format. Higher = better quality but larger size. Default: 85
max_widthNoMaximum image width in pixels (100-3000). Images will be resized proportionally if larger. Optional.
max_heightNoMaximum image height in pixels (100-3000). Images will be resized proportionally if larger. Optional.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
absolute_pathNoAbsolute path to the PDF file (e.g., '/Users/john/documents/report.pdf')
relative_pathNoPath relative to ~/pdf-agent/ directory (e.g., 'reports/annual.pdf')
use_pdf_homeNoUse PDF agent home directory for relative paths (default: true)

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
absolute_pathNoAbsolute path to the PDF file (e.g., '/Users/john/documents/report.pdf')
relative_pathNoPath relative to ~/pdf-agent/ directory (e.g., 'reports/annual.pdf')
use_pdf_homeNoUse PDF agent home directory for relative paths (default: true)
include_destinationsNoResolve internal destinations to page numbers when possible (default: true)
max_depthNoMaximum nesting depth to process (1-10). Optional - limits deep hierarchies
flatten_structureNoReturn flat list instead of hierarchical tree structure (default: false)

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
absolute_pathNoAbsolute path to the PDF file (e.g., '/Users/john/documents/report.pdf')
relative_pathNoPath relative to ~/pdf-agent/ directory (e.g., 'reports/annual.pdf')
use_pdf_homeNoUse PDF agent home directory for relative paths (default: true)
page_rangeNoPage 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_strategyNoText extraction strategy: 'hybrid' (enhanced native extraction with better error handling), 'native' (standard PDF.js extraction). Default: 'hybrid'hybrid
preserve_formattingNoPreserve text formatting and spacing (default: true)
line_breaksNoPreserve line breaks in extracted text (default: true)

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesArray of PDF files to search. Each file must specify either absolute_path or relative_path.
search_patternYesSearch pattern: '/regex/flags' format or plain text. Applied to all files.
parallelismNoNumber of files to process concurrently. Higher values = faster search. Default: 4, Max: 50
page_rangeNoPage range to search in each file. Default: '1:' (all pages)1:
max_results_per_fileNoMax matches per file before stopping. Optional.
max_pages_scanned_per_fileNoMax pages to scan per file. Optional.
context_charsNoCharacters of context around matches. Default: 150
search_timeoutNoTimeout per file in milliseconds. Default: 10000

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
absolute_pathNoAbsolute path to the PDF file (e.g., '/Users/john/documents/report.pdf')
relative_pathNoPath relative to ~/pdf-agent/ directory (e.g., 'reports/annual.pdf')
use_pdf_homeNoUse PDF agent home directory for relative paths (default: true)
page_rangeNoPage 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_patternNoSearch pattern: '/regex/flags' format (e.g., '/budget|forecast/gi') or plain text for literal search. Required.
max_resultsNoStop after finding this many total matches. Optional - use for quick searches.
max_pages_scannedNoStop after scanning this many pages. Optional - use for quick searches.
context_charsNoNumber of characters to include before/after each match for context. Default: 150
search_timeoutNoTimeout for search operations in milliseconds. Default: 10000 (10 seconds)

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

A4.2/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

Seven tools is a well-scoped set for a PDF agent, covering essential operations without being excessive or insufficient for the domain.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI applications to read and process PDF files with intelligent file search, text extraction, image processing, and optional OCR support for scanned documents.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
    4
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    3
    58
    1
    MIT

Latest Blog Posts

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