Document to Markdown MCP server: PDF, Word, PowerPoint, Excel and HTML, with OCR for large files.
Model Context Protocol (MCP) Server: dev.flatmark/markdown-converter
The dev.flatmark/markdown-converter MCP server converts documents into Markdown. It supports PDF, Word, PowerPoint, Excel, and HTML inputs, including an OCR capability for large files.
๐ ๏ธ Key Features
Converts PDF, Word, PowerPoint, Excel, and HTML to Markdown
OCR support for large files
๐ Use Cases
Converting office documents and web pages into Markdown format
Handling large documents where OCR is required
โก Developer Benefits
Standardized Markdown output from multiple common input types
OCR assistance improves conversion for large files
Convert a document up to 8 MB to Markdown and return it directly.
Pass the file as base64 in `content_base64`, or as a download link in
`file`, and its name in `filename`. The extension decides the type: .pdf,
.docx, .pptx, .xlsx, .html, .htm or .txt. Returns `markdown` and `meta`
(`filename`, `length` in characters). PDFs come back as plain text
without headings and without OCR. For scans, tables and page numbers,
use `submit_conversion_job`. Works without an API key at the anonymous
rate limit.
Credits: 1 per call.
Parameters3
filename
string
required
The file name with its extension (.pdf, .docx, .pptx, .xlsx, .html, .htm or .txt). The extension decides how the file is read.
content_base64
any
optional
The file content, base64-encoded. Up to 8 MB before encoding.
file
object
optional
The file as a download link, instead of `content_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL.
Raw schema
{
"type": "object",
"properties": {
"filename": {
"description": "The file name with its extension (.pdf, .docx, .pptx, .xlsx, .html, .htm or .txt). The extension decides how the file is read.",
"type": "string"
},
"content_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The file content, base64-encoded. Up to 8 MB before encoding."
},
"file": {
"properties": {
"download_url": {
"description": "A public https URL of the file.",
"type": "string"
},
"file_id": {
"description": "An identifier for the file. ChatGPT sets it; other clients may pass any label, such as the file name.",
"type": "string"
},
"mime_type": {
"type": "string"
},
"file_name": {
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"type": "object",
"default": null,
"description": "The file as a download link, instead of `content_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL."
}
},
"required": [
"filename"
],
"additionalProperties": false
}
submit_conversion_job
Queue a document up to 25 MB and 200 pages for conversion with OCR and tables.
Pass the file as base64 in `content_base64`, or as a download link in
`file`, and its name in `filename` (.pdf, .docx, .pptx, .xlsx, .html,
.htm or .txt). Returns `job_id`, `status` and `result_url`. Call
`get_conversion_job` with the `job_id` until `status` is `succeeded` or
`failed`. A conversion may take up to about 2 minutes.
Optional `webhook_url`: a public http or https URL that receives a POST
with the job's final state. The request carries
`X-Appkit-Signature: sha256=<hex>`, an HMAC-SHA256 of the raw body keyed
with the returned `webhook_secret` (shown only once). 3 delivery attempts.
Requires an API key. The credits are refunded if the job fails. The
uploaded file is deleted when the job finishes. Results are kept for
7 days after submission.
Credits: 10 per call.
Parameters4
filename
string
required
The file name with its extension (.pdf, .docx, .pptx, .xlsx, .html, .htm or .txt). The extension decides how the file is read.
content_base64
any
optional
The file content, base64-encoded. Up to 25 MB before encoding.
file
object
optional
The file as a download link, instead of `content_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL.
webhook_url
any
optional
Optional. A public http or https URL that receives the job's final state.
Raw schema
{
"type": "object",
"properties": {
"filename": {
"description": "The file name with its extension (.pdf, .docx, .pptx, .xlsx, .html, .htm or .txt). The extension decides how the file is read.",
"type": "string"
},
"content_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The file content, base64-encoded. Up to 25 MB before encoding."
},
"file": {
"properties": {
"download_url": {
"description": "A public https URL of the file.",
"type": "string"
},
"file_id": {
"description": "An identifier for the file. ChatGPT sets it; other clients may pass any label, such as the file name.",
"type": "string"
},
"mime_type": {
"type": "string"
},
"file_name": {
"type": "string"
}
},
"required": [
"download_url",
"file_id"
],
"type": "object",
"default": null,
"description": "The file as a download link, instead of `content_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL."
},
"webhook_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional. A public http or https URL that receives the job's final state."
}
},
"required": [
"filename"
],
"additionalProperties": false
}
get_conversion_job
Check a queued conversion job you submitted.
Returns `job_id` and `status` (`queued`, `running`, `succeeded` or
`failed`). A succeeded job includes the `markdown` when it is under
100 KB, otherwise a `result_url` to download it (also free). A failed job
includes `error`, one sentence with the reason. Results are deleted
7 days after submission. An expired result is reported in `error`.
Requires an API key.
Credits: free. This tool is not metered.
Parameters1
job_id
string
required
The `job_id` returned by `submit_conversion_job`.
Raw schema
{
"type": "object",
"properties": {
"job_id": {
"description": "The `job_id` returned by `submit_conversion_job`.",
"type": "string"
}
},
"required": [
"job_id"
],
"additionalProperties": false
}
Document to Markdown API and MCP server for PDF, Word, PowerPoint, Excel and HTML. OCR queue for large files. Hosted in Germany.
flatmark converts PDF, Word, PowerPoint, Excel and HTML to Markdown over a REST API and an MCP server. Files up to 8 MB convert in one call with MarkItDown. Files up to 25 MB and 200 pages go through a queue that runs Docling with OCR and table detection. The queue returns Markdown and a JSON structure file, by polling or a signed webhook. The servers are in Germany. The free plan has 100 credits a month and needs no card.
Quickstart
Convert a PDF to Markdown in one call. The anonymous tier needs no key; add
-H "X-API-Key: $FLATMARK_API_KEY" for your plan's limits.