root-ext-docs
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., "@root-ext-docsextract text from the meeting notes PDF"
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.
root-ext-docs
Document-engineering MCP tool server for ROOT Workspace (and any MCP host). Twelve tools across four surfaces:
PDF —
pdf_info(which pages are text, which are scans),pdf_extract_text(page-ranged),pdf_pages_to_images(render toderived/— where the workspace viewer and the model's image-read path pick them up),ocr_pdf(local tesseract).Office —
docx_extract,pptx_extract: structure-keeping markdown (headings, tables, slide notes).Images —
ocr_image,image_convert,image_crop,image_annotate(labelled rectangles for pointing at drawings).Archives —
archive_list,archive_extract(zip-slip refused by name, size/entry caps).
Charter, binding and tested: extract and derive, never mutate
sources. No tool overwrites, deletes, or edits a user's file in
place; write tools refuse output paths that collide with inputs and
default to derived/ beside the source.
OCR needs the system tesseract binary (brew install tesseract) and
refuses by name without it. Nothing in this pack reaches the network.
Develop
uv venv && uv pip install -e ".[dev]"
.venv/bin/pytestRelated MCP server: pdf-reader-mcp
Package (signed .rootx, ADR-0018)
uv build
.venv/bin/python tools/build_pack.py # --unsigned for a test buildAvailable Tools
12 toolsarchive_extractAIdempotent
Extract an archive (or just members) into out_dir — default
derived/<name>/ beside it, and NEVER anywhere else: absolute
paths, .. members, and links are refused by name (zip-slip),
entry count and total size are capped so a zip bomb is an error,
not an outage.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| members | No | ||
| out_dir | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: default output location, zip-slip prevention (refusing absolute paths, '..', links), entry count and size caps to prevent zip bombs. It covers security and error handling thoroughly.
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, well-structured sentence that front-loads the main action and then details constraints and safety measures. No redundant information; every part is valuable.
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 no output schema and 3 parameters, the description covers security and default behavior but lacks details on return values, error handling for non-zip-bomb issues, and handling of different archive formats. It is mostly complete but could be slightly richer.
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 compensate. It explains the default behavior for `out_dir` and mentions the optional `members` parameter. However, it does not explicitly describe what `members` does (filtering specific entries) beyond a brief mention, leaving some ambiguity.
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's purpose: 'Extract an archive (or just `members`) into out_dir'. It specifies the default output location and constraints, distinguishing it from sibling tools like archive_list which lists contents, and other extraction tools for different formats.
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 usage for extracting archives and contrasts with listing via sibling name archive_list. It provides clear context about the tool's capabilities and limitations (e.g., security checks), but does not explicitly state when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_listARead-only
List a zip/tar archive's entries (name, size, kind) plus the total uncompressed size — look before extracting. Bounded at 1000 entries; truncation is marked.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=true, and the description adds crucial behavioral details: a limit of 1000 entries with truncation marked. This goes beyond the annotations and ensures the agent knows the limitation.
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 sentences, front-loads the action and output, and contains no extraneous information. Every part 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?
Given the tool simplicity (one parameter, no output schema, annotations present), the description fully covers purpose, behavior limitations, and return information. Nothing essential is missing.
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?
There is one parameter 'path' with 0% schema description coverage. The description compensates by implying the path is to the archive file, adding meaningful context beyond the schema's bare 'Path' title. It is clear enough for 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 specifies the verb 'List', the resource 'zip/tar archive entries', and the output details (name, size, kind, total size). It distinguishes itself from the sibling 'archive_extract' by framing as 'look before extracting'.
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 explicitly advises to use this tool before extracting ('look before extracting'), providing clear usage context. It does not mention when not to use it, but the guidance is sufficient for a simple tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docx_extractARead-only
Extract a DOCX in document order with structure kept: headings as markdown levels, paragraphs, and tables as markdown tables — so you can cite the table under a section instead of fishing in text soup. Bounded; truncation is marked.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds that the tool is 'bounded' and 'truncation is marked', which discloses important behavioral traits about output limits beyond what annotations provide. No contradictions are present.
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 sentences, perfectly front-loaded with the core action and key details. Every word earns its place, and no filler is present. The structure ('Extract a DOCX...' followed by additional context) is optimal for agent scanning.
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 description covers the main functionality and a key behavioral aspect (bounded, truncation marked), but lacks details about the output format beyond 'markdown', and does not explain what 'bounded' means quantitatively. Given the tool has one parameter and no output schema, the description is adequate but could be slightly more complete (e.g., specifying output is a string).
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 has a single required parameter 'path' with 0% description coverage. The tool description does not mention this parameter at all, leaving the agent with no explanation of what the parameter expects or its format. With low schema coverage, the description fails to compensate.
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 verb 'extract' and the resource 'DOCX', specifies the extraction yields structured output (headings as markdown, paragraphs, tables as markdown tables) in document order, and distinguishes it from siblings like pdf_extract_text or pptx_extract by focusing on DOCX with structure preservation.
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: when structured extraction from a DOCX with headings and tables is needed. It does not explicitly state when not to use or list alternatives, but the context of sibling tools provides implicit differentiation. A direct indication of alternatives would elevate this to a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_annotateAIdempotent
Draw labelled rectangles on a copy of an image (up to 50 marks, each {x, y, w, h, label?}) — point at regions of a drawing or screenshot when words alone are ambiguous. Writes a NEW file; refuses an out_path that collides with the input (charter).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| marks | Yes | ||
| out_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: creates a new file, refuses out_path collisions with input. Beyond annotations (idempotentHint=true, destructiveHint=false), adds context about file safety and collision prevention.
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 well-structured sentences: first describes primary action and constraints, second details output behavior. No filler, information is front-loaded.
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?
Thoroughly covers the tool's functionality given 3 required params and no output schema. Explains input format, output creation, and safety constraint. No obvious gaps.
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?
With 0% schema description coverage, the description fully compensates: explains the mark format as {x, y, w, h, label?}, limits to 50 marks, and clarifies out_path collision behavior. Adds meaning far 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?
Explicitly states the verb 'draw labelled rectangles' on 'a copy of an image', with specific mark structure. Clearly distinguishes from sibling tools like image_crop and image_convert by focusing on annotation.
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?
Provides concrete usage scenario: 'point at regions of a drawing or screenshot when words alone are ambiguous.' Implies when to use, though does not explicitly state when not to use or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_convertAIdempotent
Convert/resize/rotate an image into a NEW file — format by out_path suffix (png/jpg/webp/gif/bmp/tiff), optional max_dim bound on the long edge, rotation in 90° steps. Refuses an out_path that collides with the input (charter).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| max_dim | No | ||
| quality | No | ||
| out_path | Yes | ||
| rotate_deg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds details beyond annotations: rotation in 90° steps, max_dim bounding long edge, and input collision refusal. Annotations already indicate idempotent and non-destructive; no 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?
Two sentences, front-loaded with primary purpose, no extraneous words. Every sentence adds essential 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?
Covers main operations and key constraints, but lacks explanation for quality parameter and default behavior when max_dim is null. No output schema to 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?
With 0% schema coverage, description partially explains path, out_path (format via suffix), max_dim, and rotate_deg, but omits quality parameter. Adds value but not complete.
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 'Convert/resize/rotate an image into a NEW file' with format determined by out_path suffix, distinguishing it from sibling tools like image_crop or image_annotate.
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?
Some guidance is given (refuses out_path collision with input), but no explicit when-to-use or when-not-to-use context compared to alternatives like image_crop or ocr_image.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_cropAIdempotent
Crop a pixel box (x, y, width, height from the top-left) into a NEW file — e.g. isolate one view of a drawing before OCR or a close look. Refuses a box that leaves the image and an out_path that collides with the input (charter).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| path | Yes | ||
| width | Yes | ||
| height | Yes | ||
| out_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and destructiveHint=false, which align with creating a new file. The description adds valuable behavioral details: refusal conditions for invalid boxes and output paths, going beyond 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 two sentences, front-loads the main action, and adds constraints without redundancy. Every sentence adds value.
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 6 required parameters, no output schema, and annotations with hints, the description covers the core operation, example usage, and critical constraints. It lacks details on output format or error handling, but is sufficient for typical use.
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%, so the description must compensate. It explains that x,y,width,height define a 'pixel box from the top-left' and that out_path is for the new file. However, it does not detail each parameter's valid ranges or restrictions, leaving some 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 crops a pixel box from an image into a new file, with a concrete example ('isolate one view of a drawing before OCR or a close look'). It distinguishes from sibling tools by specifying the operation and result.
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 an example use case (before OCR or close look) and mentions constraints (refuses out-of-bounds box or colliding output path). However, it does not explicitly state when not to use this tool or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ocr_imageARead-only
OCR one image (png/jpg/gif/webp/bmp/tiff) with the LOCAL tesseract binary — needs tesseract installed and refuses by name without it; nothing reaches the network. OCR misreads numbers — verify critical values by looking at the image itself.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | eng | |
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=true), describes local execution, tesseract dependency, network isolation, and accuracy warnings, providing comprehensive behavioral disclosure.
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 sentences, front-loaded with core action, every sentence adds value, 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?
Covers file formats, local execution, dependency, and accuracy warning. Lacks output format description but acceptable for a simple OCR tool. Informs selection among siblings.
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 has 0% description coverage. Description adds meaning for 'path' by listing accepted image formats, but does not explain 'lang' parameter or provide full parameter semantics.
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 verb 'OCR' and the resource 'one image' with supported formats (png/jpg/gif/webp/bmp/tiff), distinguishing it from siblings like ocr_pdf.
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?
Provides crucial usage context (local, requires tesseract, warns about number accuracy) and implies when not to use (for PDFs), but lacks explicit alternatives or when-not-to-use statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ocr_pdfARead-only
OCR scanned PDF pages (up to 10 per call): renders each page and
runs the LOCAL tesseract binary — needs tesseract installed
(brew install tesseract) and refuses by name without it; nothing
reaches the network. Use pdf_info first to find which pages need
OCR. OCR misreads numbers — verify critical values against the
rendered page.
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | ||
| lang | No | eng | |
| path | Yes | ||
| pages | No | 1-5 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark readOnlyHint and openWorldHint. The description adds critical behavioral info: local binary dependency, error behavior (refuses by name without tesseract), network isolation, and accuracy warning (misreads numbers). No contradiction with 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?
Three sentences pack maximum value: first gives core purpose and constraint, second covers dependencies and privacy, third provides guidance and warning. No wasted words; each 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?
Given no output schema, the description covers purpose, constraints, prerequisites, privacy, and a usage tip. However, it omits the return type (text) and does not fully substitute for missing schema descriptions. Still, it's largely complete for an experienced 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?
Schema coverage is 0% (no parameter descriptions). The description implies 'pages' via 'up to 10 per call' and path via PDF context, but does not explain dpi, lang, or default behavior. With 0% coverage, description should have detailed each parameter's role.
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 explicitly states the verb 'OCR', the resource 'scanned PDF pages', and the limit 'up to 10 per call'. It distinguishes from sibling tools like pdf_extract_text and ocr_image by implying use case (scanned vs. native PDFs) and referencing pdf_info for pagination.
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 tells when to use ('Use pdf_info first to find which pages need OCR'), clarifies prerequisites (tesseract installed), and implies when not to use (e.g., if no installation, use other tools). It also notes that nothing reaches the network, aiding security decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_extract_textARead-only
Extract the text layer of a page range (1-based: "3", "1-5", "2,4,9-11"; up to 50 pages per call). Page-ranged so a 400-page standard is read in slices instead of one blind gulp. Returns nothing useful for scanned pages — pdf_info names those, ocr_pdf reads them. Bounded; truncation is marked.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| pages | No | 1-20 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint true and openWorldHint false. Description adds limitations: no text for scanned pages, truncation marking, 50-page limit. Could clarify how truncation is marked.
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?
Four efficient sentences with no waste; key info front-loaded. Every sentence adds value.
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?
Covers main use, limitations, and alternatives. However, no output schema and description does not specify the format of returned text (e.g., concatenated, page-separated).
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?
Despite 0% schema coverage, description explains the 'pages' parameter format (range syntax, default, limit). Path is self-explanatory. Adds meaning beyond 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?
Explicitly states 'extract the text layer of a page range', naming the action and resource. Distinguishes from siblings by mentioning pdf_info and ocr_pdf for scanned pages.
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?
Explains when to use (slicing large PDFs) and when not to use (scanned pages), with explicit alternatives (pdf_info, ocr_pdf).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_infoARead-only
Inventory a PDF before reading it: page count, per-page size (mm), and — the part that matters — which pages carry a text layer and which are scans/drawings. Use it to decide between pdf_extract_text (text layer), ocr_pdf (scans), and pdf_pages_to_images (look at drawings). Reads the file on this machine; nothing leaves it.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds meaningful context: 'Reads the file on this machine; nothing leaves it.' This clarifies data locality and privacy, which is important for agents operating on local files. No contradiction with 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?
Two sentences, no waste. Front-loaded with purpose, then usage guidance, then behavioral note. Every sentence is essential.
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?
Clearly states outputs: page count, per-page size, and text-layer presence. No output schema, but description sufficiently covers expected information. Minor gap: does not specify output format (e.g., JSON structure), but given the tool's simplicity, it is nearly 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?
Schema has 0% description coverage; the single 'path' parameter has only type and title. Description does not elaborate on path format, allowed values, or how to specify the file. It only implies the file is local. Given the gap, description should compensate but does not.
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 uses specific verb 'Inventory' and identifies resource 'PDF'. It clearly states what metadata is extracted (page count, per-page size, text vs. scan/drawing) and directly differentiates from sibling tools by mentioning pdf_extract_text, ocr_pdf, and pdf_pages_to_images.
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?
Explicitly guides when to use this tool: as a pre-read inventory step. Names three sibling tools and the decision criteria (text layer vs. scans vs. drawings), providing clear context for the agent to choose the correct subsequent tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_pages_to_imagesAIdempotent
Render PDF pages to PNG/JPEG files (up to 20 pages per call,
dpi 30–400) in out_dir — default derived/ beside the source,
never on top of it (charter). The rendered pages are ordinary
images: open them in the workspace, or read them with fs.read to
LOOK at a drawing-heavy page the text extractor can't serve.
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | ||
| path | Yes | ||
| pages | No | 1-5 | |
| out_dir | No | ||
| image_format | No | png |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral details beyond annotations: page limit, dpi range, output directory behavior, and file nature. No contradiction with 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?
Three focused sentences, front-loaded with key functionality, no unnecessary 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?
Adequately covers purpose, constraints, and use case for a rendering tool with no output 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?
Despite 0% schema coverage, description adds meaning for dpi range and output directory default, but does not explain all 5 parameters explicitly.
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 verb 'Render' and resource 'PDF pages', specifies output format (PNG/JPEG), limits (20 pages, dpi range), and distinguishes from siblings like 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 hints at use for drawing-heavy pages where text extractor fails, but lacks explicit when-not-to-use or alternative selection guidance among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pptx_extractARead-only
Extract a PPTX slide by slide: title, body text, tables, and speaker notes (quoted, marked as notes). Bounded; truncation is marked.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, but description adds important behavioral details: bounded extraction and marking of truncation. No contradictions.
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 no wasted words. Information is front-loaded and directly relevant.
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?
Covers main extracted content and boundedness/truncation. Lacks details on path format or handling edge cases, but adequate for a simple extraction 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?
Single parameter 'path' with 0% schema coverage. Description does not explain what the path refers to or expected format, failing to compensate for lack of schema documentation.
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?
Describes clear action ('Extract'), resource ('PPTX'), and specific extracted elements (title, body, tables, speaker notes). Distinguishes from sibling extraction tools for other formats.
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?
Implies use for PPTX extraction but lacks explicit when-to-use or when-not-to-use guidance. No mention of alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource or operation: archives, PDF (with clear separation between info, text extraction, rendering, and OCR), DOCX, PPTX, and images. The descriptions explain precisely when to use each, minimizing overlap.
Most tools follow a resource_action pattern (e.g., pdf_extract_text, image_crop), but ocr_pdf and ocr_image invert this to action_resource. pdf_info uses a noun as a verb. The pattern is largely consistent with minor deviations.
At 12 tools, the set is well-scoped for a document extraction server. Each tool has a clear role, covering archives, multiple document formats, and image processing without unnecessary duplication.
The surface covers core extraction workflows: listing/extracting archives, reading PDFs (text, renders, OCR), extracting DOCX/PPTX, and image processing. Minor gaps exist (no archive creation, no PDF metadata extraction) but do not hinder primary use.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
HTML-to-PDF MCP server — render pixel-faithful PDFs from HTML.
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
MCP server for Api2Pdf — generate PDFs & images from HTML, URLs or office files; merge, barcodes.
Related MCP Servers
- AlicenseBqualityDmaintenanceA universal MCP server for document processing, conversion, and automation. Handle PDF, DOCX, HTML, Markdown, and more through a unified API and toolset.1333139MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for extracting text from PDF files, supporting local files and URLs.
- AlicenseNot gradedqualityDmaintenanceUniversal MCP server for extracting text from various document formats including PDF, Excel, Word, CSV, and more, with support for streaming, limits, and markdown conversion.3MIT
- AlicenseNot gradedqualityAmaintenanceUnified MCP server that exposes GroupDocs.Total document-processing tools (annotation, comparison, conversion, merging, metadata, parsing, redaction, signing, watermarking, and more) as AI-callable tools for MCP agents.MIT
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/graphgrow/root-ext-docs'
If you have feedback or need assistance with the MCP directory API, please join our Discord server