ellmos-filecommander-mcp
ellmos-filecommander-mcp gives AI agents full local filesystem, process, search, repair, conversion, archive, OCR, and web-fetch capabilities through 50 MCP tools with safety and cloud-sync protections.
Read, write, append, edit, replace strings, read multiple files, inspect metadata, list/create/copy/move/delete files and directories.
Delete safely to Recycle Bin/Trash or enable global safe mode; handle cloud-sync locks with copy-verify-delete fallback.
Search files synchronously by wildcard, bounded content search, and async background searches with pagination/stop/clear.
Manage processes and interactive sessions: execute commands, start/kill/list processes, open paths, and run REPL sessions.
Repair/maintain files: fix/validate JSON, fix encoding/Mojibake, cleanup BOM/NUL/whitespace/line endings, diff folders, batch rename, detect duplicates, checksum.
Convert between JSON, CSV, INI, YAML, TOML, XML, TOON; export Markdown to HTML/PDF.
Handle ZIP archives, OCR images/PDFs, and fetch web pages with extract/raw/links/forms/headers modes and SSRF guard.
Manage runtime: get time, set safe mode, switch language (de/en/es/zh/ja/ru), check Windows cloud-lock risk.
Security posture: local stdio, no telemetry, explicit egress, unprivileged execution, secret redaction in search excerpts, 48h security SLA.
Provides cloud-lock-safe file operations for Dropbox, using automatic copy+delete fallback when sync filters block rename operations.
Provides cloud-lock-safe file operations for Google Drive, using automatic copy+delete fallback when sync filters block rename operations.
Provides cloud-lock-safe file operations for iCloud, using automatic copy+delete fallback when sync filters block rename operations.
ellmos FileCommander MCP Server
🇩🇪 Deutsche Version
Part of the ellmos-ai family.
Quick Navigation: Tools Overview | System Architecture | Core Capabilities & Safety Invariants | Target Personas | Available Tools | Installation | Configuration | Comparative Matrix | Testing & Verification | Governance & Runtime Invariants | Security | Ecosystem | Security Policy | Third-Party Licenses | Marketing Log | llms.txt
A comprehensive Model Context Protocol (MCP) server that gives AI assistants full filesystem access, bounded multi-file content search, process management, interactive shell sessions, and async filename search capabilities.
50 tools in a single server - everything an AI agent needs to interact with the local system.
Discovery keywords: local filesystem MCP server, multi-file content search MCP, safe delete MCP, Recycle Bin MCP server, process management MCP, interactive shell MCP, async file search for AI agents, cloud-lock-safe file operations, Markdown to PDF MCP, OCR MCP server, ZIP archive MCP.
Registry status: published on npm, indexed by jsDelivr, visible on LobeHub, listed on Glama, and prepared for the official MCP Registry via server.json. Some third-party directories still show older 43-tool metadata, so the canonical README/npm metadata should remain the source of truth until their reindex catches up.
For AI Agents & LLM Integrations:
FileCommander provides 50 specialized tools accessible via standard stdio transport. All tool names use the fc_ prefix to prevent namespace collisions. For LLMs, compact context and schema overviews are available in llms.txt and server.json.
Why FileCommander?
Most filesystem MCP servers only cover basic read/write operations. FileCommander goes further:
Safe Delete - Moves files to Recycle Bin (Windows) or Trash (macOS/Linux) instead of permanent deletion
Interactive Sessions - Start and interact with REPLs (Python, Node.js, shells) through the MCP protocol
Async Search - Search large directory trees in the background while the AI continues working
Explicit Content Search - Search literal text or regex across a bounded list of files without recursion or glob expansion
Process Management - List, start, and terminate system processes
String Replace - Edit files by matching unique strings with context validation
Format Conversion - Convert between JSON, CSV, INI, YAML, TOML, XML, and TOON
ZIP Archives - Create, extract, and list ZIP archives
File Checksums - MD5, SHA-1, SHA-256, SHA-384, and SHA-512 hashing with compare
OCR - Extract text from images (optional tesseract.js dependency)
Safety Mode - Toggle to route all deletes through Recycle Bin / Trash
Markdown Export - Convert Markdown to professional HTML/PDF with code blocks, tables, nested lists, blockquotes
Cloud-Lock Safe - Automatic copy+delete fallback when cloud sync filters (OneDrive, Dropbox, Google Drive, iCloud) block rename operations
Cloud Lock Diagnosis - Check whether a path is at risk of sync-filter conflicts before operating
Cross-platform - Works on Windows, macOS, and Linux with platform-specific optimizations
Related MCP server: MCP TS Toolkit
System Architecture
flowchart TD
subgraph Client["MCP Client Layer"]
Claude["Claude Desktop / Claude Code"]
Custom["Custom LLM Agents / Frameworks"]
end
subgraph Transport["Transport Layer"]
Stdio["Stdio Transport (JSON-RPC)"]
end
subgraph Core["ellmos FileCommander Engine (50 Tools)"]
FS["Filesystem Engine\n(15 tools: read, bounded preview, write, edit, safe-delete, cloud-lock safe)"]
Search["Search Engine\n(6 tools: explicit content search plus 5 async filename-search tools)"]
Proc["Process & REPL Sessions\n(10 tools: exec, default-app opening, background proc, interactive REPLs)"]
Repair["Repair & Format Converter\n(9 tools: JSON fix, Mojibake fix, duplicates, format convert, checksum)"]
Export["Export & Web Fetch\n(3 tools: Markdown->HTML/PDF, web_fetch)"]
Sys["System, Utilities & i18n\n(7 tools: OCR, ZIP, cloud-lock check, safe-mode, time, language set/get)"]
end
Client -->|JSON-RPC| Stdio
Stdio --> Core
Core --> FS
Core --> Search
Core --> Proc
Core --> Repair
Core --> Export
Core --> SyssequenceDiagram
autonumber
participant AI as AI Assistant (Client)
participant FC as FileCommander Engine
participant FS as Host Filesystem
participant Trash as Recycle Bin / Trash
participant Cloud as Cloud Sync Filter
Note over AI,FC: 1. Safe Deletion & Recovery Protection
AI->>FC: fc_delete_file / fc_safe_delete(targetPath)
alt Safety Mode Active or fc_safe_delete invoked
FC->>Trash: Move item to Recycle Bin / Trash
Trash-->>FC: Moved safely (recoverable)
FC-->>AI: Success (item preserved in Trash/Recycle Bin)
else Permanent Unlink requested
FC->>FS: Direct unlink
FS-->>FC: Removed permanently
FC-->>AI: Success
end
Note over AI,Cloud: 2. Resilient Cloud-Lock Handling (OneDrive/Dropbox)
AI->>FC: fc_move(sourcePath, destPath)
alt Cloud Filter Locks Destination
FC->>Cloud: Attempt standard rename
Cloud-->>FC: EPERM / EBUSY (Cloud Filter Error)
FC->>FS: Fallback: copyFileSync + SHA-256 verify
FC->>FS: unlinkSync source
FC-->>AI: Move succeeded via resilient fallback
else Local Native Filesystem
FC->>FS: Rename (atomic)
FS-->>FC: Done
FC-->>AI: Move succeeded
endCore Capabilities & Safety Invariants
Capability / Invariant | Guarantee & Implementation Details | Security & Operational Benefit |
Local stdio & explicit egress | The MCP transport is local stdio, with no telemetry and no automatic network egress. | Makes the network boundary visible to clients while retaining a local, port-free server transport. |
Safe Deletion & Trash Protection |
| Prevents irreversible data loss from accidental recursive or bulk deletions. |
Cloud-Lock Resilient Move ( | Automatic detection of cloud sync filters (OneDrive, Dropbox, iCloud reparse points) with seamless copy+verify+delete fallback. | Eliminates |
Cloud-Lock Diagnosis ( | Read-only report of static cloud-path context plus target existence/type; Cloud Files hydration and process handles are explicitly reported as not checked when unavailable. | Agents can distinguish static OneDrive risk from an actual detected rename lock. |
Bounded Multi-File Content Search |
| Prevents out-of-memory errors and catastrophic CPU lockups during large repository searches. |
Automated Secret & Token Redaction | Content search excerpts automatically mask common API keys, bearer tokens, AWS credentials, and authorization headers. | Prevents LLM context contamination and accidental credential leakage in prompt history. |
Interactive REPL & Session Isolation | Stateful interactive sessions ( | Allows multi-turn REPL debugging without unconstrained background process buildup. |
Lossless Multi-Format Engine | Declarative conversion ( | Clean data normalization across heterogeneous configuration formats without data loss. |
Mojibake & File Repair Engine |
| Self-healing pipelines for corrupted files generated across divergent OS platforms. |
Unprivileged Non-Elevation Execution | Designed and verified to run in standard unprivileged user-mode. Never requires administrative or root privileges. | Minimal attack surface; adheres to the principle of least privilege. |
Six-language Runtime i18n Engine | Dynamic language switching and introspection ( | Native multilingual developer experience and localized error reporting. |
Multi-OS Verified Matrix | Tested across Windows, Ubuntu Linux, and macOS on Node.js 20, 22, and 24 with 291 automated assertions. | Continuous cross-platform parity and reliability. |
Target Personas & Discoverability
FileCommander is purpose-built and validated for four core developer, agentic, and operations personas:
1. Autonomous AI Coding Agents & LLM Swarms
Profile: Multi-agent swarms and standalone agentic runtimes (Claude Code, Antigravity/Gemini, OpenAI Codex, AutoGen, CrewAI) executing recursive code editing, project refactoring, and directory audits.
Key Operational Pain Points: Rapid context window bloat caused by reading multi-megabyte files, unhandled process crashes from locked files (
EPERM/EBUSY) in cloud-synced folders, and unrecoverable repository corruption from accidentalrm -rfcleanup routines.FileCommander Solution:
fc_preview_file: Metadata-first inspection with strict 1 MiB inline content ceiling preventing LLM context blowout.fc_search_content: Bounded multi-file search (max 50 files, 10 MB per file, 200 matches) with automatic secret/token redaction.fc_safe_delete&fc_set_safe_mode: Preserves deleted files in OS Recycle Bin / Trash for zero-risk file operations.fc_move&fc_check_cloud_lock: Automatic copy + SHA-256 verify + unlink fallback on file locks, preventing agent failure.
2. DevOps, Toolchain & Multi-Host Automation Engineers
Profile: Systems and automation engineers constructing cross-platform CLI tools, CI/CD validation pipelines, and multi-machine sync scripts across Windows, Linux, and macOS.
Key Operational Pain Points: Heterogeneous operating system semantics (Windows backslashes vs POSIX slashes, line-ending corruption, shell-specific syntax), zombie child processes, and file locking in shared OneDrive/Dropbox workspaces.
FileCommander Solution:
Cross-platform unified tool semantics across Windows, Linux, and macOS.
Stateful interactive REPL sessions (
fc_start_session,fc_send_input,fc_read_output) with bounded circular ring buffers.Batch file renaming (
fc_batch_rename) and background directory search (fc_start_search,fc_get_search_results).Process lifecycle management (
fc_execute_command,fc_start_process,fc_kill_process) without process leaks.
3. SecOps, Governance & Compliance Officers
Profile: Security officers, compliance auditors, and privacy teams overseeing AI tool integrations in enterprise and production environments.
Key Operational Pain Points: Undisclosed background telemetry beacons, unvetted network access from local plugins, credential/token leakage into model training or prompt histories, and unprivileged user privilege escalation.
FileCommander Solution:
Local stdio transport with strictly zero telemetry and zero open network listening ports.
Explicit outbound network egress strictly restricted to caller-invoked
fc_web_fetch(internal/private IPs blocked by default).Automated secret and bearer token masking in search excerpts (
INV-MASK-06).Strict unprivileged user execution (
INV-PROC-09) and binding 48-hour vulnerability response SLA (security@open-bricks.org,security@ellmos.ai).
4. Enterprise Platform Architects & Data Pipeline Developers
Profile: Solutions architects and data engineers integrating local files, normalizing heterogeneous configuration formats, validating cryptographic hashes, and generating reports.
Key Operational Pain Points: MCP server sprawl requiring 4-6 disparate single-purpose servers, corrupted UTF-8 byte sequences (Mojibake) across tools, and bespoke parsing scripts.
FileCommander Solution:
Comprehensive 50-tool single-server deployment eliminating multi-server sprawl and process overhead.
Lossless declarative conversion across 7 structured formats (
fc_convert_format: JSON, YAML, TOML, XML, CSV, INI, TOON).Built-in file repair engines (
fc_fix_encoding,fc_fix_json,fc_cleanup_file) for self-healing pipelines.Cryptographic checksums (
fc_checksum: SHA-256, SHA-512, MD5, SHA-1) and Markdown to PDF/HTML rendering (fc_md_to_pdf,fc_md_to_html).
Installation
Prerequisites
Node.js 20 or higher
npm
Option 1: Install from NPM
npm install -g ellmos-filecommander-mcpOption 2: Install from Source
git clone https://github.com/ellmos-ai/ellmos-filecommander-mcp.git
cd ellmos-filecommander-mcp
npm install
npm run buildConfiguration
Claude Desktop
Add to your claude_desktop_config.json:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
If installed globally via NPM:
{
"mcpServers": {
"filecommander": {
"command": "ellmos-filecommander"
}
}
}If installed from source:
{
"mcpServers": {
"filecommander": {
"command": "node",
"args": ["/absolute/path/to/filecommander-mcp/dist/index.js"]
}
}
}Restart Claude Desktop after saving.
Other MCP Clients
The server communicates via stdio transport. Point your MCP client to the dist/index.js entry point or the ellmos-filecommander binary.
Tools Overview
Filesystem Operations (15 tools)
Tool | Description |
| Read file contents with optional line limit |
| Inspect MIME type and size first, then explicitly request bounded inline MCP content |
| Read up to 20 files in a single call |
| Write/create/append to files |
| Line-based editing (replace, insert, delete lines) |
| Replace a unique string in a file with context validation |
| List directory contents (recursive, configurable depth) |
| Create directories (including parents) |
| Delete a file (permanent) |
| Delete a directory (with optional recursive flag) |
| Move to Recycle Bin / Trash (recoverable!) |
| Move or rename files and directories (cloud-lock safe) |
| Copy files and directories |
| Get detailed file metadata (size, dates, type) |
| Synchronous file search with wildcard patterns |
fc_preview_file is the remote/headless fallback for local files. Its default call returns structured metadata only: resolved path, file:// URI, MIME type, byte size, preview kind, fixed 1 MiB limit, and the exact follow-up call. Content is read only after include_content=true. Eligible text and raster images use standard MCP text/image content blocks; PDFs use a bounded embedded resource. Files above 1 MiB and unsupported types remain metadata-only and are never read or Base64-encoded by the preview path.
Content Search (1 tool)
Tool | Description |
| Read-only literal or regex search within an explicit ordered list of files, with case, context, global, and per-file limits |
fc_search_content never expands globs, traverses directories, or recursively discovers files. It accepts at most 50 explicit UTF-8 text files, skips binary and files over 10 MB, and returns deterministic JSON. Matches are limited to 200 globally and 100 per file, context to 10 lines, excerpts to 500 characters, and serialized output to 200,000 characters. Missing, cloud-only, permission, encoding, binary, and size failures are reported per file so readable files still produce results. Common secret formats are redacted from excerpts.
Async Search (5 tools)
Tool | Description |
| Start a background search (returns immediately) |
| Retrieve results with pagination |
| Cancel a running search |
| List all active/completed searches |
| Remove completed searches from memory |
Process Management (5 tools)
Tool | Description |
| Execute a shell command (blocking, with timeout) |
| Start a background process (non-blocking) |
| Validate and open an existing local file or directory with the OS default application |
| List running system processes |
| Terminate a process by PID or name |
fc_open_path accepts only an existing file or directory and sends it to a fixed native default-handler launcher. Its structured result reports launcher_accepted=true|false, always reports user_visible="unknown", and identifies a machine-readable fallback: fc_preview_file with metadata-only arguments for files or fc_list_directory for directories. Launcher acceptance never claims that a GUI became visible. fc_start_process instead lets the caller choose an executable and arguments. fc_execute_command accepts an arbitrary shell command: Node's default shell is used for ordinary commands (COMSPEC/cmd.exe on Windows), while FileCommander's Windows special-character path can route through Windows PowerShell.
Interactive Sessions (5 tools)
Tool | Description |
| Start an interactive process (Python, Node, shell...) |
| Read session output |
| Send input to a running session |
| List all sessions |
| Terminate a session |
File Maintenance & Repair (9 tools)
Tool | Description |
| Repair broken JSON (BOM, trailing commas, comments, single quotes) |
| Validate JSON with detailed error position and context |
| Remove BOM, NUL bytes, trailing whitespace, normalize line endings |
| Fix Mojibake / double-encoded UTF-8 (27+ character patterns) |
| Track directory changes with snapshots (new/modified/deleted) |
| Pattern-based batch renaming (prefix/suffix, replace, auto-detect) |
| Convert between JSON, CSV, INI, YAML, TOML, XML, and TOON formats |
| Find duplicate files using SHA-256 hashing |
| File hashing (MD5, SHA-1, SHA-256, SHA-384, SHA-512) with optional compare |
Archive (1 tool)
Tool | Description |
| Create, extract, and list ZIP archives |
OCR (1 tool)
Tool | Description |
| Extract text from images via tesseract.js (optional dependency) |
Cloud Sync (1 tool)
Tool | Description |
| Report static cloud-sync context and target state; never claim an active lock without evidence (Windows) |
System (4 tools)
Tool | Description |
| Get current system time with timezone info |
| Toggle safe mode: all deletes go through Recycle Bin / Trash |
| Set the runtime language ( |
| Read the active runtime language and all supported language codes |
Export (2 tools)
Tool | Description |
| Markdown to standalone HTML with CSS styling (headers, code blocks, tables, nested lists, blockquotes, images, checkboxes) |
| Markdown to PDF via headless browser (Edge/Chrome). Falls back to HTML if no browser is available |
Web (1 tool)
Tool | Description |
| Fetch a web page and return content by |
Total: 50 tools
Comparative Matrix & Alternatives
FileCommander combines filesystem manipulation, bounded search, process control, data repair, format conversion, and document rendering into a single unified MCP interface. Below is an architectural comparison against standard alternatives across 10 key operational dimensions:
Operational Dimension | ellmos FileCommander MCP (50 Tools) | Official Filesystem MCP ( | Desktop Commander MCP | Direct Host Shell ( | Ad-Hoc Scripts & Cloud APIs |
Tool Breadth & Scope | 50 unified tools across 6 domains | ~11 basic file I/O tools | ~15 tools (file + process) | Unconstrained CLI commands | Fragmented bespoke scripts |
Safe Deletion & Recovery | Native OS Recycle Bin / Trash ( | Permanent deletion only ( | Permanent deletion only | Irreversible | Custom trash implementations |
Cloud-Lock & Sync Resilience | Automatic fallback (copy + SHA-256 verify + unlink on EPERM/EBUSY) | Fails on locked files / reparse points | Fails on locked files | Fails or blocks indefinitely | Sync collision / conflict copies |
Bounded Search & Secret Redaction | Bounded search (max 50 files, 10 MB, auto API token redaction) | Directory walk only (no content regex) | Unbounded regex search | Unbounded | Custom regex without redaction |
Async Long-Running Search | Token-paginated background scans ( | Synchronous only (blocks agent) | Synchronous only | Background job control ( | Polling loops / slow network calls |
Interactive REPL & Session Control | Stateful REPLs (Node, Python, Shell) with circular buffers | Not supported | Basic terminal sessions | Raw subprocesses (zombie process risk) | Complex IPC piping |
Self-Healing & Data Repair | Built-in Mojibake fix (27+ patterns) & JSON repair | Not supported | Not supported | Manual | Custom error recovery code |
Multi-Format Transformation | Declarative conversion (JSON, YAML, TOML, XML, CSV, INI, TOON) | Not supported | Not supported | Requires external | Third-party Python libraries |
Document & Archive Utilities | Built-in ZIP lifecycle, OCR (Tesseract), Markdown to HTML/PDF | Not supported | Excel/PDF via desktop app | Requires | Fragmented utility dependencies |
Governance & Security SLAs | Local stdio, zero telemetry, explicit egress, binding 48h SLA | Standard stdio, community SLA | Stdio, unvetted telemetry/logs | Unrestricted elevation & script injection risk | Ad-hoc SaaS cloud exposure |
Key differentiators:
Only MCP server with recoverable delete (Recycle Bin / Trash) and global Safety Mode
Only MCP server with async background search with pagination and token management
Only MCP server with automated secret & bearer token redaction in search snippets
Built-in JSON repair, Mojibake encoding fix, and duplicate detection
Built-in cloud-lock-safe file operations with automatic copy+verify+delete fallback
Most comprehensive single-server solution (50 tools) eliminating multi-server sprawl
Tool Prefix
All tools use the fc_ prefix (FileCommander) to avoid conflicts with other MCP servers.
Discoverability
FileCommander is designed to be discoverable by both people and AI agents:
package.jsonexposes the officialmcpName(io.github.ellmos-ai/ellmos-filecommander-mcp) and MCP-specific npm keywords.server.jsonfollows the official MCP Registry schema and points to the npm package.glama.jsonprovides MCP-directory metadata for Glama-compatible indexes.llms.txtgives compact context for LLMs, agent catalogs, and documentation crawlers.MARKETING-LOG.txtrecords discoverability positioning, 4 target personas, and verification contracts.THIRD_PARTY_LICENSES.mddocuments license compliance for all runtime and development dependencies.
Primary search terms: ellmos-filecommander-mcp, FileCommander MCP, filesystem MCP server, multi-file content search MCP, safe delete MCP, async file search MCP, process management MCP, Markdown PDF MCP.
External discovery notes: npm and jsDelivr may briefly lag behind the current release. LobeHub indexes the GitHub repo as an MCP server. Use the package description and this README as the canonical 50-tool source for the current repository.
Governance & Runtime Invariants
The server enforces 10 strict runtime invariants guaranteeing safety, predictability, and least privilege:
Invariant ID | Name | Guarantee & Implementation Details | Operational Safety Benefit |
INV-LOCAL-01 | Local stdio & explicit egress | Local stdio transport, zero telemetry, no open listening ports. Outbound HTTP(S) requests strictly occur via explicit client calls to | Zero unauthorized background network leakage; local-first isolation. |
INV-SAFE-02 | Safe Deletion & Trash Protection |
| Eliminates irreversible accidental data loss from AI agent actions. |
INV-LOCK-03 | Cloud-Lock Resilient Move |
| Guarantees file operations succeed reliably inside cloud-synchronized workspaces. |
INV-DIAG-04 | Cloud-Lock Diagnosis |
| Enables agents to assess sync conflict risks before performing modifications. |
INV-SRCH-05 | Bounded Multi-File Content Search |
| Prevents out-of-memory crashes and unconstrained CPU consumption. |
INV-MASK-06 | Automated Secret & Token Redaction | Content search excerpts automatically detect and mask API keys, bearer tokens, AWS credentials, and authorization headers. | Protects credentials from prompt leakage and context contamination. |
INV-PREV-07 | Bounded Inline Preview & Safe Open |
| Safe inspection of remote and local files without UI freeze or payload bloat. |
INV-REPL-08 | Interactive REPL & Session Isolation | Stateful interactive sessions ( | Enables multi-turn REPL debugging while preventing zombie process buildup. |
INV-PROC-09 | Unprivileged Non-Elevation Execution | Executes entirely in standard unprivileged user-mode; never requests or requires administrative elevation or root rights. | Minimal attack surface; adheres strictly to the principle of least privilege. |
INV-SLA-10 | 48h Security Response & 5-Day Triage SLA | Formal vulnerability commitment with multi-channel contacts ( | Predictable, enterprise-ready incident response and triage lifecycle. |
Security
This server has full filesystem access with the running user's permissions.
See SECURITY.md for detailed security information and recommendations.
Key points:
fc_execute_commandruns arbitrary shell commandsfc_open_pathinvokes the operating system's associated application for a caller-selected existing path; that application runs with the user's permissionsfc_open_pathreports launcher acceptance separately from the invariantuser_visible="unknown";fc_preview_fileis the metadata-first remote fallback with an explicit 1 MiB inline-content boundaryfc_start_sessionstarts an arbitrary interactive command, and subsequentfc_send_inputcalls can execute additional actionsfc_delete_*tools perform permanent deletion by default (usefc_safe_deleteor enable safe mode viafc_set_safe_modeto route all deletes through Recycle Bin / Trash)Safe mode protects only
fc_delete_fileandfc_delete_directory; it does not sandbox commands or interactive sessionsThe server transport is local stdio and emits no telemetry, but an explicit
fc_web_fetchcall performs outbound HTTP(S) accessNo built-in sandboxing - security is delegated to the MCP client layer
Development
# Install dependencies
npm install
# Watch mode (auto-rebuild on changes)
npm run dev
# One-time build
npm run build
# Start the server
npm start
# Run test suite
npm testTesting
The project includes 220 Vitest tests plus 71 standalone i18n checks (291 total) covering filesystem operations, metadata-first inline preview, bounded content search, native default-handler launching, format conversion, encoding repair, archive handling, duplicate detection, language packs, tool annotations, real stdio behavior, and security boundaries.
npm test # Run all tests
node test-i18n.mjs # Run standalone i18n checks
npx vitest run # Same as above
npx vitest --watch # Watch modeTests are verified on Windows, macOS, and Linux.
Pushes and pull requests run CI on Node.js 20, 22, and 24 with npm ci, TypeScript build, Vitest, and an npm package dry-run.
See CONTRIBUTING.md for contribution guidelines.
Changelog
See CHANGELOG.md for the full version history.
License
MIT - Lukas Geiger (ellmos-ai)
History
This project was originally developed as BACH FileCommander (bach-filecommander-mcp). It has been renamed to ellmos FileCommander (ellmos-filecommander-mcp) as part of the ellmos-ai organization.
The legacy package name bach-filecommander-mcp is deprecated. Please use ellmos-filecommander-mcp instead:
npm uninstall -g bach-filecommander-mcp
npm install -g ellmos-filecommander-mcpellmos-ai Ecosystem
This MCP server is part of the ellmos-ai ecosystem — AI infrastructure, MCP servers, and intelligent tools.
MCP Server Family
Server | Tools | Focus | npm |
50 | Filesystem, bounded inline preview, content search, default-app opening, process management, interactive sessions, cloud-lock-safe operations | ||
22 | Code analysis, JSON repair, imports, diffs, regex | ||
12 | File repair, format conversion, batch operations | ||
19 | n8n workflow management via AI assistants | ||
31 | MCP stack discovery, profile management, control plane | ||
45 | Local-first LLM memory, knowledge, state, routing, swarm orchestration |
| |
8 | Server operations: health checks, log analysis, deploy dry-runs, mail diagnostics |
| |
5 | Headless Blender asset QA and FBX reimport verification |
| |
16 | Model-agnostic computer use: capture, safety-gated actions, Windows UIA |
|
AI Infrastructure
Project | Description |
Local-first text-based OS for LLM agents — 113+ handlers, 550+ tools, SQLite memory | |
Model-agnostic computer-use core powering Open Compute MCP | |
Provider-neutral LLM orchestration with auto-routing and budget tracking | |
Lightweight agent memory, connectors, and automation infrastructure | |
Self-hosted AI research stack (Ollama + n8n + Rinnsal + KnowledgeDigest) | |
Autonomous agent chain framework for Claude Code | |
Minimalist database-driven LLM OS prototype (4 functions, 1 table) | |
Testing framework for LLM operating systems (7 dimensions) |
Desktop Software & Sibling Applications
Our partner organization open-bricks and its line organizations provide AI-native desktop applications and developer utilities:
Application | Category | Organization | Focus |
File Management | file-bricks | High-speed dual-pane file manager with AI integration | |
File Exploration | file-bricks | Smart file explorer with semantic filters & preview | |
Packaging | file-bricks | MSIX & Store packaging for Windows desktop applications | |
App Store | file-bricks | Centralized desktop package management & distribution | |
Database Tool | file-bricks | Lightweight SQLite exploration & querying | |
Markdown Suite | doc-bricks | Markdown editor, PDF export & document conversion | |
Document / Media | doc-bricks | Audio/video transcription, metadata extraction & cataloging | |
Document / Mail | doc-bricks | Automated invoice parsing, PDF extraction & mail routing | |
Developer Suite | dev-bricks | Integrated developer toolbox, code analyzers & generators | |
Code Editor | dev-bricks | Multi-language code editor with LLM augmentation | |
Security & Audit | dev-bricks | Hardened runtime environment & pre-flight checker for Codex | |
Task Automation | dev-bricks | High-reliability background automation runner & scheduler |
Haftung / Liability
Dieses Projekt ist eine unentgeltliche Open-Source-Schenkung im Sinne der §§ 516 ff. BGB. Die Haftung des Urhebers ist gemäß § 521 BGB auf Vorsatz und grobe Fahrlässigkeit beschränkt. Ergänzend gilt der Haftungsausschluss der MIT-Lizenz.
Nutzung auf eigenes Risiko. Keine Wartungszusage, keine Verfügbarkeitsgarantie, keine Gewähr für Fehlerfreiheit oder Eignung für einen bestimmten Zweck.
This project is an unpaid open-source donation. Liability is limited to intent and gross negligence (§ 521 German Civil Code). The MIT license disclaimer also applies. Use at your own risk. No warranty, no maintenance guarantee, no fitness-for-purpose assumed.
Available Tools
22 toolsfc_check_cloud_lockCheck Cloud LockARead-onlyIdempotent
Prüft ob ein Pfad von einem Cloud-Sync-Filter (cldflt.sys) blockiert werden könnte. Nur auf Windows relevant.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds context about checking cloud sync filter blocking, but doesn't disclose what the output indicates (e.g., boolean result, error handling) or any side effects beyond what annotations cover.
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?
Description is two sentences, each adding value: the action and the Windows-only caveat. No wasted words, front-loaded with the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, one-parameter read-only tool, the description is mostly adequate. It covers purpose and platform constraint. However, lack of output schema means the return value is not described, which would help agents interpret results. Still, the tool is straightforward enough that this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'path' has 100% schema description coverage ('Path to check'). The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Prüft' (checks), the resource 'path for cloud sync filter blocking', and scope 'nur auf Windows relevant'. This distinguishes it from sibling tools like fc_list_processes or fc_kill_process, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions Windows relevance, implying when to use (on Windows systems when cloud sync issues are suspected), but doesn't explicitly state when not to use or suggest alternative tools among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_cleanup_fileCleanup FileBIdempotent
Cleans up one or more files from common problems.
Args:
path (string): Path to file or directory
recursive (boolean, optional): Recursive for directories
extensions (string, optional): Filter file extensions (e.g. ".txt,.json,.py")
remove_bom (boolean): Remove UTF-8 BOM
remove_trailing_whitespace (boolean): Remove trailing whitespace
normalize_line_endings (string, optional): "lf" | "crlf" | null
remove_nul_bytes (boolean): Remove NUL bytes
dry_run (boolean): Preview only
Cleans: BOM, NUL bytes, trailing whitespace, line endings
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to file/directory | |
| dry_run | No | Preview only | |
| recursive | No | Recursive | |
| extensions | No | Filter extensions (.txt,.json) | |
| remove_bom | No | Remove BOM | |
| remove_nul_bytes | No | Remove NUL bytes | |
| normalize_line_endings | No | Line endings | |
| remove_trailing_whitespace | No | Trailing whitespace |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and destructiveHint=false, so the tool is safe non-destructive and idempotent. The description adds that it modifies files by cleaning problems, but doesn't elaborate on behavior like what happens on dry run or whether modifications are in-place. Given the annotations cover safety, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear first sentence, a parameter list, and a summary. It is not overly verbose, but could be slightly more concise by omitting redundant parameter details already present in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and no output schema, the description fails to explain the return value or behavior after execution (e.g., what is returned, whether files are modified in-place, error handling). This leaves usability gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions. The description lists all parameters with types and defaults, and adds a summary of what is cleaned. However, it mostly reiterates schema info without adding deeper semantics or examples. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: cleaning up common file problems like BOM, NUL bytes, trailing whitespace, and line endings. It uses a specific verb ('cleans up') and identifies the resource ('files'). However, it doesn't explicitly differentiate from sibling tools like fc_fix_encoding or fc_validate_json, which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives, or when not to use it. The description is purely functional and lacks context about prerequisites, edge cases, or preferred use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_close_sessionClose SessionADestructiveIdempotent
Terminates a running session and removes it from the list.
Args:
session_id (string): Session ID
force (boolean, optional): Force termination
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force | |
| session_id | Yes | Session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive (destructiveHint=true) and idempotent (idempotentHint=true). The description adds that the session is 'removed from the list', which is beyond annotations. 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?
The description is short and front-loaded. The Args section is clear. Slightly redundant with schema, but acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (2 params, no output schema), the description is adequate. It covers behavior and parameters, though could mention return value or side effects more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal detail beyond the schema: it mentions 'Session ID' and 'Force termination' which are redundant with schema. No additional 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 tool terminates a running session and removes it. The verb 'Terminates' and resource 'running session' are specific, and the sibling fc_start_session confirms this tool is its inverse, providing differentiation.
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 use when a session needs to be ended. The sibling fc_start_session indicates the alternative for starting sessions. No explicit when-not-to-use or prerequisites, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_copyCopyC
Copies a file or directory.
Args:
source (string): Source path
destination (string): Destination path
recursive (boolean): Copy directories recursively
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Source path | |
| recursive | No | Copy recursively | |
| destination | Yes | Destination path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=false and readOnlyHint=false, consistent with a copy operation (not destructive, not read-only). However, the description does not disclose behavior like overwriting behavior, permission requirements, or symlink handling, which are important beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but repeats parameter definitions already in the schema. Could be more efficient by focusing on behavioral context rather than listing parameters.
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 a moderately complex tool (file system mutation), the description omits important details like overwrite behavior, permissions, and symlink handling. It is not fully 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 description coverage is 100%, so parameters are already well documented. The description adds minimal value beyond restating the schema; a 3 is appropriate as baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool copies a file or directory, with specific verb 'copies' and resource 'file or directory'. It distinguishes from sibling tools like fc_move (move vs copy) and fc_delete_file (delete vs copy), though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use copy versus alternatives like fc_move, fc_archive, or fc_safe_delete. Does not mention that copy leaves the original intact, which is the key differentiator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_create_directoryCreate DirectoryAIdempotent
Creates a new directory (including parent directories).
Args:
path (string): Path to the new directory
Returns:
Confirmation of creation
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the new directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true (repeated calls are safe), destructiveHint=false (non-destructive), and readOnlyHint=false (modification). The description adds that parent directories are created if missing, which is useful beyond annotations. No contradictions, but more behavioral context (e.g., error behavior) would be helpful.
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?
Extremely concise: two lines of description plus structured Args/Returns. Front-loaded key information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (1 param, no output schema), the description covers the essential: creation with parent directories. However, could mention what happens on conflict (e.g., existing directory) or return value format. Still adequate for a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds little beyond what the schema provides. The description mentions 'path' but no extra details on formatting or allowed characters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Creates a new directory (including parent directories)'. The verb 'Creates' and resource 'directory' are specific. It distinguishes from siblings like 'fc_delete_directory' and 'fc_list_directory' by its creation purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While it's clear for basic creation, the description doesn't mention prerequisites (e.g., permissions, existing parent) or warn against misuse. No mention of when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_delete_directoryDelete DirectoryADestructiveIdempotent
Deletes a directory.
Args:
path (string): Path to the directory
recursive (boolean): Delete non-empty directories too
Warning: With recursive=true ALL contents are irreversibly deleted!
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the directory | |
| recursive | No | Delete recursively |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds critical behavioral context beyond annotations: confirms destructiveHint=true and specifies that with recursive=true, ALL contents are irreversibly deleted. Annotations already indicate destructive and idempotent, but description reinforces the irreversible consequence.
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?
Description is extremely concise: three sentences with no wasted words. The warning is front-loaded after the basic description, and the Args section clearly maps to parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, idempotent tool with two simple parameters and no output schema, the description covers all necessary context: action, arguments, and critical warning about irreversible deletion. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. Description repeats parameter names and types but adds a critical warning about recursive behavior, which adds value beyond schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete a directory) and distinguishes it from sibling tools like fc_delete_file (file-level deletion) and fc_safe_delete (safe delete with trash). The verb 'deletes' and resource 'directory' are specific and unambiguous.
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 warns about the irreversible nature when recursive=true, guiding the agent to use this tool only when intentional. It implies not to use for safe deletion (use fc_safe_delete instead) and provides clear condition for non-empty directories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_delete_fileDelete FileADestructiveIdempotent
Deletes a file.
Args:
path (string): Path to the file
Warning: Irreversible! No recycle bin.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. Description reinforces that deletion is irreversible with 'no recycle bin', adding important behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise, two key pieces of info (action, warning) in few words. Front-loaded with purpose. No wasted sentences.
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 simple single-parameter tool with no output schema and strong annotations, description is sufficient. Could add a note about return value or behavior on failure, but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%. Description adds no extra meaning beyond what's in the schema; 'path' is clear. Baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it deletes a file. No ambiguity; verb 'deletes' + resource 'file' is specific. Distinguishes from sibling 'fc_safe_delete' by not mentioning safety features.
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?
Warns about irreversibility, implying caution. Does not explicitly state when to use this vs. alternatives like fc_safe_delete, but the warning suggests avoiding unless certain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_edit_fileEdit File (Lines)ADestructive
Edits a file line-based: replace, insert, or delete.
Args:
path (string): Path to the file
operation (string): "replace" | "insert" | "delete"
start_line (number): Start line (1-based)
end_line (number, optional): End line for replace/delete
content (string, optional): New content for replace/insert
Examples:
Replace lines 5-10: operation="replace", start_line=5, end_line=10, content="new text"
Insert after line 3: operation="insert", start_line=3, content="new line"
Delete lines 7-9: operation="delete", start_line=7, end_line=9
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the file | |
| content | No | New content | |
| end_line | No | End line | |
| operation | Yes | Operation | |
| start_line | Yes | Start line (1-based) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so description reinforces this with operation details. It adds clarity on line-based nature and required parameters, but doesn't disclose edge cases (e.g., behavior if file doesn't exist, or what happens with invalid line numbers).
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?
Description is concise with a clear header line and structured Args/Examples sections. Every sentence adds value, and examples are highly informative.
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, description explains the effect but not the return value (e.g., success message). Annotations cover destructive behavior. For a line-editing tool with 5 parameters, the description is nearly complete, lacking only return details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value by explaining the relationships between parameters (e.g., end_line optional for insert) and providing examples. However, some nuance about line ranges could be clearer.
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 edits a file line-based with three specific operations (replace, insert, delete), and differentiates it from siblings like fc_write_file (overwrites whole file) and fc_str_replace (string-based replace).
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?
Description includes examples showing when to use each operation, but does not explicitly state when not to use this tool (e.g., for whole-file edits or string substitutions) or reference alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_fix_encodingFix EncodingAIdempotent
Detects and repairs encoding errors (mojibake, double UTF-8).
Args:
path (string): Path to the file
dry_run (boolean): Only show problems
create_backup (boolean): Create backup
Repairs common mojibake patterns like:
ä -> ae, ö -> oe, ü -> ue (German umlauts)
ß -> ss, € -> EUR
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the file | |
| dry_run | No | Preview only | |
| create_backup | No | Create backup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate not read-only but idempotent and non-destructive. The description adds value by explaining it repairs specific mojibake patterns and mentions dry-run and backup creation, which clarify safety. 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?
The description is relatively concise at 81 words, but includes an 'Args' section that largely duplicates the schema. It could be streamlined while retaining the helpful mojibake examples. No front-loading issue.
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?
No output schema exists, but the description fails to explain what the tool returns (e.g., list of issues in dry-run, modified file path, or success status). It also omits details like supported encodings or behavior if no errors found. For a file-modifying tool, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds minimal new meaning. It repeats parameter names with slightly different wording ('Only show problems', 'Create backup'), which provides marginal clarity over the schema's existing descriptions.
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 detects and repairs encoding errors (mojibake, double UTF-8). It provides specific examples of patterns, making the purpose unambiguous. Among sibling tools, none address encoding issues, so it is well-distinguished.
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 use when encoding errors are present but gives no explicit guidance on when to use vs. alternatives, prerequisites, or exclusions. The sibling list includes no similar tools, but the description could still be clearer about context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_folder_diffFolder DiffARead-onlyIdempotent
Compares the current state of a directory with a saved snapshot.
Args:
path (string): Path to the directory
save_snapshot (boolean): Save current state as new snapshot
extensions (string, optional): Filter file extensions
Detects: New files, modified files, deleted files Snapshots are saved in %TEMP%/.fc_snapshots/
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the directory | |
| extensions | No | Filter extensions | |
| save_snapshot | No | Save snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, destructiveHint=false, idempotentHint=true) already indicate safe read behavior. The description goes beyond by detailing what changes are detected and where snapshots are saved (%TEMP%/.fc_snapshots/), but could add more about snapshot persistence or cleanup.
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?
Description is two sentences plus bullet points, front-loaded with purpose, and provides essential info with 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?
Given lack of output schema and complex detection logic, the description explains what it detects and where snapshots are stored. However, it doesn't detail return format or behavior when no snapshot exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but descriptions are minimal ('Save snapshot', 'Filter extensions'). The description adds context: 'Filter file extensions' and explains extensions usage indirectly, but could be clearer about format (e.g., comma-separated). Higher than baseline 3 due to added detail.
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 it 'Compares the current state of a directory with a saved snapshot' and lists detected changes (new, modified, deleted files). This verb+resource is specific and distinct from sibling tools like fc_list_directory or fc_checksum.
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 context on when to use (comparing directory state) and hints at saving snapshots, but does not explicitly tell when not to use or compare with alternatives like fc_detect_duplicates or fc_file_info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_list_directoryList DirectoryARead-onlyIdempotent
Lists files and subdirectories.
Args:
path (string): Path to the directory
depth (number, optional): Maximum depth for recursive listing (default: 1)
show_hidden (boolean, optional): Show hidden files
Returns:
Formatted list of all entries with icons
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the directory | |
| depth | No | Recursion depth | |
| show_hidden | No | Show hidden files |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint false, idempotentHint true, so safety is clear. The description adds return value format (formatted list with icons) but no additional behavioral traits like path validation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise at 3 sentences plus args list. Front-loaded with action; could combine the returns line for efficiency, but overall well-structured.
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 mentions return format. With 3 simple params fully covered by schema and annotations, it is adequate but lacks edge case behavior like symbolic links or permission errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description slightly adds context for depth (recursive listing) and show_hidden, but mostly repeats schema parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists files and subdirectories, with a specific verb and resource. It distinguishes from file operations like fc_read_file and directory creation/deletion tools among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool vs alternatives like fc_search_files or fc_file_info. It provides basic usage context but no exclusions or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_list_processesList ProcessesARead-onlyIdempotent
Lists running system processes.
Args:
filter (string, optional): Filter by process name
Returns:
List of processes with PID, name, memory
Note: Uses 'tasklist' (Windows) or 'ps' (Unix)
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter by process name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description only needs to add context. It adds cross-platform detail and return format, which is sufficient beyond the safety profile.
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 extremely concise: a one-sentence main action, followed by clear args and returns sections, and a note. No wasted words; information is efficiently 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?
For a simple list tool with one optional parameter, the description covers the core behavior and return format. It lacks error handling or rate limit details, but given the simplicity and annotations, it is mostly 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 coverage is 100% with the parameter description 'Filter by process name' matching the description's args. Thus the description adds no new meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists running system processes, and the title 'List Processes' reinforces this. It distinguishes from siblings like fc_kill_process by focusing on listing rather than modifying processes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While it mentions OS-specific commands, it doesn't provide usage context or exclude alternatives like fc_kill_process for process management.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_list_sessionsList SessionsBRead-onlyIdempotent
Lists all active and ended sessions.
Returns:
Table of all sessions with status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so description mainly needs to clarify scope (active and ended). It adds that sessions have a 'status' field, which is useful but not detailed.
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 short sentences, no wasted words. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Minimally complete: no output schema, so description doesn't detail the return format (e.g., columns, pagination). It mentions 'Table' and 'status' but lacks specifics like session IDs or timestamps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so description does not need to add param info. Schema coverage is 100% (no params), baseline is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it lists all active and ended sessions, which is clear and specific. However, it does not differentiate from sibling tools like fc_list_searches or fc_list_directory, though the resource (sessions) is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives like fc_start_session or fc_close_session. The agent might benefit from knowing this is for viewing session history, not modifying.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_moveMove/RenameADestructive
Moves or renames a file/directory.
Args:
source (string): Source path
destination (string): Destination path
Examples:
Rename: source="test.txt", destination="test_new.txt"
Move: source="C:\a\test.txt", destination="C:\b\test.txt"
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Source path | |
| destination | Yes | Destination path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already show destructiveHint=true (destructive operation) and readOnlyHint=false. The description adds that it modifies file system by moving/renaming, which aligns. No contradiction. For a file move tool, this is sufficient given annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two paragraphs: first line stating purpose, then structured args and examples. The examples are front-loaded and helpful. Slightly verbose due to docstring formatting but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple operation (move/rename) with annotations covering destructive nature and no output schema needed, the description sufficiently covers key aspects. Could be more complete with notes on overwrite behavior or cross-drive moves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with minLength=1 and descriptions 'Source path' and 'Destination path'. The description adds slightly more by showing examples with concrete paths, but doesn't add significant meaning beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool moves or renames a file/directory with a specific verb and resource. It distinguishes from siblings like fc_copy or fc_archive by explicitly using 'move/rename' and showing different name/directory examples.
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 basic usage via examples but lacks guidance on when to use this over alternatives like fc_copy (which copies) or fc_batch_rename (for batch). No explicit when-not or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_read_fileRead FileARead-onlyIdempotent
Reads the content of a file.
Args:
path (string): Full path to the file
encoding (string, optional): Character encoding (default: utf-8)
max_lines (number, optional): Maximum number of lines (0 = all)
Returns:
File content as text
For binary files: Base64-encoded content
Examples:
path: "C:\Users\User\test.txt"
path: "/home/user/config.json"
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full path to the file | |
| encoding | No | Character encoding | utf-8 |
| max_lines | No | Max lines (0 = all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, setting clear safety expectations. Description adds behavioral context: supports text and binary files (Base64 return), handles encoding, and line limits, which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and structured with Args, Returns, and Examples sections. Front-loaded with primary action. Slightly redundant with schema but clear.
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 schema covers parameters fully and annotations provide safety profile, the description adequately covers behavior and return. However, missing explicit info on possible errors (file not found, permission) and output schema details (since no output schema exists, description could elaborate on return structure).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents parameters. Description repeats path, encoding, and max_lines but adds examples and default value clarification. No additional semantic detail beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads file content, with specific verb and resource. It distinguishes from write tools and editing tools, but not from multiple file read (fc_read_multiple_files) which exists among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies use for reading file content but does not provide guidance on when to use vs alternatives like fc_read_multiple_files or fc_file_info. No explicit when-not-to-use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_read_multiple_filesRead Multiple FilesARead-onlyIdempotent
Reads multiple files at once and returns their contents.
Args:
paths (array): Array of file paths
max_lines_per_file (number, optional): Max lines per file (0 = all)
Returns:
Contents of all files with separators
Example: paths: ["C:\config.json", "C:\readme.md"]
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | Array of file paths | |
| max_lines_per_file | No | Max lines per file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating no side effects. The description adds that it returns contents with separators, which is consistent but not extensive (e.g., no mention of file size limits beyond the 20-item array constraint from schema).
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 succinct, front-loaded with the main action, and includes structured sections for args and an example. 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 the simple tool with clear annotations and a complete schema, the description is sufficient. It does not need an output schema since it returns file contents with separators. It covers key aspects for a file reading tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description repeats parameter info but adds an example and a comment about max_lines_per_file, providing slight additional value.
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 'Reads multiple files at once and returns their contents', specifying the action (read) and resource (multiple files). It is well differentiated from its sibling 'fc_read_file' which reads a single file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for reading multiple files, but does not explicitly state when to use this tool versus alternatives like 'fc_read_file'. It lacks guidance on file path formats or error handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_send_inputSend Input to SessionA
Sends input to a running session.
Args:
session_id (string): Session ID
input (string): Input to send
newline (boolean, optional): Append newline (default: true)
Examples:
Python: input="print('Hello')"
Shell: input="ls -la"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Input to send | |
| newline | No | Append newline | |
| session_id | Yes | Session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readonly and non-destructive. The description adds context about the newline parameter and provides examples showing behavior for different languages. There is 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?
The description is concise: a single line for purpose, a clear args list, and helpful examples. No wasted words, information is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple input-sending tool with 3 parameters and no output schema, the description covers all necessary information: how to use, parameter details, and example use cases.
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 covers 100% of parameters with descriptions. The description adds value by providing examples for the input parameter (Python vs Shell) and clarifying the default for newline, exceeding schema information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Sends input to a running session,' which is a specific verb-resource pair. It clearly distinguishes from sibling tools like fc_start_session (starts a session) and fc_list_processes (lists processes).
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 when you have a running session and need to send input, but does not explicitly contrast with alternatives or state prerequisites. The context is clear enough for this simple tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_set_languageB
Set the output language for FileCommander tools
| Name | Required | Description | Default |
|---|---|---|---|
| language | Yes | Language code |
TDQS
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 fails to disclose behavioral traits such as whether the setting is persistent, affects all subsequent calls, or requires any prior state. Essential context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the key verb and resource, and contains 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?
As a simple setter tool with no output schema, the description is too brief. It lacks context on scope (e.g., session duration) and side effects, which is needed for an agent to use it properly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the parameter is fully defined by the enum. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Set) and resource (output language for FileCommander tools). It distinguishes from sibling tools which deal with processes, input, validation, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives or what prerequisites exist. The description only states what it does, missing context on when it should or should not be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_set_safe_modeSet Safe ModeA
Aktiviert/deaktiviert den Safe Mode. Wenn aktiv, werden alle Löschoperationen (fc_delete_file, fc_delete_directory) über den Papierkorb umgeleitet.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | Enable or disable safe mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false indicating this is a mutation tool. The description adds critical behavioral context: it redirects deletions (fc_delete_file, fc_delete_directory) to trash. This goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with clear action and effect. 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?
Given the tool's simplicity (single boolean parameter, no output schema), the description is complete enough. It explains the effect on two sibling tools, which aids contextual understanding.
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 provides full description for the only parameter 'enabled' (boolean). The description does not add additional parameter semantics beyond the schema's, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool toggles safe mode, and explicitly explains that when enabled, delete operations are redirected to trash. This is specific and differentiates it from other file operation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use: when you want delete operations to go to trash instead of permanent deletion. However, it does not explicitly mention alternatives or when not to use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_str_replaceString Replace in FileADestructive
Replaces a unique string in a file with another.
Args:
path (string): Path to the file
old_str (string): String to replace (must occur exactly once)
new_str (string): New string (empty = delete)
Returns:
Confirmation with context
IMPORTANT: old_str must occur EXACTLY once in the file! An error is returned for 0 or >1 occurrences.
Examples:
Rename function: old_str="def old_name", new_str="def new_name"
Add import: old_str="import os", new_str="import os\nimport sys"
Delete line: old_str="# TODO: remove this\n", new_str=""
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the file | |
| new_str | No | New string (empty = delete) | |
| old_str | Yes | String to replace (must be unique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true), discloses that an error is returned for non-unique occurrences, and that empty new_str deletes the old_str. This is critical behavioral context not captured by 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?
Highly concise: a brief one-sentence summary then clear args, returns, important note, and examples. Every sentence is essential and 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?
Tool has 3 params with 100% schema coverage, no output schema, but description fully explains behavior, constraints, and return. No gaps exist for correct 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 coverage is 100%, so baseline is 3. But the description adds exceptional value: explains uniqueness constraint for old_str, shows new_str can be empty (delete), and includes realistic examples that clarify parameter usage. This elevates above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it replaces a unique string in a file with another, using specific verbs and resources. It distinguishes from siblings like fc_edit_file and fc_batch_rename by emphasizing uniqueness constraint.
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 states that old_str must occur exactly once, and warns about errors for 0 or >1 occurrences. Provides three practical examples showing when to use it (rename, add import, delete line), which implicitly guides against alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_web_fetchWeb FetchARead-onlyIdempotent
Ruft eine Webseite ab und gibt je nach Modus Inhalt zurück: extract (sauberer Haupttext), raw (HTTP-Body, gekürzt), links, forms oder headers. Nur lesendes Netzwerk-Tool; interne/private Ziele sind standardmäßig blockiert (allow_private zum Überschreiben).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to fetch (http/https only) | |
| mode | No | extract=clean main text (default), raw=HTTP body, links=all links, forms=form fields, headers=response headers | extract |
| allow_private | No | Allow internal/private/loopback targets (turns the SSRF guard off). Default false. | |
| timeout_seconds | No | Request timeout in seconds (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, etc. The description adds that it is a read-only network tool and that private targets are blocked by default with allow_private override. 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?
The description is two sentences, concise and front-loaded with the main action. Every sentence earns its place, summarizing modes and constraints efficiently.
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 explains what is returned based on mode but does not specify output format (e.g., JSON, raw text) or error handling. Overall adequate for a simple fetch tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds a summary of modes and notes the allow_private override, providing some additional context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches a webpage and returns content based on mode (extract, raw, links, forms, headers). It distinguishes from sibling tools which are mostly file/process operations.
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 web fetching and mentions it is read-only with default blocking of private targets. It does not explicitly state when not to use or provide alternatives, but context with sibling tools makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fc_write_fileWrite FileADestructive
Writes content to a file. Creates the file if it does not exist.
Args:
path (string): Full path to the file
content (string): Content to write
append (boolean, optional): Append to file instead of overwriting
create_dirs (boolean, optional): Create missing directories
Returns:
Confirmation with file size
Warning: Overwrites existing files without warning when append=false!
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full path to the file | |
| append | No | Append to file | |
| content | Yes | Content to write | |
| create_dirs | No | Create missing directories |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, which the description reinforces with the overwrite warning. The description adds specific behavioral traits: creates directories if missing and the overwrite warning. However, it doesn't detail behavior on failure (e.g., partial writes) or concurrency issues. With annotations present, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with clear sections for args, returns, and warnings. It front-loads the core purpose. A minor improvement: the warning could be more prominent (e.g., bold). Still, it's efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 params, no output schema, destructive nature), the description covers the key aspects: purpose, required vs. optional params, and the overwrite risk. It could mention that the return value includes file size or error details, but omission is acceptable. No output schema reduces the need for return value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description. The description mirrors the schema without adding new semantic context. For example, it repeats 'append' and 'create_dirs' descriptions but doesn't explain when to use append vs. overwrite or the implications of create_dirs=true (e.g., risk of creating unintended directories). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'writes content to a file' and specifies 'creates the file if it does not exist'. This distinguishes it from siblings like fc_edit_file (modifies) and fc_delete_file (removes).
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 explicit warnings about overwriting and optional parameters. However, it doesn't specify when to use this vs. sibling tools like fc_edit_file or fc_copy. The warning implies careful use, but alternatives are not named.
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.
27 tool updates
v1.9.3- Removed
fc_batch_rename - Removed
fc_clear_search - Added
fc_close_session - Removed
fc_convert_format - Added
fc_copy - Added
fc_create_directory - Added
fc_delete_directory - Added
fc_delete_file - Removed
fc_detect_duplicates - Added
fc_edit_file - Removed
fc_execute_command - Removed
fc_file_info - Removed
fc_fix_json - Added
fc_list_directory - Added
fc_list_processes - Added
fc_list_sessions - Added
fc_move - Added
fc_read_file - Added
fc_read_multiple_files - Removed
fc_safe_delete - Added
fc_set_language - Added
fc_set_safe_mode - Removed
fc_start_session - Added
fc_str_replace - Removed
fc_validate_json - Added
fc_web_fetch - Added
fc_write_file
31 tool updates
v1.9.3- Removed
fc_archive - Removed
fc_checksum - Removed
fc_close_session - Removed
fc_copy - Removed
fc_create_directory - Removed
fc_delete_directory - Removed
fc_delete_file - Removed
fc_edit_file - Removed
fc_get_search_results - Removed
fc_get_time - Removed
fc_kill_process - Removed
fc_list_directory - Removed
fc_list_processes - Removed
fc_list_searches - Removed
fc_list_sessions - Removed
fc_md_to_html - Removed
fc_md_to_pdf - Removed
fc_move - Removed
fc_ocr - Removed
fc_read_file - Removed
fc_read_multiple_files - Removed
fc_read_output - Removed
fc_search_files - Removed
fc_set_language - Removed
fc_set_safe_mode - Removed
fc_start_process - Removed
fc_start_search - Removed
fc_stop_search - Removed
fc_str_replace - Removed
fc_web_fetch - Removed
fc_write_file
3 tool updates
v1.9.1- Added
fc_check_cloud_lock - Changed
fc_set_language1 field changed- changed
Input schema / properties / language / enumPrevious value: -[ - "de", - "en" -]New value: +[ + "de", + "en", + "es", + "zh", + "ja", + "ru" +]
- Added
fc_web_fetch
44 tool updates
v1.7.8- First observed
fc_archive - First observed
fc_batch_rename - First observed
fc_checksum - First observed
fc_cleanup_file - First observed
fc_clear_search - First observed
fc_close_session - First observed
fc_convert_format - First observed
fc_copy - First observed
fc_create_directory - First observed
fc_delete_directory - First observed
fc_delete_file - First observed
fc_detect_duplicates - First observed
fc_edit_file - First observed
fc_execute_command - First observed
fc_file_info - First observed
fc_fix_encoding - First observed
fc_fix_json - First observed
fc_folder_diff - First observed
fc_get_search_results - First observed
fc_get_time - First observed
fc_kill_process - First observed
fc_list_directory - First observed
fc_list_processes - First observed
fc_list_searches - First observed
fc_list_sessions - First observed
fc_md_to_html - First observed
fc_md_to_pdf - First observed
fc_move - First observed
fc_ocr - First observed
fc_read_file - First observed
fc_read_multiple_files - First observed
fc_read_output - First observed
fc_safe_delete - First observed
fc_search_files - First observed
fc_send_input - First observed
fc_set_language - First observed
fc_set_safe_mode - First observed
fc_start_process - First observed
fc_start_search - First observed
fc_start_session - First observed
fc_stop_search - First observed
fc_str_replace - First observed
fc_validate_json - First observed
fc_write_file
TDQS
Scored across 22 tools
Each tool has a distinct purpose with no overlapping functionality. Even similar tools like fc_read_file and fc_read_multiple_files are clearly differentiated for single vs batch reads, and fc_edit_file vs fc_str_replace handle different editing approaches.
All tools use the consistent 'fc_' prefix and mostly follow a verb_noun pattern (e.g., fc_read_file, fc_create_directory). Minor deviations like 'fc_str_replace' and 'fc_folder_diff' are still readable and do not cause confusion.
22 tools is slightly above the typical well-scoped range, but each tool serves a clear and necessary function within the broader file commander domain. The count is justified by the inclusion of process/session management and cleanup utilities.
The tool set covers the core file operations (CRUD, move, copy, edit) and extends to useful utilities like encoding repair, folder diff, and cloud lock checking. Some advanced features like file search or symlink handling are missing, but the surface is solid for everyday file management.
Maintenance
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceBlazing-fast, asynchronous MCP server for seamless filesystem operations.178MIT
- AlicenseNot gradedqualityCmaintenanceA comprehensive MCP server providing secure tools for filesystem operations, Git management, web search, document conversion, npm/.NET project management, and AI generative capabilities (image/video/audio generation and processing) via PiAPI.ai integration.Apache 2.0
- AlicenseBqualityDmaintenanceA comprehensive MCP server with 30+ custom tools organized into categories: date/time operations, file management, system information, text processing, and web operations. Enables async communication with robust error handling and flexible CLI integration.311MIT

ellmos-clatcher-mcpofficial
AlicenseBqualityAmaintenanceUtility-first MCP server that extends Claude Code with file-maintenance capabilities beyond built-in tools. Supports encoding repair, format conversion, duplicate detection, batch renaming, and archive utilities.12227 npm1MIT