Skip to main content
Glama

Server Details

Document to Markdown MCP server: PDF, Word, PowerPoint, Excel and HTML, with OCR for large files.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
flatmark-dev/flatmark
GitHub Stars
0
Server Listing
flatmark

TDQS

A4.4/5.0

Scored across 3 tools

Disambiguation4/5

convert_document and submit_conversion_job both convert documents, so there is surface overlap, but the descriptions draw a crisp line between synchronous conversion (≤8 MB, no OCR) and queued conversion with OCR/tables, and explicitly cross-reference each other. get_conversion_job is unambiguously the polling counterpart to submit_conversion_job.

Naming Consistency5/5

All three names follow a clean verb_noun snake_case pattern: convert_document, submit_conversion_job, get_conversion_job. The job-related pair shares the 'conversion_job' noun, making the workflow legible at a glance.

Tool Count5/5

Three tools is a tight, well-scoped set for a document conversion service: one synchronous entry point and an async submit/poll pair. Every tool earns its place with no filler or redundancy.

Completeness4/5

The core conversion lifecycle (sync convert, queue job, poll status, webhook callback) is fully covered, including error and result-expiry reporting. Minor gaps exist for ancillary operations like canceling a job or listing/deleting past jobs, but agents can work around these.

Available Tools

3 tools
convert_documentConvert a document to Markdown in one callA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoThe 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.
filenameYesThe file name with its extension (.pdf, .docx, .pptx, .xlsx, .html, .htm or .txt). The extension decides how the file is read.
content_base64NoThe file content, base64-encoded. Up to 8 MB before encoding.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnlyHint/openWorldHint annotations: states the 8 MB cap, that PDFs return plain text without headings or OCR, the 1-credit cost per call, and the anonymous rate-limit behavior. These are exactly the operational facts an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and size limit, then input methods, then limitations, then cost. Every sentence carries distinct information; no repetition of schema text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't enumerate return fields, yet it still mentions `markdown` and `meta`, and covers the size cap, format limits, alternatives and cost. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real value by framing the either/or of `content_base64` vs `file` and explaining that the extension in `filename` decides the type and the supported extensions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (convert a document to Markdown), plus scope (up to 8 MB) and behavior (return it directly), which distinguishes it from the async submit_conversion_job sibling without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: use submit_conversion_job 'for scans, tables and page numbers', and notes this tool works at the anonymous rate limit without an API key. Both a when-to-use and a when-to-use-something-else are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_conversion_jobCheck a queued conversionA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe `job_id` returned by `submit_conversion_job`.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the readOnlyHint annotation: the full status enum, the 100 KB inline-vs-result_url branch, the 7-day retention with expiry surfaced in error, the API key requirement, and the free/non-metered billing note. This is exactly the behavioral detail structured fields do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then organized into short paragraphs covering return values, retention, and cost/auth. Every sentence carries operational information; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite an output schema existing, the description enriches it with the semantics of each status branch, the size threshold behavior, and expiry handling, plus auth and billing constraints. An agent has everything needed to call and interpret this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single job_id parameter is documented as coming from submit_conversion_job, so the description adds nothing parameter-specific. Baseline 3 is appropriate when the schema carries the full burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Check a queued conversion job') and pins it to the job the caller previously submitted, which cleanly separates it from submit_conversion_job (which creates the job) and convert_document (which presumably runs synchronously). An agent can identify the polling role without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the phrase 'you submitted' signals this is the follow-up poll to submit_conversion_job, but the description never explicitly says when to call it, how often to poll, or that it should not be used instead of convert_document. Adequate but inferential.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_conversion_jobQueue a document for conversion with OCR and tablesAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoThe 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.
filenameYesThe file name with its extension (.pdf, .docx, .pptx, .xlsx, .html, .htm or .txt). The extension decides how the file is read.
webhook_urlNoOptional. A public http or https URL that receives the job's final state.
content_base64NoThe file content, base64-encoded. Up to 25 MB before encoding.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the mutation/open-world profile; the description adds substantial behavior beyond that: 25 MB / 200 page caps, API-key requirement, credit cost and refund-on-failure, file deletion on completion, 7-day result retention, and webhook signature/retry semantics including the one-time webhook_secret exposure. This is exactly the operational context an agent needs before invoking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the hard limits, then the input alternatives and async workflow, then webhook and lifecycle details. Dense and largely waste-free, though the returned fields (job_id, status, result_url) restate an output schema that already exists, and the extension list appears twice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation with nested file object and an output schema, the description covers limits, auth, cost, async polling, webhook contract, data lifecycle and failure handling. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents file, filename, webhook_url and content_base64. The description nonetheless reinforces the critical semantics: the extension determines how the file is read, base64 size is measured before encoding, and webhook_url must be public. Marginal but genuine added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Queue a document ... for conversion with OCR and tables') and immediately names the polling companion get_conversion_job. It never distinguishes itself from the sibling convert_document, so an agent choosing between the two queued-vs-sync likely paths gets no help from the text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear operational context: call get_conversion_job with the returned job_id until status is succeeded or failed, and it states the ~2 minute expected duration. It also clarifies the two mutually exclusive input paths (content_base64 vs. file). No explicit when-not-to-use guidance and no differentiation from convert_document.

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.

  1. 3 tool updates
    • First observedconvert_document
    • First observedget_conversion_job
    • First observedsubmit_conversion_job

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.