← agent-tool

agent-tool v0.9.5+sha256.8d66dcd247b1

github_release · knewstimek/agent-tool · current release

11
Tools
0
Resources
0
Templates
0
Prompts

Observation

Observed 2026-08-31T13:15:16.268Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.

Server capabilities
{
  "logging": {},
  "tools": {
    "listChanged": true
  }
}

Tools 11

ToolCategoryAnnotationsRisk
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
}
— · —

Resources 0

Resource templates 0

Prompts 0

Let’s talk about MCP security.

Share your details and our security team will contact you.