# flatmark

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

- name: dev.flatmark/markdown-converter
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 95/100
- quality: 88/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/dev.flatmark%2Fmarkdown-converter
- tools: https://api.protogrid.dev/v1/servers/dev.flatmark%2Fmarkdown-converter/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "markdown-converter": {
      "type": "http",
      "url": "https://api.flatmark.dev/mcp/",
      "headers": {
        "X-API-Key": "${X_API_KEY}"
      }
    }
  }
}
```

Placeholders to fill: `${X_API_KEY}`.

## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-99% +updated-18d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 88/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 3 of 3 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 1 of 3 tools declare all four hints; missing: convert_document (destructiveHint, idempotentHint); get_conversion_job (destructiveHint, idempotentHint)
- pass `tools.token_cost`: about 1,129 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 3 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 3, about 1,129 tokens to load them all
- tool set hash: b027cdcb55e16f4a4adaa264a405a55e
- tools last changed: 2026-10-01T22:11:51.007Z
- badge: [![protogrid quality](https://protogrid.dev/badge/dev.flatmark/markdown-converter.svg)](https://protogrid.dev/servers/dev.flatmark/markdown-converter)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-01 `get_conversion_job` changed (annotations)
- 2026-10-01 `submit_conversion_job` changed (annotations)
- 2026-10-01 `convert_document` changed (annotations)

Full history: https://api.protogrid.dev/v1/servers/dev.flatmark%2Fmarkdown-converter/changes

## Remotes

- https://api.flatmark.dev/mcp/ (streamable-http, auth none, reachable true, uptime30d 0.9864865)

## Packages

_none_

## Tools (3)

- `convert_document`: 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.
- `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.
- `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.
