# AgentMD (npm · agentmd-mcp)

Convert PDF, DOCX, HTML, and URLs to clean, LLM-ready markdown with tables preserved

- Trust score: 79/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-24

## Components

- remote · `www.getagentmd.com`: 76/100, [markdown](https://verifymcp.io/servers/djrobson5-agentmd/api-mcp.md), [page](https://verifymcp.io/servers/djrobson5-agentmd/api-mcp)
- npm · `agentmd-mcp`: 79/100 (this document), [markdown](https://verifymcp.io/servers/djrobson5-agentmd/agentmd-mcp.md), [page](https://verifymcp.io/servers/djrobson5-agentmd/agentmd-mcp)

## Channel facts

- Registry: `npm`
- Package: `agentmd-mcp`
- Version: `0.1.4`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-24.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 0 of 3 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 7 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 63/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1861 tokens (~620/item across 3 items; 3 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 77/100
  - Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 3 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 3 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the AgentMD MCP server?

AgentMD runs locally as an npm package, launched with npx -y agentmd-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add djrobson5-agentmd -- npx -y agentmd-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "djrobson5-agentmd": {
      "command": "npx",
      "args": [
        "-y",
        "agentmd-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "djrobson5-agentmd": {
      "command": "npx",
      "args": [
        "-y",
        "agentmd-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add djrobson5-agentmd -- npx -y agentmd-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "djrobson5-agentmd": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "agentmd-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add djrobson5-agentmd --command npx --arg -y --arg agentmd-mcp
```

### Hermes

```yaml
mcp_servers:
  djrobson5-agentmd:
    command: "npx"
    args: ["-y", "agentmd-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "djrobson5-agentmd": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "agentmd-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add djrobson5-agentmd -t stdio -c npx -a -y agentmd-mcp
```

### Other

```json
{
  "mcpServers": {
    "djrobson5-agentmd": {
      "command": "npx",
      "args": [
        "-y",
        "agentmd-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-23 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-21 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-19 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-17 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-16 (score 75, −4)

- [security regression] Tool safety: pass → unverified
- [security regression] Stability: 0.47 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Schema quality: pass → fail
- [functional] First check of Schema quality: unverified
- [functional] Package version: 0.1.1 → 0.1.4
- [functional] Package version: 0.1.1 → 0.1.3

### 2026-09-14 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-12 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-10 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (3)

### `convert_url_to_markdown` (~597 tokens)

Convert URL to markdown

Fetches a document at an http(s) URL — web page, PDF, DOCX, HTML, Markdown, or plain text — and converts it to clean, LLM-ready markdown. Use this instead of convert_file_to_markdown when the document lives on the network rather than on the filesystem of the machine running this server, and instead of convert_document_to_markdown when you hold a link rather than the raw bytes; it is the only one of the three that fetches the source itself. Returns one markdown text block: the detected title as a leading `# <title>` line when one is found, a `> Warnings: ...` blockquote line when the converter reports warnings, tables preserved as GFM, and for web pages navigation and boilerplate stripped with relative links rewritten to absolute URLs. Limits: 25 MB per document, and PDFs are text-extraction only, so scanned or image-only PDFs yield little or no text (OCR is not available yet). Requires AGENTMD_API_KEY; on a 401, a network or fetch failure, or an unsupported format it returns an isError result whose text explains what went wrong. Each successful call consumes one conversion from the account quota. To read only part of a large document, use the optional pages (PDF page ranges), mode: 'outline' then section, and maxTokens parameters instead of pulling the whole thing into context.

Input parameters:

- `maxTokens` (integer): 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 sec…
- `mode` (string): "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 fetc…
- `pages` (string): 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.
- `section` (string): 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 w…
- `url` (string, required): Absolute http(s) URL of the page or document to fetch and convert, e.g. https://example.com/report.pdf. Must be publicly reachable from the AgentMD service; URLs behind a login, a paywall, or a priva…

### `convert_file_to_markdown` (~595 tokens)

Convert a local file to markdown

Reads a document from the local filesystem by absolute path and converts it to clean, LLM-ready markdown. Use this instead of convert_url_to_markdown when the document is already saved on disk, and instead of convert_document_to_markdown when you have a path and would otherwise have to read and base64-encode the bytes yourself — this tool does that reading and encoding for you. Returns one markdown text block: the detected title as a leading `# <title>` line when one is found, a `> Warnings: ...` blockquote line when the converter reports warnings, and tables preserved as GFM. Supported formats are PDF, DOCX, HTML, Markdown, and plain text, up to 25 MB per document; PDFs are text-extraction only, so scanned or image-only PDFs yield little or no text (OCR is not available yet). Requires AGENTMD_API_KEY; on a missing or unreadable file, a 401, a network failure, or an unsupported format it returns an isError result whose text explains what went wrong. Each successful call consumes one conversion from the account quota. To read only part of a large document, use the optional pages (PDF page ranges), mode: 'outline' then section, and maxTokens parameters instead of pulling the whole thing into context.

Input parameters:

- `maxTokens` (integer): 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 sec…
- `mode` (string): "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 fetc…
- `pages` (string): 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.
- `path` (string, required): Absolute path to the document on the filesystem of the machine running this MCP server, not the client machine (e.g. /home/me/docs/report.pdf or C:\\docs\\report.pdf). The file is read locally and it…
- `section` (string): 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 w…

### `convert_document_to_markdown` (~669 tokens)

Convert document bytes to markdown

Converts base64-encoded document bytes that you already hold into clean, LLM-ready markdown, without reading a file or fetching a URL. Use this instead of convert_file_to_markdown when the bytes came from somewhere other than this machine's filesystem (an upload, an earlier tool result, memory), and instead of convert_url_to_markdown when there is no fetchable link to the source. Returns one markdown text block: the detected title as a leading `# <title>` line when one is found, a `> Warnings: ...` blockquote line when the converter reports warnings, and tables preserved as GFM. Supported formats are PDF, DOCX, HTML, Markdown, and plain text, up to 25 MB per document — base64 inflates the payload by about a third, so prefer convert_file_to_markdown or convert_url_to_markdown for large files — and PDFs are text-extraction only, so scanned or image-only PDFs yield little or no text (OCR is not available yet). Requires AGENTMD_API_KEY; on a 401, a network failure, malformed base64, or an unsupported format it returns an isError result whose text explains what went wrong. Each successful call consumes one conversion from the account quota. To read only part of a large document, use the optional pages (PDF page ranges), mode: 'outline' then section, and maxTokens parameters instead of pulling the whole thing into context.

Input parameters:

- `base64` (string, required): The document's full contents encoded as standard base64 (RFC 4648: A-Z a-z 0-9 + / with = padding). Pass the encoded string on its own — no `data:` URI prefix, no media type, no surrounding quotes.
- `filename` (string): Original filename including its extension, e.g. report.pdf or notes.docx. Used for format detection when the bytes alone are ambiguous (HTML vs. Markdown vs. plain text) and to seed the document titl…
- `maxTokens` (integer): 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 sec…
- `mode` (string): "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 fetc…
- `pages` (string): 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.
- `section` (string): 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 w…

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/djrobson5-agentmd/agentmd-mcp#diagnostics

## Score history

- 2026-09-24: 79
- 2026-09-23: 79
- 2026-09-22: 78
- 2026-09-21: 78
- 2026-09-20: 77
- 2026-09-19: 77
- 2026-09-18: 76
- 2026-09-17: 76
- 2026-09-16: 75
- 2026-09-15: 79
- 2026-09-14: 79
- 2026-09-13: 78
- 2026-09-12: 78
- 2026-09-11: 77
- 2026-09-10: 77
- 2026-09-09: 76
- 2026-09-08: 76
- 2026-09-07: 72
- 2026-09-06: 72
- 2026-09-05: 72
- 2026-09-04: 72
- 2026-09-03: 72
- 2026-09-02: 72
- 2026-09-01: 72

## Common questions

### What is the AgentMD MCP server?

AgentMD is an MCP server listed in the public MCP registry as io.github.djrobson5/agentmd. Convert PDF, DOCX, HTML, and URLs to clean, LLM-ready markdown with tables preserved. This page covers its npm package (agentmd-mcp).

### Is the AgentMD MCP server safe to use?

AgentMD scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 24 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the AgentMD MCP server expose?

AgentMD exposes 3 tools: convert_url_to_markdown, convert_file_to_markdown, convert_document_to_markdown. Their descriptions and schemas cost roughly 1,861 tokens of context every time the server is loaded.

### Is the AgentMD MCP server still maintained?

AgentMD is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the AgentMD MCP server under?

AgentMD declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/agentmd-mcp
- Socket report: https://socket.dev/npm/package/agentmd-mcp
- Repository: https://github.com/djrobson5/agentmd-mcp
- Website: https://www.getagentmd.com/
- Changelog RSS feed: https://verifymcp.io/servers/djrobson5-agentmd/agentmd-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/djrobson5-agentmd/agentmd-mcp.json
- HTML version of this page: https://verifymcp.io/servers/djrobson5-agentmd/agentmd-mcp
