Skip to main content
Glama
kurtzhi

fsext-mcp-server

by kurtzhi

FsExt-MCP-Server (TypeScript)

Overview

A high-performance, secure, and production-grade Model Context Protocol (MCP) server built with TypeScript, providing comprehensive filesystem operations, advanced text search & replace, image processing, and Tesseract OCR capabilities. Designed for LLM agent integration, it delivers strict input validation, standardized response structures, streaming large-file processing, and multi-transport remote deployment support.

This server fully complies with the official MCP specification, supportingstdio local integration, SSE legacy streaming transport, and modern Streamable HTTP bidirectional transport, serving as a universal filesystem tool backend for AI agents and automated workflow systems.

Related MCP server: File Manager MCP

Core Features

  • Full Filesystem CRUD & Directory Management:Complete file/directory creation, deletion, copy, move, metadata query, and existence verification. Supports recursive full-directory tree replication and safe move operations with conflict protection.

  • Streaming File I/O for Large Files:Implements segmented text reading, chunked binary streaming reading, text/binary overwriting and appending. Avoids full memory loading, perfectly supporting GB-level large file processing.

  • Advanced Text Search & In-Place Replace:Directory-wide recursive content search, single/multi-file contextual matching with preview lines, regular expression support, case-insensitive matching, and precise in-file text replacement with change statistics.

  • Professional Image Processing Suite:Built-in high-performance image resize (aspect ratio lock support), precise crop, and arbitrary-angle rotation based on Sharp, covering mainstream image editing scenarios.

  • Cross-Platform Tesseract OCR:WASM-first OCR recognition with customizable local Tesseract binary and tessdata paths, supporting multi-language text extraction from images without local engine installation dependency.

  • Strict Strict Input Validation & Standardized Response:All tool schemas enable strict additional property prohibition, with unified success/error response structures for consistent client parsing and error handling.

  • Multi-Standard MCP Transports:Natively supports three official MCP transports: stdio (local client), SSE (legacy remote stream), Streamable HTTP (modern bidirectional remote transport).

  • Full TypeScript Type Safety:Complete type definitions for all tool parameters, response structures, and transport configurations, ensuring runtime stability and development friendliness.

Quick Start

Prerequisites

Node.js >=22.0.0 <27.0.0

Installation

Global Installation (Recommended for CLI Usage)

npm install -g fsext-mcp-server

Local Project Installation

npm install fsext-mcp-server

Startup Commands

1. Default Stdio Mode (For Claude Desktop / Cursor / Local MCP Clients)

# Default stdio transport for local agent integration
fsext-mcp-server-ts
fsext-mcp-server

# Short alias
fsext-ts
fsext

2. SSE Remote Transport Mode

fsext-mcp-server --transport sse --host 0.0.0.0 --port 8000

Endpoints:

  • SSE Stream Subscription:http://<host>:<port>/sse

  • Client Request Channel: http://<host>:<port>/messages

3. Modern Streamable HTTP Transport Mode

fsext-mcp-server --transport http --host 0.0.0.0 --port 8000

Unified Bidirectional Endpoint: http://<host>:<port>/mcp

Transport Mode Comparison

Feature

SSE Transport

Streamable HTTP

Endpoint Architecture

Dual endpoints (GET stream + POST message)

Single unified bidirectional endpoint

Communication Mode

Unidirectional server-to-client streaming

Full bidirectional streaming & standard HTTP response

Connection Stability

Prone to session inconsistency

Auto session recovery, high concurrency optimized

Specification Status

Legacy compatible

Latest official MCP standard

Client Configuration Example

MCP Client JSON Config (Cursor / Claude Desktop)

{
  "mcpServers": {
    "fsext": {
      "command": "fsext-mcp-server",
      "args": [],
      "env": {}
    }
  }
}

Unified Global Response Specification

All MCP tools adopt a consistent top-level response structure for both success and failure scenarios, enabling universal client parsing logic.

General Structure

{
  "res": {
    "success": boolean,
    "info": object
  }
}

Success Response

success: true - The info field carries tool-specific business data.

Error Response (Unified Standard)

success: false - All errors (IO failure, invalid params, path error, runtime exception) return fixed error structure:

{
  "res": {
    "success": false,
    "info": {
      "code": "ERROR_CODE",
      "message": "Human-readable detailed error message"
    }
  }
}

Full MCP Tools Reference

All tools enable additionalProperties: false strict validation to reject illegal input parameters, ensuring invocation safety.

1. Directory Operation Tools

fs_list_directory

Description: Scan target directory, return filtered absolute path list, support recursive traversal, pure file filtering, and suffix filtering.

Parameters:

  • source_dir (string, required): Target directory path for scanning

  • recursive (boolean, required): Enable recursive subdirectory scanning

  • only_files (boolean, required): Return only files, exclude directories

  • file_extension (string, optional, default=""): Filter files by specified suffix

Success Response:

{
  "res": {
    "success": true,
    "info": {
      "paths": ["/absolute/path/file1.txt", "/absolute/path/file2.js"]
    }
  }
}

fs_copy_directory

Description: Recursively copy full directory tree, support overwriting existing target directories.

Parameters:

  • source_dir (string, required): Source directory path

  • copy_dest_dir (string, required): Target directory path

  • overwrite (boolean, optional, default=false): Clean and overwrite existing target directory

Success Response:

{
  "res": {
    "success": true,
    "info": {}
  }
}

fs_move_directory

Description: Move entire directory tree, fail fast if target path exists to prevent accidental overwriting.

Parameters:

  • source_dir (string, required): Source directory path

  • dest_dir (string, required): Target directory path

  • overwrite (boolean, optional, default=false): Allow overwriting conflicting directory

Success Response: Empty info object with success flag

2. File Basic Operation Tools

fs_create_file

Description: Create empty or content-filled file, auto-create missing parent directories, support multi-encoding.

Parameters:

  • file_path (string, required): Target file path

  • content (string, optional, default=""): Initial text content

  • charset (string, optional, default=utf-8): Encoding enum: utf-8, ucs-2, utf16le, latin1, ascii, base64, hex

Success Response: Empty info object with success flag

fs_delete_file

Description: Delete single regular file only; reject directory paths to avoid batch deletion risks.

Parameters:

  • file_path (string, required): Target file path

Success Response: Empty info object with success flag

fs_copy_file

Description: Copy single file with complete metadata retention, support overwrite control.

Parameters:

  • source_file_path (string, required): Source file path

  • dest_file_path (string, required): Target file path

  • overwrite (boolean, optional, default=false): Overwrite existing target file

Success Response: Empty info object with success flag

fs_move_file

Description: Move single file with configurable overwrite behavior.

Parameters:

  • source_file_path (string, required): Source file path

  • dest_file_path (string, required): Target file path

  • overwrite (boolean, optional, default=false): Overwrite conflicting file

Success Response: Empty info object with success flag

fs_get_file_info

Description: Obtain full metadata of file/directory, support optional SHA-256 digest calculation.

Parameters:

  • file_path (string, required): Target entry path

  • calc_digest (boolean, optional, default=false): Calculate SHA-256 hash

Success Response:

{
  "res": {
    "success": true,
    "info": {
      "absolute_path": "string",
      "is_readable": true,
      "is_writable": true,
      "size": 1672,
      "is_regular_file": true,
      "is_directory": false,
      "is_symbolic_link": false,
      "creation_millis": 1782288135574,
      "last_modified_millis": 1782279393020,
      "last_access_millis": 1782644004556,
      "sha256_digest": "calculated-hash-string"
    }
  }
}

fs_is_file_exists

Description: Lightweight existence check for file or directory.

Parameters:

  • file_path (string, required): Target path

Success Response:

{
  "res": {
    "success": true,
    "info": {
      "exists": true
    }
  }
}

3. File Read & Write Tools

fs_read_full_text

Description: Read full text content of target file with specified encoding.

Parameters:

  • file_path (string, required): Target file path

  • charset (string, optional, default=utf-8): Multi encoding support

Success Response:

{
  "res": {
    "success": true,
    "info": {
      "content": "full-text-file-content"
    }
  }
}

fs_read_text_range

Description: Segmented text reading for large files, support skip leading lines and limit read lines.

Parameters:

  • file_path (string, required): Target file path

  • lines_to_skip (integer, required): Number of leading lines to skip

  • max_lines_to_read (integer, required): Maximum lines to read

  • line_separator (string, optional, default="\n"): Line break character

  • charset (string, optional, default=utf-8): File encoding

Success Response:

{
  "res": {
    "success": true,
    "info": {
      "lines_count": 5,
      "content": "segmented-text-content"
    }
  }
}

fs_read_binary_chunk

Description: Chunked binary file reading, return Base64 encoded data for safe network transmission, support stream end detection.

Parameters:

  • file_path (string, required): Target file path

  • bytes_to_skip (integer, required): Leading bytes to skip

  • max_bytes_to_read (integer, required): Maximum bytes to read

Success Response:

{
  "res": {
    "success": true,
    "info": {
      "data_base64": "base64-encoded-binary",
      "raw_bytes_length": 5,
      "end_of_stream": true
    }
  }
}

fs_write_text

Description: Write text content to file, support overwrite or append mode.

Parameters:

  • file_path (string, required): Target file path

  • text (string, required, minLength=1): Text content to write

  • append (boolean, optional, default=false): Append mode switch

  • charset (string, optional, default=utf-8): File encoding

Success Response: Empty info object with success flag

fs_write_binary

Description: Write Base64 decoded binary data to file, support append operation.

Parameters:

  • file_path (string, required): Target file path

  • base64_data (string, required, minLength=1): Base64 encoded binary data

  • append (boolean, optional, default=false): Append mode switch

Success Response: Empty info object with success flag

4. Search & Replace Tools

fs_search_files_by_content

Description: Recursively scan directory, return all file paths containing target content, support regex, case ignore, suffix filter.

Parameters:

  • dir_path (string, required): Scan root directory

  • recursive (boolean, required): Recursive scan enable

  • search_term (string, required): Search keyword or regex pattern

  • is_regex (boolean, optional, default=false): Regex matching enable

  • ignore_case (boolean, optional, default=true): Case-insensitive matching

  • file_extension (string, optional, default=""): File suffix filter

  • charset (string, optional, default=utf-8): File encoding

fs_search_in_files_by_content

Description: Multi-file content matching, return structured results with customizable context lines and result limit.

Parameters:

  • dir_path (string, required): Scan root directory

  • recursive (boolean, required): Recursive scan enable

  • search_term (string, required): Search keyword/regex

  • limit (integer, required): Max matching result count

  • is_regex (boolean, optional, default=false): Regex enable

  • ignore_case (boolean, optional, default=true): Case ignore

  • lines_before (integer, optional, default=0): Preceding context lines

  • lines_after (integer, optional, default=0): Subsequent context lines

  • file_extension (string, optional, default=""): Suffix filter

  • charset (string, optional, default=utf-8): File encoding

Success Response:

{
  "res": {
    "success": true,
    "info": {
      "results": [
        {
          "file_path": "/test/file.ts",
          "start_line": 1,
          "end_line": 1,
          "text": "matched-content-line"
        }
      ]
    }
  }
}

fs_search_in_file_by_content

Description: Precise single-file content search with line context preview.

Parameters: Similar to multi-file search, single file path input

Success Response: Structured single-file matching results

fs_file_replace

Description: In-place text replacement in single file, return total replaced count.

Parameters:

  • file_path (string, required): Target file path

  • search_term (string, required): Text to replace

  • replacement (string, required): New replacement text

  • line_separator (string, optional, default="\n"): Line break separator

Success Response:

{
  "res": {
    "success": true,
    "info": {
      "count": 1
    }
  }
}

5. Image Processing Tools

fs_image_resize

Description: Resize image with aspect ratio lock support, generate new output image file.

Parameters:

  • source_path (string, required): Source image path

  • dest_path (string, required): Output image path

  • width (integer, required, >0): Target width

  • height (integer, required, >0): Target height

  • keep_aspect_ratio (boolean, optional, default=true): Lock original aspect ratio

Success Response: Empty info object with success flag

fs_image_crop

Description: Crop specified rectangular region from source image and export new file.

Parameters:

  • source_path (string, required): Source image path

  • dest_path (string, required): Output image path

  • x (integer, required, ≥0): Crop start X coordinate

  • y (integer, required, ≥0): Crop start Y coordinate

  • width (integer, required, >0): Crop region width

  • height (integer, required, >0): Crop region height

Success Response: Empty info object with success flag

fs_image_rotate

Description: Rotate image clockwise by arbitrary degrees, auto expand canvas to preserve full content.

Parameters:

  • source_path (string, required): Source image path

  • dest_path (string, required): Output image path

  • degrees (number, required): Clockwise rotation angle

Success Response: Empty info object with success flag

6. OCR Tool

fs_ocr_extract_text

Description: Extract text from images via Tesseract OCR, support WASM runtime (no local engine) and custom local binary path.

Parameters:

  • image_path (string, required): Target image path

  • tesseract_bin_path (string, optional, default=""): Custom Tesseract executable path

  • tessdata_path (string, optional, default=""): Custom tessdata language resource path

  • lang (string, optional, default eng): Recognition language prefix

Success Response:

{
  "res": {
    "success": true,
    "info": {
      "content": "extracted-ocr-text-content"
    }
  }
}

Project Build & Development

Scripts

# Clean build artifacts
npm run clean

# Compile TypeScript source
npm run build

# Watch mode for development
npm run dev

# Full rebuild (clean + build)
npm run rebuild

# Start SSE transport server
npm run server

# FastMCP dev mode
npm run fastmcp

# MCP Inspector debugging
npm run inspect

# Build and run test cases
npm run test

Dependencies

Core Runtime Dependencies

  • fastmcp: Official MCP server runtime framework

  • sharp: High-performance image processing engine

  • tesseract.js: WASM-based cross-platform OCR engine

  • winston: Standard logging system

  • zod: Strict schema validation for tool parameters

  • chardet / iconv-lite: Multi-encoding detection and conversion

  • cors: Cross-origin resource sharing support for HTTP transport

  • minimist: CLI parameter parsing

License

This project is open-sourced under the Apache License 2.0. See the LICENSE file in the project root for full license details.

Repository & Issues

Available Tools

22 tools
fs_copy_directoryC

Copy full directory tree, overwrite controls existing target cleanup.

ParametersJSON Schema
NameRequiredDescriptionDefault
overwriteNo
source_dirYes
copy_dest_dirYes

TDQS

C2.7/5.0
Behavior2/5

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

Without annotations, the description carries full burden. It mentions overwrite behavior but does not clarify whether it means deleting target first or overwriting files individually. Missing details on recursion, metadata preservation, or error handling.

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

Conciseness4/5

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

The description is a single short sentence, which is concise. However, it sacrifices clarity; a slightly longer but clearer description would be more effective.

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

Completeness2/5

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

Given no output schema, no annotations, and 3 parameters with 0% coverage, the description is inadequate. Critical information like whether the operation is recursive, how conflicts are resolved, and return behavior is missing.

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

Parameters2/5

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

Schema coverage is 0%, yet the description adds no parameter explanations. Only 'overwrite' is referenced vaguely, without defining its effect. This is insufficient for an agent to understand parameter usage.

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

Purpose4/5

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

The description clearly states it copies a full directory tree, distinguishing it from siblings like fs_copy_file (single file) and fs_move_directory (move vs copy). However, the phrasing 'overwrite controls existing target cleanup' is somewhat ambiguous.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives, such as using fs_copy_file for single files or fs_move_directory for moving. The description only implies general usage for directory copying.

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

fs_copy_fileC

Copy file with metadata, overwrite toggle.

ParametersJSON Schema
NameRequiredDescriptionDefault
overwriteNo
dest_file_pathYes
source_file_pathYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must provide behavioral details. It mentions 'metadata' and 'overwrite toggle' but fails to describe error handling (e.g., behavior when overwrite is false and destination exists), side effects, or permissions required. Insufficient for an agent to understand full behavior.

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

Conciseness4/5

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

Single sentence, very concise. However, the brevity sacrifices informative content. Structure is minimal but not cluttered.

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

Completeness2/5

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

No output schema, no annotations, and three parameters with no schema descriptions. The description does not specify return values, error conditions, or whether the operation is atomic. Incomplete for the tool's complexity level.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should explain parameters. 'overwrite toggle' hints at the boolean parameter but does not clarify its effect. No description for source_file_path and dest_file_path (e.g., absolute vs relative paths, file vs directory paths). Minimal value beyond the parameter names.

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

Purpose4/5

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

Clearly states the tool copies a file and mentions metadata preservation and overwrite toggle. Distinguishes from sibling tools like fs_copy_directory (copies directories) and fs_move_file (moves). However, it does not explicitly differentiate from fs_file_replace or other file operations.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings like fs_move_file or fs_copy_directory. Lacks context for appropriate use cases or prerequisites (e.g., whether the destination path must exist).

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

fs_create_fileC

Create a file, auto create missing parent directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
charsetNoutf-8
contentNo
file_pathYes

TDQS

C2.9/5.0
Behavior2/5

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

The description mentions auto-creation of parent directories, which is useful behavioral info. However, it omits critical details such as whether it overwrites existing files, permission requirements, or side effects. With no annotations, this is a significant gap.

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

Conciseness3/5

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

The description is very short (one sentence, 8 words). While concise, it sacrifices necessary detail, making it underspecified rather than optimally compact.

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

Completeness2/5

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

Given the tool has 3 parameters, no output schema, and no annotations, the description should provide more context about return values, error handling, path format, and overwrite behavior. The current description is incomplete for effective use.

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

Parameters1/5

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

The description provides no explanation of the parameters (file_path, content, charset) beyond what is in the schema. With 0% schema description coverage, the description fails to add any semantic value, leaving the agent to infer usage from type/name alone.

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

Purpose5/5

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

The description clearly states the action (create a file) and resource (file). It also highlights the auto-creation of parent directories, which distinguishes it from sibling tools like fs_write_text that may not create directories automatically.

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

Usage Guidelines3/5

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

The description implies when to use this tool (creating a new file with automatic parent directory creation) but does not provide explicit guidance on when not to use it or how it compares to alternatives like fs_copy_file or fs_write_text.

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

fs_delete_fileB

Delete single regular file, reject directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations exist, so the description carries full burden. It states the operation is deletion and excludes directories, but does not disclose permanence, error handling, permission requirements, or behavior with symlinks or non-existent files.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded and contains no filler. Every word adds value.

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

Completeness2/5

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

For a delete operation with no output schema or annotations, the description omits crucial information such as return value, idempotency, and error scenarios. It is insufficient for safe and proper invocation.

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

Parameters3/5

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

The schema has 0% description coverage, but the description clarifies that the file_path parameter must point to a regular file, not a directory. This adds meaning beyond the schema, but still lacks details like path format or constraints.

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

Purpose5/5

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

The description clearly states the action (delete) and the resource (single regular file), and explicitly says 'reject directory', which distinguishes it from siblings that handle directories or other operations.

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

Usage Guidelines3/5

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

The description implies it should not be used for directories ('reject directory'), but does not provide explicit when-to-use or when-not-to-use guidance, nor mentions alternatives or prerequisites.

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

fs_file_replaceC

Replace text content inside file, return match count.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
replacementYes
search_termYes
line_separatorNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior, but it only says 'replace text content'. It does not specify whether it's a plain string or regex replacement, whether it replaces all occurrences or just the first, whether it modifies the file in place, or any 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.

Conciseness4/5

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

The description is a single sentence with no wasted words. It front-loads the verb and noun, but it is too brief and lacks crucial details for an AI agent.

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

Completeness2/5

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

Given the absence of an output schema and annotations, and the presence of many sibling tools, the description is insufficient. It omits the match count format, replacement scope (first vs all), encoding handling, and other behavioral details needed for proper use.

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

Parameters1/5

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 by explaining parameters. However, it only mentions the return value and does not describe any of the four parameters (file_path, search_term, replacement, line_separator).

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

Purpose5/5

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

The description clearly states the action ('Replace text content inside file') and the return value ('return match count'), which distinguishes it from sibling tools like fs_read_full_text or fs_search_in_file_by_content.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., fs_write_text for full rewrites, or fs_search_in_file_by_content for searching). No prerequisites or when-not-to-use context is given.

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

fs_get_file_infoC

Get full file/directory metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
calc_digestNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It does not disclose read-only nature, error handling, permissions, or what metadata is included, leaving behavioral traits ambiguous.

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

Conciseness4/5

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

Single, front-loaded sentence with no wasted words, though could be expanded slightly for clarity.

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

Completeness2/5

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

Given two parameters and no output schema, the description lacks information on return values, metadata content, and limitations, making it incomplete for an agent.

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

Parameters2/5

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

Schema description coverage is 0%. The description adds no meaning to parameters (file_path, calc_digest); it doesn't explain calc_digest's purpose or format.

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

Purpose4/5

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

The verb 'Get' and resource 'full file/directory metadata' clearly indicate the tool retrieves metadata, distinguishing it from sibling tools that read content or perform file operations.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives, no exclusions or best practices provided.

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

fs_image_cropC

Crop rectangular region from image.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
widthYes
heightYes
dest_pathYes
source_pathYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavioral traits. It only states 'crop rectangular region' without mentioning side effects (e.g., overwriting dest_path), permission needs, or error conditions. The lack of detail leaves agents uninformed about the tool's impact.

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

Conciseness3/5

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

The description is a single short sentence, which is front-loaded and concise. However, it is under-specified and lacks necessary details, making it insufficiently sized for the tool's complexity. Every sentence should earn its place; this one is too brief.

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

Completeness2/5

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

Given the tool's complexity (6 required parameters, image manipulation, no output schema), the description is incomplete. It does not explain coordinate systems, supported image formats, error handling, or return behavior, leaving significant gaps for an AI agent.

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

Parameters1/5

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

Schema description coverage is 0%, meaning the description adds no meaning beyond the schema. There are 6 parameters with no explanation of coordinate origin, units, or how they relate to the image. The description fails to compensate for the lack of parameter documentation.

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

Purpose5/5

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

The description clearly states the verb 'crop' and the resource 'image', specifying the action of cropping a rectangular region. It effectively distinguishes this tool from sibling tools like fs_image_resize and fs_image_rotate, which perform different image manipulations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like resize or rotate. It does not mention prerequisites, context, or conditions that would help an agent decide to invoke this tool over others.

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

fs_image_resizeC

Resize image with ratio lock and padding support.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
heightYes
dest_pathYes
source_pathYes
keep_aspect_ratioNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided; description mentions 'ratio lock' and 'padding support' but fails to explain padding behavior or other side effects. Lacks details on how dimensions are treated.

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

Conciseness4/5

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

Single sentence, front-loaded with purpose, but lacks critical details.

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

Completeness2/5

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

No output schema; description does not cover return values, error behavior, or padding details. Incomplete for a 5-parameter tool with no schema descriptions.

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

Parameters1/5

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

Schema coverage is 0%; description adds 'ratio lock' hinting at keep_aspect_ratio but misleadingly mentions 'padding support' without a corresponding parameter in the schema. No parameter-specific details.

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

Purpose5/5

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

Clear verb+resource: 'Resize image' with specific features 'ratio lock and padding support'. Distinguishes from sibling tools like crop and rotate.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings. Does not mention prerequisites or exclusions.

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

fs_image_rotateC

Rotate image clockwise.

ParametersJSON Schema
NameRequiredDescriptionDefault
degreesYes
dest_pathYes
source_pathYes

TDQS

C2/5.0
Behavior2/5

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

No annotations are present, and the description does not disclose behavioral aspects such as file modification, creation of a new file, handling of invalid degrees, or any 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.

Conciseness2/5

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

The description is extremely short and front-loaded, but it sacrifices essential information for brevity. It does not earn its place as it fails to clarify key aspects.

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

Completeness1/5

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

Given the three parameters, no output schema, and lack of annotations, the description is severely incomplete. It does not explain the effect of degrees, that a new file is created, or any constraints.

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

Parameters1/5

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

The schema description coverage is 0%, and the description does not explain the three required parameters (source_path, dest_path, degrees). The meaning of degrees is left ambiguous.

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

Purpose3/5

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

The description states the tool rotates an image clockwise, providing a specific verb and resource. However, it does not distinguish from sibling tools like fs_image_crop or fs_image_resize, and lacks detail on the degree parameter.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor any conditions for use or exclusion criteria.

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

fs_is_file_existsC

Check filesystem entry existence.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It does not mention return values, error cases, or side effects. It fails to clarify whether the tool throws an error for non-existent entries or returns a boolean.

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

Conciseness3/5

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

The description is a single sentence with no filler, but it is underspecified given the tool's lack of annotations and output schema. It is not verbose, but brevity at the cost of completeness is not ideal.

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

Completeness2/5

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

For a simple existence check, the description should at least hint at the return value. Without an output schema, the description leaves ambiguity about what the tool provides as output.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to the 'file_path' parameter. It does not specify path format, constraints, or behavior related to the parameter.

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

Purpose5/5

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

The description clearly states the tool's function: checking filesystem entry existence. The verb 'check' and resource 'filesystem entry existence' are specific and distinct from sibling tools that perform other operations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or context. It only states the basic action.

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

fs_list_directoryC

Scan directory, return matched absolute path list.

ParametersJSON Schema
NameRequiredDescriptionDefault
recursiveYes
only_filesYes
source_dirYes
file_extensionNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are present, so the description must fully convey behavior. It states 'return matched absolute path list' but does not disclose recursion behavior, performance implications, or the meaning of 'matched' (e.g., file_extension filter). The description is too minimal to inform an agent about side effects or limits.

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

Conciseness3/5

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

The description is very short (8 words), which is concise, but it sacrifices necessary detail. It is front-loaded with key action and output, but under-specification reduces its effectiveness.

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

Completeness2/5

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

The tool has no output schema, so the description should clarify the return format. It mentions 'absolute path list' but does not detail whether it's a flat list or structured. With 4 parameters (3 required) and no parameter descriptions, the description is insufficient for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain any parameters. It only says 'scan directory' and 'matched', leaving the agent to infer the roles of source_dir, recursive, only_files, and file_extension from their names alone. This adds minimal value beyond the schema.

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

Purpose4/5

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

The description uses a specific verb ('Scan directory') and resource ('directory'), and the return type is stated as 'matched absolute path list'. It distinguishes from sibling tools like fs_search_files_by_content which search by content, but could be clearer about the filtering mechanism.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as fs_search_files_by_content or fs_is_file_exists. The description lacks any context about prerequisites or suitable scenarios.

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

fs_move_directoryC

Move directory, fail if destination exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
dest_dirYes
overwriteNo
source_dirYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility. It states 'fail if destination exists' but fails to mention the 'overwrite' parameter (default false) which alters this behavior. No side effects, permission requirements, or other behavioral traits are disclosed.

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

Conciseness4/5

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

The description is extremely concise at 7 words, front-loading the action. However, the brevity sacrifices necessary detail, making it borderline under-specified.

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

Completeness1/5

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

For a tool with 3 parameters and no output schema, the description is grossly incomplete. It omits parameter explanations, return values, edge cases (e.g., source not existing), and behavior of the overwrite flag.

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

Parameters1/5

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

The description provides no semantic information about the three parameters (source_dir, dest_dir, overwrite). With 0% schema coverage, the description adds zero value beyond the schema structure.

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

Purpose5/5

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

The description clearly states the action ('Move directory') and a key constraint ('fail if destination exists'), which effectively distinguishes it from sibling tools like fs_copy_directory (copy vs. move) and fs_move_file (directory vs. file).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, when not to use it, or contrast with similar tools like fs_copy_directory or fs_move_file.

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

fs_move_fileC

Move file, control overwrite behavior.

ParametersJSON Schema
NameRequiredDescriptionDefault
overwriteNo
dest_file_pathYes
source_file_pathYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It only mentions 'control overwrite behavior' without explaining what happens when overwrite is false and the destination exists, or any other behavioral traits like permissions or cross-filesystem moves.

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

Conciseness3/5

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

The description is very short but not effectively concise; it omits necessary details. It is front-loaded but does not earn its place due to lack of completeness.

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

Completeness2/5

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

Given that there are 3 parameters, no output schema, and no annotations, the description is inadequate. It fails to explain parameter semantics, return values, error scenarios, or overwrite behavior in sufficient detail for an agent to use correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate. It only references 'overwrite' but does not explain the meaning or format of source_file_path or dest_file_path, leaving critical parameters undocumented.

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

Purpose4/5

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

The description clearly states the action ('Move') and resource ('file'), and adds the detail about controlling overwrite behavior, which helps distinguish it from sibling tools like fs_copy_file or fs_move_directory.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., copy vs move, or move directory). There are no prerequisites or exclusions mentioned.

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

fs_ocr_extract_textB

Extract text from image via Tesseract OCR.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNomust match tessdata language file prefixeng
image_pathYesInput image path
tessdata_pathNo
tesseract_bin_pathNoTesseract binary path, empty uses WASM

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description must carry full burden. Only mentions Tesseract OCR; lacks details on error handling, supported image formats, output format, or side effects. Insufficient for a tool with no annotations.

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

Conciseness5/5

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

Single sentence, 8 words, front-loaded with key information. No wasted words; highly concise.

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

Completeness2/5

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

No output schema, but description does not mention return value (e.g., extracted text). Lacks guidance on image path requirements or fallback behavior. Incomplete for an OCR tool.

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

Parameters3/5

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

Schema description coverage is 75%, so schema already explains most parameters. The tool description adds no additional meaning beyond what is in the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the verb (extract) and resource (text from image) with method (Tesseract OCR). It distinguishes from sibling tools which are primarily file operations and image manipulations.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. The context implies it's for OCR on images, but no exclusions or when-not-to-use guidance is provided.

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

fs_read_binary_chunkB

Read partial binary file, return base64 encoded bytes.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
bytes_to_skipYes
max_bytes_to_readYes

TDQS

B3.2/5.0
Behavior3/5

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

The description discloses that the output is base64 encoded bytes, which is beyond the schema. However, it does not mention error behavior, file existence checks, or any side effects. Since no annotations exist, the description carries the full burden and falls short.

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

Conciseness4/5

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

The description is a single sentence with no superfluous text. It is front-loaded with the action and output. While concise, it could benefit from a brief elaboration.

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

Completeness2/5

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

The tool has 3 parameters and no output schema, yet the description is very sparse. It lacks details on return value structure, error handling, and usage scenarios. Given the complexity of partial reads, the description is incomplete.

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

Parameters2/5

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

With 0% schema description coverage, the description should explain parameters. It only implies that bytes_to_skip and max_bytes_to_read control the chunk, but does not define them explicitly or provide expected formats.

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

Purpose5/5

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

The description clearly states the action (Read), the resource (partial binary file), and the output format (base64 encoded bytes). It differentiates from sibling tools like fs_read_full_text and fs_read_text_range, which handle text or full files.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites or context provided. The agent receives no hints about when partial binary reading is appropriate.

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

fs_read_full_textC

Read entire text file.

ParametersJSON Schema
NameRequiredDescriptionDefault
charsetNoutf-8
file_pathYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavior. It only states 'read entire text file', omitting details on output format, error handling, file size limits, or encoding implications.

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

Conciseness2/5

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

The one-sentence description is concise but under-specified for a tool with two parameters and no annotations. It fails to provide necessary detail.

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

Completeness2/5

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

Given no output schema and no annotations, the description is insufficient. It lacks information about return format, potential errors, and usage context.

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

Parameters1/5

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

Schema coverage is 0% (no parameter descriptions in schema), and the description does not explain the file_path or charset parameters. It adds no value beyond the schema structure.

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

Purpose4/5

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

Description clearly states verb 'read' and resource 'entire text file', distinguishing it from sibling tools like fs_read_text_range. However, it is very brief and could be more explicit about returning content as a string.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like fs_read_text_range or fs_read_binary_chunk. The description lacks context for selection.

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

fs_read_text_rangeC

Read partial lines of text file.

ParametersJSON Schema
NameRequiredDescriptionDefault
charsetNoutf-8
file_pathYes
lines_to_skipYes
line_separatorNo
max_lines_to_readYes

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description fully bears the burden of disclosure. It does not mention side effects, error conditions, behavior on invalid inputs (e.g., lines_to_skip exceeding file length), or performance implications. Only a vague read operation is described.

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

Conciseness2/5

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

The description is extremely short, which is concise but at the cost of omitting critical details. It is front-loaded but incomplete, sacrificing clarity for brevity.

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

Completeness1/5

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

Given the tool has 5 parameters, no annotations, and no output schema, the description is severely inadequate. It fails to specify return format, behavior on errors, or constraints like file existence. The agent has insufficient information to use the tool correctly.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must explain parameter meaning. It does not mention any parameters. The agent gains no additional understanding of file_path, lines_to_skip, max_lines_to_read, charset, or line_separator beyond their names and types.

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

Purpose4/5

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

The description 'Read partial lines of text file' clearly states the verb and resource, and implicitly differentiates from sibling tools like fs_read_full_text by specifying 'partial lines'. However, it could be more precise about the range mechanism.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as fs_read_full_text or fs_search_in_file_by_content. The agent receives no context for decision-making.

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

fs_search_files_by_contentC

Scan directories and return paths of files containing target text.

ParametersJSON Schema
NameRequiredDescriptionDefault
charsetNoutf-8
dir_pathYes
is_regexNo
recursiveYes
ignore_caseNo
search_termYes
file_extensionNo

TDQS

C2.6/5.0
Behavior2/5

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

The description implies a read-only operation but does not disclose behavioral traits like whether it follows symlinks, handles binary files, or respects encoding defaults. With no annotations provided, the description carries the full burden, and it falls short.

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

Conciseness3/5

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

The description is concise at one sentence, but it sacrifices necessary detail for a tool with 7 parameters. It is appropriately front-loaded but too brief to convey essential information.

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

Completeness2/5

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

Given the tool's complexity (7 parameters, no annotations, no output schema), the description is incomplete. It omits details about output format, behavior for non-text files, recursion handling, and error scenarios.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description does not explain any parameters beyond the search term. Parameters like charset, is_regex, ignore_case, recursive, and file_extension are not mentioned, leaving their meaning unclear.

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

Purpose4/5

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

The description clearly states it scans directories and returns file paths containing target text. The verb 'scan' and resource 'directories' are specific. However, it does not explicitly differentiate from sibling tools like fs_search_in_file_by_content or fs_search_in_files_by_content, which may have similar purposes.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as when to use recursive search or how it compares to searching within a single file. There is no mention of prerequisites, performance considerations, or limitations.

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

fs_search_in_file_by_contentB

Search single file and return matched lines with context.

ParametersJSON Schema
NameRequiredDescriptionDefault
charsetNoutf-8
is_regexNo
file_pathYes
ignore_caseNo
lines_afterNo
search_termYes
lines_beforeNo

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose behaviors such as handling of missing files, encoding defaults, case sensitivity defaults, regex support, or impact of context line parameters. The description adds minimal value beyond the name.

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

Conciseness4/5

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

The description is a single concise sentence, which is efficient and earns its place. However, it could be front-loaded with more critical details. It is not verbose, but structure is minimal.

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

Completeness2/5

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

No output schema is provided, and the description does not explain return format, error handling, or behavior with different parameters. Given the tool complexity (7 parameters), the description is incomplete for effective use.

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

Parameters1/5

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

Schema description coverage is 0%. The description mentions 'matched lines with context' but does not explain parameters like lines_before, lines_after, is_regex, ignore_case, charset, or file_path. For 7 parameters, this is a critical gap with no semantic addition.

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

Purpose5/5

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

The description explicitly states 'Search single file', which differentiates it from sibling tools that search multiple files. It specifies the verb (search), resource (single file), and output (matched lines with context), making the purpose very clear.

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

Usage Guidelines3/5

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

The description implies usage for searching a single file, but it does not provide explicit guidance on when not to use it (e.g., for multi-file searches) or mention alternative sibling tools like fs_search_files_by_content. No exclusions or context about prerequisites are given.

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

fs_search_in_files_by_contentC

Search multiple files and return matched lines with context.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitYes
charsetNoutf-8
dir_pathYes
is_regexNo
recursiveYes
ignore_caseNo
lines_afterNo
search_termYes
lines_beforeNo
file_extensionNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, description carries full burden. It only states 'return matched lines with context' but omits behavioral traits like whether the operation is read-only, handling of binary files, or impact on system. Does not disclose behavior beyond what the schema implies.

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

Conciseness3/5

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

Single short sentence, no wasted words, but under-specified for the tool's complexity. Conciseness is beneficial only if adequate, here it sacrifices completeness.

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

Completeness1/5

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

Description is severely incomplete for a tool with 10 parameters, no output schema, and no annotations. Lacks explanation of return format, filtering by file extension, regex support, context lines, and charset handling.

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

Parameters1/5

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

Description provides no explanation of parameters (dir_path, recursive, search_term, limit, etc.) despite 0% schema description coverage. For a tool with 10 parameters, this is a critical gap.

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

Purpose4/5

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

Description clearly states verb 'search', resource 'multiple files', and output 'matched lines with context'. Implicitly distinguishes from sibling tools like fs_search_in_file_by_content (single file) and fs_search_files_by_content (likely file paths only), but does not explicitly differentiate.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives or when not to use. Lacks context about prerequisites, performance considerations, or typical use cases.

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

fs_write_binaryC

Decode base64 data to binary bytes and write bytes to file.

ParametersJSON Schema
NameRequiredDescriptionDefault
appendNo
file_pathYes
base64_dataYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, description carries full burden but only states basic operation. It does not disclose overwrite behavior, error conditions, or permission requirements.

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

Conciseness4/5

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

Single sentence, no redundancy. Concise but lacks some structure; could benefit from organization.

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

Completeness2/5

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

Given three parameters and no output schema or annotations, the description is insufficient. It does not cover return values, error handling, or default behavior (e.g., overwrite vs append).

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to the three parameters (file_path, base64_data, append). Parameter names provide some hints, but description fails to explain their roles.

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

Purpose4/5

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

Description clearly states it decodes base64 and writes binary bytes to a file, distinguishing from text write tools. However, it does not explicitly differentiate from sibling tools like fs_write_text.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., fs_read_binary or fs_write_text). Agent must infer usage from tool name alone.

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

fs_write_textC

Write text content to file.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
appendNo
charsetNoutf-8
file_pathYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description falls short. It does not disclose default overwrite behavior, the effect of the append parameter, or charset handling. The agent cannot infer side effects or required permissions from 'Write text content to file.' alone.

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

Conciseness3/5

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

The description is concise at 4 words, but conciseness comes at the expense of necessary information. It would benefit from adding context about append and charset without becoming verbose.

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

Completeness2/5

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

Given no output schema, no annotations, and 0% schema description coverage, the description is incomplete. It does not mention return values, error conditions, or file creation behavior, which are critical for an AI agent to use the tool correctly.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description adds no parameter-level details. It fails to explain the meaning of file_path, text, append, or charset, leaving the agent to rely solely on parameter names and types.

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

Purpose4/5

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

The description 'Write text content to file.' clearly states the action and resource. It distinguishes from siblings like fs_write_binary (binary data) and fs_create_file (empty file creation), but does not explicitly differentiate from fs_read_full_text or fs_file_replace, which are for different operations.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings like fs_create_file (if file doesn't exist) or fs_append_text (if such exists). Does not mention that this tool will overwrite by default when append=false, nor any prerequisites or conditions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 22 tool updatesv0.2.0
    • First observedfs_copy_directory
    • First observedfs_copy_file
    • First observedfs_create_file
    • First observedfs_delete_file
    • First observedfs_file_replace
    • First observedfs_get_file_info
    • First observedfs_image_crop
    • First observedfs_image_resize
    • First observedfs_image_rotate
    • First observedfs_is_file_exists
    • First observedfs_list_directory
    • First observedfs_move_directory
    • First observedfs_move_file
    • First observedfs_ocr_extract_text
    • First observedfs_read_binary_chunk
    • First observedfs_read_full_text
    • First observedfs_read_text_range
    • First observedfs_search_files_by_content
    • First observedfs_search_in_file_by_content
    • First observedfs_search_in_files_by_content
    • First observedfs_write_binary
    • First observedfs_write_text

TDQS

B3/5.0

Scored across 22 tools

Disambiguation5/5

Every tool has a clearly distinct purpose, from file operations to image manipulation and OCR, with no ambiguity between them.

Naming Consistency5/5

All tools use the 'fs_' prefix and follow a consistent verb_noun pattern (e.g., fs_copy_directory, fs_read_text_range), making them predictable.

Tool Count4/5

22 tools cover a broad range of file system tasks, which is slightly above the typical well-scoped range but still reasonable given the scope.

Completeness3/5

The set includes many useful operations but omits fundamental ones like directory deletion and file renaming, leaving notable gaps.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers