GitHub MCP Server
Provides comprehensive tools for managing GitHub repositories, issues, pull requests, branches, commits, and file operations, as well as searching across repositories, code, and users on the GitHub platform.
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., "@GitHub MCP Serverlist pull requests in the claude-desktop repository"
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.
GitHub MCP Server
Model Context Protocol server for GitHub repositories, issues, pull requests, branches, tags, commits, and search.
It ships with 34 tools across 5 categories and supports:
hosted key-service mode with
usr_...user keysself-hosted Streamable HTTP deployments
CLI/stdio usage for local MCP clients
Quick Start
Option 1: Hosted key-service mode
Preferred path-based form:
{
"mcpServers": {
"github": {
"transport": "streamable-http",
"url": "https://mcp.techmavie.digital/github/mcp/usr_YOUR_USER_KEY"
}
}
}Compatibility query form:
https://mcp.techmavie.digital/github/mcp?api_key=usr_YOUR_USER_KEYOption 2: Self-hosted HTTP
Use header-based auth on /github/mcp:
{
"mcpServers": {
"github": {
"transport": "streamable-http",
"url": "https://mcp.techmavie.digital/github/mcp",
"headers": {
"X-API-Key": "YOUR_MCP_API_KEY",
"X-GitHub-Token": "YOUR_GITHUB_TOKEN"
}
}
}
}MCP_API_KEY must be configured on the server or self-hosted /mcp requests will be rejected.
For deployments mounted under /github, set PUBLIC_BASE_PATH=/github so the server card advertises the correct public endpoint.
Option 3: CLI / stdio
npm install -g mcp-github
GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here mcp-githubExample client config:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "mcp-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}
}
}
}Option 4: Legacy query-token mode
This is still supported for explicit requests only and is deprecated:
https://mcp.techmavie.digital/github/mcp?token=YOUR_GITHUB_TOKENThe server no longer falls back to its own GITHUB_PERSONAL_ACCESS_TOKEN for bare /mcp HTTP requests.
Related MCP server: GitHub Analyzer Pro MCP Server
Authentication Modes
Mode | Endpoint | Client auth |
Hosted key-service |
| user key in path |
Hosted key-service compatibility |
| user key in query string |
Self-hosted |
|
|
Legacy |
| explicit query token, deprecated |
CLI | stdio |
|
Tool Categories
Search Tools (3)
search_repositoriessearch_codesearch_users
Repository Tools (12)
get_repositoryget_commitlist_commitslist_branchescreate_or_update_filecreate_repositoryget_file_contentsfork_repositorycreate_branchlist_tagsget_tagpush_files
Issue Tools (7)
get_issueadd_issue_commentsearch_issuescreate_issuelist_issuesupdate_issueget_issue_comments
Pull Request Tools (11)
get_pull_requestupdate_pull_requestlist_pull_requestsmerge_pull_requestget_pull_request_filesget_pull_request_statusupdate_pull_request_branchget_pull_request_commentscreate_pull_requestget_pull_request_review_commentscreate_pull_request_review_comment
Utility Tools (1)
hello
Endpoints
Endpoint | Method | Description |
| GET | health check |
| POST | hosted key-service endpoint |
| POST | self-hosted endpoint |
| POST | diagnostics endpoint when enabled |
| GET | root-level discovery metadata |
| GET | analytics JSON, requires |
| GET | analytics tool breakdown, requires |
| GET | analytics dashboard shell |
If this server is mounted under /github, the server-card route still lives at the host root:
https://mcp.techmavie.digital/.well-known/mcp/server-card.jsonEnvironment Variables
Variable | Default | Description |
|
| HTTP port |
|
| bind address |
| unset | CLI/stdio token only |
| unset | required for self-hosted |
| unset | hosted key-service resolver URL |
| unset | hosted key-service bearer token |
|
| comma-separated CORS allowlist |
| unset | public reverse-proxy mount path such as |
|
| protocol version reported by HTTP server |
|
| enable sanitized request tracing |
|
| enable |
|
| analytics storage directory |
Local Development
npm install
npm run dev:httpBuild and run production HTTP mode:
npm run build:tsc
npm run start:httpRun CLI mode:
GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here npm run cliProject Structure
mcp-github/
|-- src/
| |-- index.ts
| |-- http-server.ts
| |-- cli.ts
| |-- tools/
| |-- resources/
|-- deploy/
| |-- DEPLOYMENT.md
| |-- nginx-mcp.conf
|-- .github/workflows/
|-- docker-compose.yml
|-- Dockerfile
|-- .env.sample
|-- package.json
|-- tsconfig.json
`-- README.mdSecurity Notes
Self-hosted
/mcpfails closed whenMCP_API_KEYis missing.Analytics fail closed when
MCP_API_KEYis missing.Bare
/mcprequests no longer inherit the server's own PAT.Recent analytics store hashed client IPs only.
Request-scoped MCP servers and transports are used for HTTP requests.
?token=remains available only as an explicit deprecated compatibility path.
License
Available Tools
34 toolsadd_issue_commentB
Add a comment to a specific issue in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| issue_number | Yes | Issue number to comment on | |
| body | Yes | Comment content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states a write operation without mentioning side effects, authentication needs, or rate limits. The verb 'add' implies mutation but lacks detail.
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 a single 12-word sentence, concise and front-loaded. Every word is necessary to convey the core purpose.
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?
Missing output schema and behavioral context (like idempotency, return value). The tool is simple but lacks completeness without annotations or any extra 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% with descriptions for all parameters. The description does not add meaning beyond the schema, so 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 verb 'add' and resource 'comment to a specific issue in a GitHub repository', distinguishing it from sibling tools like create_issue or get_issue_comments.
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 use this tool versus alternatives (e.g., using pull request review comments for PRs). The description lacks context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_branchB
Create a new branch in a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| branch | Yes | Name for new branch | |
| from_branch | No | Source branch (defaults to repo default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility. It only says 'create a new branch' without detailing behavior on duplicate branches, permissions required, or what the tool returns.
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, direct sentence with no extraneous words. It is front-loaded and efficient.
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 lack of annotations and output schema, the description is insufficient. It omits return value information and potential error states, which are important for a mutation tool.
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%, so baseline is 3. The description adds no parameter details beyond the schema, but it does not contradict the schema either.
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 branch in a GitHub repository. It distinguishes it from siblings like create_pull_request or list_branches by focusing on branch creation.
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 explicit guidance on when to use this tool versus alternatives, but the purpose is clear enough that the usage context is implied. No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_issueB
Create a new issue in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| title | Yes | Issue title | |
| body | No | Issue body content | |
| assignees | No | Usernames to assign to this issue | |
| labels | No | Labels to apply to this issue | |
| milestone | No | Milestone number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description omits behavioral details such as side effects, return value, or required permissions. Minimal information for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, efficient and to the point. However, it could include more detail without becoming overly verbose.
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 no output schema and no annotations, the description lacks details about return value, error handling, or usage constraints. Incomplete for a tool with 7 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?
Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema, which already documents all parameters.
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 'Create a new issue in a GitHub repository' clearly states the action (create) and resource (issue), distinguishing it from siblings like update_issue or list_issues.
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 on when to use this tool versus alternatives like update_issue or add_issue_comment. Missing prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_fileB
Create or update a single file in a GitHub repository. If updating an existing file, you must provide the current SHA of the file (the full 40-character SHA, not a shortened version).
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner (username or organization) | |
| repo | Yes | Repository name | |
| path | Yes | Path where to create/update the file | |
| content | Yes | Content of the file | |
| message | Yes | Commit message | |
| branch | Yes | Branch to create/update the file in | |
| sha | No | Full SHA of the current file blob (required for updates, must be the complete 40-character SHA) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the SHA requirement for updates but does not disclose what happens if a file already exists without SHA, permission needs, rate limits, or return behavior. Significant behavioral gaps remain.
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 two short sentences, front-loading the main action and a critical requirement. Every sentence is meaningful with no redundancy.
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 7 parameters, no output schema, many sibling tools, and no annotations, the description is insufficient. It fails to explain return values, behavior on creation vs update, and how it differs from push_files, leaving agents underinformed.
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%, so baseline is 3. The description adds minimal value beyond repeating that SHA must be full 40-character, which is also in the schema. No other parameter details are enhanced.
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 or updates a file in a GitHub repository. The verb 'create or update' and resource 'single file' are specific, but it does not explicitly differentiate from sibling tools like push_files, which might handle multiple files.
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 guidance on when to provide SHA (for updates) but does not clarify when to use this tool versus alternatives like push_files or get_file_contents. Usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pull_requestB
Create a new pull request in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| title | Yes | PR title | |
| body | No | PR description | |
| head | Yes | Branch containing changes | |
| base | Yes | Branch to merge into | |
| draft | No | Create as draft PR | |
| maintainer_can_modify | No | Allow maintainer edits |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states 'Create' without mentioning side effects, permissions (e.g., write access required), rate limits, or what happens on failure. The obvious mutation is implied, but richer context is missing.
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 a single sentence of 10 words, making it very concise. However, it sacrifices behavioral and usage details for brevity.
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's complexity (8 parameters, no output schema) and complete schema coverage, the description is adequate but minimal. It lacks context such as typical workflow order, prerequisites, or post-conditions.
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?
Input schema has 100% description coverage, so baseline is 3. The description adds no additional meaning beyond restating the tool's purpose. It does not explain parameter relationships or typical usage.
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 'Create a new pull request in a GitHub repository' clearly specifies the verb (create), resource (pull request), and context (GitHub repository). It effectively distinguishes from sibling tools like update_pull_request and merge_pull_request.
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 use this tool versus alternatives such as create_pull_request_review_comment or update_pull_request. There are no prerequisites, caveats, or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pull_request_review_commentB
Create a review comment (line-by-line code comment) on a pull request.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| pullNumber | Yes | Pull request number | |
| body | Yes | Comment body | |
| commit_id | Yes | SHA of the commit to comment on | |
| path | Yes | Relative path to the file being commented on | |
| line | No | Line number for single-line comment | |
| start_line | No | Start line for multi-line comment | |
| side | No | Side of diff (LEFT for deletion, RIGHT for addition) | RIGHT |
| start_side | No | Start side for multi-line comment | |
| in_reply_to | No | ID of review comment to reply to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the basic action. It fails to disclose important behavioral aspects like permissions required, whether it creates a new review or adds to an existing one, rate limits, or the effect of replying (in_reply_to parameter).
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 a single concise sentence that captures the core purpose without excess. However, it could be slightly improved by mentioning multi-line comment capability without adding much length.
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 11 parameters, no output schema, and no annotations, the description is minimal. It lacks details about return values, interaction with reviews, and multi-line comment semantics. It is adequate but leaves gaps that a more comprehensive description would fill.
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?
The input schema has 100% coverage with descriptions for all parameters, so the baseline is 3. The description adds no additional meaning beyond the schema, e.g., it does not explain how line/start_line define multi-line comments or the meaning of side/start_side.
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 action ('Create'), the resource ('review comment'), and specifies it is a line-by-line comment on a pull request. This effectively distinguishes it from sibling tools like 'add_issue_comment' and 'get_pull_request_review_comments'.
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 use for adding inline comments to PRs but does not explicitly state when to use this tool versus alternatives, such as using 'add_issue_comment' for general PR comments or for replying. It lacks guidance on prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_repositoryB
Create a new GitHub repository in your account
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Repository name | |
| description | No | Repository description | |
| private | No | Whether repo should be private | |
| autoInit | No | Initialize with README |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose behavioral traits such as authentication requirements, error handling (e.g., if repo exists), or whether the operation is idempotent. Only the basic creation action is stated.
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, efficient, and front-loaded with the core action. No unnecessary 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?
For a creation tool with 4 parameters and no output schema, the description lacks context on default behaviors (e.g., public vs private default), naming constraints, or success/failure indications. Incomplete for an agent.
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% and each parameter has a description in the schema. The description adds no additional semantics beyond the schema, so 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 verb (create), resource (GitHub repository), and scope (in your account), making it distinct from sibling tools like fork_repository or get_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?
No guidance on when to use this tool versus alternatives (e.g., create_issue, create_branch). No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fork_repositoryB
Fork a GitHub repository to your account or specified organization
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| organization | No | Organization to fork to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does not disclose behavioral details beyond the bare action. It omits side effects (e.g., creating a new repo), failure conditions (e.g., private repo access), rate limits, or what happens to the fork (e.g., default visibility).
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 a single, concise sentence with no redundant information. Every word is necessary and front-loaded.
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?
The tool has no output schema, so the description could help by mentioning what is returned (e.g., the forked repository object). While the action is simple, the lack of any mention of response or error behavior leaves a gap for an AI agent.
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 parameter descriptions. The top-level description adds minimal extra meaning by implying that omitting 'organization' forks to the user's account, which is already inferable from the optional 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 clearly states the action ('Fork'), the resource ('a GitHub repository'), and the destination ('to your account or specified organization'). It is specific and distinguishes from sibling tools like 'create_repository' or 'get_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 provides no guidance on when to use this tool versus alternatives, no prerequisites, and no context about required permissions or typical use cases. The agent receives no help in deciding between fork and other repository actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commitB
Get details for a commit from a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| sha | Yes | Commit SHA, branch name, or tag name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fails to disclose behavioral traits such as read-only nature, authentication requirements, or possible rate limits. It simply says 'get details' without elaboration.
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 is concise and front-loaded, with no unnecessary words. 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?
While the tool is simple and schema covers parameters, the lack of output schema means the description should hint at returned fields (e.g., author, message). It does not, leaving the agent partially uninformed.
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?
Input schema has 100% description coverage for all parameters, so the description adds no further meaning. 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 uses specific verb 'Get' and resource 'commit from a GitHub repository', clearly distinguishing it from sibling tools like list_commits and get_tag.
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 on when to use this tool vs alternatives (e.g., list_commits for browsing commits). The description only states the action without context on prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_contentsB
Get the contents of a file from a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner (username or organization) | |
| repo | Yes | Repository name | |
| path | Yes | Path to file | |
| branch | No | Branch to get contents from (defaults to default branch) | |
| mode | No | Mode: 'overview' for truncated preview, 'full' for complete file | overview |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It omits that 'mode' defaults to 'overview' (truncated) and lacks details on authentication, rate limits, or side effects.
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, no wasted words. Efficiently conveys the core purpose.
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?
Minimal description for a tool with 5 parameters and no output schema; fails to explain mode behavior, return format, or how to handle large files.
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%, so baseline is 3. The description adds no extra meaning 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 action 'Get the contents of a file' and the resource 'GitHub repository', distinguishing it from sibling tools that handle issues, branches, or pull requests.
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 on when to use this tool vs alternatives like 'create_or_update_file' or others; no mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issueB
Get details of a specific issue in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | The owner of the repository | |
| repo | Yes | The name of the repository | |
| issue_number | Yes | The number of the issue |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose behavioral traits such as authentication requirements, rate limits, or what 'details' includes. The description is minimal and lacks context beyond the fact that it returns issue details.
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 a single sentences, concise and free of unnecessary words. While it is short, it adequately conveys the core function for a simple read operation.
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 lack of output schema and annotations, the description should provide more details about the return value or behavior. It does not explain what 'details' encompasses, making it incomplete for an agent to fully utilize the tool.
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%, so the schema already documents the three parameters. The description does not add extra meaning beyond the schema, such as clarifying the format of 'issue_number' or expected constraints.
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 action ('Get details') and resource ('issue'), and it distinguishes from sibling tools like 'list_issues' by specifying 'a specific issue'.
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 use this tool vs alternatives (e.g., 'list_issues' for multiple issues, 'update_issue' for modifications). There is no mention of when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issue_commentsB
Get comments for a specific issue in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| issue_number | Yes | Issue number | |
| page | No | Page number | |
| per_page | No | Number of records per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It fails to disclose behavioral traits such as pagination, ordering, authentication requirements, or read-only nature, leaving the agent with minimal insight into tool behavior.
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 a single, front-loaded sentence that efficiently conveys the core action without wasted words, though it could be slightly expanded to include pagination context without losing conciseness.
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 no output schema and no annotations, the description lacks mentions of pagination parameters (page, per_page) and the return format, leaving the agent underinformed for complete usage despite schema coverage.
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%, so parameters are described in the schema. The description adds no additional meaning or constraints beyond the schema, earning a baseline score of 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?
The description clearly states the verb 'Get' and the resource 'comments for a specific issue in a GitHub repository', distinguishing it from sibling tools like 'add_issue_comment' and 'get_issue'.
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 for retrieving issue comments but provides no explicit guidance on when to use this tool versus alternatives like 'get_pull_request_comments' for PR comments or 'get_issue' for issue details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pull_requestB
Get details of a specific pull request in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| pullNumber | Yes | Pull request number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only says 'Get details' without mentioning read-only nature, authentication needs, rate limits, or error handling. The disclosure is minimal.
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 a single, clear sentence without wasted words. It is appropriately sized for a simple get-tool, though it could briefly hint at return values.
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's low complexity (3 params, no nested objects) and complete schema coverage, the description is adequate. However, lacking an output schema, it does not explain what 'details' means, which could lead to ambiguity.
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%, meaning each parameter has a description. The tool description adds no additional meaning beyond what the schema already provides, so baseline score of 3 applies.
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 action (Get) and the specific resource (details of a specific pull request), which distinguishes it from sibling tools like list_pull_requests (list) and get_pull_request_comments (different resource).
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 use this tool versus alternatives (e.g., get_pull_request_comments, list_pull_requests). The description does not include prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pull_request_commentsC
Get comments for a specific pull request
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| pullNumber | Yes | Pull request number | |
| per_page | No | Results per page (default 10, max 100) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden of disclosing behavior. The description only states 'Get comments', lacking details about pagination, ordering, or whether it returns all comments. The input schema implies pagination, but the description does not clarify.
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 a single sentence, which is concise, but it is too brief to provide sufficient context. It lacks structure and does not cover important aspects like pagination or return type.
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 lack of output schema and annotations, the description is incomplete. It does not explain the return format, pagination behavior, or how to interpret the comments. The tool has 5 parameters, so more detail is expected.
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%, and all parameters have descriptions. The tool description does not add any semantic value beyond what is already in the schema. Baseline 3 is appropriate since the schema does the job.
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 'Get comments for a specific pull request' clearly states the verb 'Get' and the resource 'comments for pull request'. It is specific about the pull request context. However, it does not differentiate from the sibling tool 'get_pull_request_review_comments', which might cause confusion.
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 use this tool versus alternatives like 'get_pull_request_review_comments' or 'get_issue_comments'. No context about prerequisites or use cases is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pull_request_filesA
Get the files changed in a specific pull request.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| pullNumber | Yes | Pull request number | |
| per_page | No | Results per page (default 10, max 100) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits beyond the basic operation. It fails to mention potential rate limits, pagination details, or the structure of the response. The description carries the full burden for transparency but provides only minimal information.
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 a single, concise sentence that front-loads the key action and resource, with no extraneous information.
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 lack of output schema and annotations, the description is minimal but covers the core functionality. However, it does not provide complete context such as what the response looks like or any behavioral caveats, leaving some gaps.
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?
The input schema has 100% description coverage for all parameters, so baseline is 3. The description adds no extra meaning beyond what the schema already provides, such as clarifying defaults or expected formats.
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 'Get the files changed in a specific pull request' is specific, with a clear verb ('Get') and resource ('files changed in a specific pull request'), and it distinguishes from sibling tools like get_pull_request_comments or get_pull_request.
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 the tool name and context, but there is no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pull_request_review_commentsB
Get review comments (line-by-line code comments) for a specific pull request.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| pullNumber | Yes | Pull request number | |
| sort | No | Sort comments by created or updated time | |
| direction | No | Sort direction | |
| since | No | Only show comments updated after this time (ISO 8601 format) | |
| per_page | No | Results per page (default 10, max 100) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description should disclose behavioral traits. It only states the basic action without mentioning pagination, sorting behavior, or what happens when parameters are omitted. It is underinformative for a tool with 8 parameters.
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 a single, concise sentence that front-loads the main action and context. No unnecessary 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?
Despite having 8 parameters and no output schema, the description only covers the basic purpose. It does not explain return values, pagination behavior, or how parameters like sorting and filtering affect results. The description is insufficient for complete understanding.
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%, so the baseline is 3. The description does not add any extra meaning beyond what the schema already provides for each 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 clearly states 'Get review comments (line-by-line code comments) for a specific pull request.' It uses a specific verb ('Get') and resource ('review comments'), and distinguishes itself from the sibling tool 'get_pull_request_comments' by specifying 'line-by-line code comments'.
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 it is for review comments rather than general PR comments, but does not explicitly state when to use it or when to use alternatives like 'get_pull_request_comments' or 'get_pull_request_review_comment'. No exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pull_request_statusB
Get the status of a specific pull request.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| pullNumber | Yes | Pull request number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose any behavioral traits such as whether it is read-only, authorization requirements, or what the response format is, leaving the agent without important context.
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 a single, concise sentence that efficiently conveys the tool's purpose without extraneous information.
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 lack of output schema and annotations, the description should provide more context about what 'status' entails or the expected response, but it does not.
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?
The input schema provides complete descriptions for all three parameters (owner, repo, pullNumber), and the description adds no additional meaning beyond the schema, achieving a baseline score.
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 action ('Get') and the resource ('status of a specific pull request'), differentiating it from sibling tools that retrieve other aspects of pull requests.
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 use this tool versus alternatives like get_pull_request or get_pull_request_comments, nor are there any conditions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_repositoryB
Get detailed information about a GitHub repository including README and file structure
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states the purpose without disclosing safety (read-only), authentication needs, or rate limits. This is insufficient for a read-intensive operation.
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 a single, well-front-loaded sentence that efficiently conveys the tool's purpose without extraneous words. It 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 lack of output schema, the description partially compensates by indicating what is included (README and file structure), but it does not fully describe the scope of 'detailed information' or return format.
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?
The input schema has 100% coverage, describing 'owner' and 'repo' clearly. The description adds no additional meaning beyond the schema, achieving baseline score.
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 retrieves detailed information about a GitHub repository, specifically mentioning README and file structure, which differentiates it from other 'get' tools like get_commit or get_file_contents.
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 when to use (to get repo details including README and file structure) but does not provide explicit guidance on when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tagA
Get details about a specific git tag in a GitHub repository (supports both annotated and lightweight tags)
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| tag | Yes | Tag name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds that it supports both tag types, but does not disclose behavioral traits like read-only nature, response contents, or required permissions. With no annotations, the burden is higher, and this is a partial disclosure.
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, no extraneous words, front-loading key purpose clearly.
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?
No output schema is provided, so the agent lacks information about return structure. The description covers the basic operation but could mention expected output fields or constraints like authentication requirements.
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 parameter descriptions. The description adds minimal value beyond tagging support; 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 tool retrieves details for a specific git tag, specifying both annotated and lightweight tags. This distinguishes it from sibling tools like list_tags and other get operations.
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 explicit when-to-use or alternative guidance is given. The context of sibling tools implies it is for single tag details, but no exclusions or scenarios are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
helloA
A simple test tool to verify that the MCP server is working correctly
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It accurately indicates the tool is for verification with no side effects, which is sufficient for a zero-parameter ping-like tool.
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, no redundant words. Perfectly concise for a simple tool.
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's trivial nature (0 params, no input), the description is complete enough. However, no output schema means the return value is unclear, but for a test tool this is acceptable.
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?
No parameters exist, schema coverage is 100%. Description adds no additional parameter info, but none is needed. Baseline 4 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 it is a test tool to verify the MCP server works, using a specific verb 'verify' and resource 'MCP server'. This distinguishes it from all sibling tools which are functional GitHub operations.
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 explicit guidance on when to use or not use this tool, but the simplicity implies it is for initial connectivity checks. Lacks exclusion criteria or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_branchesB
List branches in a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| per_page | No | Results per page (default 10, max 100) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavior (e.g., pagination, ordering, whether all branches are returned). It merely says 'list branches' without any such details, leaving the agent uninformed.
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 a single, concise sentence. It is appropriately sized for the tool's simplicity, with no 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?
The description is minimal but adequate for a simple listing tool with thorough parameter descriptions. However, lack of output schema and annotations means it could be more complete (e.g., noting that it returns branch objects).
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%, so the schema already documents all parameters. The description adds no extra semantics beyond what is in the schema, resulting in baseline score of 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?
The description clearly states 'List branches in a GitHub repository', a specific verb and resource. It is straightforward, though it does not differentiate from sibling tools like list_tags or list_commits, but those are distinct resources.
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 offers no guidance on when to use this tool versus alternatives (e.g., create_branch, list_tags). It lacks any when-not-to-use or contextual hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commitsC
Get list of commits of a branch in a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| sha | No | SHA or Branch name | |
| per_page | No | Results per page (default 10, max 100) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only indicates a read operation, but does not disclose any behavioral details such as pagination behavior, rate limits, or required authentication. Since no annotations are present, the description bears full responsibility for transparency, which it fails to fulfill.
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 a single, front-loaded sentence of 9 words that immediately conveys the tool's function. Every word earns its place, and no unnecessary information is included.
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?
The tool has no output schema, so the description should explain what the return value contains (e.g., a list of commit objects). It does not, leaving the agent to guess the output structure. While the input parameters are well-documented, the missing output context makes the description incomplete.
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?
The input schema already provides complete descriptions for all 5 parameters (100% coverage), including the optional sha, per_page, and page. The description adds no additional meaning beyond what the schema provides, so a 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 verb 'get list' and the resource 'commits of a branch in a GitHub repository', making the purpose obvious. However, it does not explicitly distinguish itself from the sibling tool 'get_commit' which returns a single commit, missing an opportunity for differentiation.
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 use this tool versus alternatives like 'get_commit' for a single commit, or when pagination is needed. The description simply states what the tool does without any context about usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_issuesC
List issues in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| state | No | Filter by state | |
| labels | No | Filter by labels | |
| sort | No | Sort order | |
| direction | No | Sort direction | |
| since | No | Filter by date (ISO 8601 timestamp) | |
| per_page | No | Results per page (default 10, max 100) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It only states 'List issues' implying a read operation, but omits important behaviors like pagination, default sorting, and response structure. The agent is left to infer these from 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 extremely short (one sentence), which is concise but lacks structure to quickly guide the agent. It does not front-load key information like default pagination or filtering 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's 9 parameters, no output schema, and no annotations, the description is insufficient. It does not explain pagination behavior, sort defaults, or return value structure, leaving the agent with significant gaps.
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%, so baseline is 3. The description adds no extra meaning beyond the schema, but the schema itself is adequately self-descriptive for each 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 clearly states the action (list) and resource (issues) with a specific context (GitHub repository). However, it does not differentiate from sibling tools like list_pull_requests or search_issues, which could lead to confusion.
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 use this tool versus alternatives such as search_issues or get_issue. The agent receives no context about selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pull_requestsC
List pull requests in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| state | No | Filter by state | |
| head | No | Filter by head user/org and branch | |
| base | No | Filter by base branch | |
| sort | No | Sort by | |
| direction | No | Sort direction | |
| per_page | No | Results per page (default 10, max 100) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states 'List pull requests' without disclosing pagination behavior, data volume, or any side effects. The read-only nature is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundancy. It is appropriately sized but lacks any additional context that could be included without verbosity.
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?
No output schema exists, and the description does not explain return format, pagination, or filtering options. While the schema covers parameters, an overview of the response or page behavior is missing for a tool with 9 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?
Schema coverage is 100%, with all parameters thoroughly described in the input schema. The description adds no additional parameter meaning, which is acceptable as the schema does the heavy lifting, earning the baseline score of 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?
The description clearly states the tool lists pull requests in a GitHub repository, using a specific verb and resource. However, with many sibling tools like get_pull_request and list_issues, it does not differentiate itself, which would help an agent select the correct tool.
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 on when to use this tool versus alternatives. The description does not mention that it returns a list, supports filtering, or that for a single PR one should use get_pull_request. This is a significant gap given the many related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tagsB
List git tags in a GitHub repository
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| per_page | No | Results per page (default 10, max 100) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only states 'List git tags' and does not mention pagination, rate limits, sorting, or the structure of the response, leaving significant behavioral ambiguity.
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 a single sentence of seven words, perfectly concise and front-loaded with the core action and resource.
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 no output schema and basic annotations, the description is too minimal. It omits details about pagination behavior, max per_page limit (100), and default ordering, which are important for a listing tool with pagination 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?
The schema covers 100% of parameters with descriptions, so the description adds no new meaning. According to guidelines, baseline 3 is appropriate when schema coverage is high.
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 'List git tags' with a specific verb and resource, and it distinguishes itself from sibling tools like list_branches and list_commits by focusing on tags.
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 use this tool versus alternatives, such as when to list tags vs branches or issues. No usage context or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_pull_requestB
Merge a pull request in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| pullNumber | Yes | Pull request number | |
| commit_title | No | Title for merge commit | |
| commit_message | No | Extra detail for merge commit | |
| merge_method | No | Merge method |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only says 'Merge' with no details on side effects (e.g., closes the PR, updates branch), permissions required, or failure modes. The agent lacks critical behavioral context.
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, no redundant words. However, for a potentially complex action, this is slightly under-specified, but the sentence is efficient.
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 6 parameters, 3 required, and no output schema, the description is minimal. Missing crucial information like conflict handling, mergeability checks, and result feedback.
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% (all 6 parameters have descriptions). The description adds no extra meaning beyond the schema. Baseline 3 applies; no improvement or decrement.
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?
Description states 'Merge a pull request in a GitHub repository.' This is a specific action on a clear resource (pull request) that distinguishes itself from siblings like create_pull_request and update_pull_request.
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 on when to use this tool, nor any mention of prerequisites (e.g., PR must be mergeable, no pending reviews). No alternatives or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
push_filesB
Push multiple files to a GitHub repository in a single commit
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| branch | Yes | Branch to push to | |
| files | Yes | Array of file objects to push, each object with path (string) and content (string) | |
| message | Yes | Commit message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It uses 'push' ambiguously without confirming whether it creates a commit or directly pushes, nor does it mention atomicity, overwriting behavior, or required permissions. This vagueness is a significant gap.
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 single sentence is concise but excessively terse, lacking necessary detail. While it avoids verbosity, it sacrifices completeness for brevity.
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 absence of annotations and output schema, and the tool's complexity (5 required parameters), the description fails to cover critical aspects like error conditions, file overwrite behavior, or commit details. It is insufficient for an agent to use confidently.
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%, with each parameter described adequately. The description adds no extra meaning beyond 'multiple files' which is already implied by the array type. 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 explicitly states it pushes multiple files to a GitHub repository in a single commit. It clearly distinguishes from sibling tools like create_or_update_file which handle single files, making the purpose specific and unambiguous.
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 for pushing multiple files in one commit but does not explicitly contrast with single-file alternatives (e.g., create_or_update_file) or mention conditions like branch existence. No when-to-use or 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.
search_codeA
Search for code across GitHub repositories. Returns a concise list with file paths and repositories. Use 'get_file_contents' for full file content.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query using GitHub code search syntax. Examples: 'addClass in:file language:js', 'repo:owner/name path:src/ extension:py', 'org:github extension:js', 'filename:test.py', 'user:octocat extension:rb', 'console.log path:/src/components', 'TODO in:file path:src/' | |
| sort | No | Sort field ('indexed' only) | |
| order | No | Sort order | |
| per_page | No | Results per page (default 10, max 100) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'concise list' but omits pagination behavior, rate limits, authentication needs, or what happens if no results. With zero annotation coverage, more behavioral disclosure is needed for a search tool.
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 achieve the purpose: first states what it does and output format, second provides a sibling cross-reference. No redundant information, perfectly front-loaded and concise.
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 straightforward search tool with full parameter descriptions and a sibling pointer, the description is mostly adequate. However, given no output schema and no annotations, additional context on pagination or result structure would improve completeness, but the current text covers the essential use case.
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% as all 5 parameters have descriptions. The description adds no additional meaning beyond what the schema already provides. Baseline 3 is appropriate since description does not compensate for any gaps.
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 'Search for code across GitHub repositories', using a specific verb and resource. It distinguishes itself from sibling search tools (search_issues, search_repositories, search_users) by targeting code search. Also mentions return format (concise list with file paths and repositories).
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: it returns a concise code search result. It explicitly points to get_file_contents for full file content, guiding when to use an alternative. However, it does not explicitly state when not to use this tool or compare with other search siblings, though the domain difference is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_issuesC
Search for issues in GitHub repositories.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query using GitHub issues search syntax | |
| sort | No | Sort field by number of matches of categories, defaults to best match | |
| order | No | Sort order | |
| per_page | No | Results per page (default 10, max 100) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral aspects such as pagination, rate limits, authentication requirements, or the structure of the response. With no annotations, the description fails to inform the agent about important operational details.
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 very concise (one sentence), but at the expense of completeness. It is not front-loaded with important details; it merely restates the 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?
No output schema is provided, so the description should explain return values or behavior, but it does not. Given the complexity of GitHub's issue search API, the description is insufficiently 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?
Input schema covers 100% of parameters with descriptions, achieving baseline. The tool description adds no extra meaning beyond the schema, but does not detract from it.
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 'Search for issues in GitHub repositories' which is clear but fails to differentiate from sibling tools like list_issues or get_issue. It does not specify whether it searches across all repositories or within a specific repo, nor does it mention the use of GitHub's search syntax.
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 on when to use search_issues versus other tools like list_issues or get_issue. The description does not provide context for when this tool is appropriate or when alternative tools should be considered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_repositoriesA
Search for GitHub repositories. Returns a concise list with essential information. Use 'get_repository' for detailed information about a specific repository.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. Examples: 'language:typescript stars:>1000', 'org:facebook react', 'machine learning in:description', 'user:octocat', 'created:>2023-01-01', 'license:mit', 'topic:javascript', 'is:public archived:false' | |
| per_page | No | Results per page (default 10, max 100) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description only discloses that it returns a 'concise list with essential information.' It does not mention rate limits, authentication, or side effects, which is acceptable for a search tool but adds little 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?
Two sentences, front-loaded with the main purpose, and the second sentence provides a useful alternative. 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?
The description is adequate for a simple search tool with well-documented schema, but lacks details about what 'essential information' is returned (no output schema), leaving some ambiguity.
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% and provides detailed examples. The description adds no additional meaning to the query, per_page, or page parameters.
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 'Search for GitHub repositories' with a specific verb and resource. Differentiates from sibling 'get_repository' by directing users to that tool for detailed info.
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?
Explicitly provides an alternative tool ('get_repository') for detailed repo info, but does not further clarify when not to use this tool (e.g., for exact name lookup).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_usersC
Search for GitHub users.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query using GitHub users search syntax. Examples: 'location:"San Francisco" followers:>100', 'language:python repos:>50', 'fullname:"John Doe"', 'type:user', 'type:org', 'created:>2020-01-01', 'in:email example.com' | |
| sort | No | Sort field by category | |
| order | No | Sort order | |
| per_page | No | Results per page (default 10, max 100) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only states 'Search for GitHub users' without mentioning any behavioral context such as pagination, authentication requirements, or what the response contains (e.g., user objects with specific fields).
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 extremely concise at one sentence, containing no wasted words. However, it is too brief to be helpful; it sacrifices informativeness for brevity, making it less effective overall.
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?
The tool has a moderate complexity with multiple parameters and no output schema. The description fails to explain return values or provide sufficient context for an agent to understand the tool's complete behavior. It is inadequate given the tool's features.
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?
The schema description coverage is 100%, so the baseline is 3. The description does not add any extra meaning beyond what is already in the schema. It does not explain parameter usage or provide examples beyond the schema's own 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 searches for GitHub users, using a specific verb and resource. It distinguishes itself from sibling search tools like search_repositories and search_code by focusing on users. However, it lacks additional context about the search 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?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, limitations, or scenarios where another sibling tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_issueB
Update an existing issue in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| issue_number | Yes | Issue number to update | |
| title | No | New title | |
| body | No | New description | |
| state | No | New state | |
| labels | No | New labels | |
| assignees | No | New assignees | |
| milestone | No | New milestone number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It does not disclose mutation semantics (e.g., overwrite vs. merge), authentication needs, rate limits, or side effects like notifications when closing an issue.
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 with no fluff, but for a 9-parameter tool, slightly more context could be beneficial. Still, it is concise and front-loaded.
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, no output schema, no annotations), the description is too sparse. It omits return value, error scenarios, and does not differentiate from sibling update tools.
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?
Input schema covers 100% of parameters with descriptions. The tool description adds no additional meaning beyond the schema, so 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?
Description 'Update an existing issue in a GitHub repository' clearly states the verb (update) and resource (existing issue), distinguishing it from sibling tools like get_issue or create_issue.
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 on when to use this tool versus alternatives like update_pull_request or other issue-modifying tools. No context on prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pull_requestC
Update an existing pull request in a GitHub repository.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| pullNumber | Yes | Pull request number to update | |
| title | No | New title | |
| body | No | New description | |
| state | No | New state | |
| base | No | New base branch name | |
| maintainer_can_modify | No | Allow maintainer edits |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'Update', missing details on required permissions, side effects (e.g., closing a PR may auto-close issues), or that the PR must exist.
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 with clear front-loading of the primary action. No redundant words, though it omits important details that could be included concisely.
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?
Lacking annotations and output schema, the description offers no information about return values, side effects, prerequisites, or error conditions. It is insufficient for safe and effective use.
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?
The input schema provides full descriptions for all parameters (100% coverage). The description adds no additional meaning beyond the schema, falling short of compensating for ambiguity.
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 verb 'update', resource 'pull request', and scope 'existing', distinguishing it from siblings like create_pull_request and merge_pull_request.
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 on when to use this tool vs alternatives such as update_pull_request_branch for branch changes or merge_pull_request for merging. No explicit contexts or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pull_request_branchB
Update the branch of a pull request with the latest changes from the base branch
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | Repository owner | |
| repo | Yes | Repository name | |
| pullNumber | Yes | Pull request number | |
| expectedHeadSha | No | The expected SHA of the pull request's HEAD ref |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It mentions updating with latest changes but does not disclose potential issues like merge conflicts, permissions, or whether the operation is reversible. Some transparency but insufficient.
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 a single sentence with no unnecessary words. It is concise, though it could be slightly expanded for clarity without losing conciseness.
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?
The description lacks details about return values, side effects, or error conditions. For a mutation tool with no output schema, more context is needed, such as what happens on conflict or whether the PR is rebased.
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%, so baseline is 3. The description does not add meaning beyond the schema; for example, 'expectedHeadSha' remains unexplained in the description.
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 verb 'Update' and the resource 'branch of a pull request', specifying 'with the latest changes from the base branch'. It distinguishes from siblings like 'merge_pull_request' and 'create_pull_request'.
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 explicit guidance on when to use this tool versus alternatives like 'merge_pull_request' or 'create_pull_request'. The description only states the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clear, distinct purpose; even closely related tools like get_pull_request_comments and get_pull_request_review_comments are differentiated by name. The test tool 'hello' is standalone.
All operational tools follow a consistent verb_noun snake_case pattern (e.g., create_issue, list_branches, search_code). The lone exception 'hello' is a test tool and does not break the pattern for the main set.
34 tools is on the higher side, but the GitHub domain is broad and each tool covers a specific operation. The count is well-justified for a full-featured GitHub MCP server.
The tool surface covers the core CRUD and lifecycle operations for issues, pull requests, repositories, files, branches, commits, and search. Minor gaps like delete operations are missing but not critical for typical agent workflows.
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
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Ask any GitHub repository a question. Get source-backed answers.
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides GitHub data analysis for repositories, developers, and organizations, enabling insights into open source ecosystems through API calls and natural language queries.514MIT
- FlicenseNot gradedqualityDmaintenanceA production-ready server featuring over 28 tools for comprehensive GitHub analysis, including repository metadata, issue tracking, and workflow monitoring. It enables users to search repositories, analyze contributor activity, and inspect codebase health through natural language.1
- AlicenseNot gradedqualityBmaintenanceAn autonomous GitHub management engine that enables control over repositories, branches, security alerts, and Actions workflows through natural language. It utilizes a zero-local-footprint architecture by storing all configuration and audit logs within a private state repository on GitHub.1MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to interact with GitHub via natural language, supporting repository management, issue tracking, file commits, and more.
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/hithereiamaliff/mcp-github'
If you have feedback or need assistance with the MCP directory API, please join our Discord server