doc-ops-mcp
Uses Cheerio for HTML parsing and manipulation during document conversion operations
Provides containerized deployment options with Docker and Docker Compose configurations for running the document processing server
Enforces code quality standards and linting rules in the development workflow
Supports version control workflow for contributing to the project and managing source code
Hosts the project repository and provides issue tracking for bug reports and feature requests
Built with pure JavaScript architecture for document processing without external system dependencies
Provides comprehensive Markdown document processing including conversion to PDF, HTML, and DOCX formats with theme support
Optionally integrates with Nginx as a reverse proxy for production Docker deployments
Requires Node.js runtime environment (≥18.0.0) for executing the document processing server
Distributes the package through npm registry and uses npm packages for core document processing functionality
Supports installation and package management using pnpm as an alternative to npm
Displays project status badges for npm version, license, and download statistics
Handles SVG graphics processing as part of document conversion and formatting operations
Developed using TypeScript for type safety and follows TypeScript coding standards for contributions
Uses XML parsing capabilities through xml2js and custom OOXML parser for advanced DOCX style preservation
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., "@doc-ops-mcpconvert my report.docx to PDF with a watermark"
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.
Document Operations MCP Server
Document Operations MCP Server - A universal MCP server for document processing, conversion, and automation. Handle PDF, DOCX, HTML, Markdown, and more through a unified API and toolset.
Demo
Video
https://github.com/user-attachments/assets/43dfeeec-8097-413e-8519-a7de98e31136
In this demo, we showcase how to:
Configure doc-ops-mcp in MCP clients
Convert DOCX documents to PDF format
Add default watermarks to converted PDF files
Related MCP server: document-reader-mcp
Table of Contents
1. Quick Start
First, add the Document Operations MCP server to your MCP client.
Standard config works in most MCP clients:
{
"mcpServers": {
"doc-ops-mcp": {
"command": "npx",
"args": ["-y", "doc-ops-mcp"],
"env": {
"OUTPUT_DIR": "/path/to/your/output/directory",
"CACHE_DIR": "/path/to/your/cache/directory",
}
}
}
}Follow the MCP install guide, use the standard config above.
Follow the MCP install guide, use the standard config above.
Go to Cursor Settings -> MCP -> Add new MCP Server. Name to your liking, use command type with the command npx -y doc-ops-mcp.
For other MCP clients, use the standard config above and refer to your client's documentation for MCP server installation.
Configuration
The Document Operations MCP server supports configuration through environment variables. These can be provided in the MCP client configuration as part of the "env" object:
{
"mcpServers": {
"doc-ops-mcp": {
"command": "npx",
"args": ["-y", "doc-ops-mcp"],
"env": {
"OUTPUT_DIR": "/path/to/your/output/directory",
"CACHE_DIR": "/path/to/your/cache/directory",
"WATERMARK_IMAGE": "/path/to/watermark.png",
"QR_CODE_IMAGE": "/path/to/qrcode.png"
}
}
}
}Supported Document Operations
Format | Convert to PDF | Convert to DOCX | Convert to HTML | Convert to Markdown | Content Rewriting | Watermark/QR Code |
✅ | ❌ | ❌ | ❌ | ❌ | ✅ | |
DOCX | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
HTML | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ |
Markdown | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Rewriting Features:
Content Replacement: Support batch text replacement and regular expression replacement
Format Adjustment: Modify document structure, heading levels, and style formatting
Smart Rewriting: Content optimization while preserving original document format
Usage Examples
Format Conversion:
Convert /Users/docs/report.docx to PDF
Convert /Users/docs/article.md to HTML
Convert /Users/docs/presentation.html to DOCX
Convert /Users/docs/readme.md to PDF (with theme styling)Document Rewriting:
Rewrite company names in /Users/docs/contract.md
Batch replace terminology in /Users/docs/manual.docx
Adjust heading levels in /Users/docs/article.html
Update dates and version numbers in /Users/docs/policy.mdPDF Enhancement:
Add watermark to /Users/docs/document.pdf
Add QR code to /Users/docs/report.pdf
Add company logo watermark to /Users/docs/invoice.pdfEnvironment Variables
The server supports environment variables for controlling output paths and PDF enhancement features:
Core Directories
OUTPUT_DIR: Controls where all generated files are saved (default:~/Documents)CACHE_DIR: Directory for temporary and cache files (default:~/.cache/doc-ops-mcp)
PDF Enhancement Features
WATERMARK_IMAGE: Default watermark image path for PDF filesAutomatically added to all PDF conversions
Supported formats: PNG, JPG
If not set, default text watermark "doc-ops-mcp" will be used
QR_CODE_IMAGE: Default QR code image path for PDF filesAdded to PDFs only when explicitly requested (
addQrCode=true)Supported formats: PNG, JPG
If not set, QR code functionality will be unavailable
Output Path Rules:
If
outputPathis not provided → files saved toOUTPUT_DIRwith auto-generated namesIf
outputPathis relative → resolved relative toOUTPUT_DIRIf
outputPathis absolute → used as-is, ignoringOUTPUT_DIR
See OUTPUT_PATH_CONTROL.md for detailed documentation.
2. System Architecture
Document Operations MCP Server adopts a pure JavaScript architecture design, providing complete document processing capabilities:
┌─────────────────────────────────────────────────────────────┐
│ MCP Client Layer │
│ (Claude Desktop, Cursor, VS Code, etc.) │
└─────────────────────┬───────────────────────────────────────┘
│ JSON-RPC 2.0
┌─────────────────────┴───────────────────────────────────────┐
│ Doc-Ops-MCP Server │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Tool Router │ │ Request │ │ Response │ │
│ │ & Handler │ │ Validator │ │ Formatter │ │
│ └────────┬────────┘ └────────┬────────┘ └──────┬──────┘ │
│ │ │ │ │
│ ┌────────┴────────────────────┴──────────────────┴─────┐ │
│ │ Document Processing Engine │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Document │ │ Format │ │ Style │ │ │
│ │ │ Reader │ │ Converter │ │ Processor │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ PDF │ │ Watermark/ │ │ Conversion │ │ │
│ │ │ Enhancement │ │ QR Code │ │ Planner │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
└────┴───────────────────────────────────────────────────────┴─┘
│
┌───────────────────────────┴─────────────────────────────────┐
│ Core Dependencies Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ pdf-lib │ │word-extractor│ │ marked │ │
│ │ (PDF Tools) │ │(DOCX Reader)│ │ (Markdown) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ cheerio │ │ jszip │ │ docx │ │
│ │(HTML Parser)│ │(ZIP Handler)│ │(DOCX Gen.) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ xml2js │ │Custom OOXML │ │
│ │(XML Parser) │ │ Parser │ │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘Architecture Overview
Core Features:
Pure JavaScript implementation with no external system dependencies
Complete document reading, conversion, and style processing capabilities
Built-in PDF watermark and QR code addition functionality
Intelligent conversion planning and path optimization
Conversion Flow:
Direct Conversion: Supports direct conversion between most formats
Multi-step Conversion: Complex conversions achieved through intermediate formats
Style Preservation: Uses OOXML parser to ensure complete style integrity
3. Optional Integration
This server can work with playwright-mcp for enhanced PDF conversion capabilities. Please refer to the official playwright-mcp documentation for detailed configuration.
🔧 PDF Conversion Workflow
This server supports complete PDF conversion functionality:
Document Parsing: Use OOXML parser to ensure complete style preservation
Format Conversion: Convert documents to high-quality HTML format
PDF Generation: Built-in converter or optionally work with
playwright-mcpEnhancement Processing: Automatically add watermarks and QR codes (if configured)
How It Works
This server uses intelligent conversion architecture:
Smart Planning:
plan_conversionanalyzes conversion requirements and selects optimal pathsFormat Conversion: Use specialized converters to handle various document formats
Style Preservation: Ensure style integrity through OOXML parser
Enhancement Processing: Automatically add watermarks, QR codes and other enhancements
Optional Integration: Support working with
playwright-mcpfor enhanced capabilities
4. Features
MCP Tools
Core Document Tools
Tool Name | Description | Input Parameters | External Dependencies |
| Read document content |
| None |
| Write document content |
| None |
| Smart document conversion |
| None |
| Conversion planner |
| None |
read_document
Read various document formats including PDF, DOCX, DOC, HTML, MD, and more.
Parameters:
filePath(string, required) - Document path to readextractMetadata(boolean, optional) - Extract document metadata, defaults tofalsepreserveFormatting(boolean, optional) - Preserve formatting (HTML output), defaults tofalse
write_document
Write content to document files in specified formats.
Parameters:
content(string, required) - Content to writeoutputPath(string, optional) - Output file path (auto-generated if not provided)encoding(string, optional) - File encoding, defaults toutf-8
convert_document
Convert documents between formats with enhanced style preservation.
Parameters:
inputPath(string, required) - Input file pathoutputPath(string, optional) - Output file path (auto-generated if not provided)preserveFormatting(boolean, optional) - Preserve formatting, defaults totrueuseInternalPlaywright(boolean, optional) - Use built-in Playwright for PDF conversion, defaults tofalse
convert_docx_to_pdf
Convert DOCX to PDF with automatic watermark addition (if configured).
Parameters:
docxPath(string, required) - DOCX file pathoutputPath(string, optional) - Output PDF path (auto-generated if not provided)addQrCode(boolean, optional) - Whether to add QR code, defaults tofalsepreserveFormatting(boolean, optional) - Preserve original formatting, defaults totruechineseFont(string, optional) - Chinese font, defaults toMicrosoft YaHei
convert_markdown_to_pdf
Convert Markdown to PDF with automatic watermark addition (if configured).
Parameters:
markdownPath(string, required) - Markdown file pathoutputPath(string, optional) - Output PDF path (auto-generated if not provided)theme(string, optional) - Theme style, defaults to"github"includeTableOfContents(boolean, optional) - Include table of contents, defaults tofalseaddQrCode(boolean, optional) - Whether to add QR code, defaults tofalse
convert_markdown_to_html
Convert Markdown to HTML.
Parameters:
markdownPath(string, required) - Markdown file pathoutputPath(string, optional) - Output HTML path (auto-generated if not provided)theme(string, optional) - Theme style, defaults to"github"includeTableOfContents(boolean, optional) - Include table of contents, defaults tofalse
convert_markdown_to_docx
Convert Markdown to DOCX.
Parameters:
markdownPath(string, required) - Markdown file pathoutputPath(string, optional) - Output DOCX path (auto-generated if not provided)
convert_html_to_markdown
Convert HTML to Markdown.
Parameters:
htmlPath(string, required) - HTML file pathoutputPath(string, optional) - Output Markdown path (auto-generated if not provided)
plan_conversion
🎯 Smart Conversion Planner - Analyze conversion requirements and generate optimal conversion plans.
Parameters:
sourceFormat(string, required) - Source file format (pdf, docx, html, markdown, md, txt, doc)targetFormat(string, required) - Target file format (pdf, docx, html, markdown, md, txt, doc)sourceFile(string, optional) - Source file path (for generating specific conversion parameters)preserveStyles(boolean, optional) - Whether to preserve style formatting, defaults totrueincludeImages(boolean, optional) - Whether to include images, defaults totruetheme(string, optional) - Conversion theme, defaults togithubquality(string, optional) - Conversion quality requirement (fast, balanced, high), defaults tobalanced
process_pdf_post_conversion
Parameters:
playwrightPdfPath(string, required) - Generated PDF file pathtargetPath(string, optional) - Target PDF file path (auto-generated if not provided)addWatermark(boolean, optional) - Whether to add watermark, defaults tofalseaddQrCode(boolean, optional) - Whether to add QR code, defaults tofalsewatermarkImage(string, optional) - Watermark image pathqrCodePath(string, optional) - QR code image path
PDF Enhancement Tools
add_watermark
🎨 PDF Watermark Addition Tool - Add image or text watermarks to PDF documents.
Parameters:
pdfPath(string, required) - PDF file pathwatermarkImage(string, optional) - Watermark image path (PNG/JPG)watermarkText(string, optional) - Watermark text contentwatermarkImageScale(number, optional) - Image scale ratio, defaults to0.25watermarkImageOpacity(number, optional) - Image opacity, defaults to0.6watermarkImagePosition(string, optional) - Image position, defaults tofullscreen
add_qrcode
📱 PDF QR Code Addition Tool - Add QR codes to PDF documents.
Parameters:
pdfPath(string, required) - PDF file pathqrCodePath(string, optional) - QR code image pathqrScale(number, optional) - QR code scale ratio, defaults to0.15qrOpacity(number, optional) - QR code opacity, defaults to1.0qrPosition(string, optional) - QR code position, defaults tobottom-centeraddText(boolean, optional) - Whether to add explanatory text, defaults totrue
System Requirements
System Requirements
Node.js ≥ 18.0.0
Zero external system dependencies - All processing via npm packages
Optional Integration: playwright-mcp for enhanced PDF conversion
Core Technology Stack
pdf-lib - PDF operations and enhancement
word-extractor - DOCX document text extraction
marked - Markdown parsing and rendering
cheerio - HTML parsing and manipulation
docx - DOCX document generation
jszip - ZIP file processing
xml2js - XML parsing and conversion
Custom OOXML Parser - Advanced DOCX style preservation
Installation
# Global installation
npm install -g doc-ops-mcp
# Or using pnpm
pnpm add -g doc-ops-mcp
# Or using bun
bun add -g doc-ops-mcpArchitecture Components
MCP Server Core: Handles JSON-RPC 2.0 communication and tool registration
Smart Router: Routes requests to optimal processing modules
Conversion Engine: Contains specialized converters for different document types
Style Processor: Ensures style preservation during format conversion
Security Module: Provides path validation and content security handling
5. Open Source Licenses
Project License
This Project: MIT License
Compatibility: Available for commercial and non-commercial use
Third-Party Dependencies
Library | Version | License | Purpose |
pdf-lib | ^1.17.1 | MIT | PDF document manipulation |
word-extractor | ^1.0.4 | MIT | DOCX document text extraction |
marked | ^15.0.12 | MIT | Markdown parsing and rendering |
cheerio | ^1.0.0-rc.12 | MIT | HTML parsing and manipulation |
docx | ^9.5.1 | Apache-2.0 | DOCX document generation |
jszip | ^3.10.1 | MIT | ZIP file processing |
xml2js | ^0.6.2 | MIT | XML parsing and conversion |
License Compatibility
✅ Commercial Use: All dependencies support commercial use
✅ Distribution: Free to distribute and modify
✅ Patent Protection: Apache-2.0 provides patent protection
⚠️ Notice: Original license notices must be retained
6. Future Roadmap
Core Features
🔄 Enhanced Conversion Quality: Improve style preservation for complex documents
📊 Excel Support: Complete Excel read/write and conversion functionality
🎨 Template System: Support for custom document templates
🔍 OCR Integration: Image text recognition capabilities
System Improvements
🌐 Multi-language Support: Internationalization and localization
🔐 Security Enhancements: Document encryption and access control
⚡ Performance Optimization: Large file handling and memory optimization
🔌 Plugin System: Extensible processor architecture
Version Roadmap
v2.0: Complete Excel support and template system
v3.0: OCR integration and multi-language support
v4.0: Advanced security features and plugin system
7. Docker Deployment
Quick Start
Using Pre-built Image
# Pull the latest image
docker pull docops/doc-ops-mcp:latest
# Run with default configuration
docker run -d \
--name doc-ops-mcp \
-p 3000:3000 \
docops/doc-ops-mcp:latestBuilding from Source
# Clone the repository
git clone https://github.com/JefferyMunoz/doc-ops-mcp.git
cd doc-ops-mcp
# Build the Docker image
docker build -t doc-ops-mcp .
# Run the container
docker run -d \
--name doc-ops-mcp \
-p 3000:3000 \
-v $(pwd)/documents:/app/documents \
doc-ops-mcpDocker Compose Deployment
Create a docker-compose.yml file:
version: '3.8'
services:
doc-ops-mcp:
image: docops/doc-ops-mcp:latest
container_name: doc-ops-mcp
ports:
- "3000:3000"
volumes:
- ./documents:/app/documents
- ./config:/app/config
environment:
- NODE_ENV=production
- PORT=3000
restart: unless-stopped
# Optional: Add Nginx for reverse proxy
nginx:
image: nginx:alpine
container_name: doc-ops-nginx
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- doc-ops-mcp
restart: unless-stoppedEnvironment Variables
Variable | Description | Default |
| Server port |
|
| Environment mode |
|
| Logging level |
|
| Maximum file size (MB) |
|
Volume Mounts
Mount local directories for persistent storage:
# Documents directory for file processing
docker run -d \
--name doc-ops-mcp \
-p 3000:3000 \
-v $(pwd)/documents:/app/documents \
-v $(pwd)/output:/app/output \
doc-ops-mcpDocker Configuration Examples
Production Deployment
# Production setup with Docker Swarm
docker swarm init
docker stack deploy -c docker-compose.yml doc-ops
# Scale the service
docker service scale doc-ops_mcp=3Health Checks
The container includes built-in health checks:
# Check container health
docker ps
# View health check logs
docker inspect --format='{{.State.Health.Status}}' doc-ops-mcp
# Manual health check
docker exec doc-ops-mcp curl -f http://localhost:3000/health || exit 18. Development Guide
Local Development
# Clone the repository
git clone https://github.com/your-org/doc-ops-mcp.git
cd doc-ops-mcp
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build the project
npm run build
# Run tests
npm testProject Structure
src/
├── index.ts # MCP server entry point
├── tools/ # Tool implementations
│ ├── documentConverter.ts
│ ├── pdfTools.ts
│ └── ...
├── types/ # Type definitions
└── utils/ # Utility functionsAdding New Tools
Create a new tool file in
src/tools/Implement the tool logic
Register the tool in
src/index.tsAdd test cases
Update documentation
9. Troubleshooting
Common Issues
Port conflicts: Change the host port in docker-compose.yml
Permission issues: Ensure volume mounts have correct permissions
Memory issues: Increase Docker memory allocation
Debug Mode
# Run with debug logging
docker run -d \
--name doc-ops-mcp \
-p 3000:3000 \
-e LOG_LEVEL=debug \
doc-ops-mcp
# View logs
docker logs -f doc-ops-mcp10. Contributing
How to Contribute
Fork the Project
Create a Feature Branch (
git checkout -b feature/AmazingFeature)Commit Your Changes (
git commit -m 'Add some AmazingFeature')Push to the Branch (
git push origin feature/AmazingFeature)Open a Pull Request
Intellectual Property License
By submitting a Pull Request, you agree that all contributions submitted through Pull Requests will be licensed under the MIT License. This means:
You grant the project maintainers and users the right to use, modify, and distribute your contributions under the MIT License
You confirm that you have the right to make these contributions
You understand that your contributions will become part of the open source project
You waive any claims to exclusive ownership of the contributed code
If you cannot agree to these terms, please do not submit a Pull Request.
Code Standards
Use TypeScript
Follow ESLint configuration
Add appropriate tests
Update relevant documentation
Reporting Issues
Use GitHub Issues
Provide detailed error information and reproduction steps
Include system environment information
License
This project is licensed under the MIT License - see the LICENSE file for details.
Available Tools
13 toolsadd_qrcodeB
Add QR code to PDF documents with friendly text below. QR code must be an image file (PNG/JPG). Priority: user provided path > environment variable QR_CODE_IMAGE
| Name | Required | Description | Default |
|---|---|---|---|
| pdfPath | Yes | PDF file path | |
| qrCodePath | No | QR code image path (PNG/JPG). Has highest priority. If not provided, uses QR_CODE_IMAGE environment variable. | |
| qrScale | No | QR code scale ratio | |
| qrOpacity | No | QR code opacity | |
| qrPosition | No | bottom-center | |
| addText | No | Add friendly text below QR code | |
| customText | No | Custom text (default: 'Scan QR code for more information') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the priority rule for QR code paths, which is useful context, but lacks critical behavioral details: it doesn't specify whether this operation modifies the original PDF or creates a new file, what permissions or prerequisites are needed, potential side effects, or error handling. For a tool that likely mutates PDFs, this is a significant gap in transparency.
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 appropriately concise with two sentences that front-load the core purpose and include a key behavioral detail (priority rule). There's no wasted verbiage, though it could be slightly more structured by explicitly separating purpose from usage guidelines.
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 tool's complexity (7 parameters, likely mutates PDFs) and lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., success status, file path), potential errors, or important behavioral aspects like file handling. For a tool with this level of functionality, more context is needed to be fully helpful to an agent.
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 schema description coverage is high at 86%, so the schema already documents most parameters well. The description adds minimal value beyond the schema: it reiterates that QR code must be an image file (PNG/JPG) and mentions the priority rule, but doesn't provide additional semantic context like how 'friendly text' is formatted or what 'scale ratio' means practically. This meets the baseline for high schema coverage.
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's purpose: 'Add QR code to PDF documents with friendly text below.' It specifies the resource (PDF documents) and the action (add QR code), though it doesn't explicitly differentiate from sibling tools like 'add_watermark' or 'process_pdf_post_conversion' which might have overlapping PDF modification functions.
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 some usage context by stating 'Priority: user provided path > environment variable QR_CODE_IMAGE,' which helps understand parameter precedence. However, it doesn't explicitly guide when to use this tool versus alternatives like 'add_watermark' for other PDF modifications or 'convert_document' for format changes, leaving usage decisions implied rather than clearly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_watermarkA
Add watermarks to PDF documents. Supports both text and image watermarks. Priority: user text > user image > environment variable image > default text "doc-ops-mcp"
| Name | Required | Description | Default |
|---|---|---|---|
| pdfPath | Yes | PDF file path | |
| watermarkImage | No | Watermark image path (PNG/JPG). Has higher priority than environment variable but lower than watermarkText. | |
| watermarkText | No | Watermark text content. Has highest priority. If not provided, will use image or default text "doc-ops-mcp". | |
| watermarkImageScale | No | Image scale ratio | |
| watermarkImageOpacity | No | Image opacity | |
| watermarkImagePosition | No | fullscreen |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the priority system for watermark sources (text > image > environment variable > default), which is crucial behavioral context. However, it doesn't mention whether this operation modifies the original PDF or creates a new file, potential file size impacts, or error conditions.
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 perfectly front-loaded with the core purpose, followed by supporting details about watermark types and priority system. Every sentence earns its place by providing essential information without redundancy or fluff.
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?
For a tool with no annotations and no output schema, the description does well by explaining the core functionality and parameter interactions. However, it doesn't describe what the tool returns (e.g., path to watermarked PDF, success/failure status) or potential side effects, leaving some gaps in completeness.
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?
With 83% schema description coverage, the baseline is 3. The description adds significant value by explaining the priority hierarchy among watermarkText, watermarkImage, and fallback options, which clarifies the interaction between parameters beyond what the individual parameter descriptions provide in 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 specific action ('add watermarks') and resource ('PDF documents'), and distinguishes this tool from siblings by specifying its unique watermarking functionality. Unlike sibling tools focused on conversion, reading, writing, or QR codes, this tool is explicitly for watermarking 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?
The description provides clear context about when to use this tool (for adding watermarks to PDFs) and implicitly distinguishes it from siblings that handle different document operations. However, it lacks explicit guidance on when NOT to use it or named alternatives for similar tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_documentA
Convert documents between formats with enhanced style preservation. Output directory is controlled by OUTPUT_DIR environment variable. All output files will be automatically saved to the directory specified by OUTPUT_DIR with auto-generated names. ⚠️ IMPORTANT: For Markdown to HTML conversion with style preservation, use 'convert_markdown_to_html' tool instead for better results with themes and styling. For creating Word documents from content, use 'create_word_document' tool to avoid conversion loops.
| Name | Required | Description | Default |
|---|---|---|---|
| inputPath | Yes | Input file path | |
| targetFormat | No | Target format: pdf, html, docx, markdown, md, txt (optional, auto-detected from input if not specified) | |
| preserveFormatting | No | Preserve formatting | |
| useInternalPlaywright | No | Use built-in Playwright for PDF conversion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and adds valuable behavioral context: it discloses that output directory is controlled by OUTPUT_DIR environment variable, files are auto-saved with auto-generated names, and warns about conversion loops for Word documents. This goes beyond basic functionality to describe operational 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?
The description is well-structured with three focused sentences: core functionality, operational behavior, and usage guidance. Each sentence earns its place, though the warning emoji and formatting could be slightly more concise.
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?
For a conversion tool with 4 parameters, 100% schema coverage, but no annotations or output schema, the description provides good completeness: it explains the core purpose, behavioral context (output handling), and clear usage guidelines. The main gap is lack of information about return values or error handling.
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 the schema already documents all 4 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score of 3 for high schema coverage.
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 converts documents between formats with enhanced style preservation, providing a specific verb (convert) and resource (documents). It distinguishes from some siblings by mentioning specific alternatives, though not all sibling tools are addressed.
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 explicit guidance on when to use alternative tools instead: 'convert_markdown_to_html' for Markdown to HTML with themes/styling and 'create_word_document' for creating Word documents from content. This clearly defines when-not-to-use scenarios with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_docx_to_pdfB
Enhanced DOCX to PDF conversion with perfect Word style replication and Playwright integration. Watermark can be added by setting addWatermark=true (uses WATERMARK_IMAGE environment variable or default text "doc-ops-mcp"). QR code can be added by setting addQrCode=true (requires QR_CODE_IMAGE environment variable). Output directory is controlled by OUTPUT_DIR environment variable. Files will be automatically saved to OUTPUT_DIR with auto-generated names.
| Name | Required | Description | Default |
|---|---|---|---|
| docxPath | Yes | DOCX file path to convert | |
| preserveFormatting | No | Preserve original formatting | |
| chineseFont | No | Chinese font family to use | Microsoft YaHei |
| addWatermark | No | Add watermark to PDF (uses WATERMARK_IMAGE environment variable or default text "doc-ops-mcp") | |
| addQrCode | No | Add QR code to PDF (requires QR_CODE_IMAGE environment variable) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that files are automatically saved to OUTPUT_DIR with auto-generated names, which is useful behavioral context. However, it doesn't mention error handling, performance characteristics, or what happens if environment variables are missing, leaving gaps for a mutation 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?
The description is appropriately sized with three sentences that efficiently cover conversion purpose, optional features, and output behavior. It's front-loaded with the core functionality, though some repetition with schema details slightly reduces 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?
For a 5-parameter mutation tool with no annotations and no output schema, the description is moderately complete. It covers the conversion process and output location but lacks details on error cases, return values, or integration with sibling tools, leaving room for improvement.
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 the schema already documents all 5 parameters thoroughly. The description adds minimal value by repeating some parameter details (e.g., watermark/QR code environment variables) but doesn't provide additional semantic context beyond what's in 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 converts DOCX to PDF with style replication and Playwright integration, which is a specific verb+resource. However, it doesn't explicitly distinguish from sibling tools like 'convert_document' or 'convert_markdown_to_pdf', which appear to handle different conversion types.
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 mentions watermark and QR code capabilities but provides no guidance on when to use this tool versus alternatives like 'add_qrcode' or 'add_watermark' standalone tools. It lacks explicit when/when-not instructions or prerequisites for effective use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_html_to_markdownB
Enhanced HTML to Markdown conversion with style preservation. Converts HTML files to clean Markdown format while preserving structure, links, images, tables, and formatting. Output directory is controlled by OUTPUT_DIR environment variable. Files will be automatically saved to OUTPUT_DIR with auto-generated names.
| Name | Required | Description | Default |
|---|---|---|---|
| htmlPath | Yes | HTML file path to convert | |
| preserveStyles | No | Preserve HTML formatting and styles | |
| includeCSS | No | Include CSS styles as comments in Markdown | |
| debug | No | Enable debug output |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses key behavioral traits: the tool saves files automatically to OUTPUT_DIR with auto-generated names, which is crucial operational context. However, it doesn't mention error handling, performance characteristics, or what happens if OUTPUT_DIR isn't set, leaving gaps in behavioral understanding.
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 appropriately sized with three sentences that each serve a purpose: stating the core functionality, describing preservation features, and explaining output behavior. It's front-loaded with the main purpose, though the second sentence could be more concise by combining structure and formatting mentions.
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?
For a conversion tool with 4 parameters, 100% schema coverage, and no output schema, the description is moderately complete. It covers what the tool does and output behavior but lacks information about return values, error conditions, or performance expectations that would help an agent use it effectively in complex workflows.
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 the baseline is 3. The description adds minimal parameter semantics beyond the schema, mentioning 'style preservation' which relates to preserveStyles parameter, but doesn't provide additional context about parameter interactions or practical implications of the boolean flags.
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's purpose with specific verbs ('converts HTML files to clean Markdown format') and resources ('HTML files'), distinguishing it from sibling tools like convert_markdown_to_html or convert_document by specifying the exact conversion direction and format preservation features.
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 no guidance on when to use this tool versus alternatives like convert_document or convert_markdown_to_html. It mentions output directory control via environment variable, but this is operational detail rather than usage context or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_markdown_to_docxA
Enhanced Markdown to DOCX conversion with professional styling and theme support. Preserves formatting, supports tables, lists, headings, and inline formatting with beautiful Word document output. Output directory is controlled by OUTPUT_DIR environment variable. Files will be automatically saved to OUTPUT_DIR with auto-generated names.
| Name | Required | Description | Default |
|---|---|---|---|
| markdownPath | Yes | Markdown file path to convert | |
| theme | No | Theme to apply | professional |
| includeTableOfContents | No | Generate table of contents | |
| preserveStyles | No | Preserve Markdown formatting and styles |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it preserves formatting, supports specific elements (tables, lists, headings), uses an output directory via environment variable, and auto-generates filenames. However, it does not mention error handling, file size limits, or performance considerations, leaving some gaps.
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 appropriately sized and front-loaded, starting with the core purpose and key features. However, the second sentence could be more streamlined, as it lists formatting elements redundantly (e.g., 'preserves formatting' and 'supports tables, lists, headings, and inline formatting' overlap slightly). Overall, it is efficient with minimal waste.
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 complexity (conversion tool with multiple parameters) and no annotations or output schema, the description is moderately complete. It covers the main purpose, key features, and output behavior, but lacks details on error cases, return values, or advanced usage scenarios, which would be helpful for an AI agent.
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 has 100% description coverage, so the baseline is 3. The description adds minimal parameter semantics beyond the schema, mentioning theme support and output directory control, but does not elaborate on parameter interactions or provide additional context for the parameters listed in 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's purpose: converting Markdown files to DOCX format with professional styling and theme support. It specifies the exact transformation (Markdown to DOCX) and distinguishes it from sibling tools like convert_markdown_to_html and convert_markdown_to_pdf by focusing on DOCX output with styling features.
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 implies usage by mentioning theme support and output directory control, but it does not explicitly state when to use this tool versus alternatives like convert_markdown_to_pdf or create_word_document. It provides some context (e.g., for professional styling) but lacks clear exclusions or comparisons with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_markdown_to_htmlA
Enhanced Markdown to HTML conversion with beautiful styling and theme support. Supports GitHub, Academic, Modern, and Default themes with complete style preservation. Output directory is controlled by OUTPUT_DIR environment variable. Files will be automatically saved to OUTPUT_DIR with auto-generated names.
| Name | Required | Description | Default |
|---|---|---|---|
| markdownPath | Yes | Markdown file path to convert | |
| theme | No | Theme to apply | github |
| includeTableOfContents | No | Generate table of contents | |
| customCSS | No | Additional custom CSS styles |
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 discloses key behavioral traits: files are automatically saved to OUTPUT_DIR with auto-generated names, and it supports multiple themes. However, it doesn't cover error handling, performance, or what happens if OUTPUT_DIR is missing. It adds useful context but isn't comprehensive.
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 appropriately sized with three sentences that are front-loaded with the core purpose. Each sentence adds value: the first states the tool's function, the second details themes, and the third explains file handling. There's no wasted text, though it could be slightly more 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 annotations and no output schema, the description is moderately complete. It covers the tool's purpose, themes, and file-saving behavior, but lacks details on output format, error cases, or prerequisites. For a conversion tool with 4 parameters, it's adequate but has gaps in behavioral context.
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 the schema fully documents all parameters. The description adds minimal value beyond the schema, mentioning theme support and OUTPUT_DIR (which isn't a parameter but an environment variable). It doesn't explain parameter interactions or provide additional semantics, so the baseline 3 is appropriate.
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's purpose: 'Enhanced Markdown to HTML conversion with beautiful styling and theme support.' It specifies the verb ('conversion'), resource ('Markdown to HTML'), and distinguishes from siblings like 'convert_markdown_to_docx' or 'convert_markdown_to_pdf' by focusing on HTML output with styling features.
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 for when to use this tool: for converting Markdown to HTML with styling and theme options. It doesn't explicitly state when not to use it or name alternatives, but the context implies it's for HTML output specifically, not other formats like DOCX or PDF offered by siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_markdown_to_pdfA
Enhanced Markdown to PDF conversion with beautiful styling and theme support. Watermark can be added by setting addWatermark=true (uses WATERMARK_IMAGE environment variable or default text "doc-ops-mcp"). QR code can be added by setting addQrCode=true (requires QR_CODE_IMAGE environment variable). Requires playwright-mcp for final PDF generation. Output directory is controlled by OUTPUT_DIR environment variable. Files will be automatically saved to OUTPUT_DIR with auto-generated names.
| Name | Required | Description | Default |
|---|---|---|---|
| markdownPath | Yes | Markdown file path to convert | |
| theme | No | Theme to apply | github |
| includeTableOfContents | No | Generate table of contents | |
| addWatermark | No | Add watermark to PDF (uses WATERMARK_IMAGE environment variable or default text "doc-ops-mcp") | |
| addQrCode | No | Add QR code to PDF (requires QR_CODE_IMAGE environment variable) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: automatic file saving to OUTPUT_DIR with auto-generated names, dependencies on environment variables (WATERMARK_IMAGE, QR_CODE_IMAGE, OUTPUT_DIR), and the requirement for playwright-mcp. However, it doesn't mention error handling, performance characteristics, or whether the operation is idempotent.
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 appropriately sized and front-loaded, starting with the core purpose. However, it could be more structured—environment variable details are scattered throughout, and the sentence about output directory placement feels tacked on. Most sentences earn their place, but minor reorganization would improve clarity.
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?
For a conversion tool with no annotations and no output schema, the description does well to cover key behaviors like file handling and dependencies. It explains what happens to the output (saved automatically) and prerequisites (playwright-mcp). The main gap is lack of information about return values or error responses, which would be helpful given the absence of an 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 description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema—it repeats watermark and QR code environment variable details but doesn't provide additional context about parameter interactions or usage examples. Baseline 3 is appropriate when the schema does most of the work.
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's purpose: converting Markdown to PDF with enhanced styling and theme support. It specifies the exact transformation (Markdown→PDF) and distinguishes itself from siblings like convert_markdown_to_docx or convert_markdown_to_html by focusing on PDF output with specific features like watermarks and QR codes.
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 for when to use this tool: for PDF conversion with styling options. It mentions alternatives implicitly by noting requirements like playwright-mcp and environment variables, but doesn't explicitly compare to siblings like convert_docx_to_pdf or convert_markdown_to_docx, which would have strengthened the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_word_documentB
Create a Word document directly from content with beautiful formatting. This tool is specifically designed for creating Word documents from scratch, avoiding conversion loops. Supports HTML content with automatic styling and formatting. Output directory is controlled by OUTPUT_DIR environment variable. Files will be automatically saved to OUTPUT_DIR with auto-generated names.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Content to write to Word document (supports HTML) | |
| title | No | Document title | Document |
| preserveFormatting | No | Preserve HTML formatting and styles |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that files are automatically saved to OUTPUT_DIR with auto-generated names, which is useful behavioral context. However, it lacks details on permissions, error handling, rate limits, or what happens if OUTPUT_DIR is missing. The description doesn't contradict annotations (none provided).
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 front-loaded with the main purpose and key features (HTML support, automatic formatting). It uses four sentences efficiently, with no redundant information. However, the last sentence about OUTPUT_DIR could be integrated more smoothly, and it's slightly verbose in explaining file saving.
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 annotations and no output schema, the description provides basic purpose and behavioral details (auto-saving, HTML support). It covers the core functionality but lacks information on return values, error cases, or advanced usage scenarios. For a creation tool with 3 parameters, it's adequate but has clear gaps in completeness.
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 the schema already documents all parameters. The description adds that content supports HTML and mentions automatic styling/formatting, which aligns with the schema's preserveFormatting parameter. It doesn't provide additional syntax or format details beyond the schema, so baseline 3 is appropriate.
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 creates Word documents from content with formatting, specifying it's for creating from scratch and supports HTML. It distinguishes from siblings like convert_document or write_document by emphasizing direct creation without conversion loops. However, it doesn't explicitly contrast with all siblings (e.g., convert_markdown_to_docx).
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 implies usage for creating Word documents from scratch with HTML content, avoiding conversion loops. It doesn't explicitly state when not to use it or name alternatives among siblings, though the context suggests it's for direct creation rather than conversion tools. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_conversionA
🎯 MANDATORY FIRST STEP - Smart Document Conversion Planner - ⚠️ CRITICAL: This tool MUST be executed BEFORE any document conversion operation! When users request any format conversion (e.g., 'convert MD to PDF', 'DOCX to HTML'), you MUST call this tool first to get the optimal conversion plan, then follow the plan's steps exactly. This ensures proper conversion workflow and handles complex multi-step conversions. For PDF conversions, note that playwright-mcp integration is required for final PDF generation, followed by process_pdf_post_conversion for watermarks/QR codes. Supports all format conversion path planning.
| Name | Required | Description | Default |
|---|---|---|---|
| sourceFormat | Yes | Source file format (e.g.: pdf, docx, html, markdown, md, txt) | |
| targetFormat | Yes | Target file format (e.g.: pdf, docx, html, markdown, md, txt) | |
| sourceFile | No | Source file path (optional, used to generate specific conversion parameters) | |
| preserveStyles | No | Whether to preserve style formatting | |
| includeImages | No | Whether to include images | |
| theme | No | Conversion theme (applicable to HTML/DOCX output) | github |
| quality | No | Conversion quality requirements | balanced |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates critical behavioral traits: the mandatory sequencing requirement ('MUST be executed BEFORE'), the workflow nature ('get the optimal conversion plan, then follow the plan's steps exactly'), and integration dependencies ('playwright-mcp integration is required for final PDF generation'). However, it doesn't mention rate limits, error handling, or performance characteristics.
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 appropriately front-loaded with the critical 'MANDATORY FIRST STEP' information, but contains some redundancy (e.g., repeating format conversion examples) and could be more streamlined. The emojis and formatting add visual emphasis but don't necessarily improve conciseness. Most sentences earn their place, but some phrasing could be tightened.
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 complexity of a 7-parameter planning tool with no annotations and no output schema, the description does a good job explaining the tool's role in the workflow, mandatory sequencing, and integration points. However, it doesn't describe what the output plan looks like or how to interpret it, which is a significant gap since there's no output schema to compensate.
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 schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema descriptions and enums. It mentions format conversion generally but provides no additional syntax, format details, or parameter usage guidance beyond the structured 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 explicitly states the tool's purpose as a 'Smart Document Conversion Planner' that must be executed before any document conversion operation. It specifies the verb ('plan') and resource ('conversion'), and clearly distinguishes it from sibling tools by emphasizing it's a mandatory first step rather than a direct conversion tool like convert_document or convert_markdown_to_pdf.
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 explicit usage guidelines: 'MUST be executed BEFORE any document conversion operation' and 'When users request any format conversion... you MUST call this tool first.' It also mentions specific follow-up tools for PDF conversions (playwright-mcp integration and process_pdf_post_conversion), giving clear alternatives and sequencing instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_pdf_post_conversionA
🔧 PDF Post-Processing Unified Tool - ⚠️ IMPORTANT: This is a necessary follow-up step for playwright-mcp's browser_pdf_save command! After using playwright-mcp to generate PDF, this tool must be called immediately to complete final processing. Features include: 1) Automatically move PDF from playwright temporary path to target location 2) Uniformly add watermarks and QR codes 3) Clean up temporary files. Workflow: playwright-mcp:browser_pdf_save → doc-ops-mcp:process_pdf_post_conversion
| Name | Required | Description | Default |
|---|---|---|---|
| playwrightPdfPath | Yes | PDF file path generated by playwright-mcp (usually in temporary directory) | |
| targetPath | No | Target PDF file path (optional, will be auto-generated if not provided). If not absolute path, will be resolved relative to OUTPUT_DIR environment variable | |
| addWatermark | No | Whether to add watermark (will be automatically added if WATERMARK_IMAGE environment variable is set) | |
| addQrCode | No | Whether to add QR code (will be automatically added if QR_CODE_IMAGE environment variable is set) | |
| watermarkImage | No | Watermark image path (overrides environment variable) | |
| watermarkText | No | Watermark text content | |
| watermarkImageScale | No | Watermark image scale ratio | |
| watermarkImageOpacity | No | Watermark image opacity | |
| watermarkImagePosition | No | Watermark image position | fullscreen |
| qrCodePath | No | QR code image path (overrides environment variable) | |
| qrScale | No | QR code scale ratio | |
| qrOpacity | No | QR code opacity | |
| qrPosition | No | QR code position | bottom-center |
| customText | No | Custom text below QR code | Scan QR code for more information |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's workflow dependencies, mandatory sequencing, and three core behaviors (move, add features, clean up). However, it doesn't mention potential side effects like file overwriting, permission requirements, or error handling for missing environment variables.
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 appropriately sized and front-loaded with the most critical information (workflow dependency). However, the emoji usage and formatting (🔧, ⚠️) add visual noise without semantic value, and the numbered feature list could be more concise. Every sentence earns its place by conveying essential workflow information.
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 tool's complexity (14 parameters, no annotations, no output schema), the description provides good contextual completeness by explaining the mandatory workflow sequence and core operations. However, it doesn't describe the return value or error conditions, which would be helpful given the absence of an output schema and annotations.
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 the baseline is 3. The description doesn't add meaningful parameter semantics beyond what's already documented in the schema - it mentions watermarks and QR codes generally but provides no additional details about parameter interactions, defaults, or environment variable precedence that aren't already in 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's purpose as a 'necessary follow-up step' that performs three specific functions: moving PDFs, adding watermarks/QR codes, and cleaning temporary files. It explicitly distinguishes this from sibling tools by mentioning it's specifically for post-processing PDFs generated by playwright-mcp, unlike general conversion or watermarking tools in the sibling list.
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 explicit usage guidance: it must be called 'immediately' after playwright-mcp's browser_pdf_save command, creating a clear workflow dependency. It also distinguishes when to use this tool versus alternatives by positioning it as a required follow-up to a specific playwright-mcp command, not as a standalone watermarking or QR code tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_documentC
Read various document formats (DOCX, DOC, TXT, MD, HTML, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Document path to read | |
| extractMetadata | No | Extract document metadata | |
| preserveFormatting | No | Preserve formatting (HTML output) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions reading various formats but doesn't specify what 'read' entails (e.g., returning text content, handling errors for unsupported formats, or performance considerations). It lacks details on permissions needed, rate limits, or output behavior, which is a significant gap for a tool with no annotation coverage.
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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action ('read') and resource ('various document formats'), and the list of formats is concise. Every part of the sentence earns its place by clarifying scope.
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 annotations, no output schema, and a tool that reads documents (which could involve complex format handling), the description is incomplete. It doesn't explain what the tool returns (e.g., text content, metadata structure), error conditions, or limitations (e.g., file size constraints). For a tool with 3 parameters and potential format-specific behaviors, more context is needed.
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 the schema already documents all three parameters (filePath, extractMetadata, preserveFormatting). The description adds no additional meaning about parameters, such as format-specific behaviors or how 'preserveFormatting' interacts with different file types. Baseline 3 is appropriate when the schema does the heavy lifting.
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 verb 'read' and the resource 'various document formats', listing specific file types (DOCX, DOC, TXT, MD, HTML, etc.). It distinguishes from sibling tools like 'write_document' and 'convert_document' by focusing on reading rather than writing or conversion. However, it doesn't explicitly differentiate from all siblings (e.g., 'process_pdf_post_conversion' might also involve reading).
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 no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'convert_document' for format handling, or when to use it in conjunction with other tools like 'add_watermark'. There's no context about prerequisites, such as file accessibility or format limitations beyond the listed types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_documentC
Write content to document files in specified formats. Output directory is controlled by OUTPUT_DIR environment variable. Files will be automatically saved to OUTPUT_DIR with auto-generated names based on content type (HTML, Markdown, or plain text). Supports intelligent format detection.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Content to write | |
| encoding | No | File encoding | utf-8 |
| title | No | Document title (optional, used for filename generation) | |
| format | No | Force specific format: html, md, txt, docx (optional, auto-detected if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that files are automatically saved to OUTPUT_DIR with auto-generated names and supports format detection, which is helpful. However, it lacks critical details: it doesn't specify whether this is a write-only operation (no read-back), what happens if OUTPUT_DIR doesn't exist, potential file overwriting risks, or error handling. For a file-writing tool with zero annotation coverage, this leaves significant gaps.
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 appropriately concise with three sentences that efficiently cover the core functionality, output behavior, and format support. It's front-loaded with the main purpose and avoids unnecessary repetition. However, the third sentence about 'intelligent format detection' could be integrated more smoothly, slightly affecting flow.
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 tool's complexity (file writing with multiple parameters), lack of annotations, and no output schema, the description is moderately complete. It covers the basic operation and output directory behavior but misses key contextual details like error handling, file naming specifics, or interaction with sibling tools. It's adequate for a simple write operation but lacks depth for robust agent use.
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 the schema already documents all four parameters thoroughly. The description adds marginal value by mentioning 'auto-generated names based on content type' and 'intelligent format detection,' which loosely relates to the 'format' and 'title' parameters but doesn't provide additional syntax or format details beyond what the schema specifies. This meets the baseline for high schema coverage.
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's purpose: 'Write content to document files in specified formats.' It specifies the action (write), resource (document files), and scope (multiple formats). However, it doesn't explicitly differentiate from sibling tools like 'create_word_document' or 'convert_document', which reduces it from a perfect score.
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 minimal usage guidance. It mentions that files are saved to OUTPUT_DIR with auto-generated names, but offers no explicit advice on when to use this tool versus alternatives like 'create_word_document' or 'convert_document' from the sibling list. There's no mention of prerequisites or when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
13 tool updates
- First observed
add_qrcode - First observed
add_watermark - First observed
convert_document - First observed
convert_docx_to_pdf - First observed
convert_html_to_markdown - First observed
convert_markdown_to_docx - First observed
convert_markdown_to_html - First observed
convert_markdown_to_pdf - First observed
create_word_document - First observed
plan_conversion - First observed
process_pdf_post_conversion - First observed
read_document - First observed
write_document
TDQS
The tool set has clear functional distinctions between major categories (conversion, enhancement, planning, reading/writing), but there is significant overlap and confusion within conversion tools. For example, 'convert_document' is a general tool that overlaps with specific converters like 'convert_markdown_to_html', and the descriptions explicitly warn against using it for certain tasks, creating ambiguity about when to choose which tool. The planning and post-processing tools have distinct purposes but add complexity to the workflow.
Most tools follow a consistent verb_noun pattern (e.g., 'add_qrcode', 'convert_document', 'read_document'), which is clear and predictable. However, there are minor deviations: 'plan_conversion' uses a noun_verb structure, and 'process_pdf_post_conversion' is a longer, less standard name. Overall, the naming is mostly consistent and readable, with only a few outliers.
With 13 tools, the count is reasonable for a document operations server covering conversion, enhancement, and management tasks. It's slightly on the higher side but justified by the domain complexity. However, some tools like 'plan_conversion' and 'process_pdf_post_conversion' add procedural steps that might inflate the count unnecessarily, making it borderline heavy but still appropriate.
The tool surface covers a wide range of document operations, including reading, writing, converting between multiple formats, adding watermarks/QR codes, and planning workflows. There are no obvious major gaps for core document handling. However, the reliance on external tools like 'playwright-mcp' for PDF generation and the need for mandatory planning steps introduce dependencies that could limit standalone completeness, though the server itself provides good coverage.
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
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
MCP server for Api2Pdf — generate PDFs & images from HTML, URLs or office files; merge, barcodes.
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for seamless document format conversion using Pandoc, supporting Markdown, HTML, PDF, DOCX (.docx), csv and more.1579MIT
- AlicenseNot gradedqualityDmaintenanceUniversal MCP server for extracting text from various document formats including PDF, Excel, Word, CSV, and more, with support for streaming, limits, and markdown conversion.3MIT
- AlicenseAqualityDmaintenanceMCP server for Word document (.docx) creation and manipulation — the production-grade document automation tool for AI agents.963MIT
- AlicenseCqualityDmaintenanceA unified MCP server for document processing that enables creating, editing, and converting Word documents (DOCX), PDFs, Markdown, and images, with support for templates, formatting, and batch operations.100MIT
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/Tele-AI/doc-ops-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server