git-mcp-server
The Git MCP Server enables programmatic interaction with Git repositories for AI agents, IDE extensions, and other MCP-compatible applications.
Capabilities include:
Repository Operations: Initialize, clone, and check repository status
Version Control: Stage files, commit changes, push/pull from remotes
Branch Management: Create, list, delete, and switch branches
Tag Handling: Create, list, and delete tags (including signed/annotated tags)
Remote Management: Add, remove, and list remote repositories
Stash Operations: Save, apply, pop, and remove stashed changes
Advanced Operations: Merge branches, rebase commits, reset HEAD, show diffs
Bulk Actions: Execute multiple Git operations in sequence
Safety Features: Includes safeguards for destructive operations
Note: Most operations require absolute paths for precise repository and file targeting.
Provides comprehensive Git operations including repository initialization, cloning, file staging, committing, branch management, tag operations, remote repository handling, and stash management, enabling LLMs to interact with Git repositories.
Supports interactions with GitHub repositories through Git operations like cloning from GitHub URLs, pushing to and pulling from GitHub remotes, enabling LLMs to manage code on GitHub.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@git-mcp-servershow me the commit history for the last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Tools
28 git operations organized into seven categories:
Category | Tools | Description |
Repository Management |
| Initialize repos, clone from remotes, check status, clean untracked files |
Staging & Commits |
| Stage changes, create commits, compare changes |
History & Inspection |
| View commit history, inspect objects, trace authorship, view ref logs |
Analysis |
| Gather git context and instructions for LLM-driven changelog analysis |
Branching & Merging |
| Manage branches, switch contexts, integrate changes, apply specific commits |
Remote Operations |
| Configure remotes, fetch updates, synchronize repositories, publish changes |
Advanced Workflows |
| Tag releases (list/create/delete/verify), stash changes, reset state, manage worktrees, set/clear session directory |
Related MCP server: GIT MCP Server
Resources
Resource | URI | Description |
Git Working Directory |
| The current session working directory, set via |
Prompts
Prompt | Description | Parameters |
Git Wrap-up | Workflow protocol for completing git sessions: review, document, commit, and tag changes. |
|
Getting started
Runtime
Works with both Bun and Node.js. Runtime is auto-detected.
Runtime | Command | Minimum Version |
Node.js |
| >= 20.0.0 |
Bun |
| >= 1.2.0 |
MCP client configuration
Add the following to your MCP client config (e.g., cline_mcp_settings.json). Update the environment variables to match your setup — especially the git identity fields.
{
"mcpServers": {
"git-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["@cyanheads/git-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info",
"GIT_BASE_DIR": "~/Developer/",
"LOGS_DIR": "~/Developer/logs/git-mcp-server/",
"GIT_USERNAME": "cyanheads",
"GIT_EMAIL": "casey@caseyjhand.com",
"GIT_SIGN_COMMITS": "true"
}
}
}
}Bun users: replace "command": "npx" with "command": "bunx".
For Streamable HTTP, set MCP_TRANSPORT_TYPE=http and MCP_HTTP_PORT=3015.
Features
Built on mcp-ts-template.
Feature | Details |
Declarative tools | Define capabilities in single, self-contained files. The framework handles registration, validation, and execution. |
Error handling | Unified |
Authentication | Supports |
Pluggable storage | Swap backends ( |
Observability | Structured logging (Pino) and optional auto-instrumented OpenTelemetry for traces and metrics. |
Dependency injection | Built with |
Cross-runtime | Auto-detects Bun or Node.js and uses the appropriate process spawning method. |
Provider architecture | Pluggable git provider system. Current: CLI. Planned: isomorphic-git for edge deployment. |
Working directory management | Session-specific directory context for multi-repo workflows. |
Configurable git identity | Override author/committer info via environment variables, with fallback to global git config. |
Commit signing | GPG/SSH signing (enabled by default) for commits, merges, rebases, cherry-picks, and tags. Silent fallback to unsigned on failure with |
Safety | Destructive operations ( |
Security
All file paths are validated and sanitized to prevent directory traversal.
Optional
GIT_BASE_DIRrestricts operations to a specific directory tree for multi-tenant sandboxing.Git commands use validated arguments via process spawning — no shell interpolation.
JWT and OAuth support for authenticated deployments.
Optional rate limiting via the DI-managed
RateLimiterservice.All operations are logged with request context for auditing.
Configuration
All configuration is validated at startup in src/config/index.ts. Key environment variables:
Variable | Description | Default |
| Transport: |
|
| HTTP session mode: |
|
| Response format: |
|
| Detail level: |
|
| HTTP server port. |
|
| HTTP server hostname. |
|
| MCP request endpoint path. |
|
| Authentication mode: |
|
| Storage backend: |
|
| Enable OpenTelemetry. |
|
| Minimum log level: |
|
| GPG/SSH signing for commits, merges, rebases, cherry-picks, and tags. Falls back to unsigned on failure (see response |
|
| Git author name. Aliases: |
|
| Git author email. Aliases: |
|
| Absolute path to restrict all git operations to a specific directory tree. |
|
| Path to custom markdown file with workflow instructions. |
|
| Required for |
|
| Required for |
|
Running the server
Via package manager (no install)
npx @cyanheads/git-mcp-server@latestConfigure through environment variables or your MCP client config.
Local development
# Build and run
npm run rebuild
npm run start:stdio # or start:http
# Dev mode with hot reload
npm run dev:stdio # or dev:http
# Checks and tests
npm run devcheck # lint, format, typecheck
npm testCloudflare Workers
npm run build:worker # Build the worker bundle
npm run deploy:dev # Run locally with Wrangler
npm run deploy:prod # Deploy to CloudflareProject structure
Directory | Purpose |
| Tool definitions ( |
| Resource definitions ( |
| HTTP and STDIO transport implementations, including auth. |
|
|
| Git service provider (CLI-based git operations). |
| DI container registrations and tokens. |
| Logging, error handling, performance, security utilities. |
| Environment variable parsing and validation (Zod). |
| Unit and integration tests, mirroring |
Response format
Configure output format and verbosity via MCP_RESPONSE_FORMAT and MCP_RESPONSE_VERBOSITY.
JSON format (default, optimized for LLM consumption):
{
"success": true,
"branch": "main",
"staged": ["src/index.ts", "README.md"],
"unstaged": ["package.json"],
"untracked": []
}Markdown format (human-readable):
# Git Status: main
## Staged (2)
- src/index.ts
- README.md
## Unstaged (1)
- package.jsonThe LLM always receives the complete structured data via responseFormatter — full file lists, metadata, timestamps — regardless of what the client displays. Verbosity controls how much detail is included: minimal (core fields only), standard (balanced), or full (everything).
Development guide
See AGENTS.md for architecture, tool development patterns, and contribution rules.
Testing
Tests use Bun's test runner with Vitest compatibility.
bun test # Run all tests
bun test --coverage # With coverage
bun run devcheck # Lint, format, typecheck, auditRoadmap
The server uses a provider-based architecture for git operations:
CLI provider (current) — Full 28-tool coverage via native git CLI. Requires local git installation.
Isomorphic git provider (planned) — Pure JS implementation for edge deployment (Cloudflare Workers, Vercel Edge, Deno Deploy). Uses isomorphic-git.
GitHub API provider (maybe) — Cloud-native operations via GitHub REST/GraphQL APIs, no local repo required.
Contributing
Issues and pull requests are welcome. Run checks before submitting:
npm run devcheck
npm testLicense
Apache 2.0. See LICENSE.
Available Tools
28 toolsgit_addGit AddA
Stage files for commit. Add file contents to the staging area (index) to prepare for the next commit.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| files | No | Array of file paths to stage (relative to repository root). Use ["."] to stage all changes. Can be omitted when all or update is true. | |
| update | No | Stage only modified and deleted files (skip untracked files). | |
| all | No | Include all items (varies by operation). | |
| force | No | Allow adding otherwise ignored files. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| stagedFiles | Yes | Files that were successfully staged. |
| totalFiles | Yes | Total number of files staged. |
| status | Yes | Repository status after staging files. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint: false, and the description adds context that this modifies the staging area/index rather than working directory files. However, it misses behavioral details like reversibility (can be undone with git_reset), error conditions, or the distinction between staging tracked vs untracked files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two efficient sentences with zero waste. The first sentence front-loads the core action ('Stage files'), and the second clarifies the mechanism ('Add file contents to the staging area').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and 100% parameter coverage, the description adequately covers the core concept. It could be improved by mentioning the relationship to git_commit or common staging workflows, but it is sufficient for tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline score is 3. The description mentions 'files' generally but adds no semantic detail about specific parameters like 'update' (modified/deleted only), 'all' (include untracked), or 'force' (ignored files) beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool stages files for commit and explains the staging area/index concept. It implies the workflow relationship with committing (distinguishing from git_commit), though it doesn't explicitly contrast with sibling tools like git_reset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'prepare for the next commit' implies this tool should be used before committing, providing minimal workflow context. However, it lacks explicit when-to-use guidance (e.g., 'use this to select specific changes') or when-not-to-use exclusions (e.g., 'do not use if you want to discard changes').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_blameGit BlameARead-only
Show line-by-line authorship information for a file, displaying who last modified each line and when. For large files, use startLine/endLine to limit output.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| file | Yes | Path to the file to blame (relative to repository root). | |
| startLine | No | Start line number (1-indexed). | |
| endLine | No | End line number (1-indexed). | |
| ignoreWhitespace | No | Ignore whitespace changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| file | Yes | The file that was blamed. |
| lines | Yes | Array of blame information for each line. |
| totalLines | Yes | Total number of lines in the output. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true. Description adds valuable behavioral context about performance characteristics with large files and output volume management via line ranges, which is not inferable from the annotation alone. No contradictions with structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. First sentence front-loads core functionality; second provides essential optimization guidance. Appropriate density for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (covering return values) and readOnlyHint annotation (covering safety), plus the straightforward nature of git blame, the description successfully covers the essential behavioral concerns (large file handling) without redundancy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, establishing baseline context for all 5 parameters. Description adds semantic value by explaining the purpose of startLine/endLine (limiting output for large files), which goes beyond the schema's mere 'Start line number' definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb ('Show') + resource ('line-by-line authorship information') + scope ('for a file'). Distinct from siblings like git_log (history) or git_diff (changes) by emphasizing per-line authorship tracking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides specific optimization guidance ('For large files, use startLine/endLine to limit output') indicating when to use line range parameters. Lacks explicit comparison to alternatives (e.g., when to use git_log instead), but offers concrete usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_branchGit BranchA
Manage branches: list all branches, show current branch, create a new branch, delete a branch, or rename a branch.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| operation | No | The branch operation to perform. | list |
| name | No | Branch name for create/delete/rename operations. | |
| newName | No | New branch name for rename operation. | |
| startPoint | No | Starting point (commit/branch) for new branch creation. | |
| force | No | Force the operation, bypassing safety checks. | |
| all | No | For list operation: show both local and remote branches. | |
| remote | No | For list operation: show only remote branches. | |
| merged | No | For list operation: show only branches merged into HEAD (true) or specified commit (string). | |
| noMerged | No | For list operation: show only branches not merged into HEAD (true) or specified commit (string). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| operation | Yes | |
| branches | No | List of branches (for list operation). |
| currentBranch | No | Name of current branch. |
| message | No | Success message for create/delete/rename operations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation indicates readOnlyHint: false, and the description corroborates this by listing mutating operations (create, delete, rename). It adds value by specifying which mutations are possible, but does not elaborate on safety implications, failure modes, or the specific effects of the force parameter beyond the schema description. Additional context about unmerged branch deletion behavior or rename conflicts is absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of a single, efficiently structured sentence that front-loads the general capability ('Manage branches') followed by specific operations. No words are wasted on tautology or redundant restatement of the tool name. The colon-separated list format provides excellent information density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the comprehensive input schema (100% coverage) and the existence of an output schema, the description appropriately serves as a high-level capability summary rather than exhaustive documentation. It successfully enumerates all five supported operations from the enum. However, it could enhance completeness by explicitly noting the destructive nature of delete operations given the minimal annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the structured data already documents all 10 parameters comprehensively. The description mirrors the operation enum values but does not augment the schema with additional semantic context, syntax examples, or cross-parameter relationships. It maintains the baseline score appropriate for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates five specific operations (list, show-current, create, delete, rename) on the resource 'branches', providing clear functional scope. While 'Manage' is slightly generic, the colon-delimited list effectively specifies the tool's capabilities. However, it lacks explicit differentiation from sibling tools like git_checkout that may overlap in branch creation functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists the available operations but provides no explicit guidance on when to use this tool versus alternatives like git_checkout for branch creation or switching. There are no 'when-not' exclusions or prerequisites mentioned for destructive operations like delete. Usage guidance remains implied through the operation enumeration rather than explicit recommendation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_changelog_analyzeGit Changelog AnalyzeARead-only
Gather git history context (commits, tags) and structured review instructions to support LLM-driven changelog analysis. Changelog file should be read separately; this tool provides the supporting git data and analysis framework. Pass one or more review types to control what kind of analysis to perform.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| reviewTypes | Yes | Types of changelog review to perform. At least one required. Options: security, features, storyline, gaps, breaking_changes, quality. | |
| maxCommits | No | Maximum recent commits to fetch for cross-referencing (1-1000). | |
| sinceTag | No | Only include git history since this tag (e.g., "v1.2.0"). Narrows the analysis window. | |
| branch | No | Branch to analyze (defaults to current branch). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| reviewTypes | Yes | Review types that were requested. |
| gitContext | Yes | Git history context for changelog cross-referencing. |
| reviewInstructions | Yes | Analysis instructions for each requested review type. Guides the LLM on what to look for in the changelog. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds valuable behavioral context beyond readOnlyHint=true annotation: specifies it provides 'structured review instructions' and an 'analysis framework' (suggesting formatted output, not raw git log), and clarifies data scope (commits for cross-referencing). Consistent with read-only safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly constructed sentences with zero waste. Front-loaded with core purpose, followed by critical usage constraint (changelog file separation), and ending with parameter guidance. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete conceptual coverage given rich input schema (100% coverage), presence of output schema, and annotations. Description successfully establishes the tool's role in the broader changelog analysis workflow without needing to duplicate output schema details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing complete parameter documentation. Description minimally references reviewTypes ('Pass one or more review types') but adds no semantic depth beyond schema definitions. Baseline 3 appropriate for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific action ('Gather git history context') and resource ('commits, tags') with clear purpose ('support LLM-driven changelog analysis'). Distinguishes from generic git_log by specifying changelog analysis context and from file tools by noting changelog files are handled separately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear when-not guidance ('Changelog file should be read separately') establishing separation of concerns. Lacks explicit comparison to git_log for when to use this versus standard log retrieval, but offers clear contextual guidance on tool boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_checkoutGit CheckoutA
Switch branches or restore working tree files. Can checkout an existing branch, create a new branch, or restore specific files.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| target | Yes | Branch name, commit hash, or tag to checkout. | |
| createBranch | No | Create a new branch with the specified name. | |
| force | No | Force the operation, bypassing safety checks. | |
| paths | No | Specific file paths to checkout/restore (relative to repository root). | |
| track | No | Set up tracking relationship with remote branch when creating new branch. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| target | Yes | Checked out branch or commit. |
| branchCreated | Yes | True if a new branch was created. |
| filesModified | Yes | Files that were modified during checkout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the readOnlyHint:false annotation, using mutation verbs (switch, restore, create). It adds context about the three operational modes. However, it fails to disclose important behavioral traits like the risk of overwriting local changes during file restoration or the implications of detached HEAD state when checking out commits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first sentence establishes the dual nature of the tool (branches vs files), and the second enumerates the three specific modes. Information is front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of a force parameter and the destructive potential of checkout operations, the description is minimally adequate but missing critical git-specific warnings. It should mention the risk of losing uncommitted changes or clarify HEAD detachment behavior, especially since annotations only indicate non-read-only status without detailing safety profiles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema description coverage, the description adds value by mapping high-level use cases to specific parameters: 'existing branch' → target, 'create a new branch' → createBranch flag, and 'restore specific files' → paths parameter. This semantic bridging helps agents understand parameter purpose beyond type definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs (switch, restore, create) and clearly identifies the resources (branches, working tree files). It distinguishes from siblings like git_branch by explicitly mentioning file restoration capabilities alongside branch operations, clarifying this tool's dual purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description enumerates three distinct usage modes (existing branch, new branch, file restoration), providing implicit context for when to use the tool. However, it lacks explicit guidance on when to use git_branch instead for branch creation, or when to avoid checkout due to uncommitted changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_cherry_pickGit Cherry-PickA
Cherry-pick commits from other branches. Apply specific commits to the current branch without merging entire branches.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| commits | Yes | Commit hashes to cherry-pick. | |
| noCommit | No | Don't create commit (stage changes only). | |
| continueOperation | No | Continue cherry-pick after resolving conflicts. | |
| abort | No | Abort cherry-pick operation. | |
| mainline | No | For merge commits, specify which parent to follow (1 for first parent, 2 for second, etc.). | |
| strategy | No | Merge strategy to use for cherry-pick. | |
| signoff | No | Add Signed-off-by line to the commit message. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| pickedCommits | Yes | Commits that were successfully cherry-picked. |
| conflicts | Yes | Whether operation had conflicts. |
| conflictedFiles | Yes | Files with conflicts that need resolution. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations indicate readOnlyHint: false, and the description confirms this is a write operation ('Apply... to current branch'). However, it fails to disclose important behavioral traits: that cherry-picking creates new commit hashes (doesn't move originals), that it can result in conflicts requiring resolution, or that the working directory must be clean. These are material omissions given the tool's complexity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two efficient sentences with zero redundancy. It is well-structured with the core action front-loaded ('Cherry-pick commits') followed immediately by the value proposition/distinction from alternatives. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema (100% coverage) and presence of an output schema, the description appropriately focuses on conceptual explanation rather than implementation details. It is complete enough for tool selection, though mentioning the conflict resolution workflow would improve operational completeness given the existence of continueOperation/abort parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is appropriately met. The description adds semantic context that commits come 'from other branches', which complements the commits parameter. However, it does not clarify the relationship between the mutually exclusive operational modes (noCommit, continueOperation, abort) or when to use the mainline parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Cherry-pick', 'Apply') and clearly identifies the resource (commits from other branches). The second sentence effectively distinguishes this from git_merge by emphasizing 'without merging entire branches', making the scope distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool—when you need specific commits rather than entire branch merges. However, it lacks explicit guidance on conflict resolution workflows (despite the continueOperation/abort parameters) and doesn't mention when to prefer this over git_rebase for similar commit selection tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_cleanGit CleanA
Remove untracked files from the working directory. Requires force flag for safety. Use dry-run to preview files that would be removed.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| force | No | Force the operation, bypassing safety checks. | |
| dryRun | No | Preview the operation without executing it. | |
| directories | No | Remove untracked directories in addition to files. | |
| ignored | No | Remove ignored files as well. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| filesRemoved | Yes | List of files that were removed. |
| directoriesRemoved | Yes | List of directories that were removed. |
| dryRun | Yes | Whether this was a dry-run (preview only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations indicate readOnlyHint: false, the description adds crucial behavioral context about the safety mechanism (force requirement) and preview capability (dry-run). It effectively communicates the destructive nature without contradicting the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero waste: purpose statement, safety constraint, and best practice. Information is front-loaded and each sentence earns its place. No redundant or vague filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and 100% parameter coverage in the schema, the description appropriately focuses on safety-critical behavioral aspects (force/dry-run) rather than repeating schema details. Could be improved by briefly noting the directories/ignored modifiers, but adequate for safe usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3. The description adds value by explaining the semantic purpose of force ('for safety') and dryRun ('preview files that would be removed'), framing the technical schema descriptions in user-centric safety terms.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Remove') and clear resource ('untracked files from the working directory'), immediately distinguishing it from sibling tools like git_status (viewing) or git_reset (affecting tracked files). The scope is precisely bounded to the working directory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear safety guidance ('Requires force flag for safety') and workflow recommendation ('Use dry-run to preview'), which effectively guides safe invocation. However, it lacks explicit comparison to alternatives (e.g., when to use git_add instead to preserve files).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_clear_working_dirGit Clear Working DirectoryA
Clear the session working directory setting. This resets the context without restarting the server. Subsequent git operations will require an explicit path parameter unless git_set_working_dir is called again.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Explicit confirmation required to clear working directory. Accepted values: 'Y', 'y', 'Yes', or 'yes'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| message | Yes | Confirmation message. |
| previousPath | No | The working directory that was cleared (if one was set). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate `readOnlyHint: false`, and the description adds valuable behavioral context: it clarifies this 'resets the context without restarting the server' and explains the side effect on subsequent operations. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences efficiently cover: (1) the action, (2) the mechanism (no restart needed), and (3) the side effects/workflow implications. Front-loaded with purpose and zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and the tool's narrow scope (state reset), the description adequately covers the operational context and side effects. It appropriately omits return value details since an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage for the single 'confirm' parameter, the schema fully documents the input requirements. The description adds no additional parameter semantics, meeting the baseline for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool clears the 'session working directory setting' (specific verb + resource), distinguishing it from sibling `git_clean` (which removes files) and other git operations that manipulate the filesystem.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by explaining consequences ('Subsequent git operations will require an explicit path parameter') and references the complementary sibling tool `git_set_working_dir` for recovery. However, it lacks explicit 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_cloneGit CloneA
Clone a repository from a remote URL to a local path. Supports HTTP/HTTPS and SSH URLs, with optional shallow cloning.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Remote repository URL to clone from. | |
| localPath | Yes | Local path where the repository should be cloned. | |
| branch | No | Specific branch to clone (defaults to remote HEAD). | |
| depth | No | Create a shallow clone with history truncated to N commits. | |
| bare | No | Create a bare repository (no working directory). | |
| mirror | No | Create a mirror clone (implies bare). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| remoteUrl | Yes | The remote URL that was cloned. |
| localPath | Yes | Local path where repository was cloned. |
| branch | Yes | The branch that was checked out. |
| commitHash | No | Current HEAD commit hash. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation provides readOnlyHint: false, confirming this is a write operation. The description adds valuable context about protocol support and shallow cloning, but fails to disclose critical behavioral traits like error handling when localPath already exists, directory creation behavior, or authentication mechanisms for private repos.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of exactly two efficient sentences with zero redundancy. The first sentence establishes the core operation, and the second adds capability details (protocols/shallow cloning). Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, return values need not be described. However, for a filesystem-mutating operation with 6 parameters, the description lacks operational details such as conflict resolution behavior, disk space requirements, or network dependency warnings that would help an agent handle failures gracefully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is appropriately met. The description references 'shallow cloning' (mapping to the depth parameter) and protocol support (mapping to URL format), but adds minimal semantic meaning beyond what the well-documented schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action (clone), resource (repository), and scope (remote URL to local path). It effectively distinguishes from siblings like git_init (which creates empty repositories) and git_pull (which updates existing ones) by emphasizing the remote-to-local copy operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies usage by mentioning HTTP/HTTPS/SSH support and shallow cloning, it lacks explicit guidance on when to use this versus alternatives (e.g., 'use git_init for creating new empty repositories instead') or prerequisites (e.g., authentication requirements for private repositories).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_commitGit CommitA
Create a new commit with staged changes in the repository. Records a snapshot of the staging area with a commit message.
Commit Message Format: Pass commit messages as JSON string parameters. Multi-line messages are supported using standard JSON string escaping.
Examples:
Single line: { "message": "feat: add user authentication" }
Multi-line: { "message": "feat: add user authentication\n\nImplemented OAuth2 flow with JWT tokens.\nAdded tests for login and logout." }
Note: Do not use bash heredoc syntax. Literal escape sequences (\n, \t) in the message string are automatically normalized to their actual characters.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| message | Yes | Commit message. | |
| author | No | Override commit author (defaults to git config). | |
| amend | No | Amend the previous commit instead of creating a new one. Use with caution. | |
| allowEmpty | No | Allow creating a commit with no changes. | |
| sign | No | Sign the commit/tag with GPG. | |
| noVerify | No | Bypass pre-commit and commit-msg hooks. | |
| filesToStage | No | File paths to stage before committing (atomic stage+commit operation). | |
| forceUnsignedOnFailure | No | If GPG/SSH signing fails, retry the commit without signing instead of failing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| commitHash | Yes | SHA-1 hash of the created commit. |
| message | Yes | The commit message. |
| author | Yes | Author of the commit. |
| timestamp | Yes | Unix timestamp when the commit was created. |
| filesChanged | No | Number of files changed in this commit. |
| committedFiles | Yes | List of files that were committed. |
| insertions | No | Number of line insertions. |
| deletions | No | Number of line deletions. |
| status | Yes | Repository status after the commit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint: false annotation, the description adds valuable behavioral details: it explains JSON string escaping requirements for multi-line messages, warns against bash heredoc syntax, and notes that escape sequences are automatically normalized. These are critical implementation details for correct invocation not inferable from the annotation alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear section headers (Purpose, Commit Message Format, Examples, Note). It is front-loaded with the core purpose, followed by specific formatting constraints and examples. Every sentence serves a purpose, with no redundant fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (9 parameters including GPG signing, amend, atomic staging) and the presence of an output schema, the description appropriately focuses on the non-obvious aspects: JSON string formatting for git messages. It covers the critical escaping behavior that an AI agent needs to construct valid parameters, making it complete for its context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3. The description adds significant value by providing concrete examples of single-line and multi-line commit message JSON formatting, and explaining the specific escaping behavior required. This supplements the schema's basic 'Commit message' description with essential syntax guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new commit with staged changes and records a snapshot of the staging area. It uses specific verbs (Create, Records) and identifies the resource (commit/snapshot), clearly distinguishing it from siblings like git_add, git_push, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning 'staged changes,' suggesting files must be staged first, but lacks explicit workflow guidance. It does not state when to use git_add first versus using the filesToStage parameter, nor does it explicitly caution about using amend instead of regular commits in the main description text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_diffGit DiffBRead-only
View differences between commits, branches, or working tree. Shows changes in unified diff format.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| target | No | Target commit/branch to compare against. If not specified, shows unstaged changes in working tree. | |
| source | No | Source commit/branch to compare from. If target is specified but not source, compares target against working tree. | |
| paths | No | Limit diff to specific file paths (relative to repository root). | |
| staged | No | Show diff of staged changes instead of unstaged. | |
| includeUntracked | No | Include untracked files in the diff. Useful for reviewing all upcoming changes. | |
| nameOnly | No | Show only names of changed files, not the diff content. | |
| stat | No | Show diffstat (summary of changes) instead of full diff content. | |
| contextLines | No | Number of context lines to show around changes. | |
| autoExclude | No | Automatically exclude lock files and other generated files (e.g., package-lock.json, yarn.lock, bun.lock, poetry.lock, go.sum) from diff output to reduce context bloat. Set to false if you need to inspect these files. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| diff | Yes | The diff output in unified diff format. |
| filesChanged | Yes | Number of files with differences. |
| insertions | No | Total number of line insertions. |
| deletions | No | Total number of line deletions. |
| excludedFiles | No | Files that were automatically excluded from the diff (e.g., lock files). Call again with autoExclude=false to include them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, confirming safety. The description adds value by specifying the output format ('unified diff format'), which is behavioral context not in the schema. However, it misses other behavioral traits like how it handles binary files, large diffs, or the default exclusion of lock files (mentioned only in parameter schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first establishes scope, the second output format. Every word earns its place—no redundant filler or obvious restatements of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and 100% parameter coverage, the description does not need to exhaustively detail returns or parameters. It successfully covers the tool's purpose and output format. A score of 4 reflects adequate coverage; a 5 would require addressing edge cases like binary file handling or performance notes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema carries the full burden of parameter documentation. The description implies the conceptual model (source/target comparisons) but does not add syntax details, examples, or clarify relationships between parameters (e.g., how source/target interact) beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the core function ('View differences') and the specific scopes (commits, branches, working tree). It distinguishes from siblings like git_status (which shows summary status) by specifying it shows actual differences, though it could explicitly mention it performs comparisons versus showing historical logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like git_status (for summary changes) or git_show (for specific commit details). It does not mention prerequisites such as being inside a git repository or having a working tree available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_fetchGit FetchA
Fetch updates from a remote repository. Downloads objects and refs without merging them.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| remote | No | Remote name (default: origin). | |
| prune | No | Prune remote-tracking references that no longer exist on remote. | |
| tags | No | Fetch all tags from the remote. | |
| depth | No | Create a shallow clone with history truncated to N commits. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| remote | Yes | Remote name that was fetched from. |
| fetchedRefs | Yes | References that were fetched from the remote. |
| prunedRefs | Yes | References that were pruned (deleted locally). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint: false. The description adds that it 'Downloads objects and refs' (confirming local modification) and specifies the no-merge behavior. However, it omits details about updating remote-tracking branches, network requirements, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. Front-loaded with the core action ('Fetch updates'), followed immediately by the critical behavioral distinction ('without merging'). Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Appropriate for the complexity: 5 optional parameters with 100% schema coverage and an output schema available. The description captures the essential fetch semantics, though it could explicitly mention 'remote-tracking branches' for completeness given the 'refs' terminology may be opaque.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, establishing a baseline of 3. The description does not add parameter-specific semantics (e.g., when to use depth for shallow clones vs full fetch), but the schema adequately documents all 5 optional parameters without needing supplementation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Fetch) + resource (remote repository). The phrase 'without merging them' effectively distinguishes this from git_pull and git_merge siblings, clarifying that it only downloads without integrating changes into the working directory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly suggests usage via 'without merging them' (implying use git_pull instead if merging is desired), but lacks explicit guidance on when to choose this over alternatives or workflow recommendations (e.g., 'use before git_merge to inspect changes').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_initGit InitA
Initialize a new Git repository at the specified path. Creates a .git directory and sets up the initial branch.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| initialBranch | No | Name of the initial branch (default: main). | |
| bare | No | Create a bare repository (no working directory). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| path | Yes | Path where repository was initialized. |
| initialBranch | Yes | Name of the initial branch. |
| isBare | Yes | Whether this is a bare repository. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation declares readOnlyHint: false, and the description adds valuable behavioral context by specifying the side effect: 'Creates a .git directory'. It also notes the initial branch setup behavior. It does not mention idempotency concerns (e.g., failing if .git exists) but provides more than the annotation alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first sentence front-loads the core purpose (initialize repository), while the second adds essential implementation details (.git directory creation, branch setup). Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 well-documented parameters (100% coverage), an output schema (which handles return value documentation), and simple behavior, the description is sufficient. It could improve by mentioning the bare parameter or idempotency, but it covers the essentials adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description loosely references the 'path' ('specified path') and 'initialBranch' ('initial branch') parameters conceptually but adds no syntax, format details, or examples beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Initialize', 'Creates', 'sets up') and clearly identifies the resource (Git repository). It effectively distinguishes from siblings like git_clone (which copies existing repos) and git_add/git_commit (which operate on existing repos) by specifying this creates a 'new' repository.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (creating new repositories from scratch) but provides no explicit guidance on when to use this versus git_clone or prerequisites like directory existence. No 'when-not' or alternative tool references are included despite relevant siblings existing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_logGit LogARead-only
View commit history with optional filtering by author, date range, file path, or commit message pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| maxCount | No | Maximum number of items to return (1-1000). | |
| skip | No | Number of items to skip for pagination. | |
| since | No | Show commits more recent than a specific date (ISO 8601 format). | |
| until | No | Show commits older than a specific date (ISO 8601 format). | |
| author | No | Filter commits by author name or email pattern. | |
| grep | No | Filter commits by message pattern (regex supported). | |
| branch | No | Show commits from a specific branch or ref (defaults to current branch). | |
| filePath | No | Show commits that affected a specific file path. | |
| oneline | No | Abbreviated output: return only hash, shortHash, and subject per commit. Significantly reduces response size. | |
| stat | No | Include file change statistics for each commit. | |
| patch | No | Include the full diff patch for each commit. | |
| showSignature | No | Show GPG signature verification information for each commit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| commits | Yes | Array of commit objects. |
| totalCount | Yes | Total number of commits returned (may be limited by maxCount). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes the safe read-only nature. The description adds no behavioral context beyond the schema, such as pagination behavior (despite skip/maxCount parameters), performance characteristics for large repositories, or how output formats differ between full and oneline modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that front-loads the core action ('View commit history') and efficiently lists the primary filtering capabilities. No redundant or filler text; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 13 parameters, 100% schema coverage, and presence of an output schema, the description provides sufficient high-level orientation. It covers the primary use case (filtered history viewing) adequately, though it could mention pagination or output format variations given the parameter richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds semantic value by grouping four parameters under the 'filtering' concept (author, date range, file path, message pattern), but does not elaborate on the remaining 9 parameters including output modifiers (oneline, stat, patch) or pagination controls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool views commit history and specifically mentions the filtering dimensions (author, date range, file path, message pattern), which distinguishes it from sibling tools like git_show (single commit details) or git_diff (file comparisons).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through 'View commit history' but provides no explicit when-to-use guidance versus alternatives like git_show for single commits or git_reflog for reference logs. Usage is clear from context but lacks explicit comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_mergeGit MergeB
Merge branches together. Integrates changes from another branch into the current branch with optional merge strategies.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| branch | Yes | Branch to merge into current branch. | |
| strategy | No | Merge strategy to use (ort, recursive, octopus, ours, subtree). | |
| noFastForward | No | Prevent fast-forward merge (create merge commit). | |
| squash | No | Squash all commits from the branch into a single commit. | |
| message | No | Custom merge commit message. | |
| abort | No | Abort an in-progress merge that has conflicts. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| strategy | Yes | Merge strategy used. |
| fastForward | Yes | Whether merge was fast-forward. |
| conflicts | Yes | Whether merge had conflicts. |
| conflictedFiles | Yes | Files with conflicts that need resolution. |
| mergedFiles | Yes | Files that were merged. |
| message | Yes | Merge commit message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Aligns with readOnlyHint:false by describing an integration operation. Mentions 'optional merge strategies' which hints at behavioral variation. However, it omits critical behavioral context: potential for merge conflicts, working directory modifications, or the fact that this creates merge commits (unless fast-forwarded), all of which are left to parameter documentation alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. Front-loaded with core action 'Merge branches together' followed by elaboration. Every word earns its place without redundancy or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage and an output schema present, the description doesn't need to explain return values. However, for a complex VCS operation that can leave the repository in a conflicted state, the lack of behavioral context regarding conflicts, side effects, or failure modes leaves gaps that structured fields don't fully compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, establishing baseline 3. Description mentions 'merge strategies' reinforcing the strategy parameter and implies the branch parameter is the source, but adds no syntax details, examples, or semantic nuances beyond what the well-documented schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific action (merge/integrate changes) and resource (branches). However, it fails to distinguish from siblings like git_rebase, git_cherry_pick, or git_pull which also integrate changes, leaving ambiguity about which integration method to choose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use merge versus rebase (git_rebase), cherry-pick (git_cherry_pick), or pull (git_pull). Missing prerequisites like 'ensure working directory is clean' or guidance on conflict resolution workflows despite the existence of the abort parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_pullGit PullA
Pull changes from a remote repository. Fetches and integrates changes into the current branch.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| remote | No | Remote name (default: origin). | |
| branch | No | Branch name (default: current branch). | |
| rebase | No | Use rebase instead of merge when integrating changes. | |
| fastForwardOnly | No | Fail if can't fast-forward (no merge commit). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| remote | Yes | Remote name that was pulled from. |
| branch | Yes | Branch that was pulled. |
| strategy | Yes | Integration strategy used. |
| conflicts | Yes | Whether pull had conflicts. |
| filesChanged | Yes | Files that were changed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description confirms the write-operation nature (consistent with readOnlyHint:false) by mentioning 'integrates changes,' but fails to disclose critical behavioral traits like potential for merge conflicts, creation of merge commits, or network requirements. With minimal annotations, more safety context was needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first establishes the high-level operation; the second clarifies the mechanism (fetch+integrate) that distinguishes this tool from siblings. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema and comprehensive parameter documentation, the description doesn't need to explain return values. However, for a state-modifying operation with complex branching behavior (merge vs rebase), it should mention conflict handling or failure modes to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema adequately documents all parameters including rebase and fastForwardOnly behaviors. The description adds minimal parameter-specific semantics beyond implying the 'current branch' default, meriting the baseline score for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Pull', 'Fetches', 'integrates') with clear resources ('remote repository', 'current branch'). It effectively distinguishes from siblings by emphasizing the dual fetch-and-integrate nature, unlike git_fetch (fetch only) or git_merge (local integration only).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies the workflow by stating it both fetches and integrates, it lacks explicit guidance on when to use git_pull versus running git_fetch followed by git_merge, or warnings about prerequisites like a clean working tree. No alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_pushGit PushC
Push changes to a remote repository. Uploads local commits to the remote branch.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| remote | No | Remote name (default: origin). | |
| branch | No | Branch name (default: current branch). | |
| force | No | Force push (overwrites remote history). | |
| forceWithLease | No | Safer force push - only succeeds if remote branch is at expected state. | |
| setUpstream | No | Set upstream tracking relationship for the branch. | |
| tags | No | Push all tags to the remote. | |
| dryRun | No | Preview the operation without executing it. | |
| delete | No | Delete the specified remote branch. | |
| remoteBranch | No | Remote branch name to push to (if different from local branch name). | |
| confirmed | No | Explicit confirmation required for force push or branch deletion on protected branches (main, master, production, etc.). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| remote | Yes | Remote name that was pushed to. |
| branch | Yes | Branch that was pushed. |
| upstreamSet | Yes | Whether upstream tracking was set for the branch. |
| pushedRefs | Yes | References that were successfully pushed. |
| rejectedRefs | Yes | References that were rejected by the remote. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While the annotation indicates readOnlyHint: false, the description fails to disclose critical behavioral traits: that this modifies remote state destructively (force/delete options), requires network connectivity and authentication, or that the 'confirmed' parameter gates dangerous operations on protected branches. The schema reveals these capabilities but the description doesn't contextualize the risks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with two short sentences and no wasted words. However, it errs on the side of excessive brevity given the tool's complexity, missing an opportunity to front-load safety warnings about destructive operations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite comprehensive schema coverage and an output schema existing, the description is inadequate for an 11-parameter tool with destructive capabilities. It fails to explain the safety mechanisms (confirmed parameter), the implications of force pushing, or workflow prerequisites (e.g., committing first), leaving significant gaps an agent would need to discover through trial or schema inspection alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is appropriately 3. The description adds no parameter-specific guidance (e.g., explaining when to use forceWithLease versus force, or the interaction between branch and remoteBranch), relying entirely on the schema's individual field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool uploads local commits to a remote repository using specific verbs ('Push', 'Uploads'). However, it lacks explicit differentiation from sibling tools like git_fetch (download) or git_pull (download+merge), which could help an agent choose correctly in workflows involving remote synchronization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (e.g., git_push vs git_fetch), prerequisites (commits must exist locally, remote must be configured), or when to use specific modes like force push versus standard push. The agent must infer usage solely from the parameter schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_rebaseGit RebaseB
Rebase commits onto another branch. Reapplies commits on top of another base tip for a cleaner history.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| mode | No | Rebase operation mode: 'start', 'continue', 'abort', or 'skip'. | start |
| upstream | No | Upstream branch to rebase onto (required for start mode). | |
| branch | No | Branch to rebase (default: current branch). | |
| interactive | No | Interactive rebase (not supported in all providers). | |
| onto | No | Rebase onto different commit than upstream. | |
| preserve | No | Preserve merge commits during rebase. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| conflicts | Yes | Whether rebase had conflicts. |
| conflictedFiles | Yes | Files with conflicts that need resolution. |
| rebasedCommits | Yes | Number of commits that were rebased. |
| currentCommit | No | Current commit hash if rebase stopped due to conflict. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false (mutative), and the description adds that commits are 'reapplied' and history becomes 'cleaner,' which hints at rewriting. However, it omits key behavioral traits: that commit hashes change, that conflicts may require manual resolution, or that this is a destructive history rewrite.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently structured: first defines the action, second explains the mechanism and value proposition. No redundant or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 100% schema coverage and existence of an output schema, the description adequately covers the basics. However, for a complex stateful git operation with conflict potential, the description is minimal—it fails to prepare the agent for the multi-step process or explain what happens in the output schema (likely rebase progress/conflict status).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description mentions 'onto another branch' which loosely references the upstream/onto parameters, but adds no syntax clarification, examples, or explanations of the stateful mode workflow (start/continue/abort/skip) beyond what the schema enum already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reapplies commits onto another base for a cleaner history, using specific verbs (rebase, reapplies). The 'cleaner history' phrase implicitly distinguishes it from git_merge (which creates merge commits), though it could explicitly mention the linear history advantage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to choose rebase over merge (sibling tool), nor warnings about rebasing public/shared branches. The description lacks prerequisites (e.g., clean working directory) and doesn't explain the multi-step workflow implied by the mode parameter (start/continue/abort).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_reflogGit ReflogARead-only
View the reference logs (reflog) to track when branch tips and other references were updated. Useful for recovering lost commits.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| ref | No | Show reflog for specific reference (default: HEAD). | |
| maxCount | No | Maximum number of items to return (1-1000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| ref | Yes | The reference that was queried. |
| entries | Yes | Array of reflog entries in reverse chronological order. |
| totalEntries | Yes | Total number of reflog entries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation declares readOnlyHint=true, which the description respects by using 'View'. The description adds valuable context about recovery use cases. However, it misses important reflog-specific behaviors like 'local-only history', 'expires after 90 days by default', or 'does not sync to remotes'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with zero waste. The first defines the operation, the second states the value proposition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (so return values need not be explained) and the readOnly annotation, the description adequately covers the tool's purpose and primary use case. Could be improved by noting the local-only nature of reflog data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description provides no additional parameter details beyond the schema, but none are needed given the comprehensive schema documentation for path, ref, and maxCount.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('View') and clearly identifies the resource ('reference logs/reflog'). It distinguishes from sibling git_log by specifying it tracks when 'branch tips and other references were updated' rather than showing commit history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description identifies a key use case ('recovering lost commits'), which hints at when to use the tool. However, it lacks explicit guidance on when to choose this over git_log or other history tools, and doesn't state prerequisites like requiring a local repository.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_remoteGit RemoteA
Manage remote repositories: list remotes, add new remotes, remove remotes, rename remotes, or get/set remote URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| mode | No | The remote operation to perform. | list |
| name | No | Remote name for add/remove/rename/get-url/set-url operations. | |
| url | No | Remote URL for add/set-url operations. | |
| newName | No | New remote name for rename operation. | |
| push | No | Set push URL separately (for set-url operation). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| mode | Yes | Operation mode that was performed. |
| remotes | No | List of remotes (for list mode). |
| url | No | Remote URL (for get-url mode). |
| added | No | Added remote (for add mode). |
| removed | No | Removed remote name (for remove mode). |
| renamed | No | Rename information (for rename mode). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint: false, and the description aligns by mentioning mutation operations (add, remove, rename, set-url). However, it adds no further behavioral context such as what files are modified (.git/config), whether operations are reversible, or error conditions. Adequate given the annotation coverage but minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, efficiently structured sentence that front-loads the verb and resource. Every clause corresponds to a core capability with zero redundancy or filler. Excellent information density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 100% schema coverage, existence of output schema, and clear annotation indicating mutability, the description provides sufficient context for an agent to invoke the tool. Minor gap: does not clarify conditionally required parameters (e.g., 'name' is required for add/remove but not list), though the schema enumerates these fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, establishing a baseline of 3. The description reinforces the 'mode' parameter by listing the enum values in prose, but does not add semantic depth regarding parameter relationships (e.g., that 'add' requires both 'name' and 'url') beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Lists specific operations (list, add, remove, rename, get/set URLs) and identifies the resource (remote repositories). Distinguishes from siblings like git_clone or git_fetch by focusing on configuration management rather than data transfer or initialization, though it doesn't explicitly contrast with these alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Enumerates possible operations but provides no explicit guidance on when to use this tool versus siblings (e.g., when to use git_remote add vs git_clone). Usage is implied by the operation list, but there are no exclusions, prerequisites, or conditional logic explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_resetGit ResetA
Reset current HEAD to specified state. Can be used to unstage files (soft), discard commits (mixed), or discard all changes (hard).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| mode | No | Reset mode: soft (keep changes staged), mixed (unstage changes), hard (discard all changes), merge (reset and merge), keep (reset but keep local changes). | mixed |
| target | No | Target commit to reset to (default: HEAD). | |
| paths | No | Specific file paths to reset (leaves HEAD unchanged). | |
| confirmed | No | Explicit confirmation required for hard, merge, and keep reset modes on protected branches (main, master, production, etc.). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| mode | Yes | Reset mode that was used. |
| target | Yes | Target commit that was reset to. |
| filesReset | Yes | Files that were affected by the reset. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description effectively discloses graduated destructiveness levels (discard commits vs discard all changes) that complement the readOnlyHint: false annotation. It appropriately warns about data loss potential for hard resets, adding safety context beyond what the boolean annotation alone provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two-sentence structure is optimally efficient—first establishing the core operation, second detailing modal variations. Zero redundancy; every clause conveys distinct functional information appropriate for agent tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the output schema handles return values and the description covers the three most common modes, it incompletely represents the tool's full capability set by omitting merge and keep modes defined in the schema. It also incorrectly implies all operations modify HEAD, failing to mention that the paths parameter enables file-specific resets without moving HEAD.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the structured definitions already comprehensively document all parameters including enums and defaults. The description adds semantic framing by categorizing modes by function (unstaging vs discarding), meeting the baseline expectation for high-coverage schemas without adding significant additional constraints or syntax details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a specific verb-resource pair ('Reset current HEAD to specified state') and clearly articulates three primary operational modes (soft, mixed, hard). However, it does not explicitly differentiate this tool from git_checkout (which also moves HEAD) or acknowledge the file-specific reset capability via the paths parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description maps reset modes to specific outcomes (unstage files, discard commits, discard changes), providing clear internal guidance for selecting modes. However, it lacks explicit guidance on when to use this tool versus alternatives like git_checkout or git_clean, leaving the agent to infer the appropriate tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_set_working_dirGit Set Working DirectoryA
Set the session working directory for all git operations. This allows subsequent git commands to omit the path parameter and use this directory as the default.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the git repository to use as the working directory. | |
| validateGitRepo | No | Validate that the path is a Git repository. | |
| initializeIfNotPresent | No | If not a Git repository, initialize it with 'git init'. | |
| includeMetadata | No | Include repository metadata (status, branches, remotes, recent commits) in the response. Set to true for immediate repository context understanding. Defaults to false to minimize response size. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| path | Yes | The working directory that was set. |
| message | Yes | Confirmation message. |
| repositoryContext | No | Rich repository metadata including status, branches, remotes, and recent history. Only included when includeMetadata parameter is true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses session-scoped statefulness ('session working directory') and side effects on subsequent commands, adding context beyond the readOnlyHint: false annotation. Does not contradict annotations. Could improve by explicitly stating this is temporary session state (not persistent across sessions) or detailing interaction with validateGitRepo/initializeIfNotPresent behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two well-structured sentences: first defines the action, second explains the benefit/behavioral consequence. Zero redundancy, front-loaded with critical information. Every word serves the agent's understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a configuration tool with output schema present (handling return value documentation). Explains the mechanism of default path inheritance. Minor gap: does not mention error conditions (invalid paths) or explicitly scope the behavior to the current session only, though 'session' implies this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema fully documents all four parameters. The description references the 'path parameter' conceptually but does not add syntax details, validation rules, or semantic meaning beyond what the schema provides. Baseline score appropriate given schema completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool sets a 'session working directory for all git operations' with specific verb (set) and resource (working directory). Effectively distinguishes from operational siblings (git_add, git_commit, etc.) by positioning this as session configuration rather than repository manipulation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use by explaining it 'allows subsequent git commands to omit the path parameter.' Implicitly suggests use case for batch operations. Could be strengthened by explicitly contrasting with per-command path specification or mentioning git_clear_working_dir for cleanup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_showGit ShowARead-only
Show details of a git object (commit, tree, blob, or tag). Displays commit information and the diff of changes introduced.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| object | Yes | Git object to show (commit hash, branch, tag, tree, or blob). | |
| format | No | Output format for the git object. | |
| stat | No | Show diffstat instead of full diff. | |
| filePath | No | View specific file at a given commit reference. When provided, shows the file content from the specified object. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| object | Yes | Object identifier. |
| type | Yes | Type of git object shown. |
| content | Yes | Formatted output showing the object details. |
| metadata | No | Additional metadata about the object. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation declares readOnlyHint=true, confirming safety. The description adds valuable behavioral context beyond this: it specifies that the tool displays both metadata ('commit information') and content changes ('diff'), clarifying what output to expect. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with zero waste. The first establishes scope (object types), the second establishes output (info + diff). Information is front-loaded and appropriately brief given the rich schema and output schema coverage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 100% schema coverage, existing readOnlyHint annotation, and presence of an output schema, the description appropriately focuses on high-level purpose rather than repeating parameter or return value details. Minor gap: doesn't mention the single-file viewing capability (filePath param) in prose, though this is covered in schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema fully documents all 5 parameters including the filePath single-file view and stat diffstat option. The description provides high-level context ('git object') but doesn't add parameter-specific semantics, syntax examples, or interaction rules (e.g., how filePath modifies the object view).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'shows details of a git object' and lists specific object types (commit, tree, blob, tag). It specifies the dual output of 'commit information and the diff,' which clarifies intent. However, it doesn't explicitly differentiate from sibling git_diff, which also displays diffs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by specifying which git objects can be inspected (commits, blobs, trees, tags), but provides no explicit guidance on when to prefer this over git_diff or git_log. It lacks prerequisites (e.g., valid object reference format) and exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_stashGit StashA
Manage stashes: list stashes, save current changes (push), restore changes (pop/apply), or remove stashes (drop/clear).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| mode | No | The stash operation to perform. Defaults to push (save current changes). | push |
| message | No | Stash message description (for push operation). | |
| stashRef | No | Stash reference like stash@{0} (for pop/apply/drop operations). | |
| includeUntracked | No | Include untracked files in the stash (for push operation). | |
| keepIndex | No | Don't revert staged changes (for push operation). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| mode | Yes | Operation mode that was performed. |
| stashes | No | List of stashes (for list mode). |
| created | No | Created stash reference (for push mode). |
| applied | No | Applied stash reference (for pop/apply mode). |
| dropped | No | Dropped stash reference (for drop mode). |
| conflicts | No | Whether operation had conflicts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description confirms mutability ('save', 'remove') consistent with readOnlyHint:false, but fails to disclose that 'drop' and 'clear' are destructive/irreversible, or that 'pop' removes the stash while 'apply' preserves it. Additional behavioral traits like conflict handling are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, dense sentence efficiently conveys all primary operations without redundancy. Well-structured with the high-level action 'Manage stashes' front-loaded, followed by colon-separated specific capabilities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient given the rich schema (100% coverage) and presence of an output schema, but lacks important warnings about destructive operations (drop/clear) and nuanced distinctions between similar modes (pop vs apply) that would help an agent avoid data loss.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3. The description elevates this by conceptually grouping the six mode enum values into four user-intent categories (list/save/restore/remove), which helps agents understand the purpose of the mode parameter beyond the technical schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Manage') and resource ('stashes'), then enumerates exact capabilities (list, save, restore, remove). It clearly distinguishes from sibling tools by focusing exclusively on stash operations rather than branching, committing, or other git workflows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While it maps operation modes to concepts (save/restore/remove), it lacks explicit guidance on when to use 'pop' versus 'apply', or when stashing is preferable to committing or resetting. No prerequisites (e.g., requiring uncommitted changes for push) are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_statusGit StatusARead-only
Show the working tree status including staged, unstaged, and untracked files.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| includeUntracked | No | Include untracked files in the output. |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| currentBranch | Yes | Current branch name. |
| isClean | Yes | True if working directory is clean. |
| stagedChanges | Yes | Changes that have been staged for the next commit. |
| unstagedChanges | Yes | Changes in the working directory that have not been staged. |
| untrackedFiles | Yes | Files in the working directory not tracked by git. |
| conflictedFiles | Yes | Files with merge conflicts that need resolution. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true. Description adds behavioral context by specifying exactly what 'status' encompasses (staged/unstaged/untracked), but omits edge cases or performance notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, dense sentence (11 words) front-loaded with the core action. No redundancy or filler; every word specifies scope or content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient for a read-only status tool. Output schema exists to detail return structure, while description adequately covers conceptual content (the three file categories).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for 'path' and 'includeUntracked'. Tool description adds no parameter-specific guidance, but the comprehensive schema makes this acceptable (baseline 3).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Show') and resource ('working tree status') with precise scope ('staged, unstaged, and untracked files'). Clearly distinguishes from siblings like git_diff (line changes) and git_log (commit history).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context about what the tool returns (three file categories), implicitly guiding when to use it. Lacks explicit comparison to alternatives (e.g., 'use this instead of git_diff when checking file states').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_tagGit TagA
Manage tags: list all tags, create a new tag, or delete a tag. Tags are used to mark specific points in history (releases, milestones).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| mode | No | The tag operation to perform. | list |
| tagName | No | Tag name for create/delete operations. | |
| commit | No | Commit to tag (default: HEAD for create operation). | |
| message | No | Tag message (creates annotated tag). For release tags, summarize the notable changes. | |
| annotated | No | Create annotated tag. Automatically set to true when message is provided. | |
| sign | No | Sign the commit/tag with GPG. | |
| forceUnsignedOnFailure | No | If GPG/SSH signing fails, retry the tag creation without signing instead of failing. | |
| force | No | Force tag creation/deletion (overwrite existing). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| mode | Yes | Operation mode that was performed. |
| tags | No | List of tags (for list mode). |
| created | No | Created tag name (for create mode). |
| deleted | No | Deleted tag name (for delete mode). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description acknowledges mutability (create/delete) which aligns with readOnlyHint:false. However, it fails to disclose behavioral nuances beyond the schema, such as the destructive nature of force deletion, GPG signing failure behaviors, or that list is non-destructive while other modes mutate state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely efficient two-sentence structure. The first sentence front-loads the available operations; the second provides semantic context. No redundant or wasted language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 100% schema coverage and the presence of an output schema, the description adequately covers the tool's purpose. It could be improved by mentioning the default 'list' mode behavior or the relationship between the message and annotated parameters, but these are discoverable in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema has 100% coverage, the description adds valuable conceptual context by explaining tags mark 'releases' and 'milestones,' which helps agents understand the semantics of the tagName and message parameters for annotated tags.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the three operations (list, create, delete) and the resource (tags). It clearly distinguishes this from sibling tools like git_branch or git_commit by defining tags as markers for 'specific points in history (releases, milestones)'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on the semantic purpose of tags (marking releases, milestones), which implies when to use the tool versus alternatives like branches. However, it lacks explicit guidance on when to choose between list/create/delete modes or warnings about delete implications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_worktreeGit WorktreeB
Manage multiple working trees: list worktrees, add new worktrees for parallel work, remove worktrees, or move worktrees to new locations.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the Git repository. Defaults to session working directory set via git_set_working_dir. | . |
| mode | No | The worktree operation to perform. | list |
| worktreePath | No | Path for the new worktree (for add/move operations). | |
| branch | No | Branch to checkout in the new worktree (for add operation). | |
| commitish | No | Commit/branch to base the worktree on (for add operation). | |
| force | No | Force operation (for remove operation with uncommitted changes). | |
| newPath | No | New path for the worktree (for move operation). | |
| detach | No | Create worktree with detached HEAD (for add operation). | |
| verbose | No | Provide detailed output for worktree operations. | |
| dryRun | No | Preview the operation without executing it (for prune operation). |
Output Schema
| Name | Required | Description |
|---|---|---|
| success | Yes | Indicates if the operation was successful. |
| mode | Yes | Operation mode that was performed. |
| worktrees | No | List of worktrees (for list mode). |
| added | No | Added worktree path (for add mode). |
| removed | No | Removed worktree path (for remove mode). |
| moved | No | Move operation info (for move mode). |
| pruned | No | Pruned worktree paths (for prune mode). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint: false indicates this is not a read-only tool, and the description confirms this by mentioning 'remove' and 'move' operations. It adds context about 'parallel work' as a use case. However, it fails to mention the 'prune' operation, does not elaborate on the destructive potential of remove operations (e.g., uncommitted changes), and does not clarify filesystem side effects beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured as a single sentence with a colon-delimited list of operations. It is front-loaded with the core concept ('Manage multiple working trees'). It loses one point for omitting 'prune' from the operation list, which creates a minor gap between the description and actual capabilities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters, multiple modes, and an output schema, the description provides adequate high-level orientation but leaves gaps. The omission of the 'prune' mode is notable, and there is no mention of default behaviors (e.g., mode defaults to 'list'). Since an output schema exists, the description correctly does not attempt to document return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the structured data already documents all 10 parameters comprehensively. The description adds minimal semantic value beyond the schema, though it implicitly groups parameters by operation type (add/move/remove). Baseline score of 3 is appropriate since the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (working trees) and enumerates specific operations (list, add, remove, move). It distinguishes from siblings like git_checkout or git_branch by focusing on worktree management and mentioning 'parallel work.' However, 'Manage' is slightly generic as a verb, and it omits the 'prune' operation present in the schema enum.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for parallel work' implies a use case (concurrent development on multiple branches), but there are no explicit when-to-use guidelines, prerequisites, or comparisons to alternatives like git_clone or git_stash. The agent must infer appropriate scenarios from the implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_wrapup_instructionsGit Wrap-up InstructionsARead-only
Provides the user's desired Git wrap-up workflow and instructions. Returns custom workflow steps (if configured) or default best practices for reviewing, documenting, and committing changes. Includes current repository status to guide next actions.
| Name | Required | Description | Default |
|---|---|---|---|
| acknowledgement | Yes | Acknowledgement to initiate the wrap-up workflow. | |
| updateAgentMetaFiles | No | Include an instruction to update agent-specific meta files. | |
| createTag | No | If true, instructs the agent to create a Git tag after committing all changes. Only set to true if given permission to do so. |
Output Schema
| Name | Required | Description |
|---|---|---|
| instructions | Yes | The set of instructions for the wrap-up workflow. |
| gitStatus | No | The current structured git status. |
| gitStatusError | No | Any error message if getting git status failed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with readOnlyHint=true by emphasizing 'provides' and 'returns' rather than modifying state. It adds valuable context beyond annotations by distinguishing between custom configured workflows and default best practices, and noting that current repository status is included to guide actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The three-sentence structure is efficient and front-loaded: sentence 1 states the core purpose, sentence 2 clarifies return value variations (custom vs default), and sentence 3 notes the inclusion of repository status. No redundant or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (which handles return value documentation) and 100% input schema coverage, the description provides adequate context. It appropriately covers the tool's retrieval nature, workflow customization aspects, and repository status integration without over-specifying.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the parameter documentation is comprehensive in the schema itself. The description does not add parameter-specific semantics, but given the high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides/returns workflow steps and instructions for git wrap-up, distinguishing it from action-oriented siblings like git_commit or git_tag. However, it could more explicitly emphasize that this retrieves configuration rather than executes wrap-up actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('wrap-up workflow,' 'reviewing, documenting, and committing changes') but lacks explicit guidance on when to use this retrieval tool versus directly executing git commands. No alternative tools are mentioned.
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.
28 tool updates
v2.10.5- First observed
git_add - First observed
git_blame - First observed
git_branch - First observed
git_changelog_analyze - First observed
git_checkout - First observed
git_cherry_pick - First observed
git_clean - First observed
git_clear_working_dir - First observed
git_clone - First observed
git_commit - First observed
git_diff - First observed
git_fetch - First observed
git_init - First observed
git_log - First observed
git_merge - First observed
git_pull - First observed
git_push - First observed
git_rebase - First observed
git_reflog - First observed
git_remote - First observed
git_reset - First observed
git_set_working_dir - First observed
git_show - First observed
git_stash - First observed
git_status - First observed
git_tag - First observed
git_worktree - First observed
git_wrapup_instructions
TDQS
Every tool has a clearly distinct purpose with no ambiguity. Each tool corresponds to a specific Git command or operation, such as git_add for staging files, git_commit for creating commits, and git_merge for merging branches. The descriptions reinforce these distinctions, making it easy for an agent to select the correct tool without confusion.
The tool names follow a highly consistent verb_noun pattern throughout, all prefixed with 'git_' and using snake_case uniformly. Examples include git_clone, git_pull, and git_status, with no deviations in style or structure. This predictability enhances readability and usability for agents.
With 28 tools, the count feels heavy for a Git server, as many tools cover niche or advanced operations like git_changelog_analyze and git_wrapup_instructions. While comprehensive, it may overwhelm agents with less common commands, suggesting a borderline scope that could benefit from consolidation or simplification.
The tool set provides complete coverage of Git operations, including core commands (e.g., clone, commit, push), branch management, history viewing, and advanced features like stashing and worktrees. There are no obvious gaps; agents can perform full CRUD/lifecycle tasks for repository management without dead ends.
Maintenance
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
A MCP server built for developers enabling Git based project management with project and personal…
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Related MCP Servers
- AlicenseBqualityAmaintenanceA Model Context Protocol server for Git repository interaction and automation. This server provides tools to read, search, and manipulate Git repositories via Large Language Models.1290,042MIT
- AlicenseCqualityCmaintenanceNode.js server implementing Model Context Protocol for git operations, enabling AI assistants to manage git repositories through natural language commands.11162MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables LLMs to interact with Git repositories, providing tools to read, search, and manipulate Git repositories through commands like status, diff, commit, and branch management.12MIT
- AlicenseCqualityBmaintenanceA Model Context Protocol server that enables LLMs to interact with Git repositories, providing tools to read, search, and manipulate Git repositories through commands like status, diff, commit, and branch operations.224MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/cyanheads/git-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server