Desktop Commander
Enables extensive filesystem operations, including reading, writing, moving, and searching local files and directories, supporting advanced features such as negative offset reading (like Unix tail) and recursive pattern-based code search.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Desktop Commanderrun npm test and show me the output"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Desktop Commander MCP
Search, update, manage files and run terminal commands with AI
Work with code and text, run processes, and automate tasks, going far beyond other AI editors - without API token costs.
Table of Contents
All of your AI development tools in one place. Desktop Commander puts all dev tools in one chat. Execute long-running terminal commands on your computer and manage processes through Model Context Protocol (MCP). Built on top of MCP Filesystem Server to provide additional search and replace file editing capabilities.
Related MCP server: AX Local Operations MCP Server
Features
Enhanced terminal commands with interactive process control
Execute code in memory (Python, Node.js, R) without saving files
Instant data analysis - just ask to analyze CSV/JSON files
Interact with running processes (SSH, databases, development servers)
Execute terminal commands with output streaming
Command timeout and background execution support
Process management (list and kill processes)
Session management for long-running commands
Server configuration management:
Get/set configuration values
Update multiple settings at once
Dynamic configuration changes without server restart
Full filesystem operations:
Read/write files
Create/list directories
Move files/directories
Search files
Get file metadata
Negative offset file reading: Read from end of files using negative offset values (like Unix tail)
Code editing capabilities:
Surgical text replacements for small changes
Full file rewrites for major changes
Multiple file support
Pattern-based replacements
vscode-ripgrep based recursive code or text search in folders
Comprehensive audit logging:
All tool calls are automatically logged
Log rotation with 10MB size limit
Detailed timestamps and arguments
Installation
First, ensure you've downloaded and installed the Claude Desktop app and you have npm installed.
📋 Update & Uninstall Information: Before choosing an installation option, note that only Options 1 and 3 have automatic updates. Options 2, 4, and 5 require manual updates. See the sections below for update and uninstall instructions for each option.
Option 1: Install through npx ⭐ Auto-Updates
Just run this in terminal:
npx @wonderwhy-er/desktop-commander@latest setupFor debugging mode (allows Node.js inspector connection):
npx @wonderwhy-er/desktop-commander@latest setup --debugRestart Claude if running.
✅ Auto-Updates: Yes - automatically updates when you restart Claude
🔄 Manual Update: Run the setup command again
🗑️ Uninstall: Run npx @wonderwhy-er/desktop-commander@latest setup --uninstall
Option 2: Using bash script installer (macOS) ⭐ Auto-Updates
For macOS users, you can use our automated bash installer which will check your Node.js version, install it if needed, and automatically configure Desktop Commander:
curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install.sh | bashThis script handles all dependencies and configuration automatically for a seamless setup experience.
✅ Auto-Updates: Yes - requires manual updates
🔄 Manual Update: Re-run the bash installer command above
🗑️ Uninstall: Remove the MCP server entry from your Claude config file and delete the cloned repository if it exists
Option 3: Installing via Smithery ⭐ Auto-Updates
To install Desktop Commander for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @wonderwhy-er/desktop-commander --client claude✅ Auto-Updates: Yes - automatically updates when you restart Claude
🔄 Manual Update: Re-run the Smithery install command
🗑️ Uninstall: npx -y @smithery/cli uninstall @wonderwhy-er/desktop-commander --client claude
Option 4: Add to claude_desktop_config manually ❌ Manual Updates
Add this entry to your claude_desktop_config.json:
On Mac:
~/Library/Application\ Support/Claude/claude_desktop_config.jsonOn Windows:
%APPDATA%\Claude\claude_desktop_config.jsonOn Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"desktop-commander": {
"command": "npx",
"args": [
"-y",
"@wonderwhy-er/desktop-commander"
]
}
}
}Restart Claude if running.
❌ Auto-Updates: No - uses npx but config might not update automatically
🔄 Manual Update: Usually automatic via npx, but if issues occur, update your config file or re-add the entry
🗑️ Uninstall: Remove the "desktop-commander" entry from your claude_desktop_config.json file
Option 5: Checkout locally ❌ Manual Updates
Clone and build:
git clone https://github.com/wonderwhy-er/DesktopCommanderMCP.git
cd DesktopCommanderMCP
npm run setupRestart Claude if running.
The setup command will:
Install dependencies
Build the server
Configure Claude's desktop app
Add MCP servers to Claude's config if needed
❌ Auto-Updates: No - requires manual git updates
🔄 Manual Update: cd DesktopCommanderMCP && git pull && npm run setup
🗑️ Uninstall: Remove the cloned directory and remove MCP server entry from Claude config
Updating & Uninstalling Desktop Commander
Automatic Updates (Options 1 & 3 only)
Options 1 (npx) and 3 (Smithery) automatically update to the latest version whenever you restart Claude. No manual intervention needed.
Manual Updates (Options 2, 4 & 5)
Option 2 (bash installer): Re-run the curl command
Option 4 (manual config): Usually automatic via npx, but re-add config entry if issues occur
Option 5 (local checkout):
cd DesktopCommanderMCP && git pull && npm run setup
Uninstalling Desktop Commander
Option 1:
npx @wonderwhy-er/desktop-commander@latest setup --uninstallOption 2: Remove MCP server entry from Claude config and delete any cloned repositories
Option 3:
npx -y @smithery/cli uninstall @wonderwhy-er/desktop-commander --client claudeOption 4: Remove the "desktop-commander" entry from your claude_desktop_config.json file
Option 5: Delete the cloned directory and remove MCP server entry from Claude config
After uninstalling, restart Claude Desktop to complete the removal.
Usage
The server provides a comprehensive set of tools organized into several categories:
Available Tools
Category | Tool | Description |
Configuration |
| Get the complete server configuration as JSON (includes blockedCommands, defaultShell, allowedDirectories, fileReadLineLimit, fileWriteLineLimit, telemetryEnabled) |
| Set a specific configuration value by key. Available settings: • | |
Terminal |
| Start programs with smart detection of when they're ready for input |
| Send commands to running programs and get responses | |
| Read output from running processes | |
| Force terminate a running terminal session | |
| List all active terminal sessions | |
| List all running processes with detailed information | |
| Terminate a running process by PID | |
Filesystem |
| Read contents from local filesystem or URLs with line-based pagination (supports positive/negative offset and length parameters) |
| Read multiple files simultaneously | |
| Write file contents with options for rewrite or append mode (uses configurable line limits) | |
| Create a new directory or ensure it exists | |
| Get detailed listing of files and directories | |
| Move or rename files and directories | |
| Find files by name using case-insensitive substring matching | |
| Search for text/code patterns within file contents using ripgrep | |
| Retrieve detailed metadata about a file or directory | |
Text Editing |
| Apply targeted text replacements with enhanced prompting for smaller edits (includes character-level diff feedback) |
Quick Examples
Data Analysis:
"Analyze sales.csv and show top customers" → Claude runs Python code in memoryRemote Access:
"SSH to my server and check disk space" → Claude maintains SSH sessionDevelopment:
"Start Node.js and test this API" → Claude runs interactive Node sessionTool Usage Examples
Search/Replace Block Format:
filepath.ext
<<<<<<< SEARCH
content to find
=======
new content
>>>>>>> REPLACEExample:
src/main.js
<<<<<<< SEARCH
console.log("old message");
=======
console.log("new message");
>>>>>>> REPLACEEnhanced Edit Block Features
The edit_block tool includes several enhancements for better reliability:
Improved Prompting: Tool descriptions now emphasize making multiple small, focused edits rather than one large change
Fuzzy Search Fallback: When exact matches fail, it performs fuzzy search and provides detailed feedback
Character-level Diffs: Shows exactly what's different using
{-removed-}{+added+}formatMultiple Occurrence Support: Can replace multiple instances with
expected_replacementsparameterComprehensive Logging: All fuzzy searches are logged for analysis and debugging
When a search fails, you'll see detailed information about the closest match found, including similarity percentage, execution time, and character differences. All these details are automatically logged for later analysis using the fuzzy search log tools.
URL Support
read_filecan now fetch content from both local files and URLsExample:
read_filewithisUrl: trueparameter to read from web resourcesHandles both text and image content from remote sources
Images (local or from URLs) are displayed visually in Claude's interface, not as text
Claude can see and analyze the actual image content
Default 30-second timeout for URL requests
Fuzzy Search Log Analysis (npm scripts)
The fuzzy search logging system includes convenient npm scripts for analyzing logs outside of the MCP environment:
# View recent fuzzy search logs
npm run logs:view -- --count 20
# Analyze patterns and performance
npm run logs:analyze -- --threshold 0.8
# Export logs to CSV or JSON
npm run logs:export -- --format json --output analysis.json
# Clear all logs (with confirmation)
npm run logs:clearFor detailed documentation on these scripts, see scripts/README.md.
Fuzzy Search Logs
Desktop Commander includes comprehensive logging for fuzzy search operations in the edit_block tool. When an exact match isn't found, the system performs a fuzzy search and logs detailed information for analysis.
What Gets Logged
Every fuzzy search operation logs:
Search and found text: The text you're looking for vs. what was found
Similarity score: How close the match is (0-100%)
Execution time: How long the search took
Character differences: Detailed diff showing exactly what's different
File metadata: Extension, search/found text lengths
Character codes: Specific character codes causing differences
Log Location
Logs are automatically saved to:
macOS/Linux:
~/.claude-server-commander-logs/fuzzy-search.logWindows:
%USERPROFILE%\.claude-server-commander-logs\fuzzy-search.log
What You'll Learn
The fuzzy search logs help you understand:
Why exact matches fail: Common issues like whitespace differences, line endings, or character encoding
Performance patterns: How search complexity affects execution time
File type issues: Which file extensions commonly have matching problems
Character encoding problems: Specific character codes that cause diffs
Audit Logging
Desktop Commander now includes comprehensive logging for all tool calls:
What Gets Logged
Every tool call is logged with timestamp, tool name, and arguments (sanitized for privacy)
Logs are rotated automatically when they reach 10MB in size
Log Location
Logs are saved to:
macOS/Linux:
~/.claude-server-commander/claude_tool_call.logWindows:
%USERPROFILE%\.claude-server-commander\claude_tool_call.log
This audit trail helps with debugging, security monitoring, and understanding how Claude is interacting with your system.
Handling Long-Running Commands
For commands that may take a while:
Configuration Management
⚠️ Important Security Warnings
Always change configuration in a separate chat window from where you're doing your actual work. Claude may sometimes attempt to modify configuration settings (like
allowedDirectories) if it encounters filesystem access restrictions.The
allowedDirectoriessetting currently only restricts filesystem operations, not terminal commands. Terminal commands can still access files outside allowed directories. Full terminal sandboxing is on the roadmap.
Configuration Tools
You can manage server configuration using the provided tools:
// Get the entire config
get_config({})
// Set a specific config value
set_config_value({ "key": "defaultShell", "value": "/bin/zsh" })
// Set multiple config values using separate calls
set_config_value({ "key": "defaultShell", "value": "/bin/bash" })
set_config_value({ "key": "allowedDirectories", "value": ["/Users/username/projects"] })The configuration is saved to config.json in the server's working directory and persists between server restarts.
Understanding fileWriteLineLimit
The fileWriteLineLimit setting controls how many lines can be written in a single write_file operation (default: 50 lines). This limit exists for several important reasons:
Why the limit exists:
AIs are wasteful with tokens: Instead of doing two small edits in a file, AIs may decide to rewrite the whole thing. We're trying to force AIs to do things in smaller changes as it saves time and tokens
Claude UX message limits: There are limits within one message and hitting "Continue" does not really work. What we're trying here is to make AI work in smaller chunks so when you hit that limit, multiple chunks have succeeded and that work is not lost - it just needs to restart from the last chunk
Setting the limit:
// You can set it to thousands if you want
set_config_value({ "key": "fileWriteLineLimit", "value": 1000 })
// Or keep it smaller to force more efficient behavior
set_config_value({ "key": "fileWriteLineLimit", "value": 25 })Maximum value: You can set it to thousands if you want - there's no technical restriction.
Best practices:
Keep the default (50) to encourage efficient AI behavior and avoid token waste
The system automatically suggests chunking when limits are exceeded
Smaller chunks mean less work lost when Claude hits message limits
Best Practices
Create a dedicated chat for configuration changes: Make all your config changes in one chat, then start a new chat for your actual work.
Be careful with empty
allowedDirectories: Setting this to an empty array ([]) grants access to your entire filesystem for file operations.Use specific paths: Instead of using broad paths like
/, specify exact directories you want to access.Always verify configuration after changes: Use
get_config({})to confirm your changes were applied correctly.
Using Different Shells
You can specify which shell to use for command execution:
// Using default shell (bash or system default)
execute_command({ "command": "echo $SHELL" })
// Using zsh specifically
execute_command({ "command": "echo $SHELL", "shell": "/bin/zsh" })
// Using bash specifically
execute_command({ "command": "echo $SHELL", "shell": "/bin/bash" })This allows you to use shell-specific features or maintain consistent environments across commands.
execute_commandreturns after timeout with initial outputCommand continues in background
Use
read_outputwith PID to get new outputUse
force_terminateto stop if needed
Debugging
If you need to debug the server, you can install it in debug mode:
# Using npx
npx @wonderwhy-er/desktop-commander@latest setup --debug
# Or if installed locally
npm run setup:debugThis will:
Configure Claude to use a separate "desktop-commander" server
Enable Node.js inspector protocol with
--inspect-brk=9229flagPause execution at the start until a debugger connects
Enable additional debugging environment variables
To connect a debugger:
In Chrome, visit
chrome://inspectand look for the Node.js instanceIn VS Code, use the "Attach to Node Process" debug configuration
Other IDEs/tools may have similar "attach" options for Node.js debugging
Important debugging notes:
The server will pause on startup until a debugger connects (due to the
--inspect-brkflag)If you don't see activity during debugging, ensure you're connected to the correct Node.js process
Multiple Node processes may be running; connect to the one on port 9229
The debug server is identified as "desktop-commander-debug" in Claude's MCP server list
Troubleshooting:
If Claude times out while trying to use the debug server, your debugger might not be properly connected
When properly connected, the process will continue execution after hitting the first breakpoint
You can add additional breakpoints in your IDE once connected
Model Context Protocol Integration
This project extends the MCP Filesystem Server to enable:
Local server support in Claude Desktop
Full system command execution
Process management
File operations
Code editing with search/replace blocks
Created as part of exploring Claude MCPs: https://youtube.com/live/TlbjFDbl5Us
DONE
20-05-2025 v0.1.40 Release - Added audit logging for all tool calls, improved line-based file operations, enhanced edit_block with better prompting for smaller edits, added explicit telemetry opt-out prompting
05-05-2025 Fuzzy Search Logging - Added comprehensive logging system for fuzzy search operations with detailed analysis tools, character-level diffs, and performance metrics to help debug edit_block failures
29-04-2025 Telemetry Opt Out through configuration - There is now setting to disable telemetry in config, ask in chat
23-04-2025 Enhanced edit functionality - Improved format, added fuzzy search and multi-occurrence replacements, should fail less and use edit block more often
16-04-2025 Better configurations - Improved settings for allowed paths, commands and shell environments
14-04-2025 Windows environment fixes - Resolved issues specific to Windows platforms
14-04-2025 Linux improvements - Enhanced compatibility with various Linux distributions
12-04-2025 Better allowed directories and blocked commands - Improved security and path validation for file read/write and terminal command restrictions. Terminal still can access files ignoring allowed directories.
11-04-2025 Shell configuration - Added ability to configure preferred shell for command execution
07-04-2025 Added URL support -
read_filecommand can now fetch content from URLs28-03-2025 Fixed "Watching /" JSON error - Implemented custom stdio transport to handle non-JSON messages and prevent server crashes
25-03-2025 Better code search (merged) - Enhanced code exploration with context-aware results
Work in Progress/TODOs/Roadmap
The following features are currently being explored:
Support for WSL - Windows Subsystem for Linux integration
Support for SSH - Remote server command execution
Better file support for formats like CSV/PDF
Terminal sandboxing for Mac/Linux/Windows for better security
File reading modes - For example, allow reading HTML as plain text or markdown
Interactive shell support - ssh, node/python repl
Improve large file reading and writing
❤️ Support Desktop Commander
Supporters Hall of Fame
Generous supporters are featured here. Thank you for helping make this project possible!
Website
Visit our official website at https://desktopcommander.app/ for the latest information, documentation, and updates.
Media
Learn more about this project through these resources:
Article
Claude with MCPs replaced Cursor & Windsurf. How did that happen? - A detailed exploration of how Claude with Model Context Protocol capabilities is changing developer workflows.
Video
Claude Desktop Commander Video Tutorial - Watch how to set up and use the Commander effectively.
Publication at AnalyticsIndiaMag
This Developer Ditched Windsurf, Cursor Using Claude with MCPs
Community
Join our Discord server to get help, share feedback, and connect with other users.
Testimonials
https://www.youtube.com/watch?v=ly3bed99Dy8&lc=UgyyBt6_ShdDX_rIOad4AaABAg
https://www.youtube.com/watch?v=ly3bed99Dy8&lc=UgztdHvDMqTb9jiqnf54AaABAg
https://www.youtube.com/watch?v=ly3bed99Dy8&lc=UgyQFTmYLJ4VBwIlmql4AaABAg
https://www.youtube.com/watch?v=ly3bed99Dy8&lc=Ugy4-exy166_Ma7TH-h4AaABAg
https://medium.com/@pharmx/you-sir-are-my-hero-62cff5836a3e
If you find this project useful, please consider giving it a ⭐ star on GitHub! This helps others discover the project and encourages further development.
We welcome contributions from the community! Whether you've found a bug, have a feature request, or want to contribute code, here's how you can help:
Found a bug? Open an issue at github.com/wonderwhy-er/DesktopCommanderMCP/issues
Have a feature idea? Submit a feature request in the issues section
Want to contribute code? Fork the repository, create a branch, and submit a pull request
Questions or discussions? Start a discussion in the GitHub Discussions tab
All contributions, big or small, are greatly appreciated!
If you find this tool valuable for your workflow, please consider supporting the project.
Frequently Asked Questions
Here are answers to some common questions. For a more comprehensive FAQ, see our detailed FAQ document.
What is Desktop Commander?
It's an MCP tool that enables Claude Desktop to access your file system and terminal, turning Claude into a versatile assistant for coding, automation, codebase exploration, and more.
How is this different from Cursor/Windsurf?
Unlike IDE-focused tools, Claude Desktop Commander provides a solution-centric approach that works with your entire OS, not just within a coding environment. Claude reads files in full rather than chunking them, can work across multiple projects simultaneously, and executes changes in one go rather than requiring constant review.
Do I need to pay for API credits?
No. This tool works with Claude Desktop's standard Pro subscription ($20/month), not with API calls, so you won't incur additional costs beyond the subscription fee.
Does Desktop Commander automatically update?
Yes, when installed through npx or Smithery, Desktop Commander automatically updates to the latest version when you restart Claude. No manual update process is needed.
What are the most common use cases?
Exploring and understanding complex codebases
Generating diagrams and documentation
Automating tasks across your system
Working with multiple projects simultaneously
Making surgical code changes with precise control
I'm having trouble installing or using the tool. Where can I get help?
Join our Discord server for community support, check the GitHub issues for known problems, or review the full FAQ for troubleshooting tips. You can also visit our website FAQ section for a more user-friendly experience. If you encounter a new issue, please consider opening a GitHub issue with details about your problem.
Data Collection & Privacy
Desktop Commander collects limited anonymous telemetry data to help improve the tool. No personal information, file contents, file paths, or command arguments are collected.
Telemetry is enabled by default. To opt out:
Open the chat and simply ask: "Disable telemetry"
The chatbot will update your settings automatically.
For complete details about data collection, please see our Privacy Policy.
License
MIT
Available Tools
21 toolscreate_directoryA
Create a new directory or ensure a directory exists.
Can create multiple nested directories in one operation.
Only works within allowed directories.
IMPORTANT: Always use absolute paths for reliability. Paths are automatically normalized regardless of slash direction. Relative paths may fail as they depend on the current working directory. Tilde paths (~/...) might not work in all contexts. Unless the user explicitly asks for relative paths, use absolute paths.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and adds valuable behavioral context: it explains that the tool can create nested directories, works only within allowed directories, normalizes paths automatically, and has path reliability considerations (absolute vs. relative/tilde). This goes beyond basic purpose to describe operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose but includes verbose path instructions and meta-commentary about command referencing ('DC: ...'), which adds clutter. Some sentences (e.g., the referencing note) don't earn their place for tool selection, reducing efficiency.
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 annotations, 0% schema coverage, and no output schema, the description does a solid job covering key aspects: purpose, behavioral constraints (allowed directories, path handling), and parameter guidance. It lacks details on error cases or return values, but for a single-parameter tool, it's reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for its single parameter 'path', but the description compensates well by explaining path semantics: it must be absolute for reliability, is automatically normalized, and relative/tilde paths may fail. This adds meaningful context beyond the bare schema type 'string'.
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: 'Create a new directory or ensure a directory exists.' It specifies the verb ('create'/'ensure') and resource ('directory'), though it doesn't explicitly differentiate from siblings like 'list_directory' or 'move_file'. The mention of creating nested directories adds specificity.
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 implied usage guidance by stating 'Only works within allowed directories' and emphasizing absolute paths for reliability. However, it doesn't explicitly say when to use this tool versus alternatives (e.g., vs. 'move_file' for directory manipulation) or list any exclusions, leaving some context gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_blockA
Apply surgical text replacements to files.
BEST PRACTICE: Make multiple small, focused edits rather than one large edit.
Each edit_block call should change only what needs to be changed - include just enough
context to uniquely identify the text being modified.
Takes:
- file_path: Path to the file to edit
- old_string: Text to replace
- new_string: Replacement text
- expected_replacements: Optional parameter for number of replacements
By default, replaces only ONE occurrence of the search text.
To replace multiple occurrences, provide the expected_replacements parameter with
the exact number of matches expected.
UNIQUENESS REQUIREMENT: When expected_replacements=1 (default), include the minimal
amount of context necessary (typically 1-3 lines) before and after the change point,
with exact whitespace and indentation.
When editing multiple sections, make separate edit_block calls for each distinct change
rather than one large replacement.
When a close but non-exact match is found, a character-level diff is shown in the format:
common_prefix{-removed-}{+added+}common_suffix to help you identify what's different.
Similar to write_file, there is a configurable line limit (fileWriteLineLimit) that warns
if the edited file exceeds this limit. If this happens, consider breaking your edits into
smaller, more focused changes.
IMPORTANT: Always use absolute paths for reliability. Paths are automatically normalized regardless of slash direction. Relative paths may fail as they depend on the current working directory. Tilde paths (~/...) might not work in all contexts. Unless the user explicitly asks for relative paths, use absolute paths.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| new_string | Yes | ||
| old_string | Yes | ||
| expected_replacements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does so comprehensively. It explains the default behavior (replaces only ONE occurrence), how to replace multiple occurrences, the uniqueness requirement for context, what happens with non-exact matches (character-level diff shown), line limit warnings similar to write_file, and path handling requirements. This provides rich behavioral context beyond basic parameter documentation.
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 clear sections and front-loaded information, but could be slightly more concise. The core purpose is stated immediately, followed by best practices, parameter explanations, behavioral details, and important notes. While every sentence adds value, some redundancy exists (e.g., path guidance appears in multiple places). Overall, it's efficiently organized but not maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (file editing with precise text replacement), lack of annotations, and no output schema, the description provides complete contextual information. It covers purpose, usage guidelines, all parameters, behavioral characteristics, error conditions, best practices, and even references to related tools. This gives the AI agent everything needed to select and invoke this tool correctly for surgical text replacements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining all parameters in detail. It clearly defines file_path, old_string, new_string, and expected_replacements with their meanings, default values, and usage implications. The description adds significant value beyond the bare schema by explaining how these parameters interact (e.g., how expected_replacements affects the replacement behavior) and providing practical guidance on their use.
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: 'Apply surgical text replacements to files.' This is a specific verb ('apply surgical text replacements') + resource ('files') combination that distinguishes it from sibling tools like write_file (which creates/overwrites entire files) or read_file (which only reads). The description effectively communicates this is for targeted modifications rather than wholesale file 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 provides explicit guidance on when to use this tool versus alternatives. It states: 'When editing multiple sections, make separate edit_block calls for each distinct change rather than one large replacement' and references write_file as a similar tool with line limit warnings. It also gives clear 'BEST PRACTICE' recommendations for making small, focused edits and distinguishes this from broader file operations available in the sibling toolset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
force_terminateC
Force terminate a running terminal session.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 'force terminate' which implies a destructive action, but doesn't clarify permissions needed, side effects, error conditions, or what 'force' entails compared to regular termination. This leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise with two sentences, but the second sentence about 'Desktop Commander' terminology adds minimal value for tool selection. The structure is front-loaded with the core purpose, but could be more focused.
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 operation with no annotations, 0% schema coverage, and no output schema, the description is inadequate. It doesn't explain the parameter, behavioral implications, success/failure conditions, or what distinguishes it from similar sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented 'pid' parameter. The description provides no information about what 'pid' represents, its format, or valid values. This leaves the single required parameter completely unexplained.
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 ('force terminate') and target ('a running terminal session'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'kill_process' or 'interact_with_process', which might 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?
The description provides no guidance on when to use this tool versus alternatives like 'kill_process' or 'interact_with_process'. The second sentence references 'Desktop Commander' terminology but doesn't offer practical usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_configA
Get the complete server configuration as JSON. Config includes fields for:
- blockedCommands (array of blocked shell commands)
- defaultShell (shell to use for commands)
- allowedDirectories (paths the server can access)
- fileReadLineLimit (max lines for read_file, default 1000)
- fileWriteLineLimit (max lines per write_file call, default 50)
- telemetryEnabled (boolean for telemetry opt-in/out)
- currentClient (information about the currently connected MCP client)
- clientHistory (history of all clients that have connected)
- version (version of the DesktopCommander)
- systemInfo (operating system and environment details)
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what the tool returns (server configuration as JSON with specific fields) but does not mention potential side effects, permissions required, rate limits, or error conditions. It adds value by detailing the configuration structure but lacks comprehensive behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose ('Get the complete server configuration as JSON'), followed by a bulleted list of included fields and a note on referencing. The bulleted list is efficient for detailing fields, but the referencing note could be more concise. Overall, it is well-structured with minimal waste.
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 annotations and no output schema, the description provides good detail on the configuration fields returned, which helps compensate. However, it lacks information on return format (e.g., JSON structure depth), error handling, or operational constraints. For a read-only tool with rich output, this is adequate but has gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter information is needed. The description appropriately does not discuss parameters, focusing instead on the output content. This meets the baseline of 4 for tools with no parameters, as it avoids unnecessary repetition.
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 specific action ('Get') and resource ('complete server configuration as JSON'), distinguishing it from siblings like 'get_file_info' or 'get_usage_stats'. It explicitly lists the configuration fields included, making the purpose unambiguous and specific.
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 by mentioning it can be referenced as 'DC: ...' or 'use Desktop Commander to ...', but it does not explicitly state when to use this tool versus alternatives like 'get_file_info' or 'set_config_value'. No exclusions or prerequisites are provided, leaving usage context inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_infoA
Retrieve detailed metadata about a file or directory including:
- size
- creation time
- last modified time
- permissions
- type
- lineCount (for text files)
- lastLine (zero-indexed number of last line, for text files)
- appendPosition (line number for appending, for text files)
Only works within allowed directories.
IMPORTANT: Always use absolute paths for reliability. Paths are automatically normalized regardless of slash direction. Relative paths may fail as they depend on the current working directory. Tilde paths (~/...) might not work in all contexts. Unless the user explicitly asks for relative paths, use absolute paths.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses important behavioral traits: path normalization, absolute vs relative path reliability, tilde path limitations, and directory restrictions. It doesn't mention error handling or performance characteristics, but covers key operational constraints.
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 appropriately sized and front-loaded with the core purpose. The bulleted list efficiently conveys what metadata is returned. The path guidance is necessary but could be slightly more concise. The DC reference at the end feels slightly extraneous but doesn't significantly detract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read operation with no annotations and no output schema, the description is quite complete. It explains what metadata is returned, path requirements, and operational constraints. The main gap is lack of explicit mention of error conditions or return format, but given the tool's relative simplicity, it's reasonably comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for the single 'path' parameter, the description compensates well by explaining path requirements: must be absolute for reliability, paths are normalized, relative paths may fail, tilde paths might not work. This adds crucial semantic context beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'retrieve' and resource 'detailed metadata about a file or directory', with specific examples of what metadata is included. It distinguishes from siblings like list_directory (which lists contents) and read_file (which reads content).
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 guidance on when to use this tool: 'Only works within allowed directories' and 'Always use absolute paths for reliability'. It also distinguishes from alternatives by specifying it retrieves metadata, not content or listings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usage_statsC
Get usage statistics for debugging and analysis.
Returns summary of tool usage, success/failure rates, and performance metrics.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 of behavioral disclosure. It states the tool returns summary data (usage, success/failure rates, performance metrics), which is helpful, but doesn't cover important aspects like whether this requires special permissions, has rate limits, affects system state, or what format the return data takes. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with some wasted space (extra line breaks and quotation marks in the provided text). The first two sentences are useful, but the third sentence about referencing commands adds little value for an AI agent selecting tools. It's moderately concise but could be more focused.
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 has 0 parameters, no output schema, and no annotations, the description provides basic information about what the tool does and returns. However, it lacks details about the return format, error conditions, or prerequisites that would be helpful for a debugging/analysis tool. It's minimally adequate but has clear gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, which is correct for a parameterless tool. It adds value by explaining what the tool returns rather than focusing on inputs.
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 the tool 'Get usage statistics for debugging and analysis', which provides a clear verb ('Get') and resource ('usage statistics') with a purpose ('debugging and analysis'). However, it doesn't differentiate from sibling tools like 'get_config' or 'get_file_info' that also retrieve information, making the purpose somewhat generic rather than specific.
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 includes no guidance on when to use this tool versus alternatives. It mentions the tool can be referenced in instructions, but this doesn't help an AI agent decide when this tool is appropriate compared to other get_* tools on the server. There's no explicit when/when-not or alternative tool recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
give_feedback_to_desktop_commanderA
Open feedback form in browser to provide feedback about Desktop Commander.
IMPORTANT: This tool simply opens the feedback form - no pre-filling available.
The user will fill out the form manually in their browser.
WORKFLOW:
1. When user agrees to give feedback, just call this tool immediately
2. No need to ask questions or collect information
3. Tool opens form with only usage statistics pre-filled automatically:
- tool_call_count: Number of commands they've made
- days_using: How many days they've used Desktop Commander
- platform: Their operating system (Mac/Windows/Linux)
- client_id: Analytics identifier
All survey questions will be answered directly in the form:
- Job title and technical comfort level
- Company URL for industry context
- Other AI tools they use
- Desktop Commander's biggest advantage
- How they typically use it
- Recommendation likelihood (0-10)
- User study participation interest
- Email and any additional feedback
EXAMPLE INTERACTION:
User: "sure, I'll give feedback"
Claude: "Perfect! Let me open the feedback form for you."
[calls tool immediately]
No parameters are needed - just call the tool to open the form.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly explains that the tool opens a browser form, describes what data is automatically pre-filled (usage statistics, platform, client_id), and outlines the user's manual input requirements. However, it doesn't mention potential side effects like browser pop-up behavior 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?
The description is front-loaded with the core purpose but includes extensive details about pre-filled data and survey questions that could be condensed. While informative, some sections like the example interaction and referencing instructions feel somewhat redundant given the clear workflow description.
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 (0 parameters, no output schema, no annotations), the description is largely complete. It explains the tool's behavior, workflow, and user interaction context. However, it lacks technical details like browser requirements or error scenarios that could be relevant for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so the baseline is 4. The description reinforces this by stating 'No parameters are needed - just call the tool to open the form,' which adds clarity beyond the empty 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 explicitly states the tool's purpose: 'Open feedback form in browser to provide feedback about Desktop Commander.' It uses specific verbs ('open', 'provide feedback') and clearly distinguishes this from sibling tools like get_usage_stats or set_config_value by focusing on user feedback collection rather than system 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 provides explicit guidance on when to use this tool: 'When user agrees to give feedback, just call this tool immediately' and 'No need to ask questions or collect information.' It also distinguishes this from tools that might pre-fill data by stating 'no pre-filling available' and clarifies the workflow steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interact_with_processA
Send input to a running process and automatically receive the response.
CRITICAL: THIS IS THE PRIMARY TOOL FOR ALL LOCAL FILE ANALYSIS
For ANY local file analysis (CSV, JSON, data processing), ALWAYS use this instead of the analysis tool.
The analysis tool CANNOT access local files and WILL FAIL - use processes for ALL file-based work.
FILE ANALYSIS PRIORITY ORDER (MANDATORY):
1. ALWAYS FIRST: Use this tool (start_process + interact_with_process) for local data analysis
2. ALTERNATIVE: Use command-line tools (cut, awk, grep) for quick processing
3. NEVER EVER: Use analysis tool for local file access (IT WILL FAIL)
REQUIRED INTERACTIVE WORKFLOW FOR FILE ANALYSIS:
1. Start REPL: start_process("python3 -i")
2. Load libraries: interact_with_process(pid, "import pandas as pd, numpy as np")
3. Read file: interact_with_process(pid, "df = pd.read_csv('/absolute/path/file.csv')")
4. Analyze: interact_with_process(pid, "print(df.describe())")
5. Continue: interact_with_process(pid, "df.groupby('column').size()")
SMART DETECTION:
- Automatically waits for REPL prompt (>>>, >, etc.)
- Detects errors and completion states
- Early exit prevents timeout delays
- Clean output formatting (removes prompts)
SUPPORTED REPLs:
- Python: python3 -i (RECOMMENDED for data analysis)
- Node.js: node -i
- R: R
- Julia: julia
- Shell: bash, zsh
- Database: mysql, postgres
PARAMETERS:
- pid: Process ID from start_process
- input: Code/command to execute
- timeout_ms: Max wait (default: 8000ms)
- wait_for_prompt: Auto-wait for response (default: true)
Returns execution result with status indicators.
ALWAYS USE FOR: CSV analysis, JSON processing, file statistics, data visualization prep, ANY local file work
NEVER USE ANALYSIS TOOL FOR: Local file access (it cannot read files from disk and WILL FAIL)
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | ||
| input | Yes | ||
| timeout_ms | No | ||
| wait_for_prompt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It usefully discloses prompt-waiting, error detection, early exit, output cleanup, and parameter defaults, but it omits the security and destructive implications of executing arbitrary code in a live process as well as process lifecycle risks.
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 heavily repetitive, with multiple all-caps warnings restating the same file-analysis rule. Important workflow information is present but buried in redundant sections, so many sentences do not earn their 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?
The description supplies a workflow and parameter defaults for a tool with no annotations and no output schema. However, it omits process lifecycle details, expected failure modes, and security warnings, and it does not explain how this tool relates to read_process_output or other process-management siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does list all four parameters and adds meaning beyond the schema, including that pid comes from start_process, that input is code/command text, and the defaults for timeout_ms and wait_for_prompt.
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 opening sentence states a specific verb and resource: 'Send input to a running process and automatically receive the response.' It also names start_process in the workflow, though it does not clearly differentiate from siblings like read_process_output. The core purpose is clear despite heavy tangential file-analysis guidance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage direction, including a priority order and the instruction to use start_process + interact_with_process for local file analysis. It names alternatives such as command-line tools and the analysis tool, but the guidance is overbroad and does not mention the sibling read_process_output.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kill_processA
Terminate a running process by PID.
Use with caution as this will forcefully terminate the specified process.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the destructive nature ('forcefully terminate') and includes a caution warning, which are essential behavioral traits. However, it doesn't mention potential side effects, error conditions, permission requirements, or what happens if the PID doesn't exist.
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 first two sentences are well-structured and front-loaded with essential information. However, the third sentence about command referencing adds unnecessary length without improving tool understanding, reducing overall conciseness.
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 tool with no annotations and no output schema, the description provides adequate basic information about purpose and caution. However, it lacks details about return values, error handling, system impacts, and doesn't fully compensate for the missing structured documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for its single parameter (pid), but the description adds meaningful context by specifying that it terminates 'a running process by PID'. This clarifies what the pid parameter represents and how it's used, though it doesn't provide format details or validation rules.
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 specific action ('terminate') and target resource ('a running process by PID'), distinguishing it from sibling tools like 'interact_with_process' or 'start_process'. It uses precise technical language that leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context with 'Use with caution as this will forcefully terminate the specified process', which implicitly suggests when to use it (for forceful termination) and hints at alternatives (less forceful methods). However, it doesn't explicitly name alternative tools or specify exact scenarios when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoryA
Get a detailed listing of all files and directories in a specified path.
Use this instead of 'execute_command' with ls/dir commands.
Results distinguish between files and directories with [FILE] and [DIR] prefixes.
Only works within allowed directories.
IMPORTANT: Always use absolute paths for reliability. Paths are automatically normalized regardless of slash direction. Relative paths may fail as they depend on the current working directory. Tilde paths (~/...) might not work in all contexts. Unless the user explicitly asks for relative paths, use absolute paths.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: it distinguishes files and directories with prefixes, works only within allowed directories, and handles path normalization. However, it lacks details on error handling or performance aspects like rate limits, keeping it from a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose. However, it includes minor redundancy in path advice and an unrelated note about referencing as 'DC:' or 'Desktop Commander,' which slightly reduces efficiency without adding critical 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 tool's moderate complexity (one parameter, no output schema, no annotations), the description is largely complete, covering purpose, usage, behavior, and parameters. It could improve by detailing output format or error cases, but it provides sufficient context for effective use in most scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for the single parameter 'path,' but the description compensates fully by explaining its semantics: it must be a specified path, with detailed guidance on using absolute paths, normalization, and avoiding relative or tilde paths. This adds significant meaning beyond the basic 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 verb ('Get a detailed listing') and resource ('all files and directories in a specified path'), making the purpose specific. It distinguishes from sibling tools like 'execute_command' by explicitly stating to use this instead for ls/dir commands, ensuring it stands out in the context of the server.
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 guidance on when to use this tool ('Use this instead of 'execute_command' with ls/dir commands') and includes alternatives, such as avoiding relative paths in favor of absolute ones. It also specifies exclusions like 'Only works within allowed directories,' offering clear context for proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_processesA
List all running processes.
Returns process information including PID, command name, CPU usage, and memory usage.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 of behavioral disclosure. It describes the return format (process information including PID, command name, CPU usage, and memory usage), which is helpful. However, it lacks details on potential limitations such as performance impact, real-time vs. cached data, or system-specific variations, which are important for a tool that lists system processes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core functionality in the first sentence, followed by return details and a contextual note. The sentences are relevant, but the third sentence about referencing 'DC' or 'Desktop Commander' is somewhat extraneous and could be omitted without losing clarity, slightly reducing efficiency.
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 moderate complexity (listing system processes) and lack of annotations or output schema, the description provides basic return information but misses behavioral context like error handling, permissions required, or data freshness. It is adequate for a simple list operation but could be more complete for a system-level 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?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately does not discuss parameters, which is efficient. A baseline of 4 is applied since there are no parameters to document, and the description does not add unnecessary 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 clearly states the verb 'List' and the resource 'all running processes', which is specific and unambiguous. It distinguishes itself from sibling tools like 'interact_with_process', 'kill_process', and 'read_process_output' by focusing solely on listing rather than modifying or interacting with 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 context by specifying 'all running processes', which suggests it should be used when a comprehensive overview is needed. However, it does not explicitly state when to use this tool versus alternatives like 'get_usage_stats' or 'list_sessions', nor does it provide exclusions or prerequisites for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsA
List all active terminal sessions.
Shows session status including:
- PID: Process identifier
- Blocked: Whether session is waiting for input
- Runtime: How long the session has been running
DEBUGGING REPLs:
- "Blocked: true" often means REPL is waiting for input
- Use this to verify sessions are running before sending input
- Long runtime with blocked status may indicate stuck process
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it lists active sessions, shows status details (PID, Blocked, Runtime), and provides debugging insights (e.g., blocked status indicates waiting for input, long runtime may indicate stuck processes). This adds valuable context beyond basic functionality, though it could mention potential limitations like rate limits or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear sections (purpose, status details, debugging tips, usage notes), but it includes some verbose or redundant elements, such as the debugging REPLs section repeating similar points and the final sentence about referencing commands, which may not be essential. It could be more streamlined while retaining key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple list operation with 0 parameters, no annotations, no output schema), the description is mostly complete. It explains what the tool does, what information it provides, and how to use it for debugging. However, it lacks details on output format (e.g., structure of returned data) and any error conditions, which would enhance completeness for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter information is needed. The description appropriately focuses on output semantics and usage, adding value by explaining what the tool returns and how to interpret it, which compensates for the lack of an output 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 specific action ('List all active terminal sessions') and resource ('terminal sessions'), distinguishing it from siblings like list_directory or list_processes. It provides concrete details about what information is shown (PID, Blocked status, Runtime), making the purpose unambiguous and specific.
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 includes explicit usage guidance for debugging REPLs (e.g., 'Use this to verify sessions are running before sending input'), which helps clarify when to use this tool. However, it does not explicitly mention when NOT to use it or name specific alternatives among siblings, such as list_processes, which might be relevant for broader process monitoring.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_fileA
Move or rename files and directories.
Can move files between directories and rename them in a single operation.
Both source and destination must be within allowed directories.
IMPORTANT: Always use absolute paths for reliability. Paths are automatically normalized regardless of slash direction. Relative paths may fail as they depend on the current working directory. Tilde paths (~/...) might not work in all contexts. Unless the user explicitly asks for relative paths, use absolute paths.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| destination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: the tool can move or rename in one operation, both source and destination must be within allowed directories, and it requires absolute paths for reliability. It also mentions path normalization and limitations with relative/tilde paths. However, it lacks details on error handling or permissions.
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 appropriately sized and front-loaded, starting with the core purpose. Most sentences add value, such as operational details and path guidelines. However, the final sentence about referencing as 'DC:' is slightly extraneous and could be trimmed for better conciseness.
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 annotations and no output schema, the description does a good job covering the tool's purpose, usage, and parameters. It addresses key contextual aspects like path requirements and operational scope. However, it lacks details on return values, error conditions, or side effects, which would enhance completeness for a mutation 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?
The input schema has 0% description coverage, so the description must compensate. It adds significant meaning: 'source' and 'destination' are clarified as paths for files/directories, with constraints like requiring absolute paths and being within allowed directories. It also explains that the operation handles both moving and renaming. This goes well beyond the bare schema, though it could specify path formats more precisely.
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 ('move or rename') and resource ('files and directories'), and distinguishes from siblings like 'create_directory' (creation), 'read_file' (reading), and 'write_file' (writing). It specifies the operation can handle both moving between directories and renaming in one action.
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 states when to use this tool: for moving or renaming files/directories. It provides clear alternatives by naming sibling tools for different operations (e.g., 'create_directory' for creation, 'read_file' for reading). It also includes usage notes about path requirements, making it highly actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileA
Read the contents of a file from the file system or a URL with optional offset and length parameters.
Prefer this over 'execute_command' with cat/type for viewing files.
Supports partial file reading with:
- 'offset' (start line, default: 0)
* Positive: Start from line N (0-based indexing)
* Negative: Read last N lines from end (tail behavior)
- 'length' (max lines to read, default: configurable via 'fileReadLineLimit' setting, initially 1000)
* Used with positive offsets for range reading
* Ignored when offset is negative (reads all requested tail lines)
Examples:
- offset: 0, length: 10 → First 10 lines
- offset: 100, length: 5 → Lines 100-104
- offset: -20 → Last 20 lines
- offset: -5, length: 10 → Last 5 lines (length ignored)
Performance optimizations:
- Large files with negative offsets use reverse reading for efficiency
- Large files with deep positive offsets use byte estimation
- Small files use fast readline streaming
When reading from the file system, only works within allowed directories.
Can fetch content from URLs when isUrl parameter is set to true
(URLs are always read in full regardless of offset/length).
Handles text files normally and image files are returned as viewable images.
Recognized image types: PNG, JPEG, GIF, WebP.
IMPORTANT: Always use absolute paths for reliability. Paths are automatically normalized regardless of slash direction. Relative paths may fail as they depend on the current working directory. Tilde paths (~/...) might not work in all contexts. Unless the user explicitly asks for relative paths, use absolute paths.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| isUrl | No | ||
| length | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does so comprehensively. It details performance optimizations (reverse reading, byte estimation, streaming), constraints (allowed directories, URL reading limitations), file type handling (text vs images), path requirements (absolute vs relative), and operational specifics like how offset/length parameters interact. This provides rich behavioral context beyond basic functionality.
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 clear sections (purpose, preference guidance, parameter details, examples, performance, constraints, file handling, path instructions). While comprehensive, some sentences could be more concise (e.g., the final paragraph about referencing could be trimmed). However, most content earns its place by providing essential operational context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool (4 parameters, no annotations, no output schema), the description is remarkably complete. It covers purpose, usage guidelines, parameter semantics, behavioral traits, performance characteristics, constraints, file type handling, and practical implementation details. For a read operation with rich parameter interactions, this provides sufficient context for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing detailed semantics for all parameters. It explains 'offset' with positive/negative behavior and 0-based indexing, 'length' with default values and interaction rules, 'path' with absolute path requirements, and 'isUrl' with URL-specific behavior. The examples concretely illustrate parameter usage, adding significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Read the contents of a file from the file system or a URL with optional offset and length parameters.' It distinguishes from sibling tools like 'read_multiple_files' by focusing on single-file reading and from 'execute_command' by recommending preference over cat/type commands. The verb+resource combination is specific and clear.
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 guidance on when to use this tool: 'Prefer this over 'execute_command' with cat/type for viewing files.' It also mentions when not to use it (for relative paths unless explicitly requested) and distinguishes it from sibling tools like 'read_multiple_files' by focusing on single-file operations. The context of file system vs URL reading is clearly delineated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_multiple_filesA
Read the contents of multiple files simultaneously.
Each file's content is returned with its path as a reference.
Handles text files normally and renders images as viewable content.
Recognized image types: PNG, JPEG, GIF, WebP.
Failed reads for individual files won't stop the entire operation.
Only works within allowed directories.
IMPORTANT: Always use absolute paths for reliability. Paths are automatically normalized regardless of slash direction. Relative paths may fail as they depend on the current working directory. Tilde paths (~/...) might not work in all contexts. Unless the user explicitly asks for relative paths, use absolute paths.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and discloses key behaviors: handles text and image files (PNG, JPEG, GIF, WebP), continues on individual file failures, works within allowed directories, and requires absolute paths for reliability. It doesn't cover rate limits or auth needs but provides substantial operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: purpose, return format, file handling, error behavior, directory constraints, and path instructions. Some redundancy in path advice slightly reduces efficiency, but overall front-loaded and 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 annotations and no output schema, the description provides good coverage: explains what the tool does, how to use it, behavioral traits, and parameter semantics. It could detail output format more explicitly but is largely complete for a read operation 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 0% with 1 parameter ('paths'), and the description compensates by explaining that 'paths' should be absolute for reliability, automatically normalized, and that relative/tilde paths may fail. It adds meaning beyond the bare schema type definition.
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 ('read') and resource ('multiple files simultaneously'), distinguishing it from sibling 'read_file' which handles single files. It specifies the scope of reading multiple files at once with content returned by path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool ('read multiple files simultaneously') and provides alternatives: it distinguishes from 'read_file' for single files, mentions 'only works within allowed directories' as a constraint, and references 'Desktop Commander' context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_process_outputB
Read output from a running process with intelligent completion detection.
Automatically detects when process is ready for more input instead of timing out.
SMART FEATURES:
- Early exit when REPL shows prompt (>>>, >, etc.)
- Detects process completion vs still running
- Prevents hanging on interactive prompts
- Clear status messages about process state
REPL USAGE:
- Stops immediately when REPL prompt detected
- Shows clear status: waiting for input vs finished
- Shorter timeouts needed due to smart detection
- Works with Python, Node.js, R, Julia, etc.
DETECTION STATES:
Process waiting for input (ready for interact_with_process)
Process finished execution
Timeout reached (may still be running)
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | ||
| timeout_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by detailing behavioral traits: early exit on REPL prompts, detection of completion vs running states, prevention of hanging, and clear status messages. It explains what the tool does beyond basic reading, though it could mention error handling or output format.
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 overly verbose and poorly structured, with redundant sections (e.g., 'SMART FEATURES' and 'REPL USAGE' overlap), bullet points that could be condensed, and unnecessary marketing language ('This command can be referenced as...'). It lacks front-loading of critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and low schema coverage, the description is moderately complete. It covers behavioral aspects well but misses parameter details and return value explanation. For a tool with smart detection features, it's adequate but has gaps in technical specifics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the two parameters (pid, timeout_ms). It mentions 'timeout' briefly but doesn't explain what pid represents, the units for timeout_ms, or default behaviors. The description adds minimal semantic value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads output from a running process with intelligent completion detection, which is a specific verb+resource combination. It distinguishes from siblings like 'interact_with_process' by focusing on reading output rather than sending input, though the distinction could be more explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when a process is running and output needs to be read with smart detection. It implies an alternative ('interact_with_process' for when the process is waiting for input) but doesn't explicitly name it or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codeA
Search for text/code patterns within file contents using ripgrep.
Use this instead of 'execute_command' with grep/find for searching code content.
Fast and powerful search similar to VS Code search functionality.
Supports regular expressions, file pattern filtering, and context lines.
Has a default timeout of 30 seconds which can be customized.
Only searches within allowed directories.
IMPORTANT: Always use absolute paths for reliability. Paths are automatically normalized regardless of slash direction. Relative paths may fail as they depend on the current working directory. Tilde paths (~/...) might not work in all contexts. Unless the user explicitly asks for relative paths, use absolute paths.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| pattern | Yes | ||
| timeoutMs | No | ||
| ignoreCase | No | ||
| maxResults | No | ||
| filePattern | No | ||
| contextLines | No | ||
| includeHidden | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: default timeout (30 seconds), search constraints (only within allowed directories), path handling requirements (absolute paths recommended), and performance characteristics (fast and powerful). It doesn't mention error handling or output format details, but covers most critical operational aspects.
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 appropriately sized and front-loaded with the core purpose. Each paragraph adds value: purpose, usage guidelines, capabilities, operational constraints, and path guidance. The final sentence about 'DC: ...' references could be trimmed as it's more about external documentation than tool functionality, but overall the structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, no annotations, no output schema), the description provides substantial context about what the tool does, when to use it, key behaviors, and parameter guidance. It doesn't describe the return format or error conditions, but covers most aspects needed for effective use. The sibling tool differentiation and path guidance are particularly valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for 8 parameters, the description compensates well by explaining several parameter semantics: it mentions 'regular expressions' (relates to pattern parameter), 'file pattern filtering' (relates to filePattern), 'context lines' (relates to contextLines), and 'timeout' customization (relates to timeoutMs). It also provides crucial guidance about the 'path' parameter requiring absolute paths. However, it doesn't cover all 8 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's purpose: 'Search for text/code patterns within file contents using ripgrep.' It specifies both the verb ('search') and resource ('text/code patterns within file contents'), and distinguishes it from sibling tools like 'search_files' by emphasizing content search versus file metadata search.
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 guidance on when to use this tool versus alternatives: 'Use this instead of 'execute_command' with grep/find for searching code content.' It also mentions 'Fast and powerful search similar to VS Code search functionality,' helping the agent understand appropriate contexts for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filesA
Finds files by name using a case-insensitive substring matching.
Use this instead of 'execute_command' with find/dir/ls for locating files.
Searches through all subdirectories from the starting path.
Has a default timeout of 30 seconds which can be customized using the timeoutMs parameter.
Only searches within allowed directories.
IMPORTANT: Always use absolute paths for reliability. Paths are automatically normalized regardless of slash direction. Relative paths may fail as they depend on the current working directory. Tilde paths (~/...) might not work in all contexts. Unless the user explicitly asks for relative paths, use absolute paths.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| pattern | Yes | ||
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: case-insensitive substring matching, recursive search through subdirectories, a default 30-second timeout (customizable via timeoutMs), restriction to allowed directories, and path normalization. It also notes reliability issues with relative and tilde paths. However, it lacks details on output format or error handling, which could be useful for an agent.
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 appropriately sized but not optimally structured. Key information is front-loaded (purpose and basic usage), but it includes verbose path advice and a tangential note about command referencing ('DC: ...') that doesn't add core value. Some sentences could be trimmed for better focus without losing essential details.
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 moderate complexity (3 parameters, no annotations, no output schema), the description is largely complete. It covers purpose, usage, behavioral traits, and parameter semantics well. However, it lacks information on the return value (e.g., what the search results look like) and error conditions, which are important for an agent to handle responses appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics for all parameters: 'path' is explained with detailed guidance on absolute vs. relative paths and normalization; 'pattern' is implied as the substring for matching; 'timeoutMs' is described as customizing the default 30-second timeout. This goes beyond the bare schema, though it could explicitly map each parameter name to its purpose.
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 with specific verbs ('finds files by name') and resource ('files'), and distinguishes it from sibling tools by explicitly contrasting it with 'execute_command' and 'search_code' (implied). It provides detailed matching behavior ('case-insensitive substring matching') and search scope ('through all subdirectories from the starting path').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('Use this instead of 'execute_command' with find/dir/ls for locating files') and provides clear context on path handling ('Always use absolute paths for reliability'). It also mentions constraints like 'Only searches within allowed directories' and timeout customization, offering practical guidance for effective use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_config_valueA
Set a specific configuration value by key.
WARNING: Should be used in a separate chat from file operations and
command execution to prevent security issues.
Config keys include:
- blockedCommands (array)
- defaultShell (string)
- allowedDirectories (array of paths)
- fileReadLineLimit (number, max lines for read_file)
- fileWriteLineLimit (number, max lines per write_file call)
- telemetryEnabled (boolean)
IMPORTANT: Setting allowedDirectories to an empty array ([]) allows full access
to the entire file system, regardless of the operating system.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by including a WARNING about security implications and important notes about the 'allowedDirectories' parameter behavior. It also mentions the tool can be referenced as 'DC: ...' which provides implementation context. However, it doesn't cover error conditions, validation rules, or what happens when invalid keys/values are provided.
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 appropriately sized but not optimally structured. The core purpose is clear in the first sentence, but the WARNING and IMPORTANT sections are buried in the middle rather than front-loaded. The final sentence about referencing as 'DC: ...' feels somewhat out of place and doesn't add critical value for tool selection.
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 this is a mutation tool with no annotations and no output schema, the description does quite well. It covers the purpose, security implications, parameter details, and specific behavioral notes. The main gap is the lack of information about return values or error responses, which would be important for a configuration-setting operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 2 parameters, the description compensates excellently. It provides a comprehensive list of config keys with their expected data types and specific behavioral notes (like the empty array behavior for allowedDirectories). This adds substantial meaning beyond what the bare schema provides, fully documenting the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Set a specific configuration value by key.' This is a specific verb+resource combination (set + configuration value). However, it doesn't explicitly distinguish from its sibling 'get_config' beyond the obvious set vs. get difference, missing an opportunity for clearer sibling 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 provides clear context about when to use this tool: 'Should be used in a separate chat from file operations and command execution to prevent security issues.' This gives important operational guidance. However, it doesn't explicitly mention when NOT to use it or provide alternatives to setting configuration values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_processA
Start a new terminal process with intelligent state detection.
PRIMARY TOOL FOR FILE ANALYSIS AND DATA PROCESSING
This is the ONLY correct tool for analyzing local files (CSV, JSON, logs, etc.).
The analysis tool CANNOT access local files and WILL FAIL - always use processes for file-based work.
CRITICAL RULE: For ANY local file work, ALWAYS use this tool + interact_with_process, NEVER use analysis/REPL tool.
Running on Linux. Default shell: bash.LINUX-SPECIFIC NOTES:
Package managers vary by distro: apt, yum, dnf, pacman, zypper
Python 3 might be 'python3' command, not 'python'
Standard Unix shell tools available (grep, awk, sed, etc.)
File permissions and ownership important for many operations
Systemd services common on modern distributions
REQUIRED WORKFLOW FOR LOCAL FILES: 1. start_process("python3 -i") - Start Python REPL for data analysis 2. interact_with_process(pid, "import pandas as pd, numpy as np") 3. interact_with_process(pid, "df = pd.read_csv('/absolute/path/file.csv')") 4. interact_with_process(pid, "print(df.describe())") 5. Continue analysis with pandas, matplotlib, seaborn, etc. COMMON FILE ANALYSIS PATTERNS: • start_process("python3 -i") → Python REPL for data analysis (RECOMMENDED) • start_process("node -i") → Node.js for JSON processing • start_process("cut -d',' -f1 file.csv | sort | uniq -c") → Quick CSV analysis • start_process("wc -l /path/file.csv") → Line counting • start_process("head -10 /path/file.csv") → File preview INTERACTIVE PROCESSES FOR DATA ANALYSIS: 1. start_process("python3 -i") - Start Python REPL for data work 2. start_process("node -i") - Start Node.js REPL for JSON/JS 3. start_process("bash") - Start interactive bash shell 4. Use interact_with_process() to send commands 5. Use read_process_output() to get responses SMART DETECTION: - Detects REPL prompts (>>>, >, $, etc.) - Identifies when process is waiting for input - Recognizes process completion vs timeout - Early exit prevents unnecessary waiting STATES DETECTED: Process waiting for input (shows prompt) Process finished execution Process running (use read_process_output) ALWAYS USE FOR: Local file analysis, CSV processing, data exploration, system commands NEVER USE ANALYSIS TOOL FOR: Local file access (analysis tool is browser-only and WILL FAIL) IMPORTANT: Always use absolute paths for reliability. Paths are automatically normalized regardless of slash direction. Relative paths may fail as they depend on the current working directory. Tilde paths (~/...) might not work in all contexts. Unless the user explicitly asks for relative paths, use absolute paths. This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| shell | No | ||
| command | Yes | ||
| timeout_ms | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description bears the full burden. It provides rich behavioral context beyond simple execution, detailing the environment (Linux/bash), specific detection methods (REPL prompts, waiting for input), and recognized process states.
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 sheer volume of highly detailed instructions, workflows, and 'critical rules' makes the definition extremely verbose. While every sentence serves a necessary purpose due to the tool's complexity and lack of structured metadata, the overall length prevents a perfect score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of managing terminal processes, this definition is highly complete. It covers OS-specific notes, path reliability concerns, state detection, and the required sequential usage of related sibling tools like `interact_with_process` and `read_process_output`.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must fully compensate. It defines the `command` parameter using extensive, syntactically correct examples across multiple contexts (Python REPL, Node.js, Unix pipe commands), making parameter use unambiguous.
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 is extremely clear, stating that this is the 'PRIMARY TOOL FOR FILE ANALYSIS AND DATA PROCESSING.' It distinguishes itself explicitly from the 'analysis tool,' preventing agents from misselecting the browser-based tool for local file tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides definitive rules ('CRITICAL RULE: ...NEVER use analysis/REPL tool') and comprehensive instructions on when and how to use it, detailing required workflows for local file processing (e.g., using absolute paths and sequential interaction with interact_with_process).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileA
Write or append to file contents.
CHUNKING IS STANDARD PRACTICE: Always write files in chunks of 25-30 lines maximum.
This is the normal, recommended way to write files - not an emergency measure.
STANDARD PROCESS FOR ANY FILE:
1. FIRST → write_file(filePath, firstChunk, {mode: 'rewrite'}) [≤30 lines]
2. THEN → write_file(filePath, secondChunk, {mode: 'append'}) [≤30 lines]
3. CONTINUE → write_file(filePath, nextChunk, {mode: 'append'}) [≤30 lines]
ALWAYS CHUNK PROACTIVELY - don't wait for performance warnings!
WHEN TO CHUNK (always be proactive):
1. Any file expected to be longer than 25-30 lines
2. When writing multiple files in sequence
3. When creating documentation, code files, or configuration files
HANDLING CONTINUATION ("Continue" prompts):
If user asks to "Continue" after an incomplete operation:
1. Read the file to see what was successfully written
2. Continue writing ONLY the remaining content using {mode: 'append'}
3. Keep chunks to 25-30 lines each
Files over 50 lines will generate performance notes but are still written successfully.
Only works within allowed directories.
IMPORTANT: Always use absolute paths for reliability. Paths are automatically normalized regardless of slash direction. Relative paths may fail as they depend on the current working directory. Tilde paths (~/...) might not work in all contexts. Unless the user explicitly asks for relative paths, use absolute paths.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | rewrite | |
| path | Yes | ||
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does so comprehensively. It explains performance characteristics (files over 50 lines generate performance notes), constraints (only works within allowed directories), path handling (absolute vs. relative paths), continuation behavior for incomplete operations, and chunking requirements. This provides rich behavioral context beyond basic functionality.
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?
While the description is well-structured with clear sections and bullet points, it is quite lengthy with multiple repetitions about chunking and path handling. Some information (like the 'DC: ...' reference) seems less essential. The description could be more concise while retaining its comprehensive guidance.
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 (file writing with performance considerations), lack of annotations, and no output schema, the description provides complete contextual information. It covers purpose, usage patterns, behavioral constraints, parameter semantics, error handling, and performance considerations. Nothing essential appears to be missing for effective tool 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?
With 0% schema description coverage for 3 parameters, the description must and does compensate by providing extensive parameter semantics. It explains the 'mode' parameter values ('rewrite' vs 'append') with concrete usage examples, clarifies 'path' parameter requirements (absolute paths for reliability), and implicitly describes 'content' parameter usage through chunking guidelines. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose as 'Write or append to file contents', which is a specific verb+resource combination. It clearly distinguishes this from sibling tools like read_file, edit_block, and move_file by focusing on writing/creating file content rather than reading, editing specific blocks, or moving files.
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 extensive guidance on when and how to use this tool, including explicit instructions for chunking ('Always write files in chunks of 25-30 lines maximum'), a step-by-step process for writing files, and specific scenarios when chunking should be used. It also contrasts with implied alternatives by emphasizing this is the 'normal, recommended way' rather than emergency measures.
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.
21 tool updates
v0.2.3- First observed
create_directory - First observed
edit_block - First observed
force_terminate - First observed
get_config - First observed
get_file_info - First observed
get_usage_stats - First observed
give_feedback_to_desktop_commander - First observed
interact_with_process - First observed
kill_process - First observed
list_directory - First observed
list_processes - First observed
list_sessions - First observed
move_file - First observed
read_file - First observed
read_multiple_files - First observed
read_process_output - First observed
search_code - First observed
search_files - First observed
set_config_value - First observed
start_process - First observed
write_file
TDQS
Scored across 21 tools
Most tools have clearly distinct purposes (file read/write/edit/search vs. process spawn/interact/kill vs. config). The main overlap is force_terminate vs kill_process, which both terminate things (session vs PID) with descriptions that don't sharply draw the boundary, and read_process_output vs interact_with_process also overlap slightly since interact returns output too. Still, an agent can mostly pick correctly.
Almost all tools use a clean verb_noun snake_case pattern (read_file, list_directory, start_process, get_config). The one clear outlier is give_feedback_to_desktop_commander, which is a long verb_phrase in an otherwise uniform set, and force_terminate/kill_process use different verbs for closely related actions.
21 tools is on the heavy side for a desktop/file/process commander, but each maps to a real capability area (files, processes/sessions, config, diagnostics, feedback) with little redundancy. A couple of peripheral tools (get_usage_stats, give_feedback) could be dropped but the count is defensible.
File coverage has create/read/write/edit/move/search/info but no delete_file or delete_directory and no copy operation, leaving the file lifecycle incomplete. There is also no generic execute_command tool, yet many descriptions tell the agent to 'use this instead of execute_command', referencing a tool that isn't in the surface and forcing shell work through start_process.
Maintenance
Related MCP Connectors
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
- emisarOAuthdev.emisar
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA comprehensive local file management and system operations server that provides advanced file editing, VSCode-like search capabilities, code formatting and validation, backup management, and safe system command execution with security safeguards.1-
- AlicenseAqualityDmaintenanceA comprehensive MCP server that enables AI models to perform local file operations, command execution, and task management across multiple platforms. It features advanced capabilities like row-level file editing, directory searching, and system monitoring with built-in security filters.137 npmMulan Permissive Software , Version 2
- AlicenseBqualityAmaintenanceA secure MCP server for shell operations, terminal management, and process control, enabling AI assistants to safely execute commands and manage interactive sessions.1355 npm6MIT
- AlicenseBqualityCmaintenanceEnables AI tools to perform server operations such as log inspection, system monitoring, code management, Nginx and certificate management, with support for local and remote SSH modes and built-in security controls.2326 npmMIT