Skip to main content
Glama
CosmGrid

Local MCP Dev Runner

by CosmGrid

Local MCP Dev Runner

一个运行在你自己机器上的 stdio MCP server,让 ChatGPT(经由 Secure MCP Tunnel)能够 只读 地查看你本地已注册的 Git 仓库,并在严格受限的 runner-managed worktree 里做有限的写入。

版本:2.1.0 · 工具数:24 · 状态:V1 baseline + 结构化输出契约(A3)+ P2 沙箱执行 + 受限 GitHub 仓库管理


1. 它是什么

一个单文件的 MCP server(server.mjs),通过标准输入输出与 MCP 客户端通信。它对外暴露 24 个工具,覆盖:

类别

工具

注册表

list_projectsproject_info

只读浏览

list_directoryfind_filessearch_textread_fileread_filesfile_info

受限写入

create_directorycreate_filereplace_textdelete_file

只读 Git

git_statusgit_diffgit_loggit_branch_list

受控分支与工作区

git_create_branchgit_worktree_creategit_worktree_remove

受控提交

git_commit

脚本(沙箱受控 · v2.0.0

project_scriptsrun_script(仅 npm/pnpm,hash 钉死,macOS Seatbelt 沙箱)

受限 GitHub 管理

github_repository_infogithub_repository_create(白名单组织、Keychain 凭证、幂等创建、无 push、无 delete)

结构化输出(v1.1.0 新增):每个工具现在都声明了 outputSchema,成功返回在原有文本 content 之外还携带机器可解析的 structuredContent,MCP 客户端(ChatGPT 等)可以稳定地按字段名取值,而不必解析自由文本。输入契约(inputSchema)零变更。

Related MCP server: Git Code Review MCP

2. 为什么存在

远程模型要帮你看代码,传统做法是上传代码或开放 shell,两者都不可接受。这个 runner 的取舍是:

  • 代码不出本机。 模型只能拿到你允许它拿到的那部分文本。

  • 默认只读。 原仓库一律 write: false

  • 要写就写到别处。 唯一可写的目标是 runner 自己创建并登记的 git worktree。

  • 执行受沙箱约束。 run_script 自 v2.0.0 起在 macOS Seatbelt 沙箱内受控执行(仅 npm/pnpm、hash 钉死、无网络、无 shell 逃逸),详见第 11 节与 docs/P2_PROCESS_SANDBOX_DESIGN.md

3. 架构

ChatGPT
   │  (MCP over the Secure MCP Tunnel)
   ▼
Secure MCP Tunnel            ← 网络边界;由 Tunnel 侧负责身份认证与加密
   │
   ▼
stdio MCP Runner             ← 本机进程,即本仓库的 server.mjs
   │
   ▼
registered project registry  ← $HOME/.config/local-mcp-dev-runner/projects.json
   │
   ├── original repo        READ_ONLY   (源码真值,永远不可写)
   └── managed worktree     READ_WRITE  (runner 自建,仅 mcp/* 分支)

关键点:runner 本身 不监听端口、不做鉴权、不持有任何 API Key。它与 Tunnel 之间是本机 stdio,认证与传输安全由 Tunnel 侧承担。详细的分层与信任边界见 ARCHITECTURE.md

4. 安装

前置:Node.js >= 20.11,Git。

git clone <this-repo> local-mcp-dev-runner
cd local-mcp-dev-runner
npm ci
npm run gate:all          # 语法 + 安全门禁 + 测试 + 密钥扫描
bash scripts/install-local.sh

install-local.sh 只做三件事:校验源码构建、按需创建配置目录、把构建部署到 runtime。它 不会 启动 Tunnel,不会 碰任何凭据。

先演练再实装:

DRY_RUN=1 bash scripts/install-local.sh

5. 配置

真实配置 不在本仓库里,它在:

$HOME/.config/local-mcp-dev-runner/projects.json

这是 runtime state,不是源码。仓库里只有结构示例 config/projects.example.json,里面全是 <PLACEHOLDER>,没有用户名、绝对路径或密钥。

首次安装时,若 projects.json 不存在,安装脚本会用示例文件播种一份(权限 600)。若已存在,脚本绝不覆盖。 之后你需要手工替换其中的占位符:

{
  "projects": {
    "my-api": {
      "root": "<ABSOLUTE_PATH_TO_PROJECT_ROOT>",
      "write": false            // 原仓库:保持 false
    },
    "my-api-work": {
      "root": "<ABSOLUTE_PATH_TO_WRITABLE_ROOT>",
      "write": true,
      "runScripts": false,
      "allowedScripts": []
    }
  }
}

字段含义见 config/projects.example.json 内的 _fieldReference

6. 启动

Runner 自己不常驻、不监听端口,由 MCP 客户端(Tunnel)拉起:

node server.mjs

日常不需要手工执行这条命令。修改源码后需要重新部署并重启 runner 进程:

bash scripts/update-runtime.sh
bash scripts/verify-runtime.sh

7. 开发

只在 SOURCE_ROOT 改代码,永远不要直接编辑 RUNTIME_ROOT。

SOURCE_ROOT  本仓库(唯一可编辑的地方)
RUNTIME_ROOT $HOME/.local/share/local-mcp-dev-runner   ← 部署目标,勿手改

流程:编辑 server.mjsnpm run gate:allbash scripts/update-runtime.sh → 重启 runner 进程。

部署、回滚与运行手册见 docs/OPERATIONS.md,两个根目录的职责划分见 docs/SOURCE_VS_RUNTIME.md

8. 测试

npm run check           # 语法门禁:全量 .mjs 解析
npm test                # 全部测试(tests/ + tests/security/ + tests/p2/;P2 真实沙箱用例在 tests/native/,须原生 Terminal 跑)
npm run test:security   # 仅安全套件
npm run test:inventory  # 仅工具清单
npm run gate:security   # 静态安全策略门禁(守卫是否仍存在于源码)
npm run gate:input-compat  # 输入契约 vs 基线 b2f907d(v2.0.0 run_script 沙箱化;其余 21 工具零变更)
npm run gate:schema        # 22/22 outputSchema 覆盖 + structuredContent 校验
npm run gate:secret-scan
npm run gate:p2-unit     # P2 单元/镜像/静态门禁(tests/p2,WorkBuddy 嵌套沙箱内可跑)
npm run gate:sandbox-real # 真实 macOS Seatbelt 沙箱门禁(须在原生 Terminal 跑,嵌套沙箱必 exit 71)
npm run gate:p2-full     # gate:p2-unit && gate:sandbox-real
npm run gate:all        # 以上静态/行为门禁(含 gate:p2-unit,不含 gate:sandbox-real)
npm run verify:runtime  # 校验已部署的 runtime(只读)

测试通过 真实 MCP 协议 驱动真实的 server.mjs 进程,而不是调用内部函数。每个用例都在一次性 HOME 下运行,注册表、worktree 根目录、git 全局配置全部重定向到临时目录,因此 永远不会读写你真实的注册表和业务仓库。机制说明见 docs/GATES.md

9. 安全边界

  • 只有注册表里登记过的项目可访问,未登记一律 Unknown project

  • 原仓库恒为只读;写入只发生在 runner 自建的 worktree。

  • 所有路径先做词法检查,再 realpath 解析,越界即拒绝;符号链接穿越被拦截。

  • .env.git*.keycredentials 等敏感路径在读、写、列目录、搜索、提交各环节都被过滤。

  • 写操作需要调用方提供当前文件的 SHA-256,防止覆盖并发改动。

  • 只能创建 mcp/* 分支;main / master 等保护分支拒绝写入。

  • 不提供 push / pull / fetch,不提供任意 shell。

完整清单与每项的失效后果见 SECURITY.md

10. 当前限制

  • 单文件实现。 v1.0 保留 1303 行的 server.mjs 作为已验证基线,未做模块化拆分,以降低改动风险。

  • 无推送能力。 分支必须在本机手工合并。

  • 不执行任何脚本。 不能跑测试、不能构建。

  • 输出有上限。 单文件读取 200 KB、写入 500 KB、搜索文件 512 KB、目录条目 500 条、搜索结果 200 条、diff 文件 100 个、输出统一裁剪 200 KB,超出会被截断或拒绝。

  • 提交不做签名。 强制 commit.gpgSign=false

  • 无并发协调。 SHA 校验是乐观锁,不是事务。

11. run_script 现在是沙箱受控执行(v2.0.0)

run_script 在 v1.0 / v1.1.0 里是永久关闭的:接口契约可见,但处理体第一行无条件抛错。v2.0.0 把它改造成在 macOS Seatbelt(sandbox-exec)进程沙箱内受控执行 npm / pnpm 脚本,而不是简单地打开开关。

开放的前提条件已被满足,但被严格约束:

  • 只跑 npm / pnpm。 yarn / bun / npx 一律拒绝;install / ci / add 等安装类子命令永久 DENY——沙箱无网络,安装毫无意义,且会从远端拉取不可信代码。

  • hash 钉死。 包内容(packageSha256)与脚本内容(scriptSha256)双重校验,执行前重读 package.json 防 TOCTOU;caller 还可额外传 expectedPackageSha256 做第三层校验。改一行 package.json 即 hash 失效、拒绝执行——这正是 v1.0 担心的「改一行绕开 allowlist」被结构性堵死。

  • OS 级隔离。 沙箱 deny-by-default:无网络、只写 per-run HOME/TMP、只可读 runner 管理的 mcp/* worktree;真实 HOME / 系统目录 / 敏感文件全 seal。环境变量只透传显式 allowlist,绝不整体继承父进程环境;凭据形变量(如 MY_API_TOKENAWS_SECRET_ACCESS_KEY)不进沙箱。

  • 无逃逸。 无 shell、argv 结构化、stdio 全 pipe;spawn 调用点固定枚举为 2(主子进程 + pgrep 后代发现);超时即 SIGTERM→SIGKILL 整进程组回收;kill switch 双通道(文件 + 环境变量)。

真实的隔离验证必须在原生 Terminal 跑:WorkBuddy 本身已是嵌套沙箱,sandbox-exec 会返回 Operation not permitted(exit 71),这是预期行为,门禁会 fail-closed 而非假 PASS。请在本机 Terminal.app 执行:

cd /path/to/local-mcp-dev-runner && bash scripts/run-native-sandbox-gate.sh

设计权威与全部冻结约束见 docs/P2_PROCESS_SANDBOX_DESIGN.md

12. 受限 GitHub 仓库管理(v2.1.0)

v2.1.0 引入受限的 GitHub 仓库管理工具集(github_repository_infogithub_repository_create),用于在明确授权的组织下查询与自动创建空仓库:

  • 核心边界声明:GitHub 仓库创建 != Git push!

    • Runner 通过 GitHub 官方 HTTPS REST API 建立或查询空仓库,绝对不包含 git pushgit pullgit fetch 等操作

    • 现有的 NO_GIT_PUSH=YES 安全边界与所有本地 Git 约束 100% 保持不变。

  • 组织白名单(Organization Allowlist):

    • 必须在 projects.json 中明确配置 github.allowedOrganizations(例如 ["CosmGrid"])。

    • 任何未在白名单中的组织请求一律 FAIL-CLOSED 拒绝执行。

  • macOS Keychain 凭证管理:

    • GitHub Token 绝对禁止写入代码、配置文件、环境变量、日志或返回给客户端。

    • 凭证存储于系统 macOS Keychain(服务名:local-mcp-dev-runner-github-api-token)。

    • 配置命令:

      security add-generic-password -s "local-mcp-dev-runner-github-api-token" -a "github" -w "<YOUR_GITHUB_TOKEN>"
    • Runner 仅在 API 请求瞬间在内存读取,用后即脱敏,凭证缺失时立即 FAIL-CLOSED。

  • 严格幂等性与安全限制:

    • 仓库已存在且可见性一致时,幂等返回 ALREADY_EXISTS,不重复创建。

    • 仓库已存在但可见性冲突时,返回 GITHUB_VISIBILITY_CONFLICT,拒绝自动更改。

    • 严禁包含删除仓库(delete_repository)、重命名、归档、修改可见性、变更权限等危险能力。

    • 固定 Host 为 https://api.github.com,防 SSRF 与任意 URL 注入。

    • 所有操作均记入 $RUNTIME_ROOT/logs/github-audit.log 审计日志,敏感字段全脱敏。

13. 许可与状态

私有项目,未对外发布。本仓库只建立本地 Git 仓库,不做 push。

Available Tools

24 tools
create_directoryCreate project directoryA

Create a directory path only in a write-enabled non-protected project/worktree; symlink traversal is blocked.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
createdYes
projectYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden; it does disclose the restricted environment and that symlink traversal is blocked, which is useful safety behavior. It does not mention failure modes, what happens when the directory already exists, or whether parent directories are created, leaving some behavioral gaps.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. The main action appears first, followed by two concise, information-bearing constraints.

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?

The tool is simple and has an output schema, so return-value documentation is not required here; the description covers the key permission and symlink constraints. It is still missing path-resolution details and error behavior, which an agent would need to invoke the tool with confidence.

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?

Schema description coverage is 0%, so the description must compensate, but it only loosely maps 'directory path' to the path parameter and 'project/worktree' to the project parameter. It does not explain whether path is relative or absolute, how nested paths are handled, or what form a valid project identifier takes.

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 states a specific action—creating a directory path—and adds scoping constraints (write-enabled, non-protected project/worktree, symlink traversal blocked). It is clearly distinct from file-level and listing siblings, though it does not explicitly name an alternative tool.

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 'only in a write-enabled non-protected project/worktree' phrase gives an explicit precondition for safe use, which helps the agent decide whether this tool is applicable. It does not explicitly name alternatives or say when not to use it beyond that precondition.

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

create_fileCreate new project fileA

Create a new UTF-8 file in a write-enabled project. Existing files are never overwritten.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
contentYes
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
bytesYes
sha256Yes
createdYes
projectYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It discloses the important guarantees: file is UTF-8, project must be write-enabled, and existing files are never overwritten. It does not describe failure behavior on collision, but the no-overwrite statement is a strong safety signal.

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?

Two tight sentences with no redundancy. The primary action is front-loaded and the critical non-overwrite behavior is stated clearly and economically.

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?

For a simple creation tool with an output schema, this is nearly complete: it covers the precondition (write-enabled project), the encoding, and the key side effect (never overwrites). It could add what happens if the file already exists, but the essential context for safe invocation is present.

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?

Schema description coverage is 0%, and the description does not explicitly explain project, path, or content. However, the parameter names are intuitive and the phrase 'new UTF-8 file in a write-enabled project' adds useful context about what is being created. This is adequate but not exceptional.

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 uses a specific verb ('Create') and resource ('new UTF-8 file') with a clear scope ('in a write-enabled project'). The phrase 'never overwritten' disambiguates it from modification tools like replace_text and from directory creation.

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?

It clearly implies this is for creating new files only, and the 'write-enabled project' condition plus 'never overwritten' give the agent useful constraints. It does not explicitly name alternatives such as replace_text for existing files, but the usage context is still clear.

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

delete_fileSafely delete fileA

Delete one existing file only when the caller supplies its exact current SHA-256.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
projectYes
expectedSha256Yes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
deletedYes
projectYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description must carry the behavioral burden. It discloses that deletion is conditional on an exact current SHA-256 match, which is a meaningful safety behavior beyond the raw schema. It does not detail mismatch errors or irreversibility, but 'Delete' plus the hash gate gives solid transparency.

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, front-loaded sentence with no filler. It communicates the action, scope, and key precondition efficiently.

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?

The tool has three required parameters, no annotations, and zero schema field descriptions. The description fails to explain `project` and `path` and does not cover what happens when the SHA-256 check fails, leaving important invocation details incomplete.

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?

Schema description coverage is 0%, and the description does not mention the `project`, `path`, or `expectedSha256` parameter names. It only gestures at the SHA-256 concept, leaving `project` and `path` semantics almost entirely undocumented.

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 states a specific verb ('Delete'), a specific resource ('one existing file'), and a distinguishing condition ('only when the caller supplies its exact current SHA-256'). This clearly separates it from file modification and creation tools in the sibling list.

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 phrase 'only when the caller supplies its exact current SHA-256' gives explicit usage context and a precondition for safe invocation. It does not name alternative tools or exclusion cases, but the safety condition clearly implies when this tool should and should not be used.

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

file_infoFile informationA

Return size and SHA-256 for an existing text file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
bytesYes
sha256Yes
projectYes

TDQS

A3.6/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 clearly states the successful behavior—returning size and SHA-256—but does not disclose what happens for missing files, non-text files, invalid project names, or path interpretation. This is adequate but leaves meaningful 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 a single focused sentence with no wasted words. It front-loads the action and output, making it instantly scannable for an agent.

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?

The tool is simple and has an output schema, which covers return values. However, the lack of parameter semantics and minimal usage guidance means the description alone is not fully sufficient for an agent to confidently and correctly invoke the tool in all cases.

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?

Schema description coverage is 0%, and the description does not explain the semantics, format, or relationship of 'project' and 'path'. It merely says 'an existing text file', which hints at path, but project remains unspecified. The description fails to compensate for the missing schema descriptions.

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 states a specific verb ('Return'), a precise resource ('an existing text file'), and exact output ('size and SHA-256'). This distinguishes it clearly from sibling tools like read_file, which return content, and list_directory, which lists files.

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 phrase 'existing text file' implies when the tool is applicable: only for files that already exist and are text files. However, the description does not explicitly state when to prefer this tool over alternatives such as read_file or find_files, nor does it mention exclusions or conditions beyond existence.

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

find_filesFind filesA

Recursively find files/directories by name substring without traversing sensitive paths, symlinks, or dependency/build directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo.
projectYes
maxResultsNo
nameContainsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
projectYes
resultsYes
truncatedYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It clearly discloses recursive traversal, substring matching, and important exclusions like symlinks and dependency/build directories. It does not describe output shape or result limits, but the presence of an output schema reduces the need for that detail. The main behavioral traits are transparently stated.

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?

A single, front-loaded sentence that packs in the core resource, matching criterion, recursion behavior, and traversal exclusions. There is no filler or repetition. Every phrase earns its place.

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?

The description is adequate for a simple search tool and the output schema covers return structure. However, with no annotations and no parameter descriptions in the schema, the definition lacks enough detail for an agent to fully understand parameter semantics or to be confident about when to choose this over content-search and directory-listing siblings. It is complete enough to be usable but has 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?

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It does clarify that matching is by name substring, which maps to nameContains, and it mentions traversal behavior. However, it does not add meaning for the required 'project' parameter, the 'path' default/scope, or 'maxResults' bounds. With four parameters and no schema descriptions, this is a significant gap.

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 identifies a specific action ('find files/directories') with a clear filtering criterion ('by name substring'). It also distinguishes itself from content-search siblings by emphasizing name-based matching, and from list_directory by stating recursion. This is a specific verb+resource description that an agent can separate from the sibling tools.

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 gives clear context: use this tool when you need recursive filename/substring lookup rather than content search or directory listing. It also states traversal exclusions, including sensitive paths and dependency/build directories. However, it does not explicitly name alternative tools such as search_text or list_directory, so the when-not-to-use guidance is implied rather than explicit.

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

git_branch_listList Git branchesB

List local Git branches and the current branch.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
projectYes
branchesYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. 'List' conveys a non-mutating read operation and 'local' clarifies scope, which is useful. However, it does not disclose prerequisites, error behavior, or output details such as how the current branch is indicated.

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 one short sentence that front-loads the action and resource. Every word earns its place, with no filler or redundant restatement.

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?

For a one-parameter tool with an output schema, the description captures the main behavior but omits what 'project' refers to and any usage or precondition context. An agent could infer much from the name and siblings, but the definition alone lacks full standalone guidance.

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?

Schema coverage is 0%, and the description never mentions the required 'project' parameter. The parameter name and sibling tools like list_projects provide some context, but the description itself adds no meaning beyond the schema's type and required flag.

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 states a specific verb ('List'), a specific resource ('local Git branches'), and the added detail that the current branch is also reported. This clearly distinguishes it from sibling operations like git_create_branch or git_status.

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 gives no explicit guidance about when to call this tool versus alternatives, nor does it state conditions such as needing a valid Git-initialized project. The only usage signal is the verb 'List', which implies a read-only branch inspection task, but that is left to inference.

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

git_commitCommit managed worktree changesA

Stage and commit only non-sensitive changes in a writable runner-managed mcp/* worktree. Hooks and GPG signing are disabled; push is not available.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
branchYes
commitYes
outputYes
projectYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It discloses important traits: staging and committing only non-sensitive changes, disabled hooks and GPG signing, and the absence of push. Some ambiguity remains about how 'non-sensitive' is determined or what happens when sensitive changes are present.

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?

A single dense sentence with no filler. It front-loads the core action and packs the key constraints, disabled features, and limitation into a compact, readable structure.

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?

The description covers the purpose, writable-worktree requirement, sensitive-change limitation, disabled hooks/signing, and the no-push constraint. The main gap is that 'non-sensitive' is not precisely defined, which could matter for a commit operation.

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?

Schema description coverage is 0%, and the description does not explain the 'project' or 'message' parameters. The parameter names are somewhat self-evident, but the description fails to compensate for the complete lack of schema-level parameter guidance.

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?

States a specific verb and resource: 'Stage and commit only non-sensitive changes in a writable runner-managed mcp/* worktree.' It clearly identifies what the tool does and is easily distinguished from sibling inspect/branch/worktree tools.

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?

Gives explicit usage conditions: only writable runner-managed mcp/* worktrees, only non-sensitive changes, and no push available. It does not name an alternative tool, but the boundaries of appropriate use are clear from the constraints.

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

git_create_branchCreate safe Git branchA

Create an mcp/* branch without checking it out. main/master and arbitrary branch names are not permitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchYes
baseRefNoHEAD
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
branchYes
baseRefYes
createdYes
projectYes
checkedOutYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing side effects; it usefully states that the tool does not check out the branch and imposes naming safety restrictions. However, it does not mention failure behavior, permissions, or how baseRef affects the created branch.

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?

A single front-loaded sentence states the action, the restriction, and the key non-checkout behavior with no redundant words. The content is compact and immediately scannable.

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 tool with three parameters and no annotation or schema descriptions, the description covers only branch naming. It omits project identification and baseRef semantics, and does not reference the output schema or alternative tools, leaving important invocation details unstated.

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?

Schema description coverage is 0%, so the description must explain parameters; it only clarifies the branch naming rule. 'project' and 'baseRef' are left undefined, leaving agents to infer meaning from names and defaults alone.

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 states a specific action ('Create'), a constrained resource ('an mcp/* branch'), and a distinguishing side-effect ('without checking it out'). The naming restriction and title differentiate it from branch listing or checkout tools.

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 makes the intended use clear: create branches only under the mcp/* prefix and not on main/master. It explicitly excludes arbitrary branch names, though it does not name alternative sibling tools such as git_worktree_create or git_branch_list.

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

git_diffGit diffA

Return a bounded diff excluding sensitive files. Supports working-tree, staged, or ref-to-ref diffs.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
stagedNo
baseRefNo
headRefNo
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
diffYes
projectYes
truncatedFilesYes
excludedSensitiveFilesYes

TDQS

A3.8/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 behavioral disclosure burden. It does disclose two important traits: the diff is 'bounded' and sensitive files are excluded. However, it leaves those terms undefined and does not mention read-only behavior, authentication needs, or error conditions.

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?

Two concise sentences with no filler. The main safety behavior is front-loaded, and the supported modes are stated 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?

The description is adequate for a moderately complex tool with an output schema, but it leaves important invocation details unexplained, especially project/path semantics and what 'bounded' means. An agent could call the tool correctly for simple cases but would likely guess on parameter usage.

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?

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It hints at the roles of staged, baseRef, and headRef via the supported diff modes, but it does not explain the required 'project' parameter or the optional 'path' parameter, leaving a significant gap in parameter understanding.

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 uses a specific verb-resource pair ('Return ... diff') and clearly identifies the three supported modes: working-tree, staged, and ref-to-ref. This distinguishes it from sibling tools like git_status and git_log without ambiguity.

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?

It states the concrete scenarios in which the tool is applicable (working-tree, staged, or ref-to-ref diffs), providing clear context for when to call it. It does not explicitly name excluded alternatives, but the mode enumeration is sufficient to route an agent away from status/log tools.

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

github_repository_createCreate GitHub repositoryA

Create a new repository under an allowlisted GitHub organization with specified visibility (public or private). Idempotent: returns ALREADY_EXISTS if repository already exists with matching visibility. Does NOT initialize with README/license/gitignore, does NOT push code, does NOT configure remotes.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesRepository name
visibilityYesRepository visibility: public or private
descriptionNoOptional repository description
organizationYesAllowlisted GitHub organization name (e.g. CosmGrid)

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
ownerYes
statusYes
createdYes
cloneUrlYes
visibilityYes
defaultBranchYes
repositoryUrlYes

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so well. It discloses idempotency, the ALREADY_EXISTS return behavior, and lists explicit non-actions, which are exactly the behavioral traits an agent needs to know before invoking a creation tool.

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?

Three tightly worded sentences with no filler. The main purpose is front-loaded, followed by high-value idempotency and non-side-effect information. Every sentence earns its place.

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

Completeness5/5

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

For a creation tool with full schema coverage and an output schema, the description is complete. It covers scope, visibility, idempotency, and what the operation will and will not do, giving an agent everything needed to invoke it correctly.

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?

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds 'allowlisted' and 'public or private' context, but these largely repeat existing schema descriptions. Baseline 3 is appropriate since the schema carries the parameter documentation weight.

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 operation: creating a new repository under an allowlisted GitHub organization. It also names the key constraint (visibility) and implicitly differentiates itself from sibling tools like github_repository_info by being the creation tool.

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 gives clear context about what the tool does and what it deliberately does not do (no README/license/gitignore, no pushing code, no configuring remotes). It does not explicitly name sibling alternatives, but its scoping and negative behaviors effectively guide when to use it.

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

github_repository_infoGet GitHub repository informationA

Query metadata for a GitHub repository under an allowlisted organization. Returns existence, owner, visibility, default branch, fork/archived flags, and repository URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryYesRepository name to query
organizationYesAllowlisted GitHub organization name (e.g. CosmGrid)

Output Schema

ParametersJSON Schema
NameRequiredDescription
forkYes
nameYes
ownerYes
existsYes
archivedYes
visibilityYes
defaultBranchYes
repositoryUrlYes

TDQS

A4.1/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 behavioral burden. It clearly frames the operation as a read-only metadata query and discloses the key result categories including existence, owner, visibility, default branch, fork/archived status, and URL. The 'allowlisted organization' phrasing also signals an access constraint, though failure behavior is not explicitly covered.

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 front-loads the operational purpose and follows with the concrete metadata fields returned. Every phrase earns its place; there is no redundancy.

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

Completeness5/5

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

The tool is simple with only two required parameters, the schema covers both, and an output schema is indicated. The description supplies the essential behavioral framing and return-value summary, so an agent has enough context to select and invoke the tool correctly.

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?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds useful context about the allowlisted organization and the kind of metadata returned, but does not materially enhance parameter-level meaning beyond the 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 states a specific verb ('Query metadata'), a specific resource ('a GitHub repository'), and a scope ('under an allowlisted organization'). It also enumerates the returned fields, clearly distinguishing it from github_repository_create and other file/project tools.

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 intended use is inferable from 'Query metadata' and the sibling github_repository_create, but the description does not explicitly state when to use this tool versus alternatives or when not to use it. No exclusions or alternative-tool routing are provided.

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

git_logGit logB

Return recent commit metadata, optionally scoped to one safe path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
limitNo
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
logYes
projectYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description must carry the safety burden. 'Return' clearly signals a read-only operation and 'safe path' hints at path restrictions, but 'safe' is undefined and there is no mention of permissions, failure modes, or what exactly 'safe' means in this context.

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?

One sentence, no filler, and the key purpose is front-loaded. It is appropriately concise for a simple read-only log tool.

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?

The description is too terse relative to a 0%-coverage schema and absent annotations. It fails to mention the required `project` parameter, the `limit` behavior, or clarify the vague 'safe path' constraint. The output schema helps with return structure but does not compensate for these input-side 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?

Schema description coverage is 0%, so the description must compensate. It only alludes to the optional path parameter via 'scoped to one safe path'; the required `project` parameter and the `limit` parameter are not explained at all.

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 uses a specific verb ('Return') and resource ('recent commit metadata'), making the core purpose clear. It does not explicitly distinguish itself from siblings like git_status or git_diff, but the commit-history focus is evident from the name and object.

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?

Usage is implied: use this tool to inspect recent commit metadata, optionally filtered by path. It does not explicitly say when to prefer this over git_status, git_diff, or git_branch_list, nor does it provide exclusions or alternative routing.

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

git_statusGit statusC

Return safe Git status while omitting sensitive-path entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
projectYes

TDQS

C2.8/5.0
Behavior2/5

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

There are no annotations, so the description must carry the behavioral burden. It discloses one useful trait — the output omits sensitive-path entries — but it does not state whether the operation is read-only, what 'safe' means beyond that omission, or how errors or invalid projects are handled.

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 a single concise sentence with no filler, and the main action is front-loaded. It is efficient but slightly underspecified in ways that other dimensions capture.

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 low complexity and the presence of an output schema, the core behavior is conveyed adequately. However, with no annotations and no parameter or usage guidance, an agent still has to infer what 'project' should be and when this tool should be preferred over sibling Git tools.

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?

Schema description coverage is 0%, and the description does not mention the required 'project' parameter at all. The name and minLength hint that it identifies a project, but the description adds no meaning beyond what the schema already minimally conveys.

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 identifies the core operation as returning Git status, with a distinguishing qualifier: it omits sensitive-path entries. This differentiates it from related Git tools like git_diff and git_log, though the terms 'safe' and 'sensitive-path' are left somewhat undefined.

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 the sibling Git tools. It does not mention that it is a read-only status command, nor does it point to git_diff or git_log for changes or history.

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

git_worktree_createCreate managed Git worktreeB

Create/register an isolated writable worktree on an mcp/* branch under the runner worktree directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchYes
baseRefNoHEAD
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYes
rootYes
branchYes
createdYes
projectYes
sourceProjectYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It reveals useful behavior: worktrees are isolated, writable, created under the runner worktree directory, and branches use an mcp/* namespace. However, it does not explain side effects, idempotency, failure conditions, or whether baseRef affects branch creation.

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 a single, dense sentence with no filler and front-loads the core action. It could be slightly clearer by separating 'create' from 'register', but it remains appropriately compact.

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?

Although an output schema exists, the description is incomplete for a 3-parameter tool with 0% schema description coverage and no annotations. It omits baseRef semantics, project meaning, failure behavior, and whether the branch must not already exist. The provided context is a useful start but not sufficient for correct invocation in edge cases.

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?

Schema coverage is 0%, and the description compensates only partially. It hints at the branch parameter via 'mcp/* branch' and at the project worktree location, but says nothing about baseRef or the exact meaning of project. Two parameters remain essentially undocumented in both schema and description.

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 states a specific action ('Create/register an isolated writable worktree') and a concrete resource ('on an mcp/* branch under the runner worktree directory'). It clearly distinguishes this tool from siblings like git_worktree_remove and git_create_branch by scope and location.

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 phrasing implies this tool is used when an isolated writable worktree is needed, but it does not explicitly state when to use it over alternatives, when not to use it, or how it relates to siblings like git_create_branch. Usage context is present but only by inference.

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

git_worktree_removeRemove managed Git worktreeA

Remove a clean runner-managed worktree and unregister it. Dirty worktrees are refused; the branch is retained.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
branchYes
projectYes
removedYes
sourceProjectYes
branchRetainedYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does a good job: it discloses the dirty-worktree refusal, the retention of the branch, and the unregistration step. It does not describe error behavior or the exact meaning of 'unregister', but the behavior most relevant to avoiding destructive mistakes is present.

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 two tight sentences that front-load the action and then add necessary constraints. Every part adds information, and there is no repetition of the title or schema.

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?

The tool is simple and the output schema exists, so return-value documentation is not required. The main missing piece is parameter semantics: 'project' is ambiguous. The behavioral constraints are well covered, but the single required input remains under-specified.

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 provides only 'project' as a required string with minLength 1 and no description. The tool description gives zero additional meaning for this parameter, so an agent cannot tell whether 'project' is a worktree path, a project name, a directory, or an identifier. With 0% schema description coverage, this is a notable gap.

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 uses a specific verb and resource: 'Remove a clean runner-managed worktree and unregister it.' This clearly distinguishes the tool from siblings like git_worktree_create and from branch-deletion operations by adding scope and constraints ('runner-managed', 'branch is retained').

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 gives clear usage conditions: only clean worktrees can be removed, dirty worktrees are refused, and the branch is retained. This implies when-not-to-use, but it does not explicitly name alternatives or state when another tool like git_create_branch or manual git worktree removal should be preferred.

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

list_directoryList project directoryA

List one directory inside a registered project while hiding sensitive paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo.
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
entriesYes
projectYes
truncatedYes

TDQS

A3.9/5.0
Behavior4/5

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

There are no annotations, so the description carries the behavioral disclosure burden. It meaningfully discloses that sensitive paths are hidden and that the operation is scoped to one directory inside a registered project. It does not mention error behavior or permissions, but the non-mutating nature is clear from the verb 'List.'

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 concise sentence that front-loads the action and resource. Every phrase adds value: the scope ('one directory'), the context ('inside a registered project'), and the filtering behavior ('hiding sensitive paths').

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?

The tool is simple and an output schema exists, so return value documentation is not needed. However, the description does not fully clarify path semantics or provide explicit guidance on when to prefer this tool over find_files or read_file. It is minimally viable but leaves clear gaps for an agent deciding among siblings.

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?

Schema description coverage is 0%, so the description must compensate. It provides some semantic anchoring: 'registered project' maps to the project parameter and 'one directory' hints at the path parameter. However, it does not explain whether path is relative to the project root, what format project takes, or the meaning of the '.' default, leaving partial 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 states a specific verb and resource: 'List one directory inside a registered project.' The phrase 'while hiding sensitive paths' further defines scope. This makes it clear that the tool returns directory entries for a single directory and differentiates it from sibling tools like list_projects, find_files, and read_file.

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: it is for listing a single directory within a registered project, not for recursive search or reading file contents. However, it never explicitly names alternatives or states when not to use this tool, so the guidance is only implicit.

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

list_projectsList registered projectsA

List projects registered with the local MCP runner and their access mode.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
projectsYes

TDQS

A4.5/5.0
Behavior4/5

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

There are no annotations, so the description carries the transparency burden. It clearly indicates a non-mutating enumeration operation, scopes the source ('registered with the local MCP runner'), and states that access mode is part of the result. This is adequate for a simple no-parameter list tool, though it does not mention edge cases or read-only guarantees explicitly.

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 one tight sentence that front-loads the action and resource, then adds the relevant output detail. No filler or repetition; every word contributes.

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

Completeness5/5

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

For a zero-parameter, no-annotation listing tool with an output schema present, the description provides enough context: what is listed, where it is listed from, and what aspect of each project is included. No critical information is missing for correct 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 input schema has zero parameters and 100% schema coverage, so there is nothing for the description to add about parameter meanings. The baseline for zero-parameter tools is 4, and the description sufficiently describes what the tool returns instead.

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 uses a specific verb ('List') and a specific resource ('projects registered with the local MCP runner'), and adds the distinguishing detail that access mode is included. This clearly separates it from sibling tools like project_info, which likely targets a single project.

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 intended use is clear: call this when you need to enumerate registered projects and their access modes. It does not explicitly name alternatives or state when not to use it, but with zero parameters and a straightforward list purpose, the usage context is evident.

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

project_infoProject informationA

Return project root, access mode, managed-worktree metadata, and Git branch state.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
gitYes
modeYes
rootYes
projectYes
sourceProjectYes
managedWorktreeYes
configuredBranchYes

TDQS

A3.6/5.0
Behavior4/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 explicitly signals a read-only operation with 'Return' and lists all the state it exposes, making the non-mutating nature clear. It does not describe error cases or the meaning of 'access mode,' but for a simple info query the behavior is adequately disclosed.

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 one tight sentence, front-loaded with the action and a compact enumeration of returned data. Every word contributes to the meaning, with no fluff or repetition.

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?

An output schema exists to detail return shape, and the description covers the high-level output categories. However, the input parameter is left underspecified and there is no pointer to sibling tools like list_projects that could provide a valid value. For a single-parameter tool this is a moderate but real gap.

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?

Schema description coverage is 0%, and the description does not clarify what value 'project' should take (name, ID, path) or how to obtain it. The parameter name and the phrase 'project root' offer only an implicit hint, so the description does not compensate for the missing schema documentation.

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 states a specific verb ('Return') and enumerates the exact resource-level data returned: project root, access mode, managed-worktree metadata, and Git branch state. This clearly identifies it as a per-project info tool and distinguishes it from siblings like list_projects or git_status without ambiguity.

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?

There is no guidance about when to use this tool versus alternatives such as list_projects, file_info, or git_status. The description implies it is for retrieving a single project's details, but it gives no prerequisites, routing conditions, or exclusions.

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

project_scriptsList project scriptsA

List package.json scripts and report whether sandboxed execution is supported for this project. executionSupported answers 'can this environment run scripts at all'; executionEnabled folds in the kill switch.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
reasonNo
projectYes
scriptsYes
hashMatchesYes
scriptHashesYes
deniedScriptsYes
packageSha256Yes
allowedScriptsNo
packageManagerYes
executionEnabledYes
killSwitchActiveYes
executionSupportedYes
sensitiveFilesInWorktreeYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the burden and it does add useful behavioral context by explaining the difference between executionSupported and executionEnabled, including the kill switch. The read-only nature is reasonably clear from 'List', though it is not explicitly stated.

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 compact and front-loaded: the first sentence states the core action, and the second sentence defines the two execution flags. No unnecessary words or repetition.

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?

The output schema likely covers return shape, and the description explains the two boolean fields well. However, the project parameter remains underspecified, and there is no explicit connection to run_script for the agent to understand the full workflow context.

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?

Schema description coverage is 0%, and the only required parameter 'project' is not explained. The description says 'for this project' but does not clarify whether the value should be a name, ID, or path, so it fails to compensate for the missing schema documentation.

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 action and resource: list package.json scripts and report execution support for the project. It distinguishes itself from the sibling run_script tool by describing listing and capability reporting rather than execution.

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 this is a pre-flight inspection tool for script execution, but it does not explicitly say when to use this tool versus run_script or other siblings. No alternatives or exclusions are mentioned.

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

read_fileRead project fileA

Read one UTF-8 text file inside a registered project.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
contentYes
projectYes

TDQS

A3.6/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 behavioral disclosure burden. It does disclose that the operation is a non-mutating read of exactly one UTF-8 text file within a registered project. However, it does not mention path resolution, error behavior, or access prerequisites beyond 'registered project'.

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, front-loaded sentence with no filler or repetition. Every word adds meaning: 'Read', 'one', 'UTF-8 text file', and 'inside a registered project' are all relevant to invoking the tool correctly.

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?

For a simple tool with two required string parameters and an output schema, the description covers the core operation and scope adequately. The main gap is the absence of routing guidance among the many file-related siblings, but the low complexity and existing output schema keep the definition reasonably complete.

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 provides only minLength constraints with 0% description coverage. The description adds limited semantics by implying that 'path' refers to a text file and that 'project' must be a registered project, but it does not clarify path format, whether paths are relative or absolute, or what values are valid for project.

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 a specific verb ('Read'), a specific resource ('one UTF-8 text file'), and a scope ('inside a registered project'). The singular 'one' helps distinguish it from the sibling tool 'read_files', so an agent can tell them apart.

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 provides no guidance on when to use this tool versus alternatives such as 'read_files', 'list_directory', 'find_files', or 'file_info'. It does not mention exclusions, prerequisites, or why an agent would choose this tool over its siblings.

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

read_filesRead multiple project filesA

Read up to 20 UTF-8 text files from one registered project.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYes
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
filesYes
projectYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose that the operation is a read, limits file count to 20, restricts to UTF-8 text, and scopes to one registered project. However, it does not explain behavior for missing files, binary/non-UTF-8 content, path resolution, or error cases, so transparency is incomplete.

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 sentence with no filler. Key constraints—20 files, UTF-8, one registered project—are front-loaded, and every phrase earns its place.

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?

For a simple two-parameter read tool with an output schema, the basic call shape is inferable. But with no annotations and no schema descriptions for the parameters, the agent still lacks important details about path and project identifiers and error handling, leaving meaningful gaps for correct 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?

Schema description coverage is 0%, and the description only loosely maps 'files' to the paths parameter and 'registered project' to the project parameter. It does not specify whether paths are relative or absolute, whether project is a name or ID, or any format constraints, so it adds minimal meaning beyond the parameter names.

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 uses the specific verb 'Read' with a clear resource: up to 20 UTF-8 text files from one registered project. The plural 'files' and the 'up to 20' limit distinguish it from the sibling single-file tool read_file, and the title reinforces the same distinction.

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?

It gives clear context—read multiple UTF-8 text files from a single registered project—but it never explicitly names an alternative or states when not to use this tool. The guidance is implied via the plural and 'up to 20' rather than stated directly.

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

replace_textSafely replace textA

Replace exactly one text block in an existing file using an expected SHA-256 concurrency guard.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
newTextYes
oldTextYes
projectYes
expectedSha256Yes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
bytesYes
sha256Yes
projectYes
replacedYes
previousSha256Yes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It does disclose that the operation mutates an existing file, is limited to one text block, and is guarded by expectedSha256, which is meaningful context. However, it does not state failure behavior for hash mismatch, missing oldText, or multiple occurrences, nor any permission or side-effect 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 entire description is one efficient sentence with no filler. The primary action and the distinguishing concurrency guard are front-loaded, and every word contributes useful information.

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 no annotations, zero schema parameter descriptions, and a mutation tool requiring a SHA-256 guard, this description is too thin. The agent still needs to know how to obtain expectedSha256, what error cases exist, and what project/path refer to. The output schema may cover return values, but it does not compensate for the missing operational guidance.

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?

Schema description coverage is 0%, so the description must compensate. It adds some meaning for expectedSha256 ('concurrency guard') and implies oldText/newText roles, but project and path are left undefined, and no parameter mapping is provided. This is insufficient for five required parameters.

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 names a specific action ('Replace'), a specific resource ('text block in an existing file'), and key constraints ('exactly one', 'expected SHA-256 concurrency guard'). This clearly distinguishes it from sibling tools like create_file, delete_file, or search_text.

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 single targeted replacements rather than whole-file writes or multi-occurrence edits, but it never explicitly states when to use this tool versus alternatives. No sibling tool is named and no exclusion criteria are provided, so the agent must infer the boundary from the phrase 'exactly one text block'.

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

run_scriptRun project scriptA

Execute an allowlisted, hash-pinned npm/pnpm script inside a macOS Seatbelt sandbox. network is always 'none'; script execution is confined to a runner-managed READ_WRITE mcp/* worktree. A non-zero script exit code is a successful MCP call (the script ran; the test failed).

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYes
networkNo
projectYes
timeoutSecondsNo
expectedPackageSha256No

Output Schema

ParametersJSON Schema
NameRequiredDescription
reasonYes
scriptYes
signalYes
stderrYes
stdoutYes
endedAtYes
networkYes
projectYes
decisionYes
exitCodeYes
timedOutYes
cancelledYes
startedAtYes
durationMsYes
scriptSha256Yes
packageSha256Yes
packageManagerYes
timeoutSecondsYes
descendantStateYes
stderrTruncatedYes
stdoutTruncatedYes
descendantsRemainingYes

TDQS

A3.8/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: it discloses that network is always 'none', execution is confined to a runner-managed READ_WRITE mcp/* worktree, and a non-zero exit code is still a successful MCP call. These are non-obvious and valuable operational details. It omits a few edge behaviors, but the output schema covers return shape.

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?

Three dense sentences, no filler. The most important behavioral constraints are front-loaded, and the surprising exit-code semantics are given their own sentence. Every clause adds decision-relevant information.

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?

For a 5-parameter tool with no annotations and no schema descriptions, the description is not fully complete: it lacks parameter-level guidance and explicit routing to project_scripts. However, it does cover environment, network, and exit-code semantics, which are the riskiest aspects of invoking this tool, and an output schema exists for return-value expectations.

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?

Schema description coverage is 0%, so the description must compensate, but it only indirectly touches parameters: 'network is always none' clarifies the network parameter, and 'hash-pinned' hints at expectedPackageSha256. It does not explain project, script, timeoutSeconds, or expectedPackageSha256 beyond what the bare schema shows.

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 states a specific action and resource: 'Execute an allowlisted, hash-pinned npm/pnpm script inside a macOS Seatbelt sandbox.' It clearly differentiates run_script from file/git tools and from project_scripts, which likely lists scripts rather than executing them.

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 tool's purpose implies it should be used when a project-defined npm/pnpm script needs to be executed, and the sandbox/network constraints set clear expectations. However, it does not explicitly say when to prefer this over alternatives, nor does it mention project_scripts as the way to discover available allowlisted scripts or what happens for non-allowlisted scripts.

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

search_textSearch project textA

Search for a fixed text string in project files with bounded output; regex and shell execution are not used.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo.
queryYes
projectYes
maxResultsNo
caseSensitiveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
projectYes
resultsYes
truncatedYes

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 it spends it well: it discloses that matching is literal, results are capped ('bounded output'), and — critically — that regex and shell execution are explicitly not used, preventing dangerous assumptions about ReDoS or command injection. It omits recursion scope and binary/hidden file handling, but the most safety-relevant boundaries are stated.

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?

A single front-loaded sentence where every clause earns its place: the action comes first, then the output-bounding constraint, then the two safety exclusions. There is no filler and no repetition of schema defaults like maxResults=100 or caseSensitive=false.

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?

The output schema exists, so return values need not be explained, and the description covers the core invocation-safe facts. However, with 5 parameters, 0% schema coverage, and zero annotations, the absence of any guidance on search scope (recursion, how path interacts with project) and no sibling routing leaves the agent with adequate-but-gappy information.

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?

Schema description coverage is 0%, so the description must compensate. It adds meaning for query ('fixed text string' = literal, not regex) and maxResults ('bounded output'), but provides nothing for project, path, or caseSensitive, which must be inferred from parameter names alone. That is partial compensation for a significant coverage gap.

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 uses a specific verb and resource — 'Search for a fixed text string in project files' — and adds two scoping constraints ('fixed text string', 'bounded output'). These constraints distinguish it from siblings like find_files (filename search), replace_text (text mutation), and run_script (shell execution) without needing to open the schema.

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 exclusions 'regex and shell execution are not used' imply when NOT to use this tool, but the description never names the alternative to prefer for regex or shell-based search (e.g., run_script, grep-style tools). Usage context is implied rather than explicit, so the agent must infer routing from sibling tool names.

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. Dates show when Glama detected each change.

  1. 24 tool updatesv2.0.0
    • First observedcreate_directory
    • First observedcreate_file
    • First observeddelete_file
    • First observedfile_info
    • First observedfind_files
    • First observedgit_branch_list
    • First observedgit_commit
    • First observedgit_create_branch
    • First observedgit_diff
    • First observedgit_log
    • First observedgit_status
    • First observedgit_worktree_create
    • First observedgit_worktree_remove
    • First observedgithub_repository_create
    • First observedgithub_repository_info
    • First observedlist_directory
    • First observedlist_projects
    • First observedproject_info
    • First observedproject_scripts
    • First observedread_file
    • First observedread_files
    • First observedreplace_text
    • First observedrun_script
    • First observedsearch_text

TDQS

A3.5/5.0
Disambiguation5/5

Every tool targets a distinct resource and action: project listing vs project detail, single-file vs multi-file reads, name-based search vs content search, and Git operations are all cleanly separated. Even similar-sounding tools like git_create_branch and git_worktree_create are clearly differentiated by their descriptions.

Naming Consistency3/5

All names are readable lowercase snake_case with useful domain prefixes, but conventions are mixed: list_projects is verb-first while project_info is noun-first, create_file is verb-first while github_repository_create is object-first, and git_branch_list places list at the end. The patterns are understandable but not consistent enough for a 4 or 5.

Tool Count3/5

With 24 tools, this sits in the heavy 16-25 band. The broad multi-domain scope justifies much of the surface area, but several tools could plausibly be consolidated, and the overall selection size is larger than the typical well-scoped MCP server.

Completeness4/5

The core lifecycle is well covered: project discovery, file exploration/reading, bounded file mutations, Git branch/worktree/commit workflows, and script execution all have sensible tooling. Minor gaps exist, such as no push/merge/rename operations, but these appear intentional given the sandboxed, runner-focused design.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to interact with local Git repositories for operations like status, commits, branching, and diffs, plus GitHub API integration for managing pull requests when authenticated.
    -
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to perform code reviews by providing access to staged files, git diffs, and repository file content. It allows users to evaluate changes and context within any local git repository before committing or pushing.
    3
    17
    ISC
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to access live GitHub repository data without cloning, supporting repo summarization, file explanation, recent changes, and dependency analysis.
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to inspect local Git repositories and interact with the GitHub API for reading commits, diffs, files, issues, comments, pull requests, and project boards.
    10
    607
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/CosmGrid/local-mcp-dev-runner'

If you have feedback or need assistance with the MCP directory API, please join our Discord server