Docling MCP
OfficialSupports RAG applications by uploading and retrieving document embeddings in Milvus vector stores.
Click on "Install 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., "@Docling MCPconvert report.pdf to structured JSON"
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.
Docling MCP: making docling agentic
A document processing service using the Docling-MCP library and MCP (Model Context Protocol) for tool integration.
Overview
Docling MCP is a service that provides tools for document conversion, processing and generation. It uses the Docling library to convert PDF documents into structured formats and provides a caching mechanism to improve performance. The service exposes functionality through a set of tools that can be called by client applications.
Related MCP server: PDF MCP Server
Compatibility
docling-mcp | MCP Python SDK |
|
|
|
|
If your MCP client application has not yet migrated to MCP SDK v2, pin:
pip install "docling-mcp<3.0.0"See MIGRATION.md for the full migration guide.
Installation Options
Remote Mode (Recommended - Lightweight)
For users with access to Docling Serve API:
Getting Docling Serve: Visit docling-serve for installation guides. You can deploy it from published container images or look for managed Docling SaaS offerings.
pip install docling-mcpThen configure your environment:
export DOCLING_MCP_SERVICE_URL=https://your-docling-service.example.com
export DOCLING_MCP_SERVICE_API_KEY=your-api-key-here
export DOCLING_MCP_CONVERSION_MODE=remoteLocal Mode (Full Features)
For users who need local conversion or don't have Docling Serve access:
pip install docling-mcp[local]Then configure your environment:
export DOCLING_MCP_CONVERSION_MODE=localHybrid Mode (Best of Both)
Install with local support and enable automatic fallback:
pip install docling-mcp[local]Configure for remote with fallback:
export DOCLING_MCP_SERVICE_URL=https://your-docling-service.example.com
export DOCLING_MCP_CONVERSION_MODE=remote
export DOCLING_MCP_FALLBACK_TO_LOCAL=trueFeatures
Conversion tools:
PDF document conversion to structured JSON format (DoclingDocument)
Generation tools:
Document generation in DoclingDocument, which can be exported to multiple formats
Local document caching for improved performance
Support for local files and URLs as document sources
Memory management for handling large documents
Logging system for debugging and monitoring
RAG applications with Milvus upload and retrieval
Configuration
All settings use the DOCLING_MCP_ prefix and can be supplied as environment
variables, in a .env file in the working directory, or via the env block of
your MCP client config. Copy .env.example as a starting point.
Conversion mode
Variable | Default | Description |
|
|
|
Remote service (required when DOCLING_MCP_CONVERSION_MODE=remote)
Variable | Default | Description |
| — | URL of the Docling Serve instance |
| — | API key for the service |
|
| Request timeout in seconds |
|
| Max retry attempts |
|
| Fall back to local if service is unreachable (requires |
Conversion pipeline (applies to both modes)
Variable | Default | Description |
|
| Retain page images in output |
|
| Image scale factor (increase to avoid tensor padding errors) |
|
| Run OCR pipeline |
|
| Detect table structure |
LlamaIndex RAG (--tools llama-index-rag)
Variable | Default | Description |
|
| OpenAI-compatible LLM endpoint |
|
| API key for the LLM endpoint |
|
| LLM model identifier |
|
| HuggingFace embedding model |
LlamaStack (--tools llama-stack-rag / --tools llama-stack-ie)
Variable | Default | Description |
|
| LlamaStack server URL |
|
| Embedding model for vector DB |
|
| Model used for structured extraction |
Setting variables in an MCP client config
{
"mcpServers": {
"docling": {
"command": "uvx",
"args": [
"--from=docling-mcp",
"docling-mcp-server"
],
"env": {
"DOCLING_MCP_CONVERSION_MODE": "remote",
"DOCLING_MCP_SERVICE_URL": "https://your-docling-service.example.com",
"DOCLING_MCP_SERVICE_API_KEY": "your-api-key-here"
}
}
}
}Getting started
The easiest way to install Docling MCP and connect it to your client is by launching it via uvx.
Depending on the transfer protocol required, specify the argument --transport, for example
stdioused e.g. in Claude for Desktop and LM Studiouvx --from docling-mcp docling-mcp-server --transport stdiosseused e.g. in Llama Stackuvx --from docling-mcp docling-mcp-server --transport ssestreamable-httpused e.g. in containers setupuvx --from docling-mcp docling-mcp-server --transport streamable-http
More options are available, e.g. the selection of which toolgroup to launch. Use the --help argument to inspect all the CLI options.
For developing the MCP tools further, please refer to the Developing section of CONTRIBUTING.md for instructions.
Integration with MCP clients
One of the easiest ways to experiment with the tools provided by Docling MCP is to leverage an AI desktop client with MCP support. Most of these clients use a common config interface. Adding Docling MCP in your favorite client is usually as simple as adding the following entry in the configuration file.
{
"mcpServers": {
"docling": {
"command": "uvx",
"args": [
"--from=docling-mcp",
"docling-mcp-server"
]
}
}
} When using Claude for Desktop, simply edit the config file claude_desktop_config.json with the snippet above or the example provided here.
In LM Studio, edit the mcp.json file with the appropriate section or simply click on the button below for a direct install.
Other integrations are described in the integrations page.
Examples
Converting documents
Example of prompt for converting PDF documents:
Convert the PDF document at <provide file-path> into DoclingDocument and return its document-key.Generating documents
Example of prompt for generating new documents:
I want you to write a Docling document. To do this, you will create a document first by invoking `create_new_docling_document`. Next you can add a title (by invoking `add_title_to_docling_document`) and then iteratively add new section-headings and paragraphs. If you want to insert lists (or nested lists), you will first open a list (by invoking `open_list_in_docling_document`), next add the list_items (by invoking `add_listitem_to_list_in_docling_document`). After adding list-items, you must close the list (by invoking `close_list_in_docling_document`). Nested lists can be created in the same way, by opening and closing additional lists.
During the writing process, you can check what has been written already by calling the `export_docling_document_to_markdown` tool, which will return the currently written document. At the end of the writing, you must save the document and return me the filepath of the saved document.
The document should investigate the impact of tokenizers on the quality of LLMs.Contributing
We welcome external contributions. See CONTRIBUTING.md for details on how to get started.
License
The Docling MCP codebase is under MIT license. For individual model usage, please refer to the model licenses found in the original packages.
LF AI & Data
Docling and Docling MCP is hosted as a project in the LF AI & Data Foundation.
IBM ❤️ Open Source AI: The project was started by the AI for knowledge team at IBM Research Zurich.
Available Tools
19 toolsadd_list_items_to_list_in_docling_documentAdd items to list in Docling documentA
Add list items to an open list in an existing document in the local document cache.
This tool inserts new list items with the specified text and marker into an open list within a document. It requires that the document exists and that there is at least one item in the document's stack cache.
| Name | Required | Description | Default |
|---|---|---|---|
| list_items | Yes | A list of list_item_text and list_marker_text items. | |
| document_key | Yes | The unique identifier of the document in the local cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| document_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only say not read-only and not destructive), the description reveals a stateful precondition: the target list must be open and the stack cache needs an item. This is useful hidden behavior. It stops short of describing failure behavior or exact insertion semantics.
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 concise sentences with the core action front-loaded and useful prerequisites in the second sentence. A minor redundancy exists because 'inserts new list items' restates 'Add list items', keeping it a 4 rather than a 5.
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?
The key stateful requirement is mentioned, but the description relies on the unexplained 'stack cache' concept and never ties the tool to the open_list_in_docling_document lifecycle. An agent could infer the ordering, but the description itself leaves that gap.
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 document_key, list_items, list_item_text, and list_marker_text. The description mentions 'specified text and marker' but adds no meaning beyond the schema, matching the baseline.
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 names a specific verb ('Add'), a concrete resource ('list items'), and a precise target ('open list in an existing document in the local document cache'). This clearly separates it from sibling tools like open_list_in_docling_document, close_list_in_docling_document, and add_paragraph_to_docling_document.
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 states the context clearly: the document must already exist, the list must be open, and the document's stack cache must contain at least one item. It does not explicitly say 'call open_list_in_docling_document first' or list exclusions, so it is not a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_paragraph_to_docling_documentAdd paragraph to Docling documentB
Add a paragraph of text to an existing document in the local document cache.
This tool inserts a new paragraph under the specified section header and level into a document that has already been processed and stored in the cache.
| Name | Required | Description | Default |
|---|---|---|---|
| paragraph | Yes | The text content to add as a paragraph. | |
| document_key | Yes | The unique identifier of the document in the local cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| document_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating operation (readOnlyHint=false, destructiveHint=false). The description adds that the paragraph is inserted 'under the specified section header and level,' but the input schema has no parameters for a section header or level, making this claim confusing and under-specified. No further behavioral detail is provided about positioning, ordering, or side effects.
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 short and front-loaded, with the core action in the first sentence. However, the two sentences are somewhat redundant: 'existing document in the local document cache' and 'already been processed and stored in the cache' convey nearly the same information.
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?
An output schema exists, so return-value details are not necessary here. However, the description references a 'specified section header and level' without explaining how those are supplied, since neither appears in the input schema. It also does not indicate how the paragraph anchors to existing document structure, leaving an important invocation gap for a mutation tool in a large sibling family.
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 both parameters. The description reinforces that document_key identifies a cached document and paragraph is the text content, but adds no additional formatting, syntax, or location semantics beyond what the schema provides.
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 names a specific verb and resource: 'Add a paragraph of text to an existing document in the local document cache.' It also mentions placement 'under the specified section header and level,' which helps distinguish it from sibling tools that add titles, headings, or list items, though it does not explicitly contrast them.
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 gives a clear precondition: the document must already be processed and stored in the cache. However, it does not state when to prefer this tool over sibling tools like add_section_heading_to_docling_document or add_list_items_to_list_in_docling_document, nor does it provide any explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_section_heading_to_docling_documentAdd section heading to Docling documentA
Add a section heading to an existing document in the local document cache.
This tool inserts a section heading with the specified heading text and level into a document that has already been processed and stored in the local cache. Section levels typically represent heading hierarchy (e.g., 1 for H1, 2 for H2).
| Name | Required | Description | Default |
|---|---|---|---|
| document_key | Yes | The unique identifier of the document in the local cache. | |
| section_level | Yes | The level of the heading, starting from 1, where 1 is the highest level. | |
| section_heading | Yes | The text to use for the section heading. |
Output Schema
| Name | Required | Description |
|---|---|---|
| document_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the safety profile is known. The description adds that the tool 'inserts' a heading into an existing cached document, which is useful. However, it does not explain where the heading is inserted, whether it appends at the end, or how it interacts with existing document structure.
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 compact and front-loaded with the core purpose. The additional sentences clarify the cache prerequisite and heading-level semantics without unnecessary verbosity. Every sentence earns its place.
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 simple three-parameter mutation tool with an output schema and clear annotations, the description adequately covers the purpose, prerequisite, and heading-level behavior. The main missing detail is insertion position, but this is a minor gap given the tool's simplicity and the availability of structured schema information.
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 100%, so the schema documents all parameters well. The description adds a small clarification that section levels represent heading hierarchy with examples like H1 and H2, but most parameter meaning is already present in the schema. This matches the baseline for high schema coverage.
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 states a specific action and resource: 'Add a section heading to an existing document in the local document cache.' It is clear this tool modifies an existing Docling document by inserting a heading. It does not explicitly differentiate itself from sibling tools like add_title_to_docling_document, but the term 'section heading' and the concept of heading levels provide enough distinction for a clear purpose.
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 clearly indicates that this tool is for documents 'already been processed and stored in the local cache,' establishing the prerequisite context. It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to know when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_table_in_html_format_to_docling_documentAdd HTML table to Docling documentA
Add an HTML-formatted table to an existing document in the local document cache.
This tool parses the provided HTML table string, converts it to a structured table representation, and adds it to the specified document. It also supports optional captions and footnotes for the table.
| Name | Required | Description | Default |
|---|---|---|---|
| html_table | Yes | The HTML string representation of the table to add. | |
| document_key | Yes | The unique identifier of the document in the local cache. | |
| table_captions | No | A list of caption strings to associate with the table.. | |
| table_footnotes | No | A list of footnote strings to associate with the table. |
Output Schema
| Name | Required | Description |
|---|---|---|
| document_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a mutating (readOnlyHint=false) but non-destructive (destructiveHint=false) operation. The description adds useful behavioral context: it parses the HTML, converts it to a structured table representation, and supports captions and footnotes. It does not disclose potential failure modes or what happens on invalid HTML, but it goes beyond the annotations enough to avoid a lower score.
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 compact, front-loaded with the core action, and each sentence adds distinct information. There is slight redundancy ('adds it to the specified document' echoes the first sentence), but almost 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?
For a tool with an output schema and fully documented inputs, the description covers the core operation, the transformation process, and optional features. It lacks explicit usage guidance and error-behavior notes, but the overall context signals and schema fill most gaps needed for correct selection and invocation.
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% and examples are provided for html_table, so the schema already documents each parameter thoroughly. The description adds no significant parameter-level meaning beyond repeating that captions and footnotes are optional. 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?
The description states a specific verb and resource: 'Add an HTML-formatted table to an existing document in the local document cache.' It also explains the mechanism (parses HTML, converts to structured table) and this clearly distinguishes it from sibling add_title/add_paragraph/add_list_items tools. The name and description align perfectly.
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 implies when to use the tool: when you have an HTML table string and want to attach it to an existing cached document. However, it does not explicitly mention when not to use it, nor does it reference alternative sibling tools for adding other content types. Usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_title_to_docling_documentAdd or update title to Docling documentA
Add or update the title of a document in the local document cache.
This tool modifies an existing document that has already been processed and stored in the local cache. It requires that the document already exists in the cache before a title can be added.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The title text to add or update to the document. | |
| document_key | Yes | The unique identifier of the document in the local cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| document_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating but non-destructive operation. The description adds valuable context by specifying that the tool modifies an existing cached document and requires the document to already exist. This goes beyond the raw annotation flags and clarifies the operational precondition.
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 concise and well-structured, with the primary purpose stated in the first sentence and the key prerequisite clarified in the second. There is no redundant or filler content; every sentence adds relevant information.
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 simple tool with two required, fully described parameters and an output schema, this description is complete. It states what the tool does, where it operates, and the critical precondition for use. Nothing essential is missing for an agent to invoke it correctly.
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 already provides 100% coverage for both parameters, including descriptions for 'title' and 'document_key'. The tool description doesn't add much beyond the schema, but the prerequisite about the document already existing in the cache slightly reinforces the meaning of document_key. This meets the baseline for fully documented parameters.
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 a specific verb ('add or update') and resource ('title of a document in the local document cache'), making the tool's purpose unambiguous. It also explicitly says it modifies an existing document, which distinguishes it from creation-focused siblings like create_new_docling_document.
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 clear usage context: this tool is for documents already processed and stored in the local cache, and it requires the document to exist before adding a title. It does not explicitly name alternatives or state when not to use it, but the prerequisite is clear enough to avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_list_in_docling_documentClose list in Docling documentA
Closes a list group in an existing document in the local document cache.
This tool closes a previously opened list structure within a document. It requires that the document exists and that there is more than one item in the document's stack cache.
| Name | Required | Description | Default |
|---|---|---|---|
| document_key | Yes | The unique identifier of the document in the local cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| document_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-destructive operation. The description adds useful behavioral context by disclosing the stack cache requirement and that it closes a previously opened list structure, which helps the agent understand it is a state-changing operation.
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 short and front-loaded, with the core action in the first sentence. The second sentence is somewhat redundant with the first, but it adds the 'previously opened' and 'stack cache' nuance, so the slight overlap is acceptable.
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 simple one-parameter mutation tool with an output schema and annotations covering read-only/destructive hints, the description provides enough context: what it closes, where, and the required preconditions. It does not explain error handling, but that is not essential for an agent to call it correctly.
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%, with document_key already described as the unique identifier of the document in the local cache. The description reinforces that the document must already exist, but does not add meaningful new parameter-level semantics 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 uses a specific verb ('closes') and resource ('list group in an existing document in the local document cache'), and clarifies it operates on a previously opened list structure. This clearly differentiates it from sibling tools like open_list_in_docling_document and add_list_items_to_list_in_docling_document.
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 gives concrete preconditions: the document must exist and the stack cache must have more than one item. It implies the tool should be used after opening a list and adding items, though it does not explicitly name alternatives or state 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.
convert_directory_files_into_docling_documentConvert files from directory into Docling documentA
Convert all files from a local directory path and store them in local cache.
This tool takes a local directory path, converts every file in the directory using the configured converter (remote API or local) and stores the resulting Docling documents in a local cache. It returns a list of conversion outputs, where each output consists of a boolean set to False along with a document's unique cache key. If a document was already in the local cache, the conversion is skipped and the output boolean is set to True.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | The path to a local directory |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses caching behavior, the skip-if-cached rule, the boolean semantics per output, and the configured converter source (remote API or local). This is exactly the behavioral context an agent needs to predict the side effects and return values.
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 one-sentence summary is front-loaded, and the second paragraph earns its place by specifying return structure and cache behavior. There is no filler or redundant restating 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 single-parameter tool with an output schema, the description is largely complete: it covers the operation, storage, return shape, and caching. It does not mention how invalid or non-existent directories are handled or whether subdirectories are included, but these are secondary for correct tool selection.
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 only parameter, source, is already fully described in the schema as 'The path to a local directory.' The description repeats this but adds no new format, resolution, or requirement details, so it does not improve on the schema's high coverage.
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 names a specific action—convert all files from a local directory—and a specific outcome: store resulting Docling documents in local cache. It clearly distinguishes itself from sibling convert_document_into_docling_document by operating on a directory rather than a single document.
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 clearly states the condition for use: the caller has a local directory path and wants every file in it converted. It implies rather than explicitly states the alternative of using convert_document_into_docling_document for a single file, so it lacks explicit when-not guidance but is not ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_document_into_docling_documentConvert document into Docling documentA
Convert a document of any type from a URL or local path and store in local cache.
This tool takes a document's URL or local file path, converts it using the configured converter (remote API or local), and stores the resulting Docling document in a local cache. It returns an output with a boolean set to False along with the document's unique cache key. If the document was already in the local cache, the conversion is skipped and the output boolean is set to True.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | The URL or local file path to the document. Object-storage URIs (abfs://, az://, gcs://, gs://, s3://) are supported when the matching provider extra is installed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| from_cache | Yes | |
| document_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses meaningful behavior beyond the annotations: conversion uses a configured converter (remote API or local), results are stored in a local cache, and conversion is skipped if the document is already cached. It also explains the boolean return semantics (False for newly converted, True for cached), which is valuable operational 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 well-structured: a one-sentence summary is front-loaded, followed by a concise paragraph explaining cache behavior and return semantics. Every sentence adds useful information without 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?
For a single-parameter tool with an output schema, this description is complete. It covers the conversion pipeline, caching side effect, skip behavior, and return boolean meaning. The agent has enough information to call the tool correctly and interpret its result.
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%, and the schema already explains the source parameter, including object-storage URI support. The description only repeats that the source may be a URL or local path without adding new parameter-level detail, so the baseline of 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?
The description opens with a specific verb and resource: 'Convert a document of any type from a URL or local path and store in local cache.' This clearly distinguishes it from sibling tools like convert_directory_files_into_docling_document and create_new_docling_document by specifying single-document conversion from a URL or path.
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 establishes clear context: it is for converting a single document from a URL or local path, not a directory and not creating a blank document. It does not explicitly name alternatives or exclusion conditions, but the source scope is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_new_docling_documentCreate new Docling documentA
Create a new Docling document from a provided prompt string.
This function generates a new document in the local document cache with the provided prompt text. The document is assigned a unique key derived from an MD5 hash of the prompt text.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The prompt text to include in the new document. |
Output Schema
| Name | Required | Description |
|---|---|---|
| prompt | Yes | |
| document_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the document is persisted in the local document cache and that a key is derived from an MD5 hash of the prompt, both useful behavioral details beyond the annotations. The annotations already indicate a non-read-only operation, so this additional context is reasonable and does not contradict them.
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 two short paragraphs with the one-line summary first and the key implementation detail second. Every sentence adds value and there is no filler or repetition.
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 one-parameter creation tool with an output schema and annotations, the description covers what is created, where it is stored, and how its key is generated. It is slightly ambiguous what happens when the same prompt is submitted twice, but that minor gap does not block correct invocation.
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 input schema already documents the single 'prompt' parameter with 100% coverage. The description repeats that the prompt is text but adds no new constraints, formatting rules, or edge-case behavior, so it stays at the baseline for schema-covered parameters.
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 opens with a specific action ('Create') and target resource ('Docling document'), and clarifies the input is a prompt string. It also states the document is stored in the local document cache, which narrows the semantics beyond the title. It doesn't explicitly contrast with sibling converter tools, but the prompt-based creation path is sufficiently distinct.
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 text implies use when you need a new Docling document from a prompt, and 'new document' signals creation rather than conversion. However, it never explicitly says when not to use this tool or points to alternatives like convert_document_into_docling_document, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_document_items_at_anchorsDelete Docling document items at anchorsADestructive
Delete multiple document items identified by their anchors.
This tool removes specified items from a Docling document that exists in the local document cache, based on their anchor references. It requires that the document already exists in the cache before performing the deletion.
| Name | Required | Description | Default |
|---|---|---|---|
| document_key | Yes | The unique identifier of the document in the local cache. | |
| document_anchors | Yes | A list of anchor references identifying the items to be deleted from the document. |
Output Schema
| Name | Required | Description |
|---|---|---|
| document_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already signals that this operation mutates or destroys, so the description's added value is the cache prerequisite and the anchor-based scoping of what gets deleted. This provides useful behavioral context beyond the annotations and does not contradict them.
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 short and front-loads the operation in the first sentence. There is slight redundancy between 'Delete multiple document items identified by their anchors' and 'removes specified items ... based on their anchor references,' but it remains appropriately sized and easy to scan.
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?
This is a simple two-parameter destructive tool with full schema coverage and an output schema. The description covers what the tool does and the important cache requirement, so an agent can safely select and invoke it. A slightly stronger description would also address invalid-anchor behavior or clarify whether deletion is irreversible.
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 coverages is 100%: document_key and document_anchors are both well-described, with examples such as '#/texts/2' and '#/tables/1'. The tool description restates the anchor-based semantics but does not add significant meaning beyond what the schema already provides, so the baseline score of 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?
The first sentence states a specific verb ('Delete') with a precise resource ('document items') and selection mechanism ('anchors'). It also clarifies that this operates on a Docling document in the local cache and can remove multiple items, making it clearly distinguishable from sibling read/update tools.
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 clearly conveys the main use case: deleting multiple cached document items by anchor references. It also states an explicit prerequisite: the document must already exist in the local cache. It does not name sibling alternatives or provide when-not-to-use guidance, but the destructive use case is obvious among the listed siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_docling_document_to_markdownExport Docling document to markdown formatARead-only
Export a document from the local document cache to markdown format.
This tool converts a Docling document that exists in the local cache into a markdown formatted string, which can be used for display or further processing.
| Name | Required | Description | Default |
|---|---|---|---|
| max_size | No | The maximum number of characters to return. | |
| document_key | Yes | The unique identifier of the document in the local cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| markdown | Yes | |
| document_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that it converts a cached document into a markdown string, but does not disclose behavior around max_size truncation, error cases, or any edge conditions. This is adequate but not rich.
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 two concise sentences with no waste. The core action is front-loaded in the first sentence, and the second sentence clarifies the source, output format, and intended use.
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 simple read-only conversion tool with two parameters, full schema coverage, and an output schema, the description is complete enough. It specifies the required precondition ('exists in the local cache'), the output type, and the purpose.
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 both document_key and max_size. The description reinforces the local-cache context but adds no meaning beyond the schema, so the baseline of 3 applies.
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 states a specific action ('Export'/'converts') on a specific resource ('Docling document from the local document cache') with a concrete output format ('markdown formatted string'). This clearly distinguishes it from sibling tools like save_docling_document or get_text_of_document_item_at_anchor.
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 makes the context clear: the document must already exist in the local cache before this tool can convert it, and the resulting markdown string is intended for display or further processing. It does not explicitly name alternatives or exclusions, but the usage context is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_overview_of_document_anchorsGet overview of Docling document anchorsARead-only
Retrieve a structured overview of a document from the local document cache.
This tool returns a text representation of the Docling document's structure, showing the hierarchy and types of elements within the document. Each line in the output includes the document anchor reference and item label.
| Name | Required | Description | Default |
|---|---|---|---|
| document_key | Yes | The unique identifier of the document in the local cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| structure | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful behavioral detail: it operates on the local document cache and returns line-level output containing anchor references and item labels. This is proportionate for a read-only tool and does not contradict the annotations.
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 compact and front-loaded with the main action and resource. The second sentence adds specific output details—hierarchy, types, anchor reference, and item label—without any filler. Every sentence earns its place.
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 single-parameter, read-only overview tool with complete input schema documentation, annotations, and an output schema, the description sufficiently covers source, behavior, and output format. Nothing essential is missing for an agent to invoke it correctly.
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%: document_key is already described as 'The unique identifier of the document in the local cache.' The description's phrase 'from the local document cache' reinforces this but adds no additional parameter semantics beyond what the schema provides.
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 opens with 'Retrieve a structured overview of a document from the local document cache' and then explains that the output is a text representation of the document's hierarchy and element types, with each line containing an anchor reference and item label. This clearly identifies the action, resource, and output, and differentiates it from sibling content-retrieval or mutation tools.
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 usage context is implied: use this when you need a structural overview of a cached Docling document. However, there is no explicit statement of when to prefer this tool over alternatives such as search_for_text_in_document_anchors or get_text_of_document_item_at_anchor, and no 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_text_of_document_item_at_anchorGet text of Docling document item at anchorARead-only
Retrieve the text content of a specific document item identified by its anchor.
This tool extracts the text from a Docling document item at the specified anchor location within a document that exists in the local document cache.
| Name | Required | Description | Default |
|---|---|---|---|
| document_key | Yes | The unique identifier of the document in the local cache. | |
| document_anchor | Yes | The anchor reference that identifies the specific item within the document. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful context by specifying that the document must exist in the local document cache and that extraction is targeted at an anchor location, which helps the agent understand prerequisites.
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 short and front-loaded with the core purpose in the first sentence. The second sentence repeats some of the same information, but it adds useful cache context, so the slight redundancy is acceptable.
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 simple read-only tool with a full input schema, output schema, and safety annotations, the description is largely complete. It covers the key prerequisite of cache residency, though it does not explain behavior for invalid or missing anchors; that is a minor gap.
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%, with both document_key and document_anchor already described clearly, including an example anchor format. The tool description adds no parameter-level meaning beyond what the schema provides, so the baseline score of 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?
The description uses a specific verb ('Retrieve'/'extracts') and names the precise resource: text content of a Docling document item at an anchor. It stands apart from siblings like update_text_of_document_item_at_anchor and search_for_text_in_document_anchors by clearly focusing on read-only text extraction.
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 implies when to use the tool: after a document exists in the local document cache and when you need the text of a single anchored item. However, it gives no explicit guidance about alternatives or when not to use it, such as when needing to search anchors or update text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
is_document_in_local_cacheIs Docling document in cacheARead-only
Verify if a Docling document is already converted and in the local cache.
| Name | Required | Description | Default |
|---|---|---|---|
| document_key | Yes | The unique identifier of the document in the local cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| in_cache | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the local-cache/convertion context but does not disclose return details or failure behavior; with an output schema present, that gap is acceptable but still minimal beyond annotations.
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 one clear sentence with no filler, and the core predicate and resource are front-loaded. Every word contributes to understanding the tool's purpose.
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 simple single-parameter, read-only predicate with a documented input schema and an output schema, the description is sufficient. No return value explanation is needed because the output schema exists, and the tool's narrow scope is fully represented.
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 document_key is fully documented in the schema with 100% coverage. The description adds no additional semantic meaning about the parameter, so the schema carries the burden and the baseline of 3 applies.
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 states a specific verb ('Verify if') and resource ('Docling document ... in local cache'), clearly identifying this as a cache-lookup predicate. This distinguishes it from the conversion, saving, and modification sibling tools without needing to inspect them.
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 phrase 'already converted' implies this tool is useful for checking before doing conversion work, but the description never explicitly says when to use it versus alternatives or when not to use it. No sibling tool is named or compared.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_list_in_docling_documentOpen list in Docling documentA
Open a new list group in an existing document in the local document cache.
This tool creates a new list structure within a document that has already been processed and stored in the local cache. It requires that the document already exists and that there is at least one item in the document's stack cache.
| Name | Required | Description | Default |
|---|---|---|---|
| document_key | Yes | The unique identifier of the document in the local cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| document_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating but non-destructive operation. The description adds useful preconditions about the document being cached and the stack cache having content, but it does not clarify the stateful nature of opening a list group or what the agent should expect afterward.
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 reasonably concise and front-loads the core purpose. There is minor redundancy between 'Open a new list group' and 'creates a new list structure,' but overall the wording is 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?
For a one-parameter tool with annotations and an output schema present, the description covers the essential precondition and core behavior. It could mention subsequent list-item operations, but this is not required for correct invocation.
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 100% and the single document_key parameter is already described. The description adds context about the document needing to exist in the local cache but does not materially extend the parameter-level meaning.
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 a specific action: opening/creating a new list group within an existing cached document. It is distinct from siblings like close_list or add_list_items, though it does not explicitly name them.
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 prerequisites are clear: the document must exist and the stack cache must have at least one item. However, the description does not explain when to choose this tool over related list operations, such as add_list_items_to_list_in_docling_document, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_thumbnailGenerate the thumbnail of a page in the Docling documentARead-only
Generate a thumbnail image for the requested page.
This tool takes a document that exists in the local cache and generates a thumbnail image for the requested page.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | The width of the thumbnail in pixels | |
| page_no | No | The number of the page starting at 1 | |
| document_key | Yes | The unique identifier of the document in the local cache. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the local-cache precondition, which is useful, but doesn't disclose what happens if the document is missing, how the image is returned, or any other behavioral details beyond the annotation coverage.
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 short and front-loaded, but it is redundant: 'generates a thumbnail image for the requested page' appears in both sentences. The second sentence does add the local-cache precondition, but it repeats the main action unnecessarily.
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?
The tool is simple, has complete schema documentation, and has read-only annotations, so the core requirements are covered. However, there is no output schema, and the description does not clarify what the tool returns or how the generated thumbnail is delivered, which is a notable gap.
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 all three parameters (document_key, page_no, size) are already documented in the schema. The description does not add additional semantics or examples beyond what the schema provides, so the 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?
The description clearly states the action ('generates a thumbnail image'), the target ('the requested page'), and the key constraint that the document already exists in the local cache. This distinguishes the tool from other document manipulation and cache-related siblings.
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 clearly conveys the prerequisite that the document must already be in the local cache, which is essential context for when the tool can be used. It does not explicitly name alternatives or exclusion conditions, but the context is strong enough for an agent to understand the required state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_docling_documentSave Docling documentA
Save a document from the local document cache to disk in both markdown and JSON formats.
This tool takes a document that exists in the local cache and saves it to the specified cache directory with filenames based on the document key. Both markdown and JSON versions of the document are saved.
| Name | Required | Description | Default |
|---|---|---|---|
| document_key | Yes | The unique identifier of the document in the local cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| md_file | Yes | |
| json_file | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds that both markdown and JSON files are written and that filenames depend on the document key, which goes beyond the annotations. It does not disclose whether existing files are overwritten or what happens if the document is not in the cache; this is a moderate transparency gap, but there is no annotation contradiction.
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 main purpose is front-loaded in the first sentence, and the second sentence adds necessary operational detail without redundancy. Every sentence earns its place.
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 single-parameter tool with an output schema and annotation coverage, the description is largely sufficient: it states the precondition, the action, and the output forms. The missing overwrite/collision behavior is a minor gap but does not prevent correct invocation.
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 input schema fully documents document_key as the unique identifier, so the baseline is 3. The description adds meaningful context by explaining that the document key is used not only for cache lookup but also for deriving the output filenames.
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 states a specific action ('Save'), a specific resource ('document from the local document cache'), and the exact output formats ('both markdown and JSON'). This clearly distinguishes it from sibling tools like export_docling_document_to_markdown or conversion tools.
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 clearly conveys that the tool operates only on documents already present in the local cache, which is a useful precondition. However, it does not explicitly mention alternatives or conditions for choosing this tool over sibling export tools, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_for_text_in_document_anchorsSearch for text in Docling document anchorsARead-only
Search for specific text and keywords within a document's anchors.
This tool takes a string of text to search for and returns a string of all document anchors that contain the exact text. The search is case-insensitive. If the exact text is not found, the tool will search for individual keywords within the text, splitting it on non-alphanumeric characters. If keywords are found, they are listed alongside their number of occurrences in parentheses.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The string of text to search for in the document's anchors. | |
| document_key | Yes | The unique identifier of the document in the local cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint/destructiveHint annotations by explaining the exact search behavior: case-insensitive matching, fallback to splitting the input into keywords on non-alphanumeric characters, and reporting keyword occurrence counts. This gives an agent a clear model of what will happen.
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 concise and well-structured, opening with the core purpose and then elaborating with necessary behavioral details. Each sentence adds useful information, with no redundant or filler content.
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 presence of an output schema, the description does not need to detail return values. It covers the main functionality, search behavior, and fallback logic. A possible gap is the absence of a stated behavior when neither the exact text nor any keywords are found, but this is a minor omission.
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 100%, with both parameters described in the input schema. The description adds context about the search behavior but does not add new semantic detail about the parameters themselves, so a baseline of 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?
The description clearly identifies the operation as searching for text within a document's anchors, using a specific verb and resource. It distinguishes the tool from siblings that retrieve or modify anchors, though it does not explicitly name alternatives.
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 implies when to use the tool: to find document anchors containing a specific text or keywords. However, it provides no explicit guidance on when to prefer this over related tools like get_overview_of_document_anchors or get_text_of_document_item_at_anchor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_text_of_document_item_at_anchorUpdate text of Docling document item at anchorADestructive
Update the text content of a specific document item identified by its anchor.
This tool modifies the text of an existing document item at the specified anchor location within a document that exists in the local document cache. It requires that the document already exists in the cache before a modification can be made.
| Name | Required | Description | Default |
|---|---|---|---|
| document_key | Yes | The unique identifier of the document in the local cache. | |
| updated_text | Yes | The new text content to replace the existing content. | |
| document_anchor | Yes | The anchor reference that identifies the specific item within the document. |
Output Schema
| Name | Required | Description |
|---|---|---|
| document_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as mutating and destructive, so the description does not need to repeat that. It adds useful behavioral context by explaining the target must be an existing document item and that the document must already be cached, which goes beyond the raw annotations.
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 concise, consisting of two short sentences that convey the primary action and the key prerequisite. It is front-loaded with the core purpose and contains no filler or redundant information.
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 full schema coverage, an output schema, and annotations indicating destructive behavior, the description covers the essential operational context: the update targets an existing cached item by anchor. It could add a note about how to obtain valid anchors or the need to save after updating, but these are not critical gaps given the sibling tools and existing schema.
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 fully documents all three parameters: document_key, updated_text, and document_anchor. The description does not add parameter-level details beyond what the schema provides, so a baseline score of 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?
The description uses a specific verb ('Update') and resource ('text content of a specific document item identified by its anchor'), making the tool's function immediately clear. It also distinguishes this from sibling tools like get_text_of_document_item_at_anchor and delete_document_items_at_anchors by focusing on modifying existing 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 clearly states that the tool requires the document to already exist in the local cache before modification, providing meaningful context for when it can be used. It does not explicitly mention alternatives or when not to use it, but the prerequisite is clear enough to guide the agent.
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. Dates show when Glama detected each change.
19 tool updates
v0.1.0- First observed
add_list_items_to_list_in_docling_document - First observed
add_paragraph_to_docling_document - First observed
add_section_heading_to_docling_document - First observed
add_table_in_html_format_to_docling_document - First observed
add_title_to_docling_document - First observed
close_list_in_docling_document - First observed
convert_directory_files_into_docling_document - First observed
convert_document_into_docling_document - First observed
create_new_docling_document - First observed
delete_document_items_at_anchors - First observed
export_docling_document_to_markdown - First observed
get_overview_of_document_anchors - First observed
get_text_of_document_item_at_anchor - First observed
is_document_in_local_cache - First observed
open_list_in_docling_document - First observed
page_thumbnail - First observed
save_docling_document - First observed
search_for_text_in_document_anchors - First observed
update_text_of_document_item_at_anchor
TDQS
Each tool targets a distinct action or content type: convert, create, add, get, update, delete, export, thumbnail. Some pairs like export-to-markdown vs save-to-disk or open-list vs add-list-items require careful reading, but the descriptions resolve the boundaries.
Names are almost all snake_case with a leading verb and a descriptive object, making the set predictable and readable. The main deviations are page_thumbnail with no leading verb and inconsistent prepositions like into, to, in, and of across similar phrases.
At 19 tools the surface is slightly heavy, but the tools cover document conversion, cache checking, content editing, inspection, and export without obvious redundancy. The count is justified by the breadth of document lifecycle operations Docling supports.
The set covers conversion, inspection, editing, deletion of items, and markdown/JSON export, providing a fairly complete document lifecycle. Minor gaps include no way to list all cached documents or delete an entire document from the cache, but these can be worked around.
Maintenance
Related MCP Connectors
Composable APIs for document extraction, image transformation, and document & sheet generation.
Turn documents into structured data: parse, extract, classify, split, and fill PDF forms.
1High-fidelity PDF to structured Markdown conversion and document field extraction.
Convert and compress PDFs and images, redact personal data, and run text and data utilities.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides comprehensive document processing, including reading, converting, and manipulating various document formats with advanced text and HTML processing capabilities.1615319MIT
- FlicenseNot gradedqualityDmaintenanceEnables processing and analysis of large PDF files through text extraction, search functionality, and intelligent chunking strategies. Provides comprehensive PDF operations including metadata retrieval, page-range text extraction, and content search with contextual results.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents and users to process documents through natural language, supporting PDF operations like text extraction, redaction, splitting, form filling, annotations, and content search.27561MIT
- FlicenseNot gradedqualityDmaintenanceProvides tools to read PDFs, extract images, convert between PDF and DOCX, create DOCX from text, and generate PDFs from DOCX, text, or HTML.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/docling-project/docling-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server