omd-mcp
Click on "Deploy 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., "@omd-mcpconvert this webpage to Markdown"
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.
OMD.EXE // PUBLIC BETA 0.3.0b2
OMD.EXE
A local AI context inbox for Markdown, Obsidian, and agents.
Turn documents, web pages, screenshots, audio, folders, and selected public URLs into traceable Markdown that stays in folders you control.
Live demo · Install · Walkthrough · Documentation · Report an issue
Walkthrough
Related MCP server: Markitdown MCP Server
How conversion stays recoverable
Core conversion never depends on AI. Optional model work is isolated, so a missing model or failed call leaves the raw Markdown intact.
Quick start
brew install omd-local/omd/omd
omd doctor
omd-uiChoose Markdown file for a normal export or Capture to vault note for an Obsidian folder. An Obsidian vault is just a local folder; OMD does not require an Obsidian plugin or account.
For quick personal thoughts and exact highlights, open Inbox / review. The
screen follows three steps: save the text, review the unchanged original, then
choose Create note in Notes or Mark as not needed. Creating a note makes
a traceable derivative under Notes/; either choice leaves the original under
Inbox/. Saving and reviewing do not call AI.
The custom Homebrew tap includes the project organisation in the command.
omd-local is the project owner, not a personal account. The beta installs the
CLI, MCP server, local browser UI, common document converters, and yt-dlp.
Large transcription and local-model tools remain optional.
Manual install
git clone https://github.com/omd-local/markdown-everything.git omd
cd omd
pip install -e '.[all]'
omd doctorPython 3.10 or newer is required. A minimal pip install -e . registers omd
and omd-mcp; the all extra adds the UI, MarkItDown, and Python yt-dlp.
Optional local model
OMD never downloads Ollama models automatically. Install and start Ollama, then run the model install command in Terminal. OMD recommends a conservative instruct model from the machine's total memory; this is a 16 GB example:
ollama pull qwen3:4b-instructKeep the UI host at http://localhost:11434 for fully local model calls. Core
conversion still works when Ollama is absent or stopped.
Optional AI draft for one Inbox item
Inbox review can optionally ask local Ollama to draft a takeaway, quote exact
evidence, and suggest tags. It reads the Inbox original by default. You may
instead explicitly select one read-only Markdown file from the unified vault
source list; OMD then uses only that file and can add its vault-relative
[[wikilink]] to the derived note. It never opens a URL or reads an unselected
file. Results without exact evidence are rejected, and the draft is not included
in a note unless you choose it.
You can instead send the selected text directly to the OpenAI API, Anthropic API, or DeepSeek API using your own developer API key. Cloud providers show a one-request preview and consent action with the exact provider, model, destination, content size, and current policy link. This is never required for capture or conversion; OMD does not use consumer ChatGPT/Claude login sessions, route through OpenRouter, or silently fall back to another provider. UI credentials use macOS Keychain when available or remain session-only. OMD checks a conservative request budget before reading the credential or contacting the provider; an oversized Inbox item is left unchanged and must be split rather than being silently truncated.
Optional transcription and OCR
# Apple Silicon speech-to-text for audio, podcasts, and supported videos
brew install pipx
pipx install mlx-whisper
# Text recognition inside screenshots and article images
brew install tesseract tesseract-langOCR means optical character recognition: it reads visible text from an image.
English uses eng; mixed Chinese and English can use chi_sim+eng. mlx-whisper
is Apple-Silicon only and is intentionally excluded from the base install because
its model stack is large.
Documents: PDF, DOCX, PPTX, XLSX, HTML, CSV, JSON, XML, EPUB, and ZIP use MarkItDown.
Images: PNG, JPG, WEBP, TIFF, and BMP use Tesseract OCR.
Audio: MP3, WAV, M4A, FLAC, and OGG use local Whisper when installed.
Web: articles, WeChat, and public webpages use a source adapter or web conversion.
Public posts: Reddit, X, Bluesky, Mastodon, Threads, Hacker News, and Telegram use bounded public adapters.
Media: Apple Podcasts, YouTube, TikTok, and Bilibili preserve metadata and use local transcription when available.
Local batches: folders and saved one-item-per-line lists route each item independently.
OMD does not bypass paywalls, login gates, captchas, access controls, or platform restrictions. Public posts can be deleted, private, quarantined, region-blocked, or rate-limited; a URL that opens in your signed-in browser may still reject an anonymous converter.
Douyin and Xiaohongshu / Rednote
These advanced local-only routes normally need separate Netscape cookies.txt
exports. Export cookies only from an account and content you are authorised to
use, then select the matching file in the UI:
Douyin cookies: export while signed in to
douyin.com.Xiaohongshu cookies: export while signed in to
xiaohongshu.com.Do not reuse one platform's cookie file for the other platform.
Cookies are disabled in the hosted demo and should never be committed.
Use Inspect source / cookies before starting. OMD warns when the current source list contains one of these platforms but its matching cookie file is missing.
Direct Markdown
omd report.pdf -o report.md
omd screenshot.png -o screenshot.md --lang eng
omd bilingual.png -o bilingual.md --lang chi_sim+engObsidian-compatible vault capture
omd capture report.pdf --vault ~/Obsidian/AI-Memory --tags research,pdf
omd capture "https://example.com/article" --vault ~/Obsidian/AI-MemoryCapture writes a readable note under Sources/<source type>/, updates
Index/OMD Captures.md, and keeps hashes, route diagnostics, model errors, and
other debug metadata in the adjacent .omd.json sidecar.
Optional local AI sections
omd report.pdf -o report.md --polish-md --polish-md-keep-raw
omd capture report.pdf --vault ~/Obsidian/AI-Memory --memory-cards--polish-md cleans parser/OCR noise. --memory-cards adds a summary, useful
tags, [[links]], and evidence-oriented cards above the preserved
## Full Content. Review all generated content before relying on it.
Read the Obsidian guide and memory cards guide. The optional provider boundary is documented in the privacy model.
# Inspect routing, tools, cookies, and local readiness without converting
omd inspect "<url-or-file>" --with-readiness
# Convert a folder or reusable one-item-per-line list
omd batch sources.txt -o out/
omd capture ~/Downloads/sources/ --vault ~/Obsidian/AI-Memory --batch
# Quiet deterministic output for agent-facing runs
omd --agent-safe report.pdf -o report.md
# Read-only vault-aware note enrichment proposal
omd enrich-note Inbox/example.md --vault ~/Obsidian/AI-Memory --json-events
omd enrich-note --request-json - --json-events < request.json
omd capabilities --jsonenrich-note returns a validated proposal on stdout and never edits the vault.
The complete v1 stdin/response/event contract is documented in the
enrich-note contract. Obsidian plugin authors
should also follow the plugin integration guide
for capability negotiation, subprocess isolation, response validation, and the
hash-checked Vault API write boundary.
omd-mcp exposes four tools:
convert_to_markdown(uri, output?, output_format?, lang?, reel_options?)inspect_source(uri, include_readiness?, cookies?, cookies_from_browser?)capture_to_vault(uri, vault, lang?, tags?)list_supported_formats()
Minimal MCP configuration:
{
"mcpServers": {
"omd": {
"command": "omd-mcp"
}
}
}Treat converted Markdown as untrusted input. MCP restricts local paths and
private-network URLs by default; use narrow OMD_MCP_ALLOWED_ROOTS only for
folders you intend the client to access.
Symptom | What to check |
| Reinstall the Homebrew package or |
OCR language unavailable | Install |
Local model warning | Start Ollama and run the displayed |
Web or Reddit HTTP 403 | The source rejected automated access. Save an authorised copy as HTML or PDF and convert the local file. |
Douyin / Xiaohongshu warning | Export a fresh platform-specific cookie file and select it in the matching UI field. |
Partial failure in a multi-file run | Open the output folder; successful items and partial raw outputs are retained when safe. |
Run omd doctor for local capability checks. For a reproducible report, include
a non-sensitive sample, the warning text, and --verbose output. Verbose logs
are shown in the process log and are not added to the user-facing Markdown note.
git clone https://github.com/omd-local/markdown-everything.git omd
cd omd
pip install -e '.[all,test,audit]'
make smoke
make testOMD builds on Microsoft MarkItDown, yt-dlp, f2, MLX Whisper, Ollama, and Tesseract.
Issues and focused pull requests are welcome. Read SECURITY.md before reporting a vulnerability. OMD is released under the MIT License.
Local-first, with explicit boundaries
Personal note use only. OMD is designed for personal research, note-taking, and AI-assisted knowledge workflows. It is not a legal, compliance, evidentiary, or archival system. Output may omit, reorder, or reformat source content. You are responsible for ensuring you have the right to access, process, and store each source. OMD does not bypass paywalls, access controls, or platform restrictions. Review AI-generated summaries, tags, Evidence, and
[[links]]before relying on them.
Local-first does not mean every URL workflow is offline: URLs contact their source platform, and explicitly configured remote model endpoints receive the content sent to them. Keep private material in the local app with loopback Ollama. See the privacy model and security policy.
Documentation
Read this | When you need it |
Copy-ready conversion, capture, inspect, batch, and polish commands | |
Folder layout, sidecars, indexes, and repeated captures | |
Local model setup and generated note sections | |
Proposal-only CLI/stdin integration, limits, errors, and trust boundary | |
Safe capability negotiation, managed subprocess use, and apply ownership | |
Remaining capability, validator, review/apply, and deployment gates | |
Additional acceptance tasks for proposal review, apply, conflicts, and cancellation | |
What stays local and when network access is used | |
Product scope and what OMD is not | |
Release history and current beta changes |
LOCAL SOURCES -> TRACEABLE MARKDOWN -> CONTEXT YOU CONTROL
Star this repository · Open the demo · Report a bug · MIT License
Available Tools
5 toolscapture_to_vaultB
Capture one source into an Obsidian-compatible local vault as Markdown plus an .omd.json manifest. Uses conservative agent defaults: path allowlist checks, no cookie/browser auth flags, no generated memory cards, and untrusted source labeling.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | URL, share blob, or allowed local file path to capture. | |
| lang | No | Tesseract language(s) for image OCR; use chi_sim+eng for Chinese + English. | eng |
| tags | No | Optional user tags added to the capture note. | |
| vault | Yes | Allowed local vault directory to write into. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does add real value: path allowlist checks, no cookie/browser auth flags, no generated memory cards, and untrusted source labeling. It still omits what happens on a blocked path, whether existing files are overwritten, and what failure looks like, so the safety profile is only partially disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the deliverable front-loaded and the default stance second. Dense but every clause carries information; no filler.
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?
No output schema exists, so the description usefully names the two artifacts it writes, which covers the return-value gap. However, for a write tool with no annotations it does not address overwrite behavior, permission requirements, or error handling, leaving a mutation with meaningful unresolved questions.
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 every parameter is already documented in the schema, making 3 the baseline. The description adds no format or syntax detail for uri, vault, lang, or tags beyond what the schema provides, so it neither compensates nor detracts.
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?
States a specific verb (capture) and resource (one source) plus the exact outputs produced: Markdown plus an .omd.json manifest in an Obsidian-compatible local vault. It does not name or contrast itself with siblings like convert_to_markdown or inspect_source, so an agent must infer the boundary between capturing and merely converting.
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?
There is no explicit when-to-use guidance and no comparison against convert_to_markdown or inspect_source, which are the obvious alternatives for the same kind of source. 'Capture one source' weakly implies single-source scope, but nothing tells the agent when this tool is the right pick versus its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_to_markdownB
Ingest a user-selected URL, file path, or directory into untrusted Markdown for local AI context workflows. Core routes include PDF/DOCX/PPTX/XLSX/HTML/CSV/ZIP via markitdown, PNG/JPG/JPEG via OCR, audio via local transcription, generic web pages, and directories as batches. Advanced public/local-only routes include social posts, WeChat articles, XHS/Douyin, reels, and podcasts when their source access requirements are met.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | URL, absolute file path, or directory path | |
| lang | No | Tesseract language(s) for image OCR (default eng; Chinese + English example: chi_sim+eng). | eng |
| output | No | Optional output .md/.Rmd path. If omitted, returns content inline. | |
| reel_options | No | Extra args forwarded to reel_to_markdown.py for video URLs (safe conversion flags only, e.g. ['--polish', '--ocr']). | |
| output_format | No | Output format: Markdown (.md) or RMarkdown (.Rmd). Defaults to md; explicit .md/.Rmd output paths are inferred when omitted. | md |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does add useful context — output is 'untrusted Markdown', directories become batches, and advanced routes have access requirements — but it omits permissions/auth needs, failure modes, rate limits, and side effects for a tool that touches local files and network sources.
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 purpose is front-loaded in the first sentence, which is good, but the two following sentences are dense, enumerative run-ons of format acronyms that are hard to parse and partially redundant with the schema.
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?
With no output schema, the description must cover returns, and it does state that content is returned inline when 'output' is omitted. Still, for a tool touching many file types and network routes with no annotations, the disclosure of behavior and failure conditions is thinner than ideal.
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 route list loosely maps to parameters (OCR/PNG-JPG to lang, reels to reel_options, output formats), but it adds no syntax or format detail beyond what the schema already documents.
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?
Clear specific verb+resource: ingest a URL/file path/directory and convert it into Markdown, with the supported input families enumerated. It does not explicitly distinguish itself from siblings like inspect_source or list_supported_formats, though its conversion scope is evident from the route 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?
It frames the use case ('for local AI context workflows') and notes that advanced routes are 'public/local-only ... when their source access requirements are met', implying prerequisites. However, there is no explicit when-to-use-this vs an alternative, and no guidance on choosing between this and sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_sourceA
Inspect how OMD would route a URL, share blob, file path, or directory without converting it. Optionally includes local readiness from doctor checks.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | URL, share blob, absolute file path, or directory path | |
| cookies | No | Optional cookies.txt path to include in readiness. | |
| include_readiness | No | Include local missing-tool/cookie readiness metadata. | |
| cookies_from_browser | No | Optional browser cookie source to include in readiness context. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose the key non-destructive trait ('without converting it') plus that readiness metadata can be included. However, it says nothing about permissions/auth needs, whether the inspection has any side effects, or what the routing output contains, so the side-effect profile is only partially covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences: the core routing behavior is front-loaded and the optional readiness capability is appended. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must sketch the return; it does so at a high level (routing decision, optional local readiness from doctor checks). Combined with fully documented parameters, this is nearly complete, though the shape/contents of a routing result remain underspecified.
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, giving a baseline of 3. The description restates the accepted uri forms and the readiness concept but adds no format, constraint, or interaction detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (inspect) plus resource (how OMD routes a URL/share blob/file path/directory), and it explicitly contrasts with the sibling convert_to_markdown via 'without converting it'. Clear enough to distinguish from conversion tools, though its relation to the other siblings is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: use this to preview routing instead of converting. There is no explicit when-to-use statement, no prerequisites, and no mention of when an agent should prefer this over convert_to_markdown beyond the single contrast phrase.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_supported_formatsB
List the input forms convert_to_markdown can route.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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, but it does convey that this is a pure enumeration with no parameters and, by the verb 'List', no mutation. It says nothing about return shape (identifiers, MIME types, count) or that it is safe/read-only, which for a discovery tool is a modest but real gap.
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?
A single short sentence with the resource named first and the relevant sibling cited; nothing is padded or redundant.
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?
With no output schema and no annotations, the description should ideally indicate the return format (e.g., a list of format names or MIME types). It establishes the tool's role but leaves the agent guessing at the response shape.
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 tool takes zero parameters, so per the baseline the schema cannot be improved on and the description need not document any inputs. No parameter meaning is required.
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 gives a specific verb ('List') and a specific resource ('the input forms convert_to_markdown can route'), and it explicitly ties itself to the sibling convert_to_markdown. It is unambiguous what the tool returns, though the term 'input forms' could be tightened (MIME types vs. extensions).
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?
There is no explicit when-to-use statement, no prerequisites, and no comparison to alternatives such as inspect_source. Usage is only implied by the reference to convert_to_markdown, which the agent must infer means 'call this to discover routeable formats before converting'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_memoryA
Search Markdown notes under an allowed local vault root. Returns relative paths, deterministic lexical scores, and bounded untrusted evidence snippets.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Local lexical search query. | |
| vault | Yes | Allowed local vault directory to search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does useful work: it discloses that results are relative paths, deterministic lexical scores, and bounded untrusted evidence snippets. It does not cover permissions beyond the 'allowed vault root' constraint, failure modes, or pagination 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?
Two tightly written sentences with the scope constraint front-loaded and zero redundant restatement of the tool name.
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 three-parameter read tool with no annotations and no output schema, the description covers return shape and scope adequately; the only real gap is the undocumented limit parameter and error/permission behavior.
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 67% (query and vault documented, limit undescribed). The description reinforces the vault constraint ('allowed local vault root') and the lexical nature of query, but adds nothing about the limit parameter or score/path formats beyond the schema. 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?
States a specific verb (Search) and resource (Markdown notes) bounded by scope (under an allowed local vault root), which is unambiguous and clearly distinct from convert/inspect/capture/list siblings that do not search note content.
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?
There is no when-to-use or when-not-to-use guidance, no prerequisites, and no routing to or away from siblings such as inspect_source. Usage is only inferable from the verb itself.
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.
5 tool updates
v0.1.0- First observed
capture_to_vault - First observed
convert_to_markdown - First observed
inspect_source - First observed
list_supported_formats - First observed
search_memory
TDQS
Scored across 5 tools
Most tools have clearly distinct purposes: convert, inspect, capture, search, and list formats. However, convert_to_markdown and capture_to_vault both convert a source to Markdown, which could cause slight confusion on when to use which, though descriptions differentiate by output destination and defaults.
All tools follow a consistent snake_case verb_noun pattern (convert_to_markdown, inspect_source, capture_to_vault, search_memory, list_supported_formats). No deviations in case or style.
Five tools cover the core operations: conversion, inspection, vault capture, search, and format listing. This is well-scoped for a markdown ingestion and vault tool without redundancy.
The surface covers ingestion, inspection, vault capture, and search, but lacks a way to retrieve full note content (search returns only bounded snippets) and no note update/delete operations. These are minor gaps for its stated purpose.
Maintenance
Related MCP Connectors
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
Convert files, URLs, and documents to clean, AI-ready Markdown via MCP.
Convert documents and web pages to clean Markdown: PDF, DOCX, XLSX, EPUB, scanned files, any URL.
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
Related MCP Servers
- AlicenseAqualityDmaintenanceConverts various file types and web content to Markdown format. It provides a set of tools to transform PDFs, images, audio files, web pages, and more into easily readable and shareable Markdown text.10244 npm2,990MIT
- FlicenseNot gradedqualityDmaintenanceConverts documents (PDF, DOCX, images, etc.) to Markdown using Microsoft's Markitdown library, with no local setup required. Integrates with AI agents via MCP for seamless document conversion.1-
- AlicenseAqualityBmaintenanceConverts documents between Markdown, PDF, DOCX, and HTML locally with AI-friendly Markdown output and secure file access.69 npmMIT
- AlicenseNot gradedqualityBmaintenanceA local web interface and MCP server for converting documents (PDF, Word, Excel, images, audio, etc.) to Markdown using Microsoft's MarkItDown library.2MIT