v0.9.5+sha256.8d66dcd247b1github_release · knewstimek/agent-tool · current release
Observed 2026-08-31T13:15:16.268Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.
{
"logging": {},
"tools": {
"listChanged": true
}
}| Tool | Category | Annotations | Risk |
|---|---|---|---|
agent_tool_helpReturns usage guide for agent-tool.
Call this when you encounter encoding warnings, garbled text, or need to understand agent-tool features.
Topics: overview, encoding, indentation, tools, debug, analyze, troubleshooting.Input schema{
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "Help topic. Available: overview, encoding, indentation, tools, debug, analyze, memtool, wintool, codegraph, ipc, troubleshooting. Empty = overview"
}
},
"additionalProperties": false
} | — | — · — | — |
editReplaces old_string with new_string in the specified file.
Smart indentation: auto-converts between tabs and spaces to match the file's style.
Encoding-aware: preserves original file encoding (UTF-8, EUC-KR, Shift-JIS, UTF-8 BOM, etc.).
Line-ending aware: matches old_string regardless of CRLF/LF, and inserted lines follow the newline style of the region being edited (mixed-newline files stay intact).
Reads .editorconfig for indentation settings.
Use dry_run=true to preview changes without modifying the file.Input schema{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "File to edit. Relative paths use the configured workspace or MCP client root"
},
"path": {
"type": "string",
"description": "Alias for file_path"
},
"old_string": {
"type": "string",
"description": "Exact text to find in the file"
},
"new_string": {
"type": "string",
"description": "Replacement text (must differ from old_string)"
},
"old_content": {
"type": "string",
"description": "Alias for old_string"
},
"new_content": {
"type": "string",
"description": "Alias for new_string"
},
"replace_all": {
"type": "boolean",
"description": "Replace all occurrences instead of just the first: true or false. Default: false"
},
"dry_run": {
"type": "boolean",
"description": "Preview changes without modifying the file: true or false. Default: false"
},
"indent_style": {
"type": "string",
"description": "Override indentation style. Values: tabs or spaces-N (e.g. spaces-4). Empty = auto-detect (default)"
},
"expected_hash": {
"type": "string",
"description": "Optional SHA-256 hash of the file. If provided and mismatched, edit is rejected (optimistic concurrency)."
}
},
"additionalProperties": false
} | — | — · — | — |
globFinds files matching a glob pattern.
Supports ** recursive matching and sorts results by modification time (newest first).
Defaults to 200 workspace-relative paths and 32768 characters per page.
Skips hidden and common generated/vendor directories unless explicitly included.
Returns total/has_more/truncated metadata and an opaque next_cursor.Input schema{
"type": "object",
"properties": {
"pattern": {
"type": "string",
"description": "Glob pattern to match files (e.g. **/*.go or src/**/*.ts)"
},
"path": {
"type": "string",
"description": "Directory to search. Defaults to configured workspace, MCP client root, or current directory"
},
"relative_paths": {
"type": [
"null",
"boolean"
],
"description": "Return paths relative to the search directory. Default: true"
},
"limit": {
"type": "integer",
"description": "Maximum paths returned per page. Default: 200, Max: 5000"
},
"max_output_chars": {
"type": "integer",
"description": "Maximum returned text characters. Default: 32768, Max: 131072"
},
"cursor": {
"type": "string",
"description": "Opaque continuation cursor returned by a previous glob call"
},
"include_hidden": {
"type": "boolean",
"description": "Traverse hidden directories. Explicit hidden roots are always searched. Default: false"
},
"include_ignored": {
"type": "boolean",
"description": "Traverse generated/vendor directories such as node_modules, vendor, target, build, and dist. Default: false"
}
},
"required": [
"pattern"
],
"additionalProperties": false
} | — | — · — | — |
grepSearches file contents for a regex pattern.
Encoding-aware: auto-detects file encoding.
Can search a single file or recursively search a directory.
Output modes: content (default), files_with_matches, count. Compact content groups
matches under one file header by default; use output_format=classic for path:line:text.
A CRLF ending is a terminator, not content: "^foo$" matches in a CRLF file and returned lines carry no stray CR. A lone CR is not a line break (same as read), so a CR-only file is one line.
Context: use before/after/context to include surrounding lines (like grep -B/-A/-C).
Large result sets stay usable: max_results supports up to 100000, while max_line_chars
and max_output_chars bound the text returned to the agent. has_more and a visible
continuation hint report when additional grep output exists.
Directory search skips binary files (extension list + NUL-byte sniff); pass a binary file
directly as path to search it anyway.Input schema{
"type": "object",
"properties": {
"pattern": {
"type": "string",
"description": "Regular expression pattern to search for"
},
"path": {
"type": "string",
"description": "File or directory to search. Defaults to configured workspace, MCP client root, or current directory"
},
"file_path": {
"type": "string",
"description": "Alias for path"
},
"glob": {
"type": "string",
"description": "Glob pattern to filter files (e.g. *.go). Only used when path is a directory"
},
"ignore_case": {
"type": "boolean",
"description": "Case-insensitive search. Default: false"
},
"recursive": {
"type": [
"null",
"boolean"
],
"description": "Recurse into subdirectories. Default: true"
},
"max_results": {
"type": "integer",
"description": "Maximum matching lines/files per page. Default: 100, Max: 100000"
},
"output_mode": {
"type": "string",
"description": "Output mode: content (default), files_with_matches, or count"
},
"output_format": {
"type": "string",
"description": "Content layout: compact (group matches by file, default) or classic (path:line:text on every line)"
},
"context": {
"type": "integer",
"description": "Lines before and after each match (like grep -C). Default: 0, Max: 1000"
},
"before": {
"type": "integer",
"description": "Lines before each match. Overrides context. Default: 0, Max: 1000"
},
"after": {
"type": "integer",
"description": "Lines after each match. Overrides context. Default: 0, Max: 1000"
},
"max_line_chars": {
"type": "integer",
"description": "Maximum characters per matching/context line. Default: 4000, Max: 32768"
},
"max_output_chars": {
"type": "integer",
"description": "Maximum total result characters. Default: 32768, Max: 131072"
},
"relative_paths": {
"type": [
"null",
"boolean"
],
"description": "Return paths relative to the search root. Default: true for directory searches"
},
"include_hidden": {
"type": "boolean",
"description": "Search hidden directories. Explicitly provided hidden roots are always searched. Default: false"
},
"include_ignored": {
"type": "boolean",
"description": "Search common generated/vendor directories instead of skipping them. Default: false"
},
"cursor": {
"type": "string",
"description": "Opaque continuation cursor returned by a previous grep call. Not supported with context lines"
}
},
"required": [
"pattern"
],
"additionalProperties": false
} | — | — · — | — |
listdirLists directory contents with bounded, pageable output.
Default: flat listing, max_depth=3, max_entries=500.
When has_more=true, pass next_cursor as cursor to fetch the next page.
Filter by type with directories_only or files_only, and by entry-name glob with name_pattern (single) or include (multiple OR patterns, e.g. ["A*", "*.go"]).
Use counts_only=true for counts without names, flat=false for a visual tree, and relative_paths=true to save tokens.
Skips hidden entries and common build/vendor directories during recursion.Input schema{
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Directory to list. Relative paths use the configured workspace or MCP client root"
},
"file_path": {
"type": "string",
"description": "Alias for path"
},
"max_depth": {
"type": "integer",
"description": "Maximum depth for traversal. Default: 3"
},
"max_entries": {
"type": "integer",
"description": "Maximum entries to return per page. Default: 500, maximum: 10000"
},
"cursor": {
"type": "string",
"description": "Opaque continuation cursor returned by a previous listdir call"
},
"relative_paths": {
"type": "boolean",
"description": "Show paths relative to the root. Saves tokens: true or false. Default: false"
},
"flat": {
"type": [
"null",
"boolean"
],
"description": "Flat listing without tree connectors (one path per line). Default: true"
},
"directories_only": {
"type": "boolean",
"description": "Return directories only while still traversing them: true or false. Default: false"
},
"files_only": {
"type": "boolean",
"description": "Return files only: true or false. Default: false"
},
"name_pattern": {
"type": "string",
"description": "Glob matched against each entry name, for example A* or *.go"
},
"include": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Additional entry-name glob patterns. An entry is included when any pattern matches"
},
"counts_only": {
"type": "boolean",
"description": "Return matching directory/file counts without listing names: true or false. Default: false"
}
},
"additionalProperties": false
} | — | — · — | — |
multieditApplies multiple old_string -> new_string replacements to a single file in one call.
Edits are applied sequentially in order; each edit sees the result of the previous one.
Atomic: if any edit fails, the file is not modified at all.
Encoding-aware: preserves original file encoding (UTF-8, EUC-KR, Shift-JIS, etc.).
Line-ending aware: old_string matches whether the file uses CRLF or LF, and inserted newlines follow the region being edited (mixed-newline files stay intact).
Accepts "path" as alias for "file_path".
Use dry_run=true to preview all changes without modifying the file.Input schema{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "File to edit. Relative paths use the configured workspace or MCP client root"
},
"path": {
"type": "string",
"description": "Alias for file_path"
},
"edits": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"old_string": {
"type": "string",
"description": "Exact text to find"
},
"new_string": {
"type": "string",
"description": "Replacement text"
},
"replace_all": {
"description": "Replace all occurrences instead of just the first: true or false. Default: false"
}
},
"required": [
"old_string",
"new_string"
],
"additionalProperties": false
},
"description": "Ordered list of replacements to apply sequentially"
},
"dry_run": {
"type": "boolean",
"description": "Preview changes without modifying the file: true or false. Default: false"
}
},
"required": [
"edits"
],
"additionalProperties": false
} | — | — · — | — |
multireadReads multiple files in a single call to reduce API round-trips.
Encoding-aware: auto-detects file encoding for each file.
Supports offset/limit for reading specific line ranges.
Defaults to 200 lines per file and 32768 characters total across the call.
Returns visible per-file and overall truncation metadata with continuation positions.
Use file_paths or paths (string array) with global offset/limit, or files (object array) for per-file offset/limit.
If a file fails, the error is included in output and remaining files continue.
Maximum 50 files per request.Input schema{
"type": "object",
"properties": {
"file_paths": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "File paths to read. All files use the global offset/limit. Use files for per-file ranges"
},
"paths": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Compatibility alias for file_paths; prefer file_paths"
},
"offset": {
"type": [
"null",
"integer"
],
"description": "Line number to start from (1-based, negative = from end). Default: 1"
},
"limit": {
"type": [
"null",
"integer"
],
"description": "Maximum lines per file. Default: 200. Set 0 or all=true to remove the line limit"
},
"all": {
"type": "boolean",
"description": "Remove the default per-file line limit. The total character budget still applies. Default: false"
},
"max_output_chars": {
"type": "integer",
"description": "Maximum total returned text characters across all files. Default: 32768, Max: 131072"
},
"max_line_chars": {
"type": "integer",
"description": "Maximum characters returned from one line. Default: 4000, Max: 32768"
},
"include_hash": {
"type": "boolean",
"description": "Include per-file SHA-256 hashes. Default: false"
},
"files": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Absolute or workspace-relative file path"
},
"offset": {
"type": [
"null",
"integer"
],
"description": "Line offset (1-based, negative = from end). Default: 1"
},
"limit": {
"type": [
"null",
"integer"
],
"description": "Max lines to read. Default: 200. Set 0 to remove the line limit"
}
},
"required": [
"path"
],
"additionalProperties": false
},
"description": "Per-file read ranges. Each entry has path, offset, limit. Takes priority over file_paths"
}
},
"additionalProperties": false
} | — | — · — | — |
patchApplies a unified diff patch to a file.
Parses @@ hunk headers, verifies context lines, and applies changes.
Encoding-aware: preserves original file encoding.
Line-ending aware: each line keeps its own ending (a mixed CRLF/LF file is not rewritten) and a file without a trailing newline does not gain one.
Use dry_run=true to preview without modifying the file.Input schema{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "File to patch. Relative paths use the configured workspace or MCP client root"
},
"path": {
"type": "string",
"description": "Alias for file_path"
},
"patch": {
"type": "string",
"description": "Unified diff text (output of the diff tool)"
},
"dry_run": {
"type": "boolean",
"description": "Preview patch result without modifying the file: true or false. Default: false"
}
},
"required": [
"patch"
],
"additionalProperties": false
} | — | — · — | — |
readReads a file and returns its contents with line numbers.
Encoding-aware: auto-detects file encoding (UTF-8, EUC-KR, Shift-JIS, etc.).
Image files (PNG, JPG, GIF, BMP, WebP, TIFF, ICO) are returned as ImageContent (base64).
SVG files are returned as text. Supports offset/limit for reading specific line ranges.
Text defaults to 400 lines and 32768 characters; use offset/limit to continue.
Every text result ends with total line count, truncation state, and next_offset when more is available.
Negative offset reads from end (e.g. offset=-5 reads last 5 lines).
Offset accepts integer, string range "100-200", or [start, end] array.
Accepts "path" as alias for "file_path". Relative paths use the configured workspace, MCP client root, or server CWD in that order.Input schema{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "Absolute or workspace-relative path to the file to read"
},
"path": {
"type": "string",
"description": "Compatibility alias for file_path; prefer file_path"
},
"offset": {
"description": "Line offset. Integer (1-based, negative=from end), string range 'start-end', or [start,end] array. Default: 1"
},
"limit": {
"type": [
"null",
"integer"
],
"description": "Maximum lines to return. Default: 400. Set 0 or all=true to remove the line limit; the character budget still applies"
},
"start_line": {
"type": [
"null",
"integer"
],
"description": "Compatibility alias for offset; prefer offset"
},
"end_line": {
"type": [
"null",
"integer"
],
"description": "Inclusive end line used with start_line"
},
"all": {
"type": "boolean",
"description": "Remove the default line limit. The max_output_chars safety budget still applies. Default: false"
},
"max_output_chars": {
"type": "integer",
"description": "Maximum returned text characters. Default: 32768, Max: 131072"
},
"max_line_chars": {
"type": "integer",
"description": "Maximum characters returned from one line. Default: 4000, Max: 32768"
},
"include_hash": {
"type": [
"null",
"boolean"
],
"description": "Include SHA-256 for optimistic edit concurrency. Default: true"
}
},
"additionalProperties": false
} | — | — · — | — |
toolboxDiscover and call any AgentTool capability without loading every tool schema into the model context.
Use operation=describe with tool=<name> to fetch one tool's instructions and input schema, then operation=call with tool=<name> and arguments={...} to invoke it. This gateway works even when the MCP client ignores tools/list_changed.
Use operation=output with output_id=<raw_output_id> to retrieve bounded raw command output preserved after diagnostic compaction. Large records report next_offset for paging and expire after 30 minutes.
Use operation=list to see active and available tools. enable/disable/profile also expose direct tool bindings on clients that refresh dynamically.
Profiles: core (compact file/search tools), coding, remote, analysis, full.Input schema{
"type": "object",
"properties": {
"operation": {
"type": "string",
"description": "Operation: list (default), describe, call, output, enable, disable, profile. Prefer describe/call because they work even when the MCP client ignores dynamic tool-list changes"
},
"tools": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Individual tool names to enable or disable"
},
"groups": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Tool groups to enable or disable: core, file, coding, system, remote, data, analysis, windows"
},
"profile": {
"type": "string",
"description": "Profile for operation=profile: core, coding, remote, analysis, full"
},
"tool": {
"type": "string",
"description": "Single tool name for operation=describe or call"
},
"arguments": {
"type": "object",
"description": "Target tool arguments for operation=call. Use operation=describe first when the schema is unknown",
"additionalProperties": true
},
"output_id": {
"type": "string",
"description": "Preserved raw command output ID for operation=output"
},
"output_offset": {
"type": "integer",
"description": "Character offset for operation=output paging. Default: 0"
},
"output_max_chars": {
"type": "integer",
"description": "Maximum raw-output characters returned by operation=output. Default: 32768, Max: 130048"
}
},
"additionalProperties": false
} | — | — · — | — |
writeCreates or overwrites a file with the given content.
Encoding-aware: preserves original encoding for existing files, uses .editorconfig hints for new files.
Auto-creates parent directories if they don't exist.Input schema{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "File to write. Relative paths use the configured workspace or MCP client root"
},
"path": {
"type": "string",
"description": "Alias for file_path"
},
"content": {
"type": "string",
"description": "Content to write to the file"
}
},
"required": [
"content"
],
"additionalProperties": false
} | — | — · — | — |