AgentMD
Convert PDF, DOCX, HTML, and URLs to clean, LLM-ready markdown with tables preserved
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"agentmd": {
"command": "npx",
"args": [
"agentmd-mcp"
]
}
}
}Runnable packages
0.1.4stdioRemote endpoints
https://www.getagentmd.com/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (2)
🟢convert_url_to_markdown(url, pages, mode, section, maxTokens)
Fetch a URL (web page, PDF, DOCX, etc.) and convert it to clean, LLM-ready markdown. Extracts the main article content from web pages and preserves tables. Supports reading only part of a large document: PDF page ranges, a heading outline, a single section, or a token cap.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The http(s) URL of the document or page to convert"
},
"pages": {
"description": "PDFs only: 1-indexed, inclusive page ranges to convert, e.g. \"1-3,5,8-\" (an open-ended range runs to the last page). Ignored with a warning for non-PDF formats.",
"type": "string"
},
"mode": {
"description": "\"full\" (default) returns the document body. \"outline\" returns just the heading tree — each line is `- [#3] Heading text (~120 tokens)`. For a long document, call with mode: 'outline' first, then fetch only what you need with section: '#3' or a heading title.",
"type": "string",
"enum": [
"full",
"outline"
]
},
"section": {
"description": "Return only one section: either \"#<n>\" using the index from a mode: 'outline' call (e.g. '#3'), or the heading text itself (case-insensitive; exact match wins, then prefix, then substring). Ignored when mode is 'outline'.",
"type": "string"
},
"maxTokens": {
"description": "Cap the returned markdown at roughly this many tokens, cutting at a paragraph boundary. When the output is cut, the result starts with a `> Truncated: ~X of ~Y tokens` line — narrow with pages or section rather than raising this.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}⚪convert_document_to_markdown(base64, filename, pages, mode, section, ...)
Convert a document you already have (PDF, DOCX, HTML, plain text) to clean, LLM-ready markdown. Pass the file contents as base64. Supports reading only part of a large document: PDF page ranges, a heading outline, a single section, or a token cap.
Input Schema
{
"type": "object",
"properties": {
"base64": {
"type": "string",
"description": "Base64-encoded file contents"
},
"filename": {
"description": "Original filename, e.g. report.pdf — helps format detection",
"type": "string"
},
"pages": {
"description": "PDFs only: 1-indexed, inclusive page ranges to convert, e.g. \"1-3,5,8-\" (an open-ended range runs to the last page). Ignored with a warning for non-PDF formats.",
"type": "string"
},
"mode": {
"description": "\"full\" (default) returns the document body. \"outline\" returns just the heading tree — each line is `- [#3] Heading text (~120 tokens)`. For a long document, call with mode: 'outline' first, then fetch only what you need with section: '#3' or a heading title.",
"type": "string",
"enum": [
"full",
"outline"
]
},
"section": {
"description": "Return only one section: either \"#<n>\" using the index from a mode: 'outline' call (e.g. '#3'), or the heading text itself (case-insensitive; exact match wins, then prefix, then substring). Ignored when mode is 'outline'.",
"type": "string"
},
"maxTokens": {
"description": "Cap the returned markdown at roughly this many tokens, cutting at a paragraph boundary. When the output is cut, the result starts with a `> Truncated: ~X of ~Y tokens` line — narrow with pages or section rather than raising this.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"base64"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence