Skip to main content
Glama

エディターMCP

FastMCPで構築されたPythonベースのテキストエディタサーバーは、強力なファイル操作ツールを提供します。このサーバーは、標準化されたAPIと独自のマルチステップアプローチを介してテキストファイルの読み取り、編集、管理を可能にし、LLMやAIアシスタントのコード編集の精度と信頼性を大幅に向上させます。

特徴

  • ファイルの選択: 絶対パスを使用して作業するファイルを設定する

  • 読み取り操作:

    • skimを使用して行番号付きのファイル全体を読み取る

    • readを使用して、先頭に行番号を付けた特定の行範囲を読み取ります。

    • find_lineを使用してファイル内の特定のテキストを検索する

    • find_functionを使用して Python および JavaScript/JSX ファイル内の関数定義を検索して抽出します。

  • 編集操作:

    • 差分プレビュー付きの2段階編集プロセス

    • ID認証でテキストを選択して上書きする

    • 選択→上書き→パターンの確認/キャンセルによるクリーンな編集ワークフロー

    • Python (.py) および JavaScript/React (.js、.jsx) ファイルの構文チェック

    • コンテンツを含む新しいファイルを作成する

  • ファイル管理:

    • 適切な初期化で新しいファイルを作成する

    • ファイルシステムからファイルを削除する

    • listdirでディレクトリの内容を一覧表示する

  • テストサポート:

    • run_testsで Python テストを実行する

    • 適切なモジュール解決のためにPythonパスを設定する

  • 安全機能:

    • 競合を防ぐためのコンテンツID検証

    • リソース枯渇を防ぐための行数制限

    • コードの整合性を維持するための構文チェック

    • 機密ファイルへのアクセスを制限するための保護されたパス

Related MCP server: MCP File Manager

セキュリティリスク

editor-mcp には、特定のセキュリティ上の考慮事項を伴う強力な機能が含まれています。

  • 脱獄リスク:有害な命令が埋め込まれたファイルを読み込んだ場合、editor-mcp は脱獄される可能性があります。編集中のファイル内の悪意のあるコンテンツには、AI アシスタントを操作する命令が含まれている可能性があります。

  • 任意のコード実行: テストの実行が有効になっている場合、操作されたテスト ファイルまたは悪意のある Python コードによって任意のコードが実行されるリスクがあります。

  • データの公開: 適切なパス保護が構成されていない場合、ファイル システム操作へのアクセスによって機密情報が公開される場合があります。

これらのリスクを軽減するには:

  1. 機密ファイルとディレクトリへのアクセスを制限するには、 PROTECTED_PATHS環境変数を使用します。

  2. 絶対に必要な場合を除き、運用環境でのテスト実行機能を無効にします。

  3. 特に信頼できないソースから送信されたファイルの場合は、開く前にファイルを慎重に確認してください。

  4. 権限が制限されたサンドボックス環境でエディターを実行することを検討してください。

LLMの主な利点

このテキスト エディターの独自の設計により、LLM コード編集に通常影響する重大な問題が解決されます。

  • コンテキストの喪失を防止- 従来のアプローチでは、LLMが数回の編集でコードベースの概要を把握できなくなることがよくあります。この実装では、複数のステップにわたるプロセスを通じてコンテキストが維持されます。

  • リソースを大量に消費する書き換えを回避- LLMは通常、混乱が生じた場合にファイル全体を置き換えてしまうため、コストがかかり、処理が遅く、非効率的です。このエディターは、選択的な編集を強制します。

  • 視覚的なフィードバックを提供- 差分プレビュー システムにより、LLM は変更をコミットする前に実際に変更を確認して検証できるため、エラーが大幅に削減されます。

  • 構文チェックを強制- Python および JavaScript/React の自動検証により、壊れたコードがコミットされないようにします。

  • 編集推論の改善- マルチステップ アプローチにより、LLM はステップ間で推論する時間を確保でき、無計画なトークン生成を削減できます。

リソース管理

エディターは、システムの安定性を確保し、リソースの枯渇を防ぐために、いくつかの安全策を実装しています。

  • 最大編集行数: デフォルトでは、エディターは1回の編集操作につき50行の制限を適用します。

インストール

このMCPはClaude Desktopで開発およびテストされています。Claude Desktopはどのプラットフォームでもダウンロードできます。Linux版Claude Desktopの場合は、非公式インストールスクリプト(公式ファイルを使用)を使用できます。推奨リポジトリ: https ://github.com/emsi/claude-desktop/tree/main

Claude Desktop をインストールしたら、以下の手順に従ってこの特定の MCP をインストールします。

UVXによる簡単なインストール(推奨)

Editor MCP をインストールする最も簡単な方法は、提供されているインストール スクリプトを使用することです。

# Clone the repository
git clone https://github.com/danielpodrazka/editor-mcp.git
cd editor-mcp

# Run the installation script
chmod +x install.sh
./install.sh

このスクリプトは次のことを行います。

  1. UVXがインストールされているかどうかを確認し、必要に応じてインストールします。

  2. 開発モードでエディターMCPをインストールする

  3. editor-mcpコマンドをPATHで利用できるようにします

手動インストール

UVXの使用

# Install directly from GitHub
uvx install git+https://github.com/danielpodrazka/mcp-text-editor.git

# Or install from a local clone
git clone https://github.com/danielpodrazka/mcp-text-editor.git
cd mcp-text-editor
uvx install -e .

従来のpipの使用

pip install git+https://github.com/danielpodrazka/mcp-text-editor.git

# Or from a local clone
git clone https://github.com/danielpodrazka/mcp-text-editor.git
cd mcp-text-editor
pip install -e .

要件の使用(レガシー)

ロック ファイルからインストールします。

uv pip install -r uv.lock

ロックされた要件ファイルの生成:

uv pip compile requirements.in -o uv.lock

使用法

サーバーの起動

インストール後、次のいずれかの方法で Editor MCP サーバーを起動できます。

# Using the installed script
editor-mcp

# Or using the Python module
python -m text_editor.server

MCP構成

エディター MCP を MCP 構成ファイルに追加できます。

{
  "mcpServers": {
     "text-editor": {
       "command": "editor-mcp",
       "env": {
         "MAX_SELECT_LINES": "100",
         "ENABLE_JS_SYNTAX_CHECK": "0",
         "FAIL_ON_PYTHON_SYNTAX_ERROR": "1",
         "FAIL_ON_JS_SYNTAX_ERROR": "0",
         "PROTECTED_PATHS": "*.env,.env*,config*.json,*secret*,/etc/passwd,/home/user/.ssh/id_rsa"
       }
     }
  }
}

環境変数の設定

エディター MCP は、動作をカスタマイズするためのいくつかの環境変数をサポートしています。

  • MAX_SELECT_LINES : "100" - 1回の操作で編集できる行の最大数(デフォルトは50)

  • ENABLE_JS_SYNTAX_CHECK : "0" - JavaScript および JSX 構文チェックを有効/無効にする (デフォルトは "1" - 有効)

  • FAIL_ON_PYTHON_SYNTAX_ERROR : "1" - 有効にすると、Python構文エラーによって上書き操作が自動的にキャンセルされます(デフォルトでは有効)

  • FAIL_ON_JS_SYNTAX_ERROR : "0" - 有効にすると、JavaScript/JSX 構文エラーによって上書き操作が自動的にキャンセルされます (デフォルトは無効)

  • PROTECTED_PATHS : アクセスできないファイルパターンまたはパスのコンマ区切りリスト。ワイルドカードをサポートします(例:「 .env,.env ,/etc/passwd」)

ソースからビルドする場合のサンプル MCP 構成

{
  "mcpServers": {
     "text-editor": {
       "command": "/home/daniel/pp/venvs/editor-mcp/bin/python",
       "args": ["/home/daniel/pp/editor-mcp/src/text_editor/server.py"],
        "env": {
          "MAX_SELECT_LINES": "100",
          "ENABLE_JS_SYNTAX_CHECK": "0",
          "FAIL_ON_PYTHON_SYNTAX_ERROR": "1",
          "FAIL_ON_JS_SYNTAX_ERROR": "0",
          "PROTECTED_PATHS": "*.env,.env*,config*.json,*secret*,/etc/passwd,/home/user/.ssh/id_rsa"
        }
     }
  }
}

利用可能なツール

エディター MCP は、ファイルの操作、編集、テストのための 13 個の強力なツールを提供します。

1. set_file

作業する現在のファイルを設定します。

パラメータ:

  • filepath (str): ファイルへの絶対パス

戻り値:

  • ファイルパスを含む確認メッセージ

2. skim

現在のファイルから全文を読み取ります。各行の先頭には行番号が付きます。

戻り値:

  • 行番号、行の総数、最大編集行数の設定を含む行を含む辞書

出力例:

{
  "lines": [
    [1, "def hello():"],
    [2, "    print(\"Hello, world!\")"],
    [3, ""],
    [4, "hello()"]
  ],
  "total_lines": 4,
  "max_select_lines": 50
}

3. read

現在のファイルから開始行から終了行までテキストを読み取ります。

パラメータ:

  • start (int): 開始行番号(1から始まるインデックス)

  • end (int): 終了行番号(1から始まるインデックス)

戻り値:

  • 行番号をキーとして持つ行と、開始行と終了行の情報を含む辞書

出力例:

{
  "lines": [
    [1, "def hello():"],
    [2, "    print(\"Hello, world!\")"],
    [3, ""],
    [4, "hello()"]
  ],
  "start_line": 1,
  "end_line": 4
}

4. select

後続の上書き操作のために、現在のファイルから行の範囲を選択します。

パラメータ:

  • start (int): 開始行番号(1から始まる)

  • end (int): 終了行番号(1から始まる)

戻り値:

  • 検証用に選択された行、行範囲、および ID を含む辞書

注記:

  • このツールは、max_select_linesに対して選択を検証します。

  • 選択内容は上書きツールで使用するために保存されます

  • 上書きツールを呼び出す前にこれを使用する必要があります

5. overwrite

現在のファイル内の一定範囲の行を新しいテキストで上書きする準備をします。

パラメータ:

  • new_lines (リスト): 選択範囲を上書きする新しい行のリスト

戻り値:

  • 提案された変更を示す差分プレビュー

注記:

  • これは 2 段階のプロセスの最初のステップです。

    1. まずoverwrite()を呼び出して差分プレビューを生成します

    2. 次に、confirm() を呼び出して適用するか、cancel() を呼び出して保留中の変更を破棄します。

  • このツールは、以前に選択した行を新しいコンテンツに置き換えることができます。

  • 新しい行の数は元の選択と異なる場合があります

  • Pythonファイル(.py拡張子)の場合、書き込む前に構文チェックが実行されます。

  • JavaScript/Reactファイル(拡張子.js、.jsx)の場合、構文チェックはオプションであり、 ENABLE_JS_SYNTAX_CHECK環境変数で無効にすることができます。

6. confirm

上書き操作からの保留中の変更を適用します。

戻り値:

  • ステータスとメッセージを含む操作結果

注記:

  • これは編集プロセスの2番目のステップで実行できる2つのアクションのうちの1つです。

  • 変更が正常に適用されると選択は削除されます

7. cancel

上書き操作から保留中の変更を破棄します。

戻り値:

  • ステータスとメッセージを含む操作結果

注記:

  • これは編集プロセスの2番目のステップで実行できる2つのアクションのうちの1つです。

  • 変更をキャンセルしても選択はそのまま残ります

8. delete_file

現在設定されているファイルを削除します。

戻り値:

  • ステータスとメッセージを含む操作結果

9. new_file

新しいファイルを作成します。

パラメータ:

  • absolute_file_path (str): 新しいファイルのパス

戻り値:

  • 該当する場合、コンテンツのステータスと ID を含む操作結果

注記:

  • 現在のファイルが存在し、空でない場合、このツールは失敗します

10. find_line

現在のファイル内で指定されたテキストに一致する行を検索します。

パラメータ:

  • search_text (str): ファイル内で検索するテキスト

戻り値:

  • 一致する行とその行番号および一致の合計を含む辞書

出力例:

{
  "status": "success",
  "matches": [
    [2, "    print(\"Hello, world!\")"]
  ],
  "total_matches": 1
}

注記:

  • ファイルパスが設定されていない場合はエラーを返します

  • 各行内のテキストの完全一致を検索します

  • このIDは後続の編集操作に使用できます

11. find_function

現在の Python または JavaScript/JSX ファイル内の関数またはメソッドの定義を検索します。

パラメータ:

  • function_name (str): 検索する関数またはメソッドの名前

戻り値:

  • 関数の行番号、start_line、end_line を含む辞書

出力例:

{
  "status": "success",
  "lines": [
    [10, "def hello():"],
    [11, "    print(\"Hello, world!\")"],
    [12, "    return True"]
  ],
  "start_line": 10,
  "end_line": 12
}

注記:

  • Pythonファイルの場合、このツールはPythonのASTとトークン化モジュールを使用して、デコレータやドキュメント文字列を含む関数の境界を正確に識別します。

  • JavaScript/JSX ファイルの場合、このツールは複数のアプローチを組み合わせて使用します。

    • 主な方法: Babel AST 解析 (利用可能な場合) (Node.js および Babel パッケージが必要)

    • フォールバック方法: Babel が利用できない場合の関数宣言の正規表現パターンマッチング

  • 標準関数、非同期関数、矢印関数、React フックなど、さまざまな JavaScript 関数タイプをサポートします。

  • ファイルパスが設定されていない場合、または関数が見つからない場合はエラーを返します。

12. listdir

ディレクトリの内容を一覧表示します。

パラメータ:

  • dirpath (str): リストするディレクトリへのパス

戻り値:

  • ファイル名とクエリされたパスのリストを含む辞書

13. run_testsとset_python_path

pytest を使用して Python テストを実行し、Python 環境を構成するためのツール。

  • JavaScript 構文チェックを無効にするには、「0」、「false」、または「no」に設定します

  • Babelと関連する依存関係がインストールされていない場合に便利です

  • FAIL_ON_PYTHON_SYNTAX_ERROR : Python構文エラーが発生した場合に上書き操作を自動的にキャンセルするかどうかを制御します(デフォルト: 1)

    • 有効にすると、Python ファイルの構文エラーにより上書きアクションが自動的にキャンセルされます。

    • 線は選択されたままなので、エラーを修正して再試行できます。

  • FAIL_ON_JS_SYNTAX_ERROR : JavaScript/JSX 構文エラーが発生した場合に上書き操作を自動的にキャンセルするかどうかを制御します (デフォルト: 0)

    • 有効にすると、JavaScript/JSX ファイルの構文エラーにより上書きアクションが自動的にキャンセルされます。

    • 線は選択されたままなので、エラーを修正して再試行できます。

  • DUCKDB_USAGE_STATS : DuckDBデータベースで使用状況統計を収集するかどうかを制御します(デフォルト: 0)

    • ツールの使用統計の収集を有効にするには、「1」、「true」、または「yes」に設定します

    • 有効にすると、タイムスタンプや引数を含む各ツール呼び出しに関する情報を記録します。

  • STATS_DB_PATH : 統計用のDuckDBデータベースが保存されるパス(デフォルト: "text_editor_stats.duckdb")

    • DUCKDB_USAGE_STATSが有効な場合にのみ使用されます

  • PROTECTED_PATHS : アクセスを拒否するファイルパターンまたは絶対パスのカンマ区切りリスト

    • 例: *.env,.env*,config*.json,*secret*,/etc/passwd,/home/user/credentials.txt

    • 正確なファイル パスと、任意の位置でワイルドカードを使用できる柔軟な glob パターンの両方をサポートします。

      • *.env - .env 、 dev.env 、 prod.envなど、 .env で終わるファイルに一致します。

      • .env* - .env 、 .env.local 、 .env.productionなど、 .env で始まるファイルに一致します。

      • *secret* - 名前に「secret」を含むファイルに一致します

    • 機密性の高い構成ファイルや資格情報が誤って公開されることを防ぎます

    • 線は選択されたままなので、エラーを修正して再試行できます。

発達

前提条件

editor-mcp には以下が必要です:

  • Python 3.7以上

  • FastMCPパッケージ

  • 黒(Pythonコードのフォーマットチェック用)

  • Babel (JavaScript/JSX ファイルで作業する場合の構文チェック用)

開発依存関係をインストールします。

# Using pip
pip install pytest pytest-asyncio pytest-cov

# Using uv
uv pip install pytest pytest-asyncio pytest-cov

JavaScript/JSXの構文検証には、Node.jsとBabelが必要です。テキストエディターは、以下のファイル形式の編集時にnpx babelを使用してJS/JSXの構文をチェックします。

# Required for JavaScript/JSX syntax checking
npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/preset-react
# You can also install these globally if you prefer
# npm install -g @babel/core @babel/cli @babel/preset-env @babel/preset-react

エディターには以下が必要です:

  • @babel/coreと@babel/cli - 構文チェック用のコア Babel パッケージ

  • @babel/preset-env - 標準の JavaScript (.js) ファイル用

  • @babel/preset-react - React JSX (.jsx) ファイル用

テストの実行

# Run tests
pytest -v

# Run tests with coverage
pytest -v --cov=text_editor

テスト構造

テスト スイートは以下をカバーします。

  1. set_file ツール

    • 有効なファイルの設定

    • 存在しないファイルの設定

  2. 読み取りツール

    • ファイル状態の検証

    • ファイル全体の読み取り

    • 特定の行範囲の読み取り

    • 空のファイルのようなエッジケース

    • 無効な範囲の処理

  3. 選択ツール

    • 行範囲の検証

    • max_select_linesに対する選択検証

    • 後続の操作のための選択保存

  4. 上書きツール

    • IDを使用した選択したコンテンツの検証

    • コンテンツ置換の検証

    • Python および JavaScript/React ファイルの構文チェック

    • 変更の差分プレビューの生成

  5. ツールの確認とキャンセル

    • 保留中の変更を適用またはキャンセルする

    • 2段階認証プロセス

  6. ファイル削除ツール

    • ファイル削除の検証

  7. 新しいファイルツール

    • ファイル作成の検証

    • 既存ファイルの処理

  8. find_line ツール

    • ファイル内のテキスト一致の検索

    • 特定の検索用語の処理

    • 存在しないファイルのエラー処理

    • 一致しないケースの処理

    • 既存ファイルの処理

仕組み

多段階編集アプローチ

LLM が単に編集する行を検索して置換するだけの従来のコード編集アプローチ (複数回の編集後に混乱が生じることが多い) とは異なり、このエディターは構造化された複数ステップのワークフローを実装し、編集の精度を大幅に向上させます。

  1. set_file - まず、LLMは編集したいファイルを設定します

  2. skim - LLMはファイル全体を読み取り、完全な概要を取得します。

  3. 読む- LLMはタスクに関連する特定のセクションを調べ、より良い文脈のために数字の横に行を表示します。

  4. 選択- 編集の準備ができたら、LLM は特定の行を選択します (設定可能な数に制限され、デフォルトは 50)

  5. 上書き- LLMは置換コンテンツを提案し、何が変更されるかを正確に示すgit diffスタイルのプレビューを表示します。

  6. 確認/キャンセル- プレビューを確認した後、LLMは変更を適用するか破棄するかを選択できます。

この構造化されたワークフローにより、LLMは各編集について慎重に判断するようになり、誤ってファイル全体を上書きしてしまうといったよくあるエラーを防止できます。変更をコミットする前にプレビューを確認できるため、LLMは編集内容が正しいことを確認できます。

ID認証システム

サーバーはFastMCPを使用して、明確に定義されたAPIを通じてテキスト編集機能を提供します。ID検証システムは、読み取り操作と変更操作の間でコンテンツが変更されていないことを検証することで、データの整合性を保証します。

IDメカニズムは、SHA-256を使用して、ファイルコンテンツまたは選択された行範囲の一意の識別子を生成します。行指定の操作の場合、IDには行範囲を示すプレフィックス(例:"L10-15-[ハッシュ]")が含まれます。これにより、編集が期待されるコンテンツに適用されていることを確認できます。

実装の詳細

メインのTextEditorServerクラス:

  1. 「text-editor」という名前のFastMCPインスタンスで初期化します。

  2. 環境変数から設定可能なmax_select_lines制限(デフォルト: 50)を設定します。

  3. 現在のファイルパスを状態として維持する

  4. FastMCP を通じて 13 個の主要ツールを登録します。

    • set_file : 現在のファイルパスを検証して設定します

    • skim : ファイルの内容全体を読み取り、行番号から行テキストまでの辞書を返します。

    • read : 指定された行範囲から行を読み取り、行の内容の構造化された辞書を返します。

    • select : 後続の上書き操作の対象となる行を選択する

    • overwrite : 新しい行のリストを取得し、変更されたコンテンツの差分プレビューを準備します。

    • confirm : 上書き操作から保留中の変更を適用します

    • cancel : 上書き操作から保留中の変更を破棄します

    • delete_file : 現在のファイルを削除する

    • new_file : 新しいファイルを作成する

    • find_line : 特定のテキストを含む行を検索します

    • find_function : Python および JavaScript/JSX ファイル内の関数またはメソッドの定義を検索します

    • listdir : ディレクトリの内容を一覧表示する

    • run_testsとset_python_path : Python テストを実行するためのツール

サーバーはデフォルトで FastMCP の stdio トランスポートを使用して実行されるため、さまざまなクライアントとの統合が容易になります。

最良の結果を得るためのシステムプロンプト

AI アシスタントで最適な結果を得るには、AI が管理しやすく安全な編集を行えるようにガイドするシステム プロンプト ( system_prompt.mdを参照) を使用することをお勧めします。

このシステム プロンプトは、AI アシスタントを支援します。

  1. 段階的な変更- 編集を小さな部分に分割する

  2. コードの整合性を維持する- コードの機能性を維持する変更を加える

  3. リソース制限内で作業する- システムに過大な負担をかける可能性のある操作を避ける

  4. 検証ワークフローに従う- 編集後にエラーがないか最終チェックを行う

AI アシスタントを使用するときにこのシステム プロンプトを組み込むことで、編集動作の信頼性が向上し、自動コード編集でよくある落とし穴を回避できます。

例.png

使用状況統計

テキスト エディター MCP を有効にすると、使用状況の統計を収集して、編集ツールの使用状況に関する洞察を提供できます。

  • データ収集: DUCKDB_USAGE_STATSが有効な場合、統計は DuckDB データベースに収集されます。

  • 追跡情報: ツール名、引数、タイムスタンプ、現在のファイルパス、ツール応答、リクエスト/クライアントIDを記録します。

  • 保存場所: データはSTATS_DB_PATHで指定されたDuckDBファイルに保存されます。

  • プライバシー: すべてがローカルマシンに保存されます

収集された統計情報は、使用パターンを理解し、一般的なワークフローを特定し、最も頻繁に実行される操作に合わせてエディターを最適化するのに役立ちます。

任意の DuckDB クライアントを介して標準 SQL を使用してデータベースをクエリし、使用パターンを分析できます。

トラブルシューティング

問題が発生した場合:

  1. ファイルの権限を確認する

  2. ファイルパスが絶対パスであることを確認する

  3. 環境が Python 3.7 以上を使用していることを確認する

インスピレーション

同様のプロジェクトhttps://github.com/tumf/mcp-text-editorに触発され、最初はこれをフォークしましたが、全体的なアイデアだけは同じままにするために、コードベース全体を最初から書き直すことにしました。

Available Tools

14 tools
cancelD

Cancel action

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

D1.9/5.0
Behavior1/5

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. 'Cancel action' gives no information about what the tool actually does behaviorally - whether it's a read-only status change, a destructive operation, what permissions are required, what side effects occur, or what the typical response looks like. The description is completely inadequate for understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While 'Cancel action' is extremely brief, this is under-specification rather than effective conciseness. The two words fail to provide necessary information about the tool's purpose and usage. True conciseness would efficiently convey essential information, but this description is so sparse that it's essentially non-functional as documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has no parameters but likely performs some meaningful action (cancellation), the description is incomplete. With no annotations to provide behavioral context and a description that offers only the most minimal information, an agent would struggle to understand when and how to use this tool appropriately. The existence of an output schema helps somewhat, but the description itself provides insufficient context for effective tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the parameter situation (none). The description doesn't need to compensate for any parameter documentation gaps. The baseline for zero parameters with full schema coverage is 4, as there are no parameters whose semantics need explanation beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Cancel action' is a tautology that essentially restates the tool name 'cancel'. It doesn't specify what type of action gets canceled, what resource is affected, or what the cancellation entails. While the name suggests a general cancellation function, the description adds no meaningful clarification beyond the name itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides absolutely no guidance on when to use this tool versus alternatives. With sibling tools like 'confirm', 'delete_file', 'overwrite', and others that might represent different actions or states, there's no indication of what context triggers a cancellation, what prerequisites exist, or what alternatives might be appropriate in different scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

confirmC

Confirm action

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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. 'Confirm action' implies a mutation (confirmation typically changes state), but it doesn't specify what gets confirmed, whether it's reversible, what permissions are needed, or what the response contains. This leaves significant gaps for a tool that likely modifies workflow state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise ('Confirm action') but arguably under-specified rather than efficiently informative. While it wastes no words, it fails to provide the minimal context needed to understand what's being confirmed, making this brevity problematic rather than virtuous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool likely performs a state-changing confirmation (implied by the name and sibling tools like 'cancel'), the description is incomplete. With no annotations, no parameter documentation needed, but an output schema exists, the description should at least clarify what action is confirmed and in what context, which it fails to do.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters with 100% schema description coverage, so the schema already fully documents the absence of inputs. The description doesn't need to compensate for any parameter gaps, and 'Confirm action' appropriately implies no additional inputs are required for a simple confirmation operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Confirm action' is a tautology that essentially restates the tool name 'confirm' without specifying what action is being confirmed or what resource is involved. It provides no differentiation from sibling tools like 'cancel' or 'select' that might also involve confirmation-like operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description doesn't indicate what context triggers its use, what prerequisites exist, or how it differs from sibling tools like 'cancel' (which might abort an action) or 'select' (which might choose among options).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_fileC

Delete current file

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states the action without behavioral details. It doesn't disclose if deletion is permanent, requires permissions, has side effects, or what happens on success/failure. 'Delete' implies destructive mutation, but specifics are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise at two words, front-loaded with the core action. Every word earns its place with no wasted text, though this brevity contributes to vagueness in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no annotations, the description is incomplete. It lacks context on what 'current' means, deletion behavior, permissions, or output. The presence of an output schema helps, but the description doesn't leverage it to explain return values or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema coverage, so no parameter documentation is needed. The description doesn't add param info, but that's appropriate here, meeting the baseline for zero-param tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Delete current file' clearly states the action (delete) and target (current file), but it's vague about what 'current' refers to in context. It doesn't distinguish this from potential sibling operations like 'overwrite' or 'cancel' that might also modify files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'overwrite' or 'cancel'. The description implies it's for deletion but doesn't specify prerequisites, conditions, or what makes a file 'current'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_functionA

Find a function or method definition in a Python or JS/JSX file. Uses AST parsers.

Args: function_name (str): Name of the function or method to find

Returns: dict: function lines with their line numbers, start_line, and end_line

ParametersJSON Schema
NameRequiredDescriptionDefault
function_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the tool's behavior: it finds function/method definitions using AST parsers and returns line numbers and ranges. However, it doesn't mention error handling (e.g., if file doesn't exist or function isn't found), performance characteristics, or whether it searches recursively in directories. It adds value beyond the minimal schema but lacks comprehensive behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement followed by Args and Returns sections. Every sentence earns its place: the first sentence defines the tool's core functionality, and the subsequent lines provide essential parameter and return value information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (AST parsing across two languages), no annotations, and an output schema that likely defines the return dict structure, the description is reasonably complete. It covers what the tool does, the parameter meaning, and return format. However, it could better address error cases or language-specific quirks (e.g., JSX vs JS differences) for full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must compensate. It clearly explains the single parameter 'function_name' as 'Name of the function or method to find', which adds essential semantic meaning not present in the bare schema. However, it doesn't specify case-sensitivity, partial matching, or handling of nested methods (e.g., 'ClassName.method_name'), leaving some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Find a function or method definition'), the target resources ('in a Python or JS/JSX file'), and the implementation method ('Uses AST parsers'). It distinguishes itself from siblings like 'find_line' (general line search) and 'skim' (likely file overview) by focusing specifically on function/method definitions with AST parsing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying 'Python or JS/JSX file' and 'function or method definition', suggesting it should be used when searching for function definitions in those file types. However, it doesn't explicitly state when NOT to use it or name alternatives like 'find_line' for non-function searches or 'skim' for file overviews.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_lineA

Find lines that match provided text in the current file.

Args: search_text (str): Text to search for in the file

Returns: dict: Matching lines with their line numbers, and full text

ParametersJSON Schema
NameRequiredDescriptionDefault
search_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the tool finds matching lines but does not disclose behavioral traits such as case sensitivity, regex support, search scope (e.g., whole file vs. visible portion), or performance considerations (e.g., large file handling). The description is minimal beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by structured Args and Returns sections. Every sentence earns its place with no redundant information, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter) and the presence of an output schema (which covers return values), the description is mostly complete. It explains what the tool does and the parameter, but lacks behavioral details (e.g., search behavior) that would be helpful despite the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage (schema has no descriptions), the description must compensate. It adds meaning by specifying that 'search_text' is 'Text to search for in the file', clarifying the parameter's purpose. However, it does not detail constraints (e.g., length, special characters) or examples, leaving some gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Find lines that match provided text') and resource ('in the current file'), distinguishing it from siblings like 'find_function' (which likely searches for functions) and 'read' (which reads the entire file). The verb+resource combination is precise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for text matching in a file, but does not explicitly state when to use this tool versus alternatives like 'find_function' (for functions) or 'skim' (purpose unclear). No exclusions or prerequisites are mentioned, leaving the agent to infer context from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listdirD
ParametersJSON Schema
NameRequiredDescriptionDefault
dirpathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

new_fileA

Creates a new file.

After creating new file, the first line is automatically selected for editing. Automatically creates parent directories if they don't exist.

Args: filepath (str): Path of the new file Returns: dict: Status message with selection info

ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it creates a file, automatically selects the first line for editing, and creates parent directories if missing. This covers mutation behavior and side effects, though it doesn't mention permissions, error handling, or rate limits, which are gaps for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by important behavioral details, and ends with structured Args and Returns sections. Every sentence adds value without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (file creation with side effects), no annotations, and an output schema present, the description is fairly complete. It explains the action, behavioral traits, and parameter semantics, but could improve by addressing error cases or interaction with siblings. The output schema handles return values, so the description's focus on other aspects is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful context for the single parameter 'filepath' by explaining it's the 'Path of the new file', which clarifies its purpose beyond the schema's basic type definition. With 0% schema description coverage and only one parameter, this compensation is effective, though it doesn't detail format constraints or examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 the verb 'creates' and resource 'new file', making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'overwrite' or 'set_file', which might also involve file creation or modification, leaving room for ambiguity in tool selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for creating new files and automatically handling parent directories, but provides no explicit guidance on when to use this tool versus alternatives like 'overwrite' or 'set_file'. It mentions automatic post-creation actions (first line selection), which hints at context, but lacks clear when-to-use or when-not-to-use directives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

overwriteB

Overwrite the selected lines with new text. Amount of new lines can differ from the original selection

Args: new_lines (dict): Example: {"lines":["line one", "second line"]}

Returns: dict: Diff preview showing the proposed changes, and any syntax errors for JS or Python

ParametersJSON Schema
NameRequiredDescriptionDefault
new_linesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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 states the tool overwrites lines and returns a diff preview with syntax errors for JS or Python, which adds useful context about output and language-specific behavior. However, it lacks details on permissions, side effects (e.g., whether changes are immediate or require confirmation), or error handling, leaving gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by key behavioral details. The Args and Returns sections are structured but could be more integrated. There's minimal waste, though the example in Args might be slightly verbose; overall, it earns its place efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (mutation with 1 parameter, nested objects, and an output schema), the description is partially complete. It explains the action and return values, and the output schema likely covers the diff preview details, reducing the burden. However, with no annotations and low schema coverage, it misses critical context like safety, prerequisites, and full parameter semantics, making it adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It provides an example for the 'new_lines' parameter (a dict with a 'lines' key containing an array of strings), which adds meaning beyond the generic object type in the schema. However, it doesn't explain the structure fully (e.g., other possible keys, constraints) or cover nested object details, resulting in incomplete parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Overwrite the selected lines with new text' specifies the verb (overwrite) and resource (selected lines). It distinguishes from siblings like 'delete_file' or 'set_file' by focusing on line-level text replacement rather than file operations. However, it doesn't explicitly differentiate from similar text-editing siblings that might exist, keeping it at 4 instead of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description mentions that the amount of new lines can differ from the original selection, which implies a context of line editing, but it doesn't specify prerequisites (e.g., needing a selection first), exclusions, or direct comparisons to siblings like 'set_file' or 'confirm'. This leaves the agent without clear usage instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

readA

Read lines from the current file from start line to end line, returning them in a dictionary like {"lines":[[1,"text on first line"],[2,"text on second line"]]}. This makes it easier to find the precise lines to select for editing.

Args: start (int, optional): Start line number end (int, optional): End line number

Returns: dict: lines, start_line, end_line

ParametersJSON Schema
NameRequiredDescriptionDefault
startYes
endYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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 that the tool reads lines and returns them in a specific dictionary format, which is useful. However, it lacks details on error handling, file state changes, or permissions needed, leaving behavioral gaps for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core functionality in the first sentence. The Args and Returns sections are structured but slightly verbose; every sentence adds value, though it could be more streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, no annotations, and an output schema present, the description is fairly complete. It explains the purpose, parameters, and return format adequately. However, it could improve by addressing error cases or interaction with sibling tools for better context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that 'start' and 'end' are line numbers and are optional in the Args section, clarifying their role in selecting lines. However, it doesn't detail default behaviors or constraints beyond basic types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Read lines from the current file') and resource ('current file'), distinguishing it from siblings like 'skim' or 'select'. It precisely defines what the tool does without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for editing by mentioning 'easier to find the precise lines to select for editing', but does not explicitly state when to use this tool versus alternatives like 'skim' or 'find_line'. No exclusions or clear alternatives are provided, leaving usage context somewhat implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_testsB

Run pytest tests using the specified Python virtual environment.

Args: test_path (str, optional): Directory or file path containing tests to run test_name (str, optional): Specific test function/method to run verbose (bool, optional): Run tests in verbose mode collect_only (bool, optional): Only collect tests without executing them

Returns: dict: Test execution results including returncode, output, and execution time

ParametersJSON Schema
NameRequiredDescriptionDefault
test_pathNo
test_nameNo
verboseNo
collect_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but provides minimal behavioral context. It mentions the tool runs tests in a virtual environment but doesn't disclose critical behaviors like: whether it modifies files, what happens if tests fail, if it requires specific permissions, execution timeouts, or how results are structured beyond the basic return dict. The description doesn't contradict annotations (none exist).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose statement, Args, Returns) and appropriately sized. The opening sentence efficiently states the core purpose. The Args section is necessary given the 0% schema coverage. Only minor improvement possible by integrating parameter explanations more seamlessly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters with 0% schema coverage and no annotations, the description does a good job explaining parameters and return values. However, for a test execution tool that could have significant behavioral implications (modifying state, long-running processes, failure modes), the description lacks important context about execution environment, error handling, and behavioral constraints that would be needed for safe agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by clearly explaining all 4 parameters in the Args section, adding meaningful context about what each parameter controls. The description provides semantic value beyond the bare schema by explaining test_path accepts 'Directory or file path', test_name is for 'Specific test function/method', and what collect_only actually does ('Only collect tests without executing them').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Run pytest tests') and resource ('using the specified Python virtual environment'), distinguishing it from all sibling tools which are file/function operations rather than test execution. The verb 'Run' is precise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. While it's clearly for running pytest tests, there's no mention of prerequisites (e.g., needing a virtual environment setup), when to use collect_only versus full execution, or how it relates to other testing tools (none exist among siblings).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

selectC

Select lines from for subsequent overwrite operation.

Args: start (int): Start line number (1-based) end (int): End line number (1-based)

Returns: dict: status, lines, start, end, id, line_count, message

ParametersJSON Schema
NameRequiredDescriptionDefault
startYes
endYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but provides minimal behavioral information. It mentions this is for a 'subsequent overwrite operation' which implies this is a preparatory step, but doesn't describe what happens during the selection (does it lock lines? create a temporary buffer? require specific permissions?). No information about side effects, error conditions, or performance characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately brief with clear sections (purpose statement, Args, Returns). The first sentence could be more polished ('Select lines from' is incomplete), but overall the structure is efficient with no wasted words. Each section serves a clear purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there's an output schema (Returns section), the description doesn't need to explain return values in detail. However, for a tool with no annotations and only 2 parameters, the description provides adequate but minimal context. It explains what the tool does and documents parameters, but lacks information about error conditions, prerequisites, or how it integrates with the 'overwrite' sibling tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description includes an Args section that clearly documents both parameters with their types and meaning (line numbers, 1-based). With 0% schema description coverage and only 2 parameters, this documentation fully compensates for the schema gap. The parameter information is complete and adds meaningful context beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'Select lines from for subsequent overwrite operation' which indicates a selection function but is grammatically awkward and vague about what resource is being selected from. It distinguishes from siblings like 'overwrite' by indicating this is a preparatory step, but doesn't clarify what type of content or file is involved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions this is 'for subsequent overwrite operation' which provides some context about when to use it, but doesn't explicitly state when NOT to use it or what alternatives exist. No guidance is given about prerequisites or how this tool relates to other file operations in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_fileA

Set the current file to work with.

This is always the first step in the workflow. You must set a file before you can use other tools like read, select etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the tool sets a file as a prerequisite for other operations, implying a stateful context, but doesn't disclose behavioral traits like whether the file must exist, what happens on invalid paths, if this persists across sessions, or any error conditions. For a tool with no annotations, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: two sentences that efficiently convey purpose and usage guidelines without redundancy. Every sentence adds value, and it's front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (stateful operation with a prerequisite role), no annotations, and an output schema present (which may cover return values), the description is partially complete. It explains the workflow role but lacks details on parameter semantics and behavioral transparency, making it adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter with 0% description coverage. The description doesn't add any meaning beyond the schema—it doesn't explain what 'filepath' represents (e.g., absolute/relative path, format, constraints). With low schema coverage, the description fails to compensate, but since there's only one parameter, the baseline is slightly higher than minimal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 the current file to work with.' This is a specific verb ('set') and resource ('current file'), making the action understandable. However, it doesn't explicitly differentiate from sibling tools like 'new_file' or 'delete_file' beyond workflow context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'This is always the first step in the workflow. You must set a file before you can use other tools like read, select etc.' It clearly states when to use it (first step) and why (prerequisite for other tools), with named alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_python_pathB

Set it before running tests so the project is correctly recognized

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a configuration change ('set') but doesn't disclose behavioral traits like whether it's persistent, requires specific permissions, or has side effects. For a mutation tool with no annotations, this is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that is front-loaded with the key information. It wastes no words and is appropriately sized for its purpose, earning full marks for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity as a configuration setter with no annotations, no output schema, and low schema coverage, the description is incomplete. It lacks details on behavior, parameter usage, and expected outcomes, making it insufficient for effective tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter with 0% description coverage, and the tool description doesn't add any meaning about the 'path' parameter. It fails to explain what the path represents, its format, or examples, leaving the parameter semantics unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool's purpose is to 'set' something 'before running tests' for project recognition, which is clear but vague. It doesn't specify what exactly is being set (Python path) or distinguish it from siblings like 'set_file', making it moderately helpful but lacking specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context for when to use it ('before running tests'), which is helpful guidance. However, it doesn't mention when not to use it or alternatives among siblings, such as how it differs from 'set_file', leaving some gaps in usage differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skimA

Read text from the current file, truncated to the first SKIM_MAX_LINES lines.

Returns: dict: lines, total_lines, max_select_lines

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: it's a read operation (implied by 'Read text'), truncates output based on `SKIM_MAX_LINES`, and returns a dict with specific keys. However, it doesn't mention permissions, error conditions, or how `SKIM_MAX_LINES` is defined (e.g., environment variable, default value), leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise and well-structured: the first sentence states the core action and constraint, and the second sentence clearly outlines the return format. Every sentence earns its place with no wasted words, making it easy to parse and front-loaded with essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (0 parameters, read-only operation) and the presence of an output schema (implied by 'Returns: dict'), the description is mostly complete. It covers purpose, behavior, and output structure. However, it lacks details on `SKIM_MAX_LINES` (e.g., source or default) and any prerequisites (e.g., needing a file set via 'set_file'), 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.

Parameters4/5

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, focusing instead on behavior and output. A baseline of 4 is applied since no parameters exist, and the description adds value by explaining the tool's operation beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 ('Read text from the current file') and resource ('current file'), distinguishing it from siblings like 'read' (which presumably reads the entire file) by specifying truncation behavior. It explicitly mentions the truncation limit ('first `SKIM_MAX_LINES` lines'), making the scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying it reads from 'the current file' (suggesting a file must already be selected/opened) and truncates output, which differentiates it from tools like 'read' (full file reading) or 'select' (line selection). However, it doesn't explicitly state when NOT to use it or name alternatives, missing full sibling differentiation.

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.

  1. 10 tool updatesv1.0.0
    • Changedfind_function1 field changed
      • removedInput schema / properties / function_name / title
        Removed value: -"Function Name"
    • Changedfind_line1 field changed
      • removedInput schema / properties / search_text / title
        Removed value: -"Search Text"
    • Changedlistdir1 field changed
      • removedInput schema / properties / dirpath / title
        Removed value: -"Dirpath"
    • Changednew_file1 field changed
      • removedInput schema / properties / filepath / title
        Removed value: -"Filepath"
    • Changedoverwrite1 field changed
      • removedInput schema / properties / new_lines / title
        Removed value: -"New Lines"
    • Changedread2 fields changed
      • removedInput schema / properties / end / title
        Removed value: -"End"
      • removedInput schema / properties / start / title
        Removed value: -"Start"
    • Changedrun_tests4 fields changed
      • removedInput schema / properties / collect_only / title
        Removed value: -"Collect Only"
      • removedInput schema / properties / test_name / title
        Removed value: -"Test Name"
      • removedInput schema / properties / test_path / title
        Removed value: -"Test Path"
      • removedInput schema / properties / verbose / title
        Removed value: -"Verbose"
    • Changedselect2 fields changed
      • removedInput schema / properties / end / title
        Removed value: -"End"
      • removedInput schema / properties / start / title
        Removed value: -"Start"
    • Changedset_file3 fields changed
      • removedInput schema / properties / filepath / title
        Removed value: -"Filepath"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedset_python_path1 field changed
      • removedInput schema / properties / path / title
        Removed value: -"Path"
  2. 14 tool updates
    • First observedcancel
    • First observedconfirm
    • First observeddelete_file
    • First observedfind_function
    • First observedfind_line
    • First observedlistdir
    • First observednew_file
    • First observedoverwrite
    • First observedread
    • First observedrun_tests
    • First observedselect
    • First observedset_file
    • First observedset_python_path
    • First observedskim

TDQS

C2.8/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have distinct purposes, but 'cancel' and 'confirm' are ambiguous without context, and 'find_function' and 'find_line' could be confused as both search within files. The core editing tools like 'read', 'select', and 'overwrite' are clearly differentiated, supporting a coherent workflow.

Naming Consistency3/5

The naming is mixed with some consistency: verbs like 'find', 'set', and 'run' are used, but patterns vary (e.g., 'listdir' vs. 'new_file', 'overwrite' vs. 'select'). There's no uniform verb_noun structure, making it readable but not predictable across all tools.

Tool Count5/5

With 14 tools, this is well-scoped for an editor server, covering file operations, editing, searching, and testing. Each tool serves a specific role in the workflow, and the count is neither too sparse nor overwhelming for the domain.

Completeness4/5

The toolset provides strong coverage for file editing and testing workflows, including create, read, update, and delete operations. Minor gaps exist, such as no explicit 'save' or 'undo' tools, but agents can work around these using existing tools like 'overwrite' and workflow steps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A FastMCP server providing powerful code editing tools including precise file modifications with diff-based operations, file creation and reading with line numbers, and more tools for code editing workflows.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides tools for secure file management within a dedicated workspace directory. It enables users to create, list, and delete files through natural language while preventing path traversal attacks.
    6 npm
    -
  • F
    license
    B
    quality
    C
    maintenance
    An MCP server for creating, loading, and editing RFC TXT documents using the rfc-editor Python library. It provides a suite of tools to manage document components including sections, abstracts, titles, and author metadata.
    29
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that provides line-oriented text file editing capabilities through a standardized API. Optimized for LLM tools with efficient partial file access to minimize token usage.
    MIT