Mistral OCR MCP Server
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., "@Mistral OCR MCP ServerOCR pages 0-3 of D:\docs\paper.pdf 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.
Mistral OCR MCP Server
This MCP server exposes Mistral OCR for local files and public URLs.
Tools
Tool | Use |
| Validate keys, network access, model name, and output directory. |
| Set one runtime key for the current MCP process. |
| Set multiple runtime keys for automatic fallback. |
| Inspect a local file and return PDF page count when available. |
| OCR a local file and return Markdown inline. Best for short tests. |
| OCR a public URL and return Markdown inline. Best for short tests. |
| OCR a local file and save Markdown to disk. Best for PDFs. |
| OCR a public URL and save Markdown to disk. |
Related MCP server: MCP-PDF2MD
Configuration
Prefer multiple keys so the server can automatically switch when one key is unauthorized, rate-limited, or temporarily failing.
[mcp_servers.mistral-ocr]
type = "stdio"
command = "uv"
args = ["--directory", 'D:\34728\play\OCR\mistral-ocr-mcp', "run", "server.py"]
[mcp_servers.mistral-ocr.env]
MISTRAL_API_KEYS = "key1,key2,key3"
MISTRAL_OCR_OUTPUT_DIR = 'D:\34728\play\OCR\outputs'Single-key compatibility is still supported:
MISTRAL_API_KEY = "key1"After editing the Codex config, restart Codex or reload MCP tools so the new server process sees the environment variables.
Recommended Agent Workflow
Call
health_check.For a local PDF, call
list_pages.For a quick sample, call
ocr_from_filewithpages="0".For real work, call
ocr_to_markdown_fileand read the generated.md.
Example:
health_check()
list_pages(file_path="D:\docs\paper.pdf")
ocr_to_markdown_file(file_path="D:\docs\paper.pdf", pages="0-3")To preserve extracted PDF figures, pass include_images=true.
ocr_to_markdown_file(
file_path="D:\docs\paper.pdf",
pages="0-5",
include_images=true,
image_limit=50,
image_min_size=64
)The Markdown file will contain relative image links and the image files will be
saved in a sibling folder named like paper_hash_assets/.
Local Smoke Tests
cd D:\34728\play\OCR\mistral-ocr-mcp
uv sync
$env:MISTRAL_API_KEYS="key1,key2"
.\.venv\Scripts\python.exe -m py_compile server.py test_ocr.py
.\.venv\Scripts\python.exe test_ocr.py "https://arxiv.org/pdf/2201.04234"Notes
MISTRAL_API_KEYSaccepts comma-, semicolon-, or newline-separated keys.HTTP
401,403,429, selected transient failures, and5xxresponses trigger fallback to the next key.HTTP
400usually means a bad request or unsupported file payload and does not trigger key rotation.Saved Markdown uses UTF-8 and is written to
MISTRAL_OCR_OUTPUT_DIRoroutputs/next toserver.py.Cache filenames include a content/options hash. Re-running the same OCR task returns the cached Markdown path unless
use_cache=false.Mistral OCR returns images separately from Markdown. Without
include_images=true, the server saves text/tables only. Withinclude_images=true, the server requestsinclude_image_base64, writes image assets, and rewrites Markdown placeholders such asto local relative paths.
Available Tools
8 toolshealth_checkA
Check MCP configuration, key validity, output directory, and model name.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry behavioral info. It states it checks multiple aspects, but does not describe side effects, error behavior, or guarantee read-only nature. Minimal but not misleading.
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?
Single sentence, front-loaded with action verb 'Check', lists key items. Efficient and no wasted words.
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 zero parameters and presence of output schema, description covers the tool's purpose. Sibling tools indicate it's a diagnostic tool. Could mention it's safe to run anytime, but not necessary for this simplicity.
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?
No parameters exist, so baseline is 4. Description adds no parameter info because none are needed; schema coverage is 100%.
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?
Description clearly states the tool checks MCP configuration, key validity, output directory, and model name. This differentiates it from siblings like list_pages and OCR tools which serve different purposes.
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?
While no explicit when-to-use guidance is provided, the context of siblings (list_pages, OCR, set_api_key) implies it's for verifying setup before using other tools. However, lacking explicit alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesB
Return basic local file information and PDF page count when available.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of behavioral disclosure. It indicates that PDF page count is conditional ('when available'), but does not detail permissions, side effects, or edge cases.
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 description is a single sentence that front-loads the action and key output, with no wasted words. It is appropriately concise for a simple tool.
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?
Given the tool's simplicity and the presence of an output schema, the description is moderately complete for basic understanding, but lacks detail on parameter specifics and usage context.
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 single parameter 'file_path' has no schema description (0% coverage), and the description does not elaborate on expected format or constraints beyond implying it refers to a local file. This adds minimal value over the parameter name.
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 clearly states the tool returns local file information and PDF page count when available. It distinguishes itself from sibling OCR tools which have different purposes.
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?
No guidance is provided on when to use this tool compared to siblings or alternative approaches. The description does not mention prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ocr_from_fileA
从本地文件或图片中提取 Markdown 文本并以字符串形式返回。
默认使用 "mistral-ocr-latest" 模型。
默认不提取图片。若需提取,需设置 include_images=True。
可调参数:
- file_path (str): 必填,本地文档(如 PDF, PPTX, DOCX)或图片文件的绝对路径。
- pages (str, 默认 ""): 指定需要提取的页码范围(如 "0-3"),为空表示提取所有页面。
- table_format (str, 默认 "markdown"): 表格输出格式。可选 "markdown"、"html" 或 None。
- include_images (bool, 默认 False): 是否提取图片。若开启,将返回图片信息。
- extract_header (bool, 默认 False): 是否专门解析并提取页眉。
- extract_footer (bool, 默认 False): 是否专门解析并提取页脚。
- image_limit (int, 默认 0): 限制单次提取的最大图片数量。
- image_min_size (int, 默认 0): 设置提取图片的最小尺寸限制(像素)。
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | ||
| file_path | Yes | ||
| image_limit | No | ||
| table_format | No | markdown | |
| extract_footer | No | ||
| extract_header | No | ||
| image_min_size | No | ||
| include_images | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description carries the full burden. It discloses defaults (model, include_images=False), parameter behaviors (header/footer extraction, image limits), and output format (Markdown string). However, it lacks details on error handling, rate limits, or required permissions, leaving some behavioral gaps.
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 description is well-structured: primary action first, then defaults, then parameter list. It is slightly long but every sentence adds value. Could be tightened by grouping related parameters, but remains efficient.
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?
Given 8 parameters, 1 required, and an output schema (not shown), the description covers all parameters and core behavior. It does not explicitly differentiate from siblings or detail return structure beyond 'Markdown text', but context is adequate for a single tool.
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 coverage is 0%, so the description must fully explain parameters. It does so thoroughly: each parameter is described with purpose, default, and allowed values (e.g., table_format options). This adds significant meaning beyond the bare schema, enabling correct usage.
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 clearly states the tool extracts Markdown text from local files or images. It distinguishes from sibling tools like ocr_from_url by specifying 'local file' and 'absolute path', leaving no ambiguity.
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?
The description does not explicitly state when to use this tool versus alternatives (e.g., ocr_from_url for remote files). Usage context is implied by the tool name and file_path parameter, but no explicit guidance or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ocr_from_urlB
从公开的文档或图片 URL 中提取 Markdown 文本。
默认使用 "mistral-ocr-latest" 模型。
默认不提取图片。若需提取,需设置 include_images=True。
可调参数:
- url (str): 必填,目标文件或图片的公网 URL 地址。
- pages (str, 默认 ""): 指定需要提取的页码范围(如 "0-3"),为空表示提取所有页面。
- table_format (str, 默认 "markdown"): 表格输出格式。可选 "markdown"、"html" 或 None。
- include_images (bool, 默认 False): 是否提取图片。若开启,将返回图片信息。
- extract_header (bool, 默认 False): 是否专门解析并提取页眉。
- extract_footer (bool, 默认 False): 是否专门解析并提取页脚。
- image_limit (int, 默认 0): 限制单次提取的最大图片数量。
- image_min_size (int, 默认 0): 设置提取图片的最小尺寸限制(像素)。
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| pages | No | ||
| image_limit | No | ||
| table_format | No | markdown | |
| extract_footer | No | ||
| extract_header | No | ||
| image_min_size | No | ||
| include_images | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must compensate. It mentions default model, image extraction default, and lists parameters but lacks details on side effects, auth, or rate limits.
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 description is structured with a brief introduction and parameter list, avoiding fluff. Could be more compact but is reasonably concise.
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 8 parameters and an output schema, the description covers parameter semantics adequately but misses usage context and output details (though output schema may compensate).
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 0%, but the description provides explanations for each parameter. However, there is a contradiction: description says default include_images=False, but schema shows default true, reducing reliability.
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 clearly states the tool extracts Markdown text from a public URL, listing key parameters and defaults. However, it does not distinguish from sibling tools like ocr_from_file or ocr_to_markdown_file.
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?
No explicit guidance on when to use this tool vs alternatives (e.g., file-based OCR). The description only implies URL usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ocr_to_markdown_fileA
OCR 本地文件并将生成的 Markdown 保存至磁盘。
默认使用 "mistral-ocr-latest" 模型。
默认不提取图片。若需提取,需设置 include_images=True。
非常适用于 PDF 或较长文档的 OCR,以避免因结果过大而超出模型上下文窗口限制。
可调参数:
- file_path (str): 必填,本地文档(如 PDF, PPTX, DOCX)或图片文件的绝对路径。
- pages (str, 默认 ""): 指定需要提取的页码范围(如 "0-3"),为空表示提取所有页面。
- output_dir (str, 默认 ""): 指定保存 Markdown 文件的目录路径,若为空则使用默认输出目录。
- table_format (str, 默认 "markdown"): 表格输出格式。可选 "markdown"、"html" 或 None。
- include_images (bool, 默认 False): 是否提取图片。若开启,将返回并保存图片信息。
- extract_header (bool, 默认 False): 是否专门解析并提取页眉。
- extract_footer (bool, 默认 False): 是否专门解析并提取页脚。
- use_cache (bool, 默认 True): 是否启用缓存,已处理过的内容直接返回缓存路径。
- image_limit (int, 默认 0): 限制单次提取的最大图片数量。
- image_min_size (int, 默认 0): 设置提取图片的最小尺寸限制(像素)。
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | ||
| file_path | Yes | ||
| use_cache | No | ||
| output_dir | No | ||
| image_limit | No | ||
| table_format | No | markdown | |
| extract_footer | No | ||
| extract_header | No | ||
| image_min_size | No | ||
| include_images | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility. It discloses default model and image extraction behavior, but lacks details on destructive actions, authentication, or potential errors. The use_cache behavior is mentioned, adding some transparency.
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 description is front-loaded with the primary purpose, then default model and use case, followed by a structured parameter list. It is appropriately sized for 10 parameters, but could be slightly more concise by grouping defaults.
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?
Given the complexity (10 parameters, no annotations, output schema exists), the description covers purpose, use case, and all parameters thoroughly. It lacks error handling or prerequisites, but the output schema compensates for return values.
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 0%, but the description compensates fully by explaining each of the 10 parameters with examples and defaults (e.g., pages as range, output_dir as directory path). This adds significant meaning beyond the bare 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?
The description clearly states 'OCR local files and save generated Markdown to disk', with a specific verb and resource. It distinguishes from siblings like ocr_from_file (returns text) and ocr_url_to_markdown_file (URL input) by specifying local files and disk output.
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?
The description notes it is suitable for PDFs or long documents to avoid exceeding context windows, providing clear context. However, it does not explicitly exclude alternatives or mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ocr_url_to_markdown_fileA
OCR 公网 URL 指向的文件并将生成的 Markdown 保存至磁盘。
默认使用 "mistral-ocr-latest" 模型。
默认不提取图片。若需提取,需设置 include_images=True。
可调参数:
- url (str): 必填,目标文件或图片的公网 URL 地址。
- pages (str, 默认 ""): 指定需要提取的页码范围(如 "0-3"),为空表示提取所有页面。
- output_dir (str, 默认 ""): 指定保存 Markdown 文件的目录路径,若为空则使用默认输出目录。
- table_format (str, 默认 "markdown"): 表格输出格式。可选 "markdown"、"html" 或 None。
- include_images (bool, 默认 False): 是否提取图片。若开启,将返回并保存图片信息。
- extract_header (bool, 默认 False): 是否专门解析并提取页眉。
- extract_footer (bool, 默认 False): 是否专门解析并提取页脚。
- use_cache (bool, 默认 True): 是否启用缓存,已处理过的内容直接返回缓存路径。
- image_limit (int, 默认 0): 限制单次提取的最大图片数量。
- image_min_size (int, 默认 0): 设置提取图片的最小尺寸限制(像素)。
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| pages | No | ||
| use_cache | No | ||
| output_dir | No | ||
| image_limit | No | ||
| table_format | No | markdown | |
| extract_footer | No | ||
| extract_header | No | ||
| image_min_size | No | ||
| include_images | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description discloses default model ('mistral-ocr-latest'), image extraction behavior, caching, and parameter effects, offering moderate transparency. Missing details on file overwrite or error 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?
The description is structured with a brief summary followed by a well-organized parameter list. It is informative without excessive verbosity, though the parameter section could be slightly more concise.
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?
Given an output schema exists (not shown), the description adequately covers core functionality and parameters. However, it lacks details on error handling, authentication, or disk behavior, which would improve completeness.
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 description compensates for 0% schema coverage by explaining each of the 10 parameters with type, default, and purpose in Chinese, providing clear meaning 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?
The description clearly states the action ('OCR') and resource ('公网 URL 指向的文件') and output ('生成的 Markdown 保存至磁盘'), distinguishing it from siblings like ocr_from_url which likely returns text.
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?
The description provides default model and parameter details but does not explicitly guide when to use this tool over siblings like ocr_from_url or ocr_to_markdown_file. Usage is implied but not contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_api_keyC
Set one Mistral API key for this running MCP server.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the action but does not disclose side effects (e.g., overwriting, persistence), output format, or authentication requirements. Minimal behavioral insight.
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 description is a single sentence, which is concise, but it sacrifices necessary detail. It is not verbose, but the brevity reduces informativeness.
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?
Given the simplicity of the tool (one parameter, single action), the description is incomplete. It fails to explain behavioral nuances, differentiation from 'set_api_keys', or expected outputs, leaving gaps for an AI agent.
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 parameter 'api_key' has 0% schema description coverage and the tool description adds no extra meaning. It does not explain the expected format, length, or any constraints, making it unhelpful beyond the parameter name.
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 clearly states the action (set) and the resource (one Mistral API key). It distinguishes itself from the sibling 'set_api_keys' tool by specifying 'one' key, implying a singular operation.
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?
No guidance on when to use this tool versus its sibling 'set_api_keys'. The description does not mention prerequisites, context, or alternatives, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_api_keysC
Set one or more Mistral API keys for this running MCP server.
Args:
api_keys: Comma-, semicolon-, or newline-separated API keys.
| Name | Required | Description | Default |
|---|---|---|---|
| api_keys | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as whether keys are replaced or appended, whether the operation is reversible, or any security implications. The description only states the action without side effects or safety context.
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 description is very concise – one clear sentence plus an args section. Every sentence serves a purpose. It could be slightly improved by including behavioral details while remaining concise.
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?
Given the tool's simplicity and the presence of an output schema, the description provides the basic purpose and parameter format. However, it lacks context about side effects (e.g., does it replace all keys?) and differentiation from the sibling, making it only minimally complete.
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 schema coverage is 0%, so the description must compensate. It explains that 'api_keys' should be comma-, semicolon-, or newline-separated strings, adding format meaning beyond the schema. However, it does not specify validation, example values, or error handling, leaving gaps.
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 clearly states the tool sets Mistral API keys for the MCP server. The name 'set_api_keys' implies setting multiple keys, and the description says 'one or more', which hints at the difference from sibling 'set_api_key'. However, it does not explicitly differentiate, so it lacks full sibling distinction.
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?
No guidance is provided on when to use this tool versus the sibling 'set_api_key', nor are there prerequisites or context about the running server. The description is purely declarative without usage cues.
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.
8 tool updates
v0.1.0- First observed
health_check - First observed
list_pages - First observed
ocr_from_file - First observed
ocr_from_url - First observed
ocr_to_markdown_file - First observed
ocr_url_to_markdown_file - First observed
set_api_key - First observed
set_api_keys
TDQS
Scored across 8 tools
Most tools have distinct purposes: health_check, list_pages, and API key management are clearly separate. The four OCR tools form two pairs (from_file vs from_url, and return string vs save to file), which are distinguishable by source and output, but could cause confusion if an agent overlooks the output difference.
Naming uses a mix of patterns: 'ocr_from_file' vs 'ocr_to_markdown_file' use different prepositions for source vs destination, while 'set_api_key' and 'set_api_keys' are consistent. Overall, the names are readable but not perfectly consistent.
8 tools cover the essential functions: health check, file listing, two OCR sources, two output options, and API key management. This is well-scoped for an OCR server without being excessive.
The tool set covers all core OCR operations (from file and URL, output as string or file) plus configuration and key management. Minor gaps exist, such as no direct model selection or cache clearing, but the main workflow is complete.
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.
Convert PDFs/images to Word, Excel, and Markdown. Split, merge, and watermark PDF files.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceOCR images or pdfs, locally or by URLs by using Mistral OCR API (paid)39MIT
- AlicenseAqualityDmaintenanceConverts PDF files from local storage or URLs to structured Markdown format using Mistral AI's OCR API, preserving document structure and extracting images.21MIT
- FlicenseAqualityDmaintenanceExtracts text content from PDFs and images using Mistral's OCR API, enabling OCR capabilities in MCP-compatible clients like Cursor and Claude Desktop.18-
- AlicenseNot gradedqualityAmaintenanceConverts documents and images to Markdown using Mistral AI's OCR, enabling AI-powered document processing via MCP-compatible clients like Claude Desktop.28 npm2MIT