Skip to content

Tool Selection Guide

This guide helps you choose the right tool from the 16 available MCP tools.

Do you need to read a file?
├── Full file → read_file
├── Specific line range → read_file with start_line + end_line
└── Binary/base64 → read_file with encoding:"base64"
Need to create or overwrite a file?
├── Text content → write_file
└── Binary/base64 → write_file with encoding:"base64" or content_base64
What kind of edit?
├── Single replacement → edit_file
├── Replace Nth occurrence → edit_file with occurrence:N
├── Regex-based transform → edit_file with mode:"regex"
├── Bulk replace across files → edit_file with mode:"search_replace"
└── Multiple replacements in one file → multi_edit
What are you looking for?
├── File name or content → search_files
├── Content with regex + context → search_files (with case_sensitive/whole_word/include_context)
├── Count occurrences only → search_files with count_only:true
└── Find and replace across files → edit_file with mode:"search_replace"

TaskToolWhy
Read any fileread_fileAuto-optimizes: direct for small, chunked for large
Read specific linesread_file with start_line + end_lineMost token-efficient
Read first/last N linesread_file with mode + max_linesTail logs, preview files
Read binary as base64read_file with encoding:"base64"Images, binaries
TaskToolWhy
Replace specific textedit_fileAuto-backup, risk assessment, smart matching
Replace Nth occurrenceedit_file with occurrence:NPrecise control
Regex transformationedit_file with mode:"regex"Capture groups, advanced patterns
Bulk replace across filesedit_file with mode:"search_replace"Recursive with file pattern filter
Multiple replacementsmulti_editAtomic, single read/write cycle
TaskToolWhy
Create or overwrite filewrite_fileAuto-streams large content, creates dirs
Write binary from base64write_file with encoding:"base64"Images, binaries
TaskToolWhy
Find files by namesearch_filesFast smart search
Find code in filessearch_files with include_contentContent search
Regex with context linessearch_files with include_contextAdvanced text search
Count matchessearch_files with count_only:trueQuick count without reading
TaskToolWhy
Rename filemove_fileRename is a move within the same directory
Copy filecopy_filePreserves permissions
Move filemove_fileAtomic move
Delete safelydelete_fileSoft-delete by default (recoverable)
Delete permanentlydelete_file with permanent: truePermanent
Get file infoget_file_infoSize, date, permissions
TaskToolWhy
List contentslist_directoryFast, cached
Create directorycreate_directoryCreates parents too
TaskToolWhy
View backupsbackupNo params = list all
Backup detailsbackup with backup_idFull info
Compare with backupbackup with backup_id + file_pathSee differences
Clean old backupsbackup with cleanup: trueFree space
Restore filebackup with action:"restore" + backup_idPreview option with preview: true
TaskToolWhy
Analyze fileanalyze_operation with operation: "file"Size, type, strategy
Get optimization adviceanalyze_operation with operation: "optimize"Best approach
Preview edit impactanalyze_operation with operation: "edit"Risk level
Preview write impactanalyze_operation with operation: "write"Dry-run
Preview delete impactanalyze_operation with operation: "delete"Impact analysis
TaskToolWhy
Copy between WSL/Windowswsl with action:"sync" + source_pathAuto-detects direction
Sync workspacewsl with action:"sync" + directionBidirectional sync
Check statuswsl with action:"status"Environment info
Configure auto-syncwsl with action:"status" + enabledToggle sync
TaskToolWhy
Multiple operationsbatch_operations with request_jsonAtomic with rollback
Rename many filesbatch_operations with rename_json8 rename modes
Multi-step pipelinebatch_operations with pipeline_jsonChained steps with conditions
TaskToolWhy
Performance statsserver_info with action:"stats"Cache hit rates, throughput
Get helpserver_info with action:"help"Tool documentation
Capture artifactserver_info with action:"artifact"Save/retrieve artifacts

  1. search_files(".", "buggy_function") — Find location
  2. read_file("file.go", start_line: 100, end_line: 120) — Read only that section
  3. edit_file("file.go", "old_code", "fixed_code") — Apply fix
  1. search_files("file.go", "oldName", count_only: true) — Check count
  2. analyze_operation("file.go", "edit", old_text: "oldName", new_text: "newName") — Preview
  3. edit_file("file.go", "oldName", "newName") — Apply

Scenario 3: Create Multiple Files Atomically

Section titled “Scenario 3: Create Multiple Files Atomically”
batch_operations({
request_json: JSON.stringify({
operations: [
{ type: "write", path: "file1.go", content: "..." },
{ type: "write", path: "file2.go", content: "..." },
{ type: "create_dir", path: "new_folder" }
],
atomic: true
})
})
  1. backup() — List recent backups
  2. backup({ backup_id: "...", file_path: "..." }) — Compare
  3. backup({ action: "restore", backup_id: "...", preview: true }) — Preview
  4. backup({ action: "restore", backup_id: "..." }) — Restore

Scenario 5: Regex Refactor with Capture Groups

Section titled “Scenario 5: Regex Refactor with Capture Groups”
edit_file({
path: "handler.go",
mode: "regex",
pattern: "fmt\\.Errorf\\(\"(\\w+): %v\", err\\)",
replacement: "fmt.Errorf(\"$1: %w\", err)"
})
batch_operations({
pipeline_json: JSON.stringify({
name: "refactor-todos",
stop_on_error: true,
create_backup: true,
steps: [
{ id: "find", action: "search", params: { path: ".", pattern: "TODO", file_types: [".go"] } },
{ id: "count", action: "count_occurrences", input_from: "find", params: { pattern: "TODO" } },
{ id: "fix", action: "edit", input_from: "find",
condition: { type: "count_gt", step_ref: "count", value: "0" },
params: { old_text: "TODO", new_text: "DONE" } }
]
})
})

  1. Use search_files before reading large files — find the exact location first
  2. Use read_file with start_line/end_line when you know the lines
  3. Use edit_file instead of write_file for changes — sends only the diff
  4. Use multi_edit for multiple changes in one file — single read/write cycle
  5. Use batch_operations with pipeline_json for multi-step operations — 4x token reduction

The consolidated tools automatically choose the best strategy:

  • read_file — Direct read or chunked streaming based on file size
  • write_file — Direct write or streaming write based on content size
  • edit_file — Direct edit or line-by-line streaming based on file size
  • Directory listings are cached (98%+ hit rate)
  • Repeated reads of same file use cache
  • Use server_info with action:"stats" to check cache performance

Migration from v3 (59 tools) to v4 (16 tools)

Section titled “Migration from v3 (59 tools) to v4 (16 tools)”
Old Tool (v3)New Tool (v4)How
mcp_readread_fileSame params
mcp_writewrite_fileSame params
mcp_editedit_fileSame params
mcp_searchsearch_filesSame params
mcp_listlist_directorySame params
read_file_rangeread_fileAdd start_line + end_line
read_base64read_fileAdd encoding:"base64"
write_base64write_fileAdd encoding:"base64"
rename_filemove_fileSame params (rename = move)
search_and_replaceedit_fileAdd mode:"search_replace"
replace_nth_occurrenceedit_fileAdd occurrence:N
regex_transform_fileedit_fileAdd mode:"regex"
count_occurrencessearch_filesAdd count_only:true
execute_pipelinebatch_operationsPass pipeline_json instead of request_json
batch_rename_filesbatch_operationsPass rename_json instead of request_json
restore_backupbackupAdd action:"restore"
wsl_syncwslAdd action:"sync"
wsl_statuswslAdd action:"status"
statsserver_infoAdd action:"stats"
get_helpserver_infoAdd action:"help"
artifactserver_infoAdd action:"artifact"

CategoryCountTools
Reading1read_file
Writing1write_file
Editing2edit_file, multi_edit
Search1search_files
File Ops4copy_file, move_file, delete_file, get_file_info
Directory2list_directory, create_directory
Analysis1analyze_operation
Backup1backup
WSL1wsl
Batch1batch_operations
Utilities1server_info

Total: 16 tools