GitHub PR Issue Analyser
GitHub PR Issue Analyser is an MCP server that connects an LLM to GitHub's repository management features — pull requests, issues, releases/tags, users, repositories and project boards — over stdio or HTTP, with a static token or GitHub OAuth2.
Pull requests (analysis) — fetch PR content/details, diffs (with byte caps and truncation reporting), linked issues that auto-close on merge, and CI check runs/commit statuses.
Pull requests (management) — create, update, merge (merge/squash/rebase), close, retarget the base branch, flip draft/ready status, set assignees, and update the branch with upstream changes (optionally guarded by an expected head SHA).
PR review — add conversation comments and inline review comments on lines or ranges, list comments and submitted reviews, reply to review threads, rewrite posted comments, and submit reviews (approve, request changes, comment).
Issues — create, update, fetch a single issue, list open issues/PRs, search issues and PRs with arbitrary GitHub qualifiers, list repo labels, create/update/list milestones, and file an issue under a milestone.
Releases and tags — tag commits (annotated or lightweight), publish releases (with draft/prerelease/latest and generated notes options), get, list, update or delete releases, and list or delete tags (with guards where a release depends on the tag).
Users and activity — profile lookup, contribution activity (commits, PRs, issues, reviews) over a date range, and star-growth ranking via weekly star history.
Repositories and files — list repos for a user, org or the caller; read a file at a branch/tag/SHA with byte-windowed paging; list a repository tree (optionally recursive); get the latest SHA of a ref.
Project boards (Projects v2) — list boards and their fields/options, list cards with field values, add or remove items, and set single-select field values.
Guided workflows — bundled skills (
pr-review,pr-analysis,pr-management,issue-management,release-management,project-boards,user-activity,interactive-ui) that can be listed and read in full via tool orskill://resource.Interactive UI — a
choosetool for presenting clickable options, plus sandboxed Prefab Python execution and component search for rendering custom generative UI (charts, cards, reactive layouts).Ops — runs over stdio or HTTP, supports Docker/Kubernetes deployment, and exposes a Prometheus metrics endpoint.
Provides tools for GitHub repository management including PR content retrieval and analysis, issue creation and updates, tag management, and release management with automatic release notes.
Click on "Deploy 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 PR Issue Analyseranalyze PR #42 in saidsef/mcp-github-pr-issue-analyser and summarize the changes"
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.
MCP for GitHub PR, Issues, Tags and Releases
An MCP server that connects an LLM to GitHub's repository management features. It analyses pull requests, manages issues, and handles tags and releases, over stdio or HTTP, with a static token or GitHub OAuth2.
Pull requests - fetch diffs, content, linked issues and CI status, create, comment, review, merge and update, close, retarget, label and flip draft status, read and correct posted comments
Issues - create, update, list, search and assign, read a repository's labels, run milestones and file issues under them
Releases - tag commits, publish releases, and list, correct or withdraw what is published
Users - profile lookup, contribution activity and star growth via GraphQL
Repositories - list what a user, an organisation or the caller owns, and read any file or directory tree at a branch, tag or SHA
The full tool list is in docs/tools.md.
Quick start
export GITHUB_TOKEN="<github-token>"
uvx https://github.com/saidsef/mcp-github-pr-issue-analyser.gitThen add it to your client:
{
"mcpServers": {
"github_prs_issues": {
"command": "uvx",
"args": [
"https://github.com/saidsef/mcp-github-pr-issue-analyser.git"
],
"env": {
"GITHUB_TOKEN": "<your-github-token>"
}
}
}
}For HTTP mode, Docker, Kubernetes and OAuth2, see the documentation below.
Related MCP server: GitHub MCP Server
Documentation
The pages below are also published on Read the Docs.
Page | Contents |
Requirements, running from source, Docker, Kubernetes | |
Auth modes, environment variables, OAuth App setup, token stores | |
Ready-to-paste configs for token and OAuth2, per client | |
Every tool the server registers, and the skills that drive them | |
Request path from client to GitHub API | |
Prometheus endpoint, metric names, scrape setup |
Requirements
Python 3.14, and a GitHub personal access token with the repo and workflow scopes or a GitHub OAuth App.
Source
Our latest and greatest source of mcp-github-pr-issue-analyser can be found on GitHub. Fork us!
Contributing
We would :heart: you to contribute by making a pull request.
Please read the official Contribution Guide for more information on how you can contribute.
Available Tools
66 toolschooseChooseAInspect
Present the user with a set of options to choose from.
Call this tool when you need the user to make a decision between discrete alternatives. Use it proactively — don't ask the user to type their choice in chat when you can present clean, clickable options instead.
The user will see a card with one button per option. When they click one, their choice appears as a message in the conversation (as if the user typed it), like:
"Which deployment strategy?" — I selected: Blue-greenIMPORTANT: After calling this tool, you MUST stop and wait for the user's response. Do not continue or take any other actions until you see the "I selected:" message.
Workflow and conventions: github_get_skill('interactive-ui').
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional heading for the card. | |
| prompt | Yes | The question or decision to present to the user. | |
| options | Yes | List of options the user can choose from. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well. It discloses the card UI with one button per option, explains that the user's selection appears as an 'I selected:' message, and warns the agent not to continue until that message appears.
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?
Every sentence earns its place: the core purpose is front-loaded, the usage guidance is direct, and the behavioral example and blocking warning are necessary for correct invocation. It is detailed but not padded.
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 fully equips an agent to call the tool correctly: what it does, when to use it, what the user sees, how the response arrives, and what to do afterward. The reference to github_get_skill('interactive-ui') provides a path for deeper workflow context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add much parameter-specific meaning beyond the schema, though the example prompt and option behavior are consistent with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Present the user with a set of options to choose from.' It is clearly distinguished from the GitHub sibling tools by framing this as an interactive user-decision tool, not a repository operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to call the tool ('when you need the user to make a decision between discrete alternatives') and gives an alternative to avoid ('don't ask the user to type their choice in chat'). It also adds the critical after-call instruction to stop and wait for the user's response.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_add_inline_pr_commentGithub Add Inline Pr CommentAInspect
Adds an inline review comment to a line, or to a range of lines, in a file within a PR. The line must fall inside the PR's diff hunks: GitHub rejects a comment on an unchanged line outside any hunk, and on a path not in the diff. A deleted line exists only on side LEFT. Pass head_sha from github_get_pr_content as expected_head_sha, so line numbers taken from that diff apply to that commit. See #517.
Workflow and conventions: github_get_skill('pr-review').
| Name | Required | Description | Default |
|---|---|---|---|
| line | Yes | ||
| path | Yes | ||
| side | No | LEFT for a line the PR deletes, RIGHT for one it adds or leaves as context | RIGHT |
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes | ||
| start_line | No | First line of a range ending at line. Omit to comment on line alone | |
| start_side | No | Side start_line sits on. Omit to match side | |
| comment_body | Yes | ||
| expected_head_sha | No | Attach the comment to this SHA, as github_get_pr_content reports it. Omit for the current head |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| body | Yes | |
| author | Yes | |
| html_url | Yes | |
| created_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-readonly, open-world, non-idempotent, non-destructive write, and the description adds the important extra context of GitHub's server-side rejection rules for lines and paths outside the diff. It also explains the SHA anchoring behavior, though it does not say what happens on retry (e.g. whether a duplicate comment is created), which matters given idempotentHint=false.
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?
Front-loaded with the core action, then constraints, then workflow pointer; almost every sentence carries information. The trailing 'See #517.' is an opaque issue reference that adds little for an agent and could be dropped.
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 mutation tool with an output schema and partial param documentation, the description covers the hard constraints an agent would otherwise get wrong (hunk containment, side semantics, SHA pinning) plus a skill pointer for conventions. Only duplicate/retry behavior and error responses are left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 40% schema coverage across 10 params, the description usefully compensates: it clarifies that a deleted line exists only on LEFT, that `line` must fall in a diff hunk, that the path must appear in the diff, and that `head_sha` from github_get_pr_content maps to expected_head_sha. repo_owner/repo_name/pr_number/comment_body remain self-evident, so remaining gaps are minor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Adds an inline review comment to a line, or to a range of lines, in a file within a PR'), which cleanly separates it from github_add_pr_comments and github_reply_to_review_comment. An agent knows immediately this is the line-anchored review comment 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?
Gives concrete preconditions rather than just context: the line must be inside a diff hunk, the path must be in the diff, deleted lines need side LEFT, and head_sha should come from github_get_pr_content as expected_head_sha. It does not name the alternatives (e.g. github_add_pr_comments for non-inline comments, github_reply_to_review_comment for threads), so routing is only partly covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_add_pr_commentsGithub Add Pr CommentsCInspect
Adds a comment to a specific pull request.
Workflow and conventions: github_get_skill('pr-review').
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | ||
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| body | Yes | |
| author | Yes | |
| html_url | Yes | |
| created_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that this is a non-read-only, non-idempotent, non-destructive action. The description adds a workflow hint but no additional behavioral detail such as permissions, side effects, or rate limits, so it provides little value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the main action in the first sentence and a useful workflow pointer in the second. It could be considered slightly too terse, but every sentence earns its place and there is 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?
For a simple tool with annotations and an output schema, this is minimally viable. However, it lacks parameter descriptions and does not clarify whether this adds a top-level comment versus an inline comment, which is relevant given the sibling tool github_add_inline_pr_comment.
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 0%, and the description does not explain any parameter semantics. It does not mention that 'comment' is the body text, how repo_owner/repo_name/pr_number are used, or any format expectations, leaving the parameters entirely self-explanatory by name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and resource: 'Adds a comment to a specific pull request.' It is specific enough to identify the operation, but it does not explicitly distinguish this from the sibling github_add_inline_pr_comment, which is a closely related 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?
The 'Workflow and conventions: github_get_skill("pr-review")' line implies this tool should be used as part of the pr-review workflow, giving some contextual guidance. However, it does not explicitly state when to prefer this over alternatives like github_add_inline_pr_comment or github_reply_to_review_comment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_add_to_projectGithub Add To ProjectAIdempotentInspect
Puts an issue or pull request on a project board. One the board already holds comes back with the card it already has, so a retry adds nothing and overwrites nothing.
Workflow and conventions: github_get_skill('project-boards').
| Name | Required | Description | Default |
|---|---|---|---|
| repo_name | Yes | ||
| repo_owner | Yes | ||
| issue_number | Yes | Issue or pull request to put on the board | |
| project_owner | Yes | ||
| project_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the operation as idempotent, but the description adds concrete detail: a retry returns the existing card and neither adds nor overwrites anything. This goes beyond the annotation's bare flag. It does not cover permissions or side effects, but the mutation/safety profile is sufficiently disclosed.
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 short and front-loaded, with the core action stated first and the idempotency behavior immediately after. The awkward typo 'One the board already holds' and the somewhat clipped second sentence reduce polish, but there is no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The reference to github_get_skill('project-boards') and the presence of an output schema compensate for some missing detail. However, for a tool with five required parameters and very low schema coverage, an agent still lacks essential param semantics needed to construct a correct invocation without external lookup.
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 only 20%, and the tool description does not compensate for the undocumented parameters. It does not explain the distinction between project_owner and repo_owner, what project_number refers to, or how the five required parameters relate. The only semantic help lies in the schema's issue_number description and the phrase 'issue or pull request.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Puts') and names the exact resource: an issue or pull request onto a project board. This clearly separates it from siblings like github_remove_from_project, github_set_project_field, or github_list_project_items. The idempotency note further clarifies the operation's behavior.
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 gives clear context for the operation but does not explicitly state when to choose it over alternatives or when not to use it. The pointer to github_get_skill('project-boards') implies the agent should fetch workflow conventions, which is helpful but indirect. The idempotency note usefully signals that retrying is safe.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_api_deleteGithub Api DeleteADestructiveInspect
Sends a DELETE to any path under api.github.com, or runs a GraphQL mutation that deletes or removes something, for a removal no other tool makes. Neither can be undone. GitHub decides what the token may remove. See #543.
Workflow and conventions: github_get_skill('api-requests').
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body, which a few DELETE routes require | |
| path | No | Path under https://api.github.com, such as repos/octocat/hello-world/labels/bug | |
| graphql | No | A GraphQL mutation that deletes or removes something | |
| max_bytes | No | Cap on the body returned | |
| variables | No | Variables for the GraphQL mutation |
Output Schema
| Name | Required | Description |
|---|---|---|
| body | Yes | |
| status | Yes | |
| has_more | Yes | |
| truncated | Yes | |
| bytes_total | Yes | |
| bytes_returned | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds real context beyond that: 'Neither can be undone' and 'GitHub decides what the token may remove', which tells the agent the outcome depends on token scope rather than the tool. It does not cover error behavior or rate limits, which keeps it from a 5.
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 irreversibility warning and the token-scope caveat are front-loaded and earn their place. 'See #543' is a dangling reference with no meaning to an agent, and appending the skill pointer as a trailing 'Workflow and conventions' line is slightly wasteful but still useful.
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?
An output schema exists and annotations carry the destructive/non-idempotent profile, so the description only needs to cover intent and risk, which it does. Minor gaps are the relationship between the path and graphql parameters and what failure looks like when the token lacks permission.
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 every parameter already carries a description, and the baseline is 3. The description adds the framing that there are two modes (path-DELETE vs GraphQL mutation), which helps the agent pick between the path/graphql/variables parameters, but it does not clarify mutual exclusivity or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: a raw DELETE to any path under api.github.com, or a GraphQL mutation that removes something. The phrase 'for a removal no other tool makes' implicitly separates it from dedicated siblings like github_delete_branch, github_delete_release, and github_delete_tag, though it never names them.
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?
'for a removal no other tool makes' gives a clear selection rule against the dedicated delete tools, and 'Workflow and conventions: github_get_skill("api-requests")' points to required setup knowledge. It stops short of explicit when-not guidance, such as warning that branch/release/tag deletion should go to the specialized tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_api_readGithub Api ReadARead-onlyInspect
Sends a GET to any path under api.github.com, or runs a GraphQL query, for an endpoint no other tool covers. GitHub decides what the token may read, and a refusal names the scope it lacks where GitHub says. See #543.
Workflow and conventions: github_get_skill('api-requests').
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path under https://api.github.com, such as repos/octocat/hello-world/collaborators | |
| params | No | Query parameters, such as per_page and page | |
| graphql | No | A GraphQL query to run in place of a REST GET. Mutations are refused | |
| max_bytes | No | Cap on the body returned | |
| variables | No | Variables for the GraphQL query |
Output Schema
| Name | Required | Description |
|---|---|---|
| body | Yes | |
| status | Yes | |
| has_more | Yes | |
| truncated | Yes | |
| bytes_total | Yes | |
| bytes_returned | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: reads are governed by the token's scopes and permission failures surface the missing scope name. It says nothing about rate limiting or pagination of list endpoints, which would have pushed it higher.
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 core capability and the sibling exclusion are front-loaded in the first sentence, with the skill pointer last. 'See #543' is opaque to an agent and is the one piece that does not earn its place, but the remaining text is tight.
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?
An output schema exists, so return shapes need no explanation, and the annotations carry the safety profile. For a zero-required-parameter passthrough tool, the description covers purpose, fallback positioning, auth behavior, and where to find conventions; nothing essential to correct invocation is missing.
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 path, params, graphql, variables, and max_bytes are already documented in the schema, including the mutation refusal and byte cap. The description adds no syntax, path-format, or parameter-interaction detail (e.g., that path and graphql are mutually exclusive), so baseline 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?
States a specific verb and resource ('Sends a GET to any path under api.github.com') and the GraphQL variant in the same breath. The clause 'for an endpoint no other tool covers' explicitly separates it from the many specific siblings like github_api_write, github_api_delete, and the typed getters.
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?
Gives a clear selection rule: use this only for endpoints not covered by another tool, which implies the higher-level siblings are preferred. It lacks an explicit pointer to github_search_api_routes for discovering routes, and no when-not conditions are spelled out beyond the fallback rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_api_writeGithub Api WriteAInspect
Sends a POST, PATCH or PUT to any path under api.github.com, or runs a GraphQL mutation, for a change no other tool makes. A DELETE, and a mutation that deletes or removes something, belong to github_api_delete, whose destructive hint says so. GitHub decides what the token may change. See #543.
Workflow and conventions: github_get_skill('api-requests').
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body | |
| path | No | Path under https://api.github.com, such as repos/octocat/hello-world/labels | |
| method | No | POST | |
| graphql | No | A GraphQL mutation to run in place of a REST call | |
| max_bytes | No | Cap on the body returned | |
| variables | No | Variables for the GraphQL mutation |
Output Schema
| Name | Required | Description |
|---|---|---|
| body | Yes | |
| status | Yes | |
| has_more | Yes | |
| truncated | Yes | |
| bytes_total | Yes | |
| bytes_returned | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false. The description adds real context beyond that: 'GitHub decides what the token may change' tells the agent authorization is delegated to the token, and the DELETE clause explains why the destructive hint is false despite this being a write tool. It does not cover rate limits or failure modes, so it is strong but not exhaustive.
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 short paragraphs, front-loaded with the capability and then the routing rule; nearly every clause earns its place. The only weak element is the bare 'See #543' reference, which conveys nothing to an agent that cannot resolve the issue tracker.
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?
An output schema and full annotations exist, so the description need not explain return values. For a generic open-world write endpoint it supplies the safety boundary, the auth model and the workflow pointer, which are the pieces an agent is most likely to get wrong; only error/rate-limit expectations are absent.
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 83%, so the schema already documents path, body, method, max_bytes and the GraphQL fields. The description adds no syntax, format or constraint detail for any parameter, leaving it at the baseline appropriate when the schema does the heavy lifting.
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 names the exact verbs accepted (POST, PATCH, PUT), the resource (any path under api.github.com), and the GraphQL mutation variant, then explicitly distinguishes itself from github_api_delete. An agent can identify what this tool is for without opening the schema.
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?
It states the selection rule twice over: 'for a change no other tool makes' steers the agent toward dedicated siblings first, and 'A DELETE, and a mutation that deletes or removes something, belong to github_api_delete' gives the exact exclusion boundary with the reason. It also points to github_get_skill('api-requests') for conventions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_commit_filesGithub Commit FilesAInspect
Commits text files to a branch, writing each path in files and deleting each one set to null. GitHub signs the commit, as it does for github_create_empty_commit. A second parent makes a merge commit through the Git Database API, since the signing mutation takes one parent, and GitHub leaves that commit unsigned. Its tree starts from the second parent's, so files carries every file the branch changes as it should read after the merge. See #547.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | New text content by path from the repository root, or null to delete it | |
| branch | Yes | Branch to commit to, in this repository rather than a fork | |
| message | Yes | Commit message. Its first line is the headline | |
| parents | No | The head the files were read at, then for a merge commit the commit to merge in | |
| repo_name | Yes | ||
| repo_owner | Yes | ||
| allow_default_branch | No | Commit to the default branch, which is refused otherwise |
Output Schema
| Name | Required | Description |
|---|---|---|
| branch | Yes | |
| parents | Yes | |
| html_url | Yes | |
| tree_sha | Yes | |
| commit_sha | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only declare it is a non-readonly, non-idempotent, non-destructive write), the description discloses that GitHub signs the commit, that the signed mutation takes a single parent, and that merge commits are therefore unsigned. The tree-base rule ('starts from the second parent's, so files carries every file the branch changes as it should read after the merge') is genuinely non-obvious behavioral context. It stops short of stating failure modes such as non-fast-forward rejections or required permissions.
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 core behavior is front-loaded in the first sentence and the merge caveat follows logically. The trailing 'See #547' is an unanchored issue reference that adds no usable meaning to an agent and is the main piece of dead weight.
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 7-parameter mutation tool with an output schema (so return values need no explanation), the description covers the operation, the delete semantics, signing behavior, and merge-tree semantics. An agent has what it needs to construct a correct call for both the normal and merge cases.
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 71%, and the description adds real meaning for the trickiest parameter: 'parents' is explained as the head the files were read at plus the commit to merge, and the consequence for the 'files' contents under merge is spelled out. repo_owner, repo_name and message get no added meaning, but those are largely self-evident or already documented.
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 opening sentence gives a specific verb and resource ('Commits text files to a branch') plus the exact semantics of the files map, including null-means-delete. It also carves out a boundary against the sibling github_create_empty_commit by explaining that this tool writes file content while that one creates an empty commit.
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?
It states the conditions that select the merge path ('A second parent makes a merge commit through the Git Database API') and points the agent at github_get_skill('pr-management') for workflow conventions. It does not explicitly say when to prefer this over direct Git Database API writes via github_api_write, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_create_empty_commitGithub Create Empty CommitAInspect
Pushes a commit that changes no file, so CI starts a new run under the caller's name. A re-run keeps the privileges of the first run, which for Dependabot is a read-only token. Dependabot stops rebasing a branch once another commit is pushed to it, unless the message carries [dependabot skip], as the default does. GitHub signs the commit, as it does one made in the web interface. See #490 and #534.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | Branch to commit to. Omit it and pr_number for the default branch | |
| message | No | Commit message. The default carries [dependabot skip], so Dependabot keeps rebasing the branch | chore: trigger CI [dependabot skip] |
| pr_number | No | Pull request whose head branch to commit to, in place of branch | |
| repo_name | Yes | ||
| repo_owner | Yes | ||
| expected_head_sha | No | Refuse unless the head still matches this SHA | |
| allow_default_branch | No | Commit to the default branch, which is refused otherwise |
Output Schema
| Name | Required | Description |
|---|---|---|
| branch | Yes | |
| html_url | Yes | |
| tree_sha | Yes | |
| commit_sha | Yes | |
| parent_sha | Yes | |
| parent_tree_sha | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (which only indicate a non-read-only, non-idempotent, non-destructive write), the description discloses critical behavioral details: re-runs keep first-run privileges, Dependabot has a read-only token, Dependabot stops rebasing unless the message includes [dependabot skip], and GitHub signs the commit. These are high-value operational insights an agent would not get from structured 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 core purpose is front-loaded in the first sentence, and the subsequent details about Dependabot and signed commits are valuable. The references to #490 and #534 and the workflow pointer are slightly extraneous but not distracting; the description remains efficiently structured.
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 an output schema, so return values need not be explained. Annotations cover the safety profile, and the description adds the necessary operational caveats around Dependabot and CI triggering. Together with the schema, an agent has enough information to invoke this tool correctly.
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 71%, so the schema already documents most parameters. The description adds context about the default message's [dependabot skip] behavior, but it does not explain branch/pr_number interplay, expected_head_sha, or allow_default_branch beyond what the schema already provides. Baseline 3 is appropriate when the schema carries most of the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Pushes a commit that changes no file, so CI starts a new run.' It distinguishes itself from file-changing commit tools like github_commit_files by emphasizing 'changes no file', and it explains the CI trigger rationale. An agent can identify the exact operation without opening the schema.
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 gives a clear context for use: triggering CI without modifying files, with additional Dependabot caveats. It does not explicitly name alternatives or when not to use this tool versus github_commit_files or github_update_pr_branch, but the purpose itself makes the primary use case evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_create_issueGithub Create IssueAInspect
Creates a new issue. The update tools replace the label set as given and never re-add 'mcp'; only the create tools append it, and only when mcp_label is left enabled.
Workflow and conventions: github_get_skill('issue-management').
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| title | Yes | ||
| labels | No | Labels to apply, with the 'mcp' tracking label appended unless mcp_label is False. Omit to leave the issue unlabelled | |
| mcp_label | No | Append the 'mcp' tracking label to labels. Pass False to opt out | |
| milestone | No | Milestone title to file it under. Omit or pass null for no milestone | |
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| body | Yes | |
| state | Yes | |
| title | Yes | |
| author | Yes | |
| labels | Yes | |
| number | Yes | |
| html_url | Yes | |
| assignees | Yes | |
| milestone | Yes | |
| created_at | Yes | |
| updated_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true. The description adds meaningful behavioral context: the 'mcp' label is appended only on create and never re-added by update tools, and the label set is replaced on update. This is a subtle side-effect disclosure that goes beyond the annotations. It doesn't mention rate limits or auth, but the label behavior is the key non-obvious trait.
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 compact and front-loaded with the core action. The label behavior warning is placed first because it's the most important non-obvious detail, and the workflow pointer is a single sentence. It earns its place without bloat.
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 an output schema, so return values are covered. The description covers the main behavioral quirk (mcp label handling) and points to a skill for workflow conventions. It doesn't explain prerequisites like repo existence or permissions, but the openWorldHint and the skill pointer mitigate that. For a create tool with 7 params, this is reasonably 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?
Schema description coverage is 43%, so the schema documents labels, mcp_label, and milestone. The description adds the crucial semantic that labels are appended with 'mcp' unless mcp_label is False, which clarifies the mcp_label parameter. However, it doesn't add meaning for repo_owner, repo_name, title, or body beyond their names, and the schema already covers the label-related parameters. 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 states a clear verb and resource ('Creates a new issue') and distinguishes create from update tools by noting the label behavior difference. It doesn't explicitly name sibling alternatives like github_update_issue, but the create-vs-update contrast is enough to orient an agent.
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 gives a workflow convention: call github_get_skill('issue-management') for workflow details. It also explains when the 'mcp' label is appended (create tools only, when mcp_label is enabled), which helps an agent decide between create and update tools. It doesn't explicitly say 'use update_issue instead when...' but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_create_milestoneGithub Create MilestoneAInspect
Opens a milestone. A title the repository already uses fails, since titles are unique per repository. Edit the existing one with github_update_milestone.
Workflow and conventions: github_get_skill('issue-management').
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | open | |
| title | Yes | ||
| due_on | No | Due date as ISO 8601, e.g. 2026-12-31T23:59:59Z | |
| repo_name | Yes | ||
| repo_owner | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-idempotent, non-destructive mutation. The description adds meaningful behavioral detail beyond annotations: duplicate titles cause failure due to per-repository uniqueness, and existing milestones should be edited rather than recreated. It does not disclose further side effects, but the key failure mode is covered.
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 compact, front-loads the core behavior, and immediately follows with the most important constraint and alternative. Every sentence earns its place, including the pointer to the workflow skill.
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?
An output schema exists and annotations cover the safety profile, so return values and mutation risks need less explanation. However, with six parameters and very low schema coverage, the description does not fully equip an agent to set state, due_on, or description correctly. The duplicate-title caveat and update alternative are useful, but parameter clarity remains a gap.
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 only 17%, so the description must compensate for undocumented parameters, but it does not explain repo_owner, repo_name, state, due_on, or description. It adds only that 'title' must be unique per repository. This is minimal value over the bare schema.
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 the operation as 'Opens a milestone' and names the resource, and it distinguishes itself from github_update_milestone by explaining that duplicate titles fail and should be edited instead. However, 'opens' is less direct than 'creates', and the intended action relies partly on the tool title to disambiguate.
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 explicitly gives a when-not condition: duplicate titles fail because titles are unique per repository, and the agent is directed to github_update_milestone for that case. It also points to a workflow skill, github_get_skill('issue-management'), providing additional usage context. This is clear alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_create_prGithub Create PrBInspect
Creates a new pull request. Labels are applied in a second call, since the create endpoint takes none, and they come back under labels so a set the token could not write is visible.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | ||
| body | Yes | ||
| head | Yes | ||
| draft | No | ||
| title | Yes | ||
| labels | No | Labels to apply, with the 'mcp' tracking label appended unless mcp_label is False. Omit to leave the pull request unlabelled | |
| mcp_label | No | Append the 'mcp' tracking label to labels. Pass False to opt out | |
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the basic safety profile (readOnly false, destructive false, etc.), and the description adds meaningful behavior beyond that: labels are applied in a second call because the create endpoint accepts none, and the response exposes whether the token could write labels. This is useful non-obvious context, though auth and rate-limit details are omitted.
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 concise and front-loads the purpose in the first sentence. The label-handling detail is useful but phrased awkwardly, and the skill pointer is terse. There is no filler, but the second sentence could be clearer.
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 nine parameters and only 22% schema coverage, the description leaves much to inference. It helps on label behavior but does not explain required fields, preconditions, or the overall workflow, instead pointing to an external skill. The output schema exists, so return values are covered, but the description is not complete enough for a tool of this complexity.
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 only 22%, so the description bears the burden of explaining parameters. It adds some semantics around the labels parameter (second-call application and failure visibility), but the six required parameters—repo_owner, repo_name, title, body, head, base—and mcp_label are entirely undescribed 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 first sentence states clearly that the tool creates a new pull request, using a specific verb and resource. This distinguishes it from sibling create tools like github_create_issue and github_create_milestone without merely restating the tool name.
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?
There is no explicit guidance on when to use this tool versus alternatives such as github_update_pr or github_create_issue. The reference to github_get_skill('pr-management') defers to an external skill rather than stating when to choose this tool, and no prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_create_releaseGithub Create ReleaseBInspect
Publishes a release for a tag. A tag that already carries one fails, since overwriting published notes cannot be undone. Pass if_exists='update' to replace them deliberately, and read updated on the reply to tell which happened. See #401.
The update path sends the title, notes, draft and prerelease only, so make_latest and generate_release_notes are dropped and the generated changelog from the first publish is replaced by body alone.
Workflow and conventions: github_get_skill('release-management').
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| draft | No | ||
| tag_name | Yes | ||
| if_exists | No | fail if the tag already carries a release, or update to overwrite its title and notes | fail |
| repo_name | Yes | ||
| prerelease | No | ||
| repo_owner | Yes | ||
| make_latest | No | true | |
| release_name | Yes | ||
| generate_release_notes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently explains that overwriting published notes cannot be undone, precisely describes the update-path parameter subset, and tells the agent to read 'updated' on the reply. However, annotations declare destructiveHint=false while the description describes an irreversible overwrite, which is an annotation contradiction.
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 front-loaded with the core behavior and uses the second paragraph for necessary edge-case nuance. The reference to '#401' is cryptic and may not help an agent, but the overall length is justified by the behavioral complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters, an output schema, and non-obvious update semantics, the description covers the surprising behaviors an agent needs to know, including dropped parameters and changelog replacement. It also points to a skill for conventions. The main weakness is the annotation contradiction rather than missing invocation context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 10%, and the description compensates by explaining the meaning of if_exists, the behavior of make_latest and generate_release_notes, and how body replaces the generated changelog. It does not explain obvious required fields like repo_owner, repo_name, tag_name, and release_name, but those are self-evident from naming.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise action with a specific resource: 'Publishes a release for a tag.' It also clarifies the behavior when the tag already has a release, which distinguishes create semantics from tag creation or release update. It does not explicitly name sibling tools, but the core purpose is 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 text gives a concrete decision rule: fail by default on an existing release, or pass if_exists='update' to deliberately overwrite. It also directs the agent to github_get_skill('release-management') for workflow conventions. It does not compare directly with github_update_release, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_create_tagGithub Create TagAInspect
Creates a new tag. With a message it is an annotated tag, which stores the message; without one it is a lightweight ref.
Workflow and conventions: github_get_skill('release-management').
| Name | Required | Description | Default |
|---|---|---|---|
| sha | No | Commit to tag. Omit to tag the newest commit on the default branch | |
| message | No | ||
| tag_name | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutating, non-idempotent operation (readOnlyHint=false, idempotentHint=false). The description adds useful behavioral nuance by explaining that providing a message creates an annotated tag storing the message, while omitting it creates a lightweight ref. This goes beyond the annotations without contradicting them.
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 compact and front-loaded: the core action is stated immediately, followed by the critical behavioral distinction, then a workflow reference. Every sentence contributes useful information without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a straightforward create operation, especially with an output schema present and annotations covering safety. However, it omits guidance on parameter semantics and does not clarify how this tool fits against release-related siblings, leaving some context gaps for an agent unfamiliar with the GitHub API.
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 only 20%, and the description does not compensate for the missing parameter documentation. It indirectly clarifies the 'message' parameter's side effect, but repo_owner, repo_name, tag_name, and sha are left without meaningful explanatory text beyond the schema's bare type declarations.
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 clearly states the operation: 'Creates a new tag' with the specific resource being a Git tag. It goes beyond the title by distinguishing annotated tags from lightweight refs, which makes the tool's scope unmistakable and separates it from related tools like github_delete_tag or github_create_release.
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 gives an implied usage context through the workflow pointer 'github_get_skill('release-management')', which suggests this tool participates in a release-management workflow. However, it does not explicitly state when to prefer this tool over alternatives such as github_create_release or github_list_tags, nor does it define exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_delete_branchGithub Delete BranchADestructiveInspect
Deletes a branch. The default branch is always refused. A branch an open pull request comes from is refused unless force is set, because deleting it closes that pull request. See #536.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Delete the branch even though an open pull request comes from it | |
| branch | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes | ||
| expected_head_sha | No | Refuse unless the head still matches this SHA |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds genuinely new behavior: which branches are guarded, and the consequence of force (deleting a PR's source branch closes that PR). Deduction for the unexplained dangling reference "See #536", which conveys nothing to an agent without tracker access.
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?
Front-loaded and tight: the action, the two safety rules, the force consequence, then the workflow pointer. The "See #536" fragment is the only sentence that doesn't earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, single-purpose delete tool with an output schema and rich annotations, this covers what an agent actually needs: refusal conditions, the force trade-off, a concurrency guard param, and where to find conventions. Nothing material about correct invocation is missing.
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 only 40% across 5 params, so the description should carry more weight; it explains force in behavioral terms (closes the open PR) but says nothing about expected_head_sha's conditional-refusal role, leaving that to the schema's own one-liner. The three required params (owner/name/branch) are self-evident and need no elaboration.
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?
Opens with a specific verb and resource ("Deletes a branch") and immediately scopes it with two refusal rules, so the agent knows exactly which branches are eligible. No sibling tool does branch deletion, so no further differentiation is needed.
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?
Gives concrete when-not conditions (default branch always refused; branch with an open PR refused unless force) plus a pointer to github_get_skill('pr-management') for workflow/conventions. It stops short of naming an alternative tool for the cases where deletion is refused, leaving the agent to infer the fallback.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_delete_releaseGithub Delete ReleaseADestructiveInspect
Deletes a release. The tag it was published from survives unless delete_tag asks for it, since the commit history usually should not move.
delete_tag=True removes the ref that the delete_tag tool refuses to touch while a release names it. No force flag is asked for here because the release goes first, so the dangling release that guard protects against cannot be what is left behind. See #404.
Workflow and conventions: github_get_skill('release-management').
| Name | Required | Description | Default |
|---|---|---|---|
| tag_name | Yes | ||
| repo_name | Yes | ||
| delete_tag | No | Also remove the tag the release was published from, without the delete_tag force check | |
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds crucial nuance: the tag is preserved by default, delete_tag=True removes the ref the delete_tag tool would not, and the absence of a force flag is justified by the ordering (release deletion first) to prevent dangling releases. This is genuinely useful behavioral detail beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and logically ordered: core action, default behavior, flag explanation, design rationale, then a workflow pointer. The #404 reference is a minor cryptic note, but it does not derail the message.
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 destructive tool with a clear side-effect story, the description covers what gets deleted, under what conditions, and references a skill for deeper conventions. The output schema exists, so return-value detail is not needed. It could have mentioned irreversibility explicitly, but annotations already signal destructive, so this is a minor gap.
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 only 25% (only delete_tag has a description). The description enriches delete_tag semantics by explaining what it does to the tag and why, and it contextualizes tag_name as the release's published tag. The other parameters are straightforward from their names.
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 opening sentence 'Deletes a release' is a precise verb+resource statement. It further distinguishes itself from the sibling github_delete_tag by explaining the tag survives unless delete_tag is set, making the tool's scope 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 explains when delete_tag=True is appropriate and how it interacts with the sibling delete_tag tool, and it points to github_get_skill('release-management') for workflow conventions. It does not explicitly list all alternatives, but it gives enough context for the key decision between removing a release vs. a tag.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_delete_tagGithub Delete TagADestructiveInspect
Deletes a tag. A tag a release points at is refused unless force is set, because removing it leaves the release without the code it names.
Workflow and conventions: github_get_skill('release-management').
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Delete the tag even though a release was published from it | |
| tag_name | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, it discloses a specific failure mode (refusal without force), the workaround (force), and the underlying consequence (release left without the code it names). This materially supplements the annotation 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?
Two short paragraphs front-load the core purpose, then provide the critical edge case and a terse pointer to workflow guidance. No filler or 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?
For a simple destructive tag deletion with an output schema and destructiveHint, the description covers the key behavioral hazard and workflow route. It is only held back by the undocumented required identifier parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema description coverage, the description was responsible for compensating, but repo_owner, repo_name, and tag_name are left entirely to naming conventions. The force parameter is effectively restated from the schema, so no substantive semantic value is added beyond 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 opens with 'Deletes a tag,' a specific verb and resource that clearly identifies the operation and distinguishes it from siblings like github_create_tag, github_list_tags, and github_delete_release. The added release-points nuance does not blur the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear condition: a tag a release points at is refused unless force is set, explaining why. It also points the agent to github_get_skill('release-management') for workflow conventions, though it doesn't explicitly state when to prefer this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_dispatch_workflowGithub Dispatch WorkflowAInspect
Starts a workflow that declares a workflow_dispatch trigger, on ref, with inputs keyed by the names its file declares. GitHub takes at most 25 inputs, so more are refused before any request. The request sets return_run_details, since without it GitHub answers 204 and says nothing of the run. See #503.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Branch or tag to run the workflow on | |
| inputs | No | Values for the inputs the workflow declares, at most 25 | |
| repo_name | Yes | ||
| repo_owner | Yes | ||
| workflow_id | Yes | The workflow's id, or its file name such as ci.yml |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by disclosing client-side validation (inputs beyond 25 are refused before any request is sent) and the return_run_details behavior — that GitHub otherwise answers 204 with no run information. That is genuinely useful behavior the schema and annotations do not convey.
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?
Front-loads the action and constraints in two tight sentences. The 'See #503' issue reference is opaque to an agent that cannot read issue trackers and does not earn 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?
An output schema exists, so return values need not be explained, and the description correctly notes that return_run_details is what makes the response useful. For a 5-parameter mutation with annotation coverage, this leaves little an agent needs missing.
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 60%; the description adds that inputs must be keyed by the names the workflow file declares and restates the 25 cap. It does not clarify repo_owner, repo_name, or the integer-vs-filename ambiguity of workflow_id beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (starts) and resource (a workflow that declares workflow_dispatch), plus the scoping mechanism (on ref, with inputs). No sibling tool does anything similar, and the precondition 'declares a workflow_dispatch trigger' prevents misfires on non-dispatchable workflows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
A precondition is given (the workflow must declare workflow_dispatch) and a conventions pointer to github_get_skill('pr-management'), but there is no explicit when-not-to-use or named alternative. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_issueGithub Get IssueARead-onlyInspect
Fetches a single issue by number, with its body, labels, assignees and milestone. Reads straight from the issue rather than the search index, so it sees a write immediately. See #358.
Workflow and conventions: github_get_skill('issue-management').
| Name | Required | Description | Default |
|---|---|---|---|
| repo_name | Yes | ||
| repo_owner | Yes | ||
| issue_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| body | Yes | |
| state | Yes | |
| title | Yes | |
| author | Yes | |
| labels | Yes | |
| number | Yes | |
| html_url | Yes | |
| assignees | Yes | |
| milestone | Yes | |
| created_at | Yes | |
| updated_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, covering safety. The description adds a useful behavioral trait: it reads directly from the issue rather than the search index, ensuring immediate consistency after a write. This goes beyond what annotations provide and is relevant for agents choosing between direct reads and search.
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 concise, with the core purpose in the first sentence and the consistency behavior in the second. The 'See #358' reference is slightly extraneous, and the 'Workflow and conventions' line is brief but not clutter. Overall, it is efficient and well-structured.
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 simple single-issue fetch, the description covers the key aspects: what data is returned, the direct-read consistency, and a pointer to a skill for workflow. An output schema exists, so return details are covered. It does not address auth or edge cases, but these are less critical given the simplicity and existing annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full responsibility for parameter semantics. It only clarifies issue_number via 'by number', but provides no detail on repo_owner or repo_name. While these names are self-explanatory, the description does not explicitly map them to the schema, and per the rule it must compensate for low coverage. It does not fully do so.
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 'fetches' and the resource 'a single issue by number', listing the returned fields (body, labels, assignees, milestone). It also differentiates from search-based access by noting it reads directly from the issue, distinguishing it from sibling tools like github_search_issues_prs.
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 a usage scenario by stating it reads straight from the issue rather than the search index, so it sees a write immediately. This hints at when to prefer this over search, but it does not explicitly name alternatives or state when not to use it. The reference to github_get_skill('issue-management') suggests further guidance but is not explicit about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_job_logGithub Get Job LogARead-onlyInspect
Fetches the end of a GitHub Actions job's log, capped at max_bytes. A job reports its failure last, so a cut keeps the tail. GitHub redirects to a storage host for one minute, and the download goes there without the token. See #500.
Workflow and conventions: github_get_skill('pr-analysis').
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The id of a GitHub Actions check run from github_get_pr_status_checks | |
| max_bytes | No | Cap on the log returned, kept from the end. Pass 0 to learn the size without reading the log | |
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| log | Yes | |
| job_id | Yes | |
| truncated | Yes | |
| bytes_total | Yes | |
| bytes_returned | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive), and the description adds genuinely useful behavioral context: the tail-preserving cap and the one-minute redirect to a storage host where the download proceeds without the token. That auth nuance is not derivable from annotations or 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?
Three sentences, front-loaded with purpose and cap behavior; each earns its place except the cryptic 'See #500' reference which adds little for an agent without issue context.
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?
An output schema exists, so return values need not be described, and annotations carry the safety profile. The description covers the cap/tail behavior and the redirect/auth nuance, leaving only the undocumented repo_owner/repo_name fields as a minor gap.
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 50%: job_id and max_bytes are documented in the schema, and the description restates the max_bytes tail-cap behavior rather than adding new meaning. repo_owner and repo_name are undocumented in both schema and description, so compensation is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetches) and resource (GitHub Actions job's log) with a clear scope constraint (capped at max_bytes, keeps the tail). It is easily distinguishable from siblings like github_rerun_job or github_get_pr_status_checks.
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?
Usage is only implied via the rationale that 'a job reports its failure last, so a cut keeps the tail', which hints at failure debugging. The schema ties job_id to github_get_pr_status_checks and the description points to github_get_skill('pr-analysis'), but there is no explicit when/when-not guidance or named alternative for fetching logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_latest_shaGithub Get Latest ShaARead-onlyInspect
Fetches the SHA of the newest commit on ref, or on the default branch when ref is omitted. Returns None if the repository has no commits. The answer is a reading rather than a pin, so a push landing afterwards moves it.
Workflow and conventions: github_get_skill('release-management').
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch, tag or SHA to read the newest commit of. Omit for the default branch | |
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and open-world behavior; the description goes beyond by disclosing the no-commits edge case (returns None) and the race/re-reading caveat that a later push changes the result. This is useful behavioral information not present in the structured fields. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior is stated in two short front-loaded sentences, and the workflow pointer is a compact convention hint. There is no filler or redundant elaboration.
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 simple read of a commit SHA, the description covers the dynamic nature of the result, the default-branch behavior, and the no-commits edge case, while the output schema covers the return shape and annotations cover safety. Missing auth or rate-limit details are not significant for this low-complexity 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?
Only ref has a schema description, so coverage is low, and the description mostly restates ref's schema semantics without adding new detail. repo_owner and repo_name are left to their names and are not clarified. Thus the description does not compensate for the undocumented 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?
States a specific action and resource: it fetches the SHA of the newest commit, with explicit fallback to the default branch when ref is omitted. The behavior is precise enough to distinguish it from the sibling GitHub tools, even though no sibling is named. It is not a tautology or vague.
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 gives clear context for when to call it: to read the newest commit SHA on a ref or default branch, and notes the result is ephemeral rather than a stable pin. It also points to a release-management skill for workflow conventions. It lacks explicit alternatives or exclusion wording, but the intended use case is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_pr_contentGithub Get Pr ContentBRead-onlyInspect
Fetches the content/details of a specific pull request.
Workflow and conventions: github_get_skill('pr-analysis').
| Name | Required | Description | Default |
|---|---|---|---|
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | Yes | |
| title | Yes | |
| author | Yes | |
| labels | Yes | |
| merged | Yes | |
| commits | Yes | |
| base_ref | Yes | |
| head_ref | Yes | |
| head_sha | Yes | |
| is_draft | Yes | |
| additions | Yes | |
| assignees | Yes | |
| deletions | Yes | |
| mergeable | Yes | |
| created_at | Yes | |
| updated_at | Yes | |
| description | Yes | |
| changed_files | Yes | |
| mergeable_state | Yes | |
| requested_teams | Yes | |
| requested_reviewers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds one genuine behavioral convention — that a skill must be loaded first ('Workflow and conventions: github_get_skill('pr-analysis')') — but otherwise says nothing about scope, rate limits, or what 'details' includes.
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 short sentences with no filler and the purpose front-loaded. The second line is terse to the point of being cryptic — 'pr-analysis' is never explained — but it is not wasteful.
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?
An output schema exists, so return values need not be described, and the read-only nature is covered by annotations. What is missing for a three-param, zero-coverage tool is any parameter meaning and any disambiguation from the many PR siblings, leaving the definition only minimally 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?
Schema description coverage is 0% across three required parameters, so the description carries the full burden and adds no meaning at all — no format for repo_owner/repo_name, no note that pr_number is per-repository. The parameter names are largely self-explanatory, which prevents a score of 1, but nothing compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetches the content/details of a specific pull request'), which is immediately actionable. However, 'content/details' is vague and does not distinguish this from close siblings such as github_get_pr_diff, github_get_pr_status_checks, or the generic github_api_read, so an agent cannot route unambiguously on the description alone.
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?
There is no when-to-use or when-not-to-use guidance, and no mention of alternatives despite several overlapping PR-read siblings. The only contextual hint is a pointer to github_get_skill('pr-analysis'), which signals a workflow prerequisite but does not explain under what conditions this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_pr_diffGithub Get Pr DiffARead-onlyInspect
Fetches the net unified diff of a specific pull request, capped at max_bytes. bytes_total is the whole diff either way, so a truncated reply says what was left behind. See #314 and #514.
Workflow and conventions: github_get_skill('pr-analysis').
| Name | Required | Description | Default |
|---|---|---|---|
| max_bytes | No | Cap on the patch returned. Pass 0 to learn the size without reading the patch | |
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| patch | Yes | |
| pr_number | Yes | |
| truncated | Yes | |
| bytes_total | Yes | |
| bytes_returned | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, open-world. The description adds real behavioral context beyond that: the response is capped, and bytes_total is always the untruncated size so a truncated reply reveals what was omitted. That is exactly the truncation semantics an agent needs. Minor deduction for the unparseable 'See #314 and #514' references.
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 core sentence leads with the operation and the cap, and the truncation explanation follows directly. 'See #314 and #514' is opaque to an agent that cannot resolve issue numbers and is the one phrase that does not earn 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?
An output schema exists, so return values need not be spelled out, and the description still explains the truncation/size contract. What is missing is routing versus the sibling diff/content tools, which matters given how many PR-reading tools are in this set.
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?
Only 25% schema coverage, but the three undocumented params are self-evident (repo_owner, repo_name, pr_number). The description reinforces max_bytes and explains the bytes_total relationship, which is meaning the schema does not supply on its own for output interpretation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetches) and resource (net unified diff of a specific pull request) with the cap already named. The word 'net' plus 'diff' distinguishes it from a raw files listing, but it never mentions the closest sibling github_get_pr_content, so an agent still has to guess which one returns the patch.
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?
There is a pointer to a workflow skill ('github_get_skill(pr-analysis)') which implies context of use, and the max_bytes=0 trick is described in the schema. But the description gives no explicit when-to-use/when-not and no comparison against github_get_pr_content or the inline-comment siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_pr_linked_issuesGithub Get Pr Linked IssuesBRead-onlyInspect
Return the issues that will be auto-closed when a pull request is merged.
Workflow and conventions: github_get_skill('pr-analysis').
| Name | Required | Description | Default |
|---|---|---|---|
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| pr_number | Yes | |
| linked_issues | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so no side-effect disclosure is needed. The description adds useful behavioral context by clarifying that the returned issues are the ones linked to auto-close on merge, which is not visible from the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is brief and front-loads the primary purpose in the first sentence. The second sentence is terse but somewhat cryptic, directing the agent to github_get_skill('pr-analysis') without explaining why, so the structure is good but not flawless.
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 read-only three-parameter tool with an output schema, the description covers the key semantic behavior. It omits explicit parameter and workflow detail, but the low complexity and available schema make it reasonably 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?
Schema description coverage is 0%, so the description must compensate for the three parameters. It never mentions repo_owner, repo_name, or pr_number, though the phrase 'pull request' indirectly points at pr_number. The parameter names are inferable, but the description adds almost no explicit semantic value.
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 first sentence clearly states a specific verb and resource: it returns issues that will be auto-closed when a pull request is merged. This makes the tool's operation evident, though it does not explicitly differentiate from sibling tools like github_get_pr_content or github_pr_issue_analyser_ui.
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 only usage-related text is the cryptic 'Workflow and conventions: github_get_skill('pr-analysis')', which instructs the agent to fetch a skill rather than explaining when to prefer this tool over alternatives. No when-to-use, when-not-to-use, or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_project_fieldsGithub Get Project FieldsARead-onlyInspect
Lists a project's fields and the options each single-select one accepts, which is what github_set_project_field expects to be named.
Workflow and conventions: github_get_skill('project-boards').
| Name | Required | Description | Default |
|---|---|---|---|
| project_owner | Yes | User or organisation that owns the board | |
| project_number | Yes | Project number, as it appears in the board's URL |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the contextual detail that the output feeds into github_set_project_field, which is useful. It does not mention errors, rate limits, or output format details, but given the annotations and simple read operation, this is acceptable.
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 brief and front-loaded with the core purpose, followed by a concise workflow instruction. It contains no fluff, though it could be slightly more structured with explicit when-to-use phrasing. Overall it's efficient and scannable.
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 covers the core functionality and references a skill for conventions, which adds context. Since an output schema exists (as indicated by context signals), the return structure is already defined elsewhere. The description is sufficient for an agent to know when and why to invoke it, though it omits edge cases or error scenarios which are minor for a read-only list 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 description coverage is 100% with both parameters (project_owner and project_number) clearly described. The description adds no additional meaning about parameters, so the baseline 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 tool lists a project's fields and the options for single-select fields, and explicitly connects it to github_set_project_field's expected naming. This distinguishes it from sibling tools like list_project_items and set_project_field. The verb 'lists' and the resource 'project fields' are specific.
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 before github_set_project_field by noting it provides the names that tool expects. It also instructs the agent to call github_get_skill('project-boards') as a workflow step, giving explicit guidance on prerequisites. However, it does not explicitly contrast with alternative tools or state when not to use it, so it's strong but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_pr_status_checksGithub Get Pr Status ChecksARead-onlyInspect
Return the CI check runs and commit status for a pull request's HEAD commit.
Pages through up to MAX_STATUS_CHECKS_SUITE_PAGES of check suites (50 per page). For any suite whose first 100 runs are not the full set, drains up to MAX_STATUS_CHECKS_RUN_PAGES_PER_SUITE additional pages via the supplemental query. If either cap is hit before the connection is exhausted, the result is flagged truncated=True and overall is downgraded from 'passing' to 'unknown' so the caller does not act on a partial view. head_sha names the commit read, and is None when GitHub resolves no commit for the pull request. See #515.
Workflow and conventions: github_get_skill('pr-analysis').
| Name | Required | Description | Default |
|---|---|---|---|
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| overall | Yes | |
| head_sha | Yes | |
| pr_number | Yes | |
| truncated | Yes | |
| check_runs | Yes | |
| commit_statuses | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Excellent disclosure beyond annotations: it explains pagination caps, the supplemental drain logic, that truncation yields truncated=True and downgrades overall to 'unknown' to prevent acting on a partial view, and that head_sha is None when no commit resolves. This is exactly the behavioral context an agent needs.
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?
Front-loaded with the core purpose and then the behavioral caveats. It is somewhat dense with internal constant names (MAX_STATUS_CHECKS_SUITE_PAGES, MAX_STATUS_CHECKS_RUN_PAGES_PER_SUITE) and an issue reference (#515), but each sentence carries meaningful 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?
An output schema exists, so return values needn't be explained. The description adds the truncation/failure-mode and head_sha-none edge cases that an agent wouldn't otherwise know, making it complete for correct invocation and interpretation.
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 0% for 3 parameters, so the description bears the burden. It never describes repo_owner, repo_name, or pr_number, though they are standard GitHub identifiers that are largely self-evident. It does clarify the head_sha output semantics, but that is not an input 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?
States a specific verb and resource: 'Return the CI check runs and commit status for a pull request's HEAD commit.' This is unmistakable and no sibling tool covers CI check status, so an agent can select it directly.
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 purpose implies when to use it (need CI status for a PR), and it points to github_get_skill('pr-analysis') for workflow conventions. However, it never explicitly contrasts with alternatives like github_get_pr_content or github_get_job_log, so routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_releaseGithub Get ReleaseARead-onlyInspect
Fetches one release, by tag or the latest published one.
Workflow and conventions: github_get_skill('release-management').
| Name | Required | Description | Default |
|---|---|---|---|
| tag_name | No | Tag to fetch. Omit for the latest published release | |
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read. The description adds the specific selection behavior (by tag or latest) and the fact it fetches exactly one release, which goes beyond the generic read-only hint. It does not mention side effects, but there are none per annotations. The description enriches the behavioral context without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with the core behavior front-loaded, followed by a separate line pointing to a skill. There is zero fluff. It is perfectly concise and structured for quick parsing by an agent.
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 is a simple fetch operation with an output schema (present but not shown) and annotations covering safety. The description covers the selection logic and the required parameters implicitly through the schema. It does not mention edge cases like tag-not-found, but for a straightforward read operation with an output schema, this is sufficient. The workflow hint adds extra context. Overall, the agent has enough to call it correctly.
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 only 33% (only tag_name has a description). The tool description clarifies the tag_name parameter by saying 'by tag or the latest published one', which maps directly to the omit-for-latest behavior. However, it gives no additional meaning for repo_owner and repo_name, which are standard parameters but remain undocumented in the schema. The description partially compensates for the low coverage but not fully; it focuses on the optional parameter while leaving required ones self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Fetches' and a specific resource 'one release', and explicitly defines the selection criterion 'by tag or the latest published one'. This clearly distinguishes it from github_list_releases which fetches multiple releases, and from github_create_release which writes. The purpose is unambiguous and differentiates from siblings.
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 fetching a single release, contrasting with a list operation. It also includes a workflow hint 'github_get_skill('release-management')' which signals that the agent should retrieve a skill for workflow context. While not explicitly stating when not to use it (e.g., use list for multiple releases), the 'one' versus 'latest' language gives a clear contextual cue, and the skill pointer provides additional guidance. There is no explicit alternative named, but the intent is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_repository_fileGithub Get Repository FileARead-onlyInspect
Reads one file from a repository at ref, windowed to limit bytes from offset. bytes_total is the whole file either way and next_offset says where to carry on, so a partial read never passes for the lot. A directory belongs to github_list_repository_tree. See #409.
Workflow and conventions: github_get_skill('pr-analysis').
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch, tag or SHA to read at. Omit for the default branch | |
| path | Yes | File path from the repository root, e.g. src/mcp_github/auth.py | |
| limit | No | Cap on the bytes returned. Pass 0 to learn the size without reading | |
| offset | No | Byte to start the window at. Pass a previous next_offset to carry on | |
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ref | Yes | |
| path | Yes | |
| binary | Yes | |
| content | Yes | |
| truncated | Yes | |
| bytes_total | Yes | |
| next_offset | Yes | |
| bytes_returned | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, but the description adds valuable behavior: windowed reads, bytes_total representing the whole file, next_offset for continuation, and the guarantee that a partial read is not mistaken for the full file. This is meaningful beyond what the annotations alone communicate.
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 compact and front-loaded, with the core behavior in the first sentence and the directory exclusion immediately after. The references to '#409' and 'github_get_skill('pr-analysis')' are terse and slightly cryptic, but they do not add bloat.
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 an output schema present, the description does not need to explain return values, yet it still highlights the key continuation semantics (bytes_total and next_offset) and provides a routing rule for directories plus a workflow convention. The brief '#409' reference is the only noticeably under-specified element.
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 already documents ref, path, limit, and offset clearly, and the description reinforces the limit/offset windowing concept. However, repo_owner and repo_name have no schema descriptions and the description does not clarify them, so at 67% schema coverage the description does not fully compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation — reading one file from a repository at a ref — and distinguishes it from directory handling by explicitly routing directories to github_list_repository_tree. This clears up the main ambiguity against sibling tools like github_get_pr_content and github_get_pr_diff.
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 gives an explicit when-not: directories belong to github_list_repository_tree. It also points the agent to a workflow skill via github_get_skill('pr-analysis'), though it does not enumerate all alternatives or edge cases like when to prefer PR-specific content tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_repo_stars_sinceGithub Get Repo Stars SinceARead-onlyInspect
Return the repos owned by username that received the most new stars since a given date. since accepts YYYY-MM-DD or ISO 8601, defaulting to 30 days ago. Answers prompts like 'which repos gained the most stars in the last 30 days'. Counts come from the weekly star history, so they resolve to whole UTC days rather than to exact star timestamps. Cost is one request for each page of the repo listing, then roughly one request per repo for every 30 weeks of the window, which makes a 30-day window a single request per repo however popular that repo is. truncated is True when the account has more public repos than the listing could read, or when a repo's history ran longer than the walk could read, so the answer may miss some.
Workflow and conventions: github_get_skill('user-activity').
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | ||
| top_n | No | ||
| username | Yes | ||
| max_repos | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| repos | Yes | |
| since | Yes | |
| username | Yes | |
| truncated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnly/openWorld annotations, it discloses the weekly-history UTC-day approximation, per-page/per-repo cost, and truncated semantics. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and since format are front-loaded, and the cost/truncation sentences add needed context without filler. It is long but dense; could be trimmed slightly but still earns its 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?
Good coverage of behavior, cost, and truncation with an output schema present, but the undocumented `top_n` and `max_repos` parameters create a real gap. An agent cannot fully understand the result-limit and repo-scan-limit semantics from the description.
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 0%, so the description must carry parameter meaning; it only explains `since` (format/default). `top_n`, `max_repos`, and `username` are left to inference, which is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Return the repos owned by username that received the most new stars since a given date.' It also clarifies the ranking and differentiates from general repo listing/search siblings by focusing on star growth since a date.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete prompts like 'which repos gained the most stars in the last 30 days' and explains cost/truncation tradeoffs, signaling when it is appropriate. It does not explicitly compare against alternatives, but the use-case framing is enough to route an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_skillGithub Get SkillARead-onlyInspect
Reads one skill in full. The same content is served as a skill:// resource, so a client that reads resources needs neither tool.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Skill name as github_list_skills reports it, e.g. pr-review |
Output Schema
| Name | Required | Description |
|---|---|---|
| uri | Yes | |
| name | Yes | |
| content | Yes | |
| description | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful context: the same content is available as a skill:// resource, which informs how the tool behaves. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero wasted words. The core purpose is front-loaded, and the resource note is a helpful addition without being 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?
The tool is simple with one parameter and an output schema, so the description covers purpose and usage sufficiently. It mentions the resource alternative, which adds completeness. It could explicitly mention when to use it vs. github_list_skills, but that's implied and not critical.
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 the name parameter already described as 'Skill name as github_list_skills reports it, e.g. pr-review'. The description does not add extra 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 'Reads one skill in full' – a specific verb and resource. It also distinguishes itself from github_list_skills by focusing on a single skill and mentions the skill:// resource alternative, which sets it apart from siblings.
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 implicit guidance: use this tool to read a skill's full content, and notes that if a client reads resources, this tool is unnecessary. It doesn't explicitly name alternatives like github_list_skills, but the resource note gives clear context for when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_user_activitiesGithub Get User ActivitiesARead-onlyInspect
Get user activities with optional filtering by org, repo, and date range using GraphQL API. since/until accept YYYY-MM-DD or full ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). Note: repo_stars is each repository's current cumulative star count, not stars gained within the requested period. Use github_get_repo_stars_since for per-period deltas.
Workflow and conventions: github_get_skill('user-activity').
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | ||
| repo | No | ||
| since | No | ||
| until | No | ||
| username | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| issues | Yes | |
| commits | Yes | |
| reviews | Yes | |
| username | Yes | |
| date_range | Yes | |
| repo_stars | Yes | |
| pull_requests | Yes | |
| total_contributions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so the description doesn't need to repeat that. It adds valuable context about date formats and the cumulative nature of repo_stars, and it points to a skill for conventions. This exceeds the annotation baseline without contradicting it.
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 compact, with the main purpose front-loaded and supporting details (date formats, sibling tool, skill) neatly organized. It avoids redundancy and wastes no 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 read-only tool with an output schema, the description covers the essentials: purpose, filtering, date formats, and a notable behavioral nuance. The only gap is the max_results parameter semantics, which is minor given the tool's simplicity.
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 0%, so the description must compensate. It explains org/repo filtering and gives precise date formats for since/until, but it does not mention max_results or its effect. This partial coverage earns a 3 – helpful but not complete.
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 user activities') and the resource, and adds filtering dimensions (org, repo, date range) that distinguish it from other get tools. It also explicitly references the sibling github_get_repo_stars_since for a specific use case, making the purpose 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?
It provides a concrete alternative (github_get_repo_stars_since) and a workflow hint (github_get_skill('user-activity')). However, it doesn't explicitly state when NOT to use this tool or compare against other user-activity-related tools, leaving some selection responsibility to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_workflow_runsGithub Get Workflow RunsARead-onlyInspect
Reads a workflow run by id, or every run on the commit that head names, with each run's jobs and their steps. A wait polls until every run has completed, and the server caps it so a task ends before its worker hands it to another. timed_out says a run had not completed when the tool returned. See #537.
Workflow and conventions: github_get_skill('pr-analysis').
| Name | Required | Description | Default |
|---|---|---|---|
| head | No | Branch, tag or SHA whose commit to read every run of, in place of run_id | |
| run_id | No | A run's id, such as the workflow_run_id github_dispatch_workflow returns | |
| repo_name | Yes | ||
| repo_owner | Yes | ||
| wait_seconds | No | Seconds to wait for every run to complete, capped by the server |
Output Schema
| Name | Required | Description |
|---|---|---|
| runs | Yes | |
| timed_out | Yes | |
| truncated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive, open-world profile, so the description's real contribution is the wait semantics: polling until every run completes, a server-side cap so a task finishes before its worker is reassigned, and the meaning of timed_out when a run was still incomplete. That explains the otherwise puzzling idempotentHint=false for a read tool. It still omits error behavior and how the cap value is chosen.
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 opening sentence is well front-loaded, and the wait/timed_out sentences each earn their place. However, 'See #537' is an opaque issue reference with no resolvable meaning for an agent, and the skill cross-reference adds tail clutter that dilutes an otherwise tight paragraph.
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?
An output schema exists, so return-value documentation is not required, yet the description still explains the semantically important timed_out field. Behavioral edge cases are covered for the wait path. Minor gaps remain: what happens if neither run_id nor head is supplied, and how errors or an empty run set are reported.
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 only 60%, and the description compensates: it establishes that head means 'branch, tag or SHA whose commit to read every run of' and is mutually exclusive with run_id ('in place of run_id'), and it explains wait_seconds as a polling window that the server caps. repo_owner and repo_name remain unexplained but are self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Reads a workflow run') and enumerates both selection modes: by id, or every run on the commit a head names. It implicitly separates itself from github_dispatch_workflow by noting the run_id is the value that dispatch returns, but it never names a sibling tool outright to force 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?
It clarifies when to use each selector ('by id, or every run on the commit that head names, in place of run_id'), which is genuine routing guidance. It does not say when to use this instead of adjacent tools like github_get_job_log or github_get_pr_status_checks, nor when a wait is worth requesting versus polling separately; the pointer to github_get_skill('pr-analysis') offloads conventions elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_branchesGithub List BranchesBRead-onlyInspect
Lists a repository's branches, the commit at each head and whether a protection rule covers it.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| per_page | No | Number of results per page (1-100) | |
| protected | No | True for protected branches only, False for unprotected ones | |
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds modest value by disclosing the shape of the result (head commit plus protection status), but says nothing about pagination behavior, rate limits, or the surprising idempotentHint=false for what is a pure read.
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 short sentences with the core capability front-loaded, which is efficient. The second sentence is a terse convention pointer that reads more like an internal note than actionable guidance, slightly reducing its usefulness per word.
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?
Annotations and an output schema are both present, so return values and the read-only nature need not be spelled out. What remains missing is pagination guidance for a potentially long branch list and any explanation of how to use the protected filter, which is the one non-trivial parameter.
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 only 40%: per_page and protected are documented in the schema, but page, repo_owner, and repo_name carry no descriptions. The prose does not compensate for this gap, mentioning no parameter at all. repo_owner/repo_name are largely self-evident, but page and its interaction with per_page/default of 50 are left entirely undocumented.
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 names a specific verb and resource ("Lists a repository's branches") and even states the fields returned: the head commit and protection-rule coverage. It does not, however, distinguish this tool from closely related siblings such as github_list_tags, github_list_repository_tree, or github_delete_branch, so an agent still has to infer which listing tool applies.
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 only usage direction is a pointer to github_get_skill('pr-management'), which implies a workflow exists but does not say when to call this tool rather than the other branch-related tools. There are no exclusions, no prerequisites beyond the required repo identifiers, and no guidance on when filtering by protection status is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_milestonesGithub List MilestonesARead-onlyInspect
Lists a repository's milestones with the count of issues in each.
Workflow and conventions: github_get_skill('issue-management').
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| state | No | Which milestones to return | open |
| per_page | No | Number of results per page (1-100) | |
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only profile (readOnlyHint=true, destructiveHint=false). The description adds useful return-semantics detail about issue counts, but does not disclose pagination or state behavior; these are covered by the schema, so the description is adequate but not rich.
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 short sentences, with the core behavior front-loaded and the workflow instruction kept to one line. No wasted words or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list with an output schema and annotated safety profile, the description plus schema covers the essentials. The main missing piece is explicit routing guidance versus sibling tools, but that is already penalized under usage_guidelines.
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?
Only 40% of parameters have schema descriptions; repo_owner, repo_name, and page are otherwise undocumented. The description does not compensate by explaining parameter roles beyond the phrase 'a repository's', and it does not clarify paging or state filtering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Lists a repository's milestones') and adds a distinctive output detail ('with the count of issues in each'), which clearly differentiates it from siblings like github_create_milestone, github_update_milestone, and github_set_issue_milestone.
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?
There is no explicit when-to-use or alternative guidance; the intended use is implied by the listing verb. The 'Workflow and conventions' line points to a skill rather than explaining when this tool is preferred over other issue/milestone tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_open_issues_prsGithub List Open Issues PrsARead-onlyInspect
Lists open pull requests or issues. The search is fixed to is:open, so closed and merged items are out of reach here. Call github_search_issues_prs for those, and for any qualifier this tool does not expose.
Workflow and conventions: github_get_skill('issue-management').
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Which page of results to return, counting from 1 | |
| issue | No | pr for pull requests, issue for issues | pr |
| per_page | No | Number of results per page (1-100) | |
| filtering | No | involves for items that user authored, is assigned, is mentioned in or commented on, anywhere on GitHub. user for items in that user's repositories. org for an organisation's. repo for one repository | involves |
| repo_name | No | Repository name. Required when filtering is repo, ignored otherwise | |
| repo_owner | Yes | Username under involves and user, organisation under org, repository owner under repo |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint=false and destructiveHint=false, so safety is largely covered. The description adds the crucial behavioral constraint that the query is hard-pinned to is:open, which is non-obvious from the schema and prevents wasted calls.
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?
Front-loads the core behavior and the limitation, then the alternative, with no filler sentences. The trailing pointer to github_get_skill is terse but adds navigational value rather than noise.
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?
Scope, exclusions, alternative tool, and safety profile are all covered, and an output schema exists so return values need no explanation. Nothing an agent needs in order to call this correctly is missing.
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 the enum values (pr/issue, filtering modes) are fully documented in the schema itself. The description adds no parameter-level syntax, defaults, or interaction details, so the baseline 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?
States a specific verb and resource ("Lists open pull requests or issues") and immediately names the sibling that handles everything else. An agent can distinguish it from github_search_issues_prs without opening either schema.
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 states the fixed scope (is:open), the exclusion (closed and merged items are out of reach), and the exact alternative (github_search_issues_prs) for both those items and any unsupported qualifier. It also routes the agent to github_get_skill for workflow conventions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_pr_commentsGithub List Pr CommentsARead-onlyInspect
Lists the comments on a pull request. Inline comments carry the file and line they sit on, so a second review can tell what it already said.
Workflow and conventions: github_get_skill('pr-review').
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | conversation for the PR thread, inline for review comments on lines | conversation |
| page | No | ||
| per_page | No | Number of results per page (1-100) | |
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral nuance beyond annotations: inline comments carry file and line information, and the tool is positioned to support follow-up review continuity. This is meaningful contextual behavior not present in the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action. The second sentence provides targeted value about inline comments, and the workflow pointer is a single line. No filler or redundant restatement of the title or schema.
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 an output schema present and annotations covering the read-only safety profile, the description does not need to document return values or side effects. It adds a workflow reference and clarifies the meaning of inline vs conversation comments. A small gap is the lack of guidance on pagination or large PRs, but the schema's page/per_page parameters partially cover this, so the description is reasonably complete 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 description coverage is only 33%, so the description should compensate for undocumented parameters. It does not explain repo_owner, repo_name, pr_number, page, or per_page beyond the generic phrase 'on a pull request.' The only parameter insight added is about inline comments carrying file/line, which overlaps with the schema's kind description. Required parameters are self-explanatory by name, but the description still leaves much of the parameter semantics to inference.
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 identifies a specific verb and resource: 'Lists the comments on a pull request.' It also clarifies the difference between conversation and inline comments by noting that inline comments carry file and line context. However, it does not explicitly differentiate this tool from sibling tools like github_list_pr_reviews, so it stops short of full sibling distinction.
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 workflow line 'github_get_skill('pr-review')' implies this tool fits into a PR review workflow and suggests the agent fetch a skill for conventions. This gives context but does not explicitly state when to prefer this tool over alternatives, nor does it mention exclusions or competing tools such as github_list_pr_reviews.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_project_itemsGithub List Project ItemsARead-onlyInspect
Lists what is on a project board with each card's field values, so a backlog can be read by Status rather than one issue at a time. A board is a GraphQL connection, which pages by cursor rather than page number, so pass next_cursor back as after until has_more comes back false.
Workflow and conventions: github_get_skill('project-boards').
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | next_cursor from a previous call, to read the following page | |
| per_page | No | Number of items per page (1-100) | |
| project_owner | Yes | ||
| project_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds valuable behavioral details beyond this: it discloses that the board is a GraphQL connection using cursor-based pagination and instructs to 'pass next_cursor back as after until has_more comes back false'. This is useful context not present in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it states the purpose first, then explains pagination, and finally points to a skill. Every sentence serves a purpose without fluff or repetition.
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 an output schema present, the description does not need to detail return values. It covers the essential usage context, including paging mechanics. It could mention prerequisite knowledge or edge cases, but it directs to a skill for workflow, which fills gaps. Overall, it is sufficiently complete for a read-only listing 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 description coverage is 50%, with only `after` and `per_page` having descriptions. The description adds clarity for `after` by explaining its role in pagination, which goes slightly beyond the schema's description. However, it does not compensate for the missing descriptions of the required parameters `project_owner` and `project_number`, though these are self-explanatory given the tool's name and purpose.
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 ('Lists what is on a project board with each card's field values') and adds the purpose ('so a backlog can be read by Status rather than one issue at a time'). This makes the tool's role distinct from other list tools like github_list_milestones or github_list_releases, which target different 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 provides clear context for use (reading backlog by status) and explains paging behavior. It also points to github_get_skill('project-boards') for workflow conventions, offering additional guidance. However, it does not explicitly mention alternatives or when not to use the tool, but the purpose is specific enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_projectsGithub List ProjectsARead-onlyInspect
Lists the Projects (v2) boards a user or organisation owns, with the number each other board tool takes, so a board can be found without reading its URL. The account type is resolved by GitHub, so one login serves for a person and an organisation alike. Pages by cursor: pass next_cursor back as after until has_more comes back false. See #465.
Workflow and conventions: github_get_skill('project-boards').
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | next_cursor from a previous call, to read the following page | |
| per_page | No | Number of boards per page (1-100) | |
| project_owner | Yes | User or organisation whose boards to list |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already marking readOnly/openWorld and not destructive, the description adds useful behavioral context: GitHub resolves account type for both users and orgs, and pagination uses an opaque cursor with a has_more sentinel. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operational content is front-loaded in three readable sentences plus a skill pointer. The phrase 'the number each other board tool takes' is awkward and 'See #465' is cryptic, which keeps it from a perfect score.
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 output schema and annotations cover return shape and safety, and the description fills in paging and account-resolution behavior. It is slightly incomplete on when to prefer this over item-level siblings, and the unresolved '#465' reference leaves one thread dangling.
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, but the description adds semantic value by explaining that the listed board number is exactly what other board tools take and by giving the cursor-chaining rule for the 'after' parameter. This is a modest but real increment over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Lists the Projects (v2) boards a user or organisation owns.' It further clarifies that the result includes the same board number other board tools consume, which distinguishes it from item-level siblings like github_list_project_items. This is more than a restatement of the tool name.
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?
It gives concrete operational guidance: cursor paging ('pass next_cursor back as after until has_more comes back false') and a workflow pointer ('github_get_skill("project-boards")'). It does not explicitly say when to avoid this tool or name an alternative, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_pr_reviewsGithub List Pr ReviewsARead-onlyInspect
Lists the reviews submitted on a pull request, oldest first, each with its author and verdict. A review is not a comment: github_list_pr_comments returns what was said on lines and in the thread, not whether anyone approved. Read requested_reviewers from github_get_pr_content to tell nobody has reviewed from nobody having been asked. See #408.
Workflow and conventions: github_get_skill('pr-review').
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Which page of results to return, counting from 1 | |
| per_page | No | Number of results per page (1-100) | |
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only and non-destructive, and the description adds meaningful behavioral detail: ordering is oldest first, each result includes author and verdict, and reviews are distinct from comments. This goes beyond annotation coverage without contradicting it, though it leaves external reference '#408' unexplained.
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 compact and front-loaded with the core behavior, followed by a useful distinction and workflow note. Each sentence earns its place, though '#408' is a cryptic reference that may not help an agent.
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 relatively simple read-only list tool with an output schema, the description covers the essential behavior, ordering, content, and the key sibling distinction. It also provides workflow guidance for interpreting results, making it complete enough for correct selection and invocation.
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 only 40%, with only page and per_page documented. The description does not compensate by explaining repo_owner, repo_name, or pr_number, even though those names are fairly standard. It does not add parameter-level 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 uses a specific verb and resource: 'Lists the reviews submitted on a pull request, oldest first, each with its author and verdict.' It clearly differentiates itself from github_list_pr_comments, so an agent can distinguish this tool from its nearest sibling without opening the schema.
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?
It explicitly names the alternative tool (github_list_pr_comments) and explains when to use it instead: for line and thread comments, not approvals. It also gives a follow-up workflow, telling the agent to read requested_reviewers from github_get_pr_content to distinguish 'nobody reviewed' from 'nobody asked', and points to a skill for conventions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_releasesGithub List ReleasesBRead-onlyInspect
Lists a repository's releases, newest first.
Workflow and conventions: github_get_skill('release-management').
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| per_page | No | Number of results per page (1-100) | |
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds the ordering behavior ('newest first') but does not disclose pagination details, rate limits, or other runtime traits. No contradiction with annotations exists.
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 concise and front-loaded with the core purpose. The second sentence about the workflow skill is short but may add procedural noise; still, there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list operation with an output schema, the core semantics are present and the ordering is specified. However, it lacks explicit sibling differentiation and leaves required parameters undocumented, making it minimally adequate rather than fully self-sufficient.
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 only 25%, with repo_owner, repo_name, and page undocumented in the schema. The description does not explain these parameters beyond saying 'a repository's releases,' which only weakly implies the need for owner and name. This does not compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Lists a repository's releases, newest first.' This makes the listing intent and ordering clear. It does not explicitly distinguish itself from siblings like github_get_release or github_list_tags, so differentiation is implied rather than stated.
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?
There is no guidance about when to use this tool versus alternatives. The line 'Workflow and conventions: github_get_skill("release-management")' is a procedural convention, not a comparison or exclusion. An agent must infer usage from the tool name and generic listing behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_repo_labelsGithub List Repo LabelsBRead-onlyInspect
Lists the labels defined in a repository.
Workflow and conventions: github_get_skill('issue-management').
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| per_page | No | Number of results per page (1-100) | |
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to repeat that. However, the description adds no additional behavioral context such as pagination behavior, error handling, response format, or rate limits. It is consistent with annotations (no contradiction), but it provides minimal extra value beyond the annotations, which are already sufficient for a read-only 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 two sentences, with the core purpose front-loaded. The workflow hint is concise and adds a useful directive without waste. No unnecessary words or repetition. It is appropriately sized for a simple list 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?
The tool is straightforward and has an output schema (not shown but indicated), so return values need not be explained. The workflow hint gives some context but is cryptic—it doesn't clarify what github_get_skill returns or how it affects usage. The lack of parameter descriptions and edge-case guidance (e.g., empty repo, invalid owner) makes it only partially complete, though acceptable for a simple read-only 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 description coverage is only 25% (only per_page has a description). The description text does not mention any parameters at all, leaving repo_owner, repo_name, and page without any semantic explanation in either the schema or the description. Since the description fails to compensate for the low schema coverage, this is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: 'Lists the labels defined in a repository.' It is clear about the resource (labels) and the action (list). It distinguishes from sibling tools like github_list_milestones and github_list_releases by the resource type, though it does not explicitly name alternatives. The purpose is unambiguous and directly maps to the tool name.
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 includes a workflow directive: 'Workflow and conventions: github_get_skill('issue-management').' This implies the tool is part of an issue-management workflow and instructs the agent to fetch a skill first, but it does not explicitly state when to use this tool vs. other list tools, nor does it provide exclusions or prerequisites beyond the skill call. The guidance is contextual but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_reposGithub List ReposARead-onlyInspect
Lists repositories for a user, an organisation, or the caller. The owner's account type picks the endpoint, since /orgs 404s on a person and /users hides an organisation's private repositories. See #354.
Workflow and conventions: github_get_skill('user-activity').
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| sort | No | updated | |
| owner | No | User or organisation. Omit for the caller's own, which is the only way to see private ones | |
| per_page | No | Number of results per page (1-100) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe read-only nature is established. The description adds valuable behavioral nuance beyond those annotations: endpoint selection depends on account type, /users hides organisation private repositories, and the caller can see their own private repos. No contradiction with annotations is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and the endpoint-routing sentence earns its place by explaining a non-obvious behavior. However, 'See #354' and the workflow line referencing github_get_skill('user-activity') are cryptic pointers that do little to help an agent select or invoke the tool. The description is reasonably sized but not every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple read-only listing tool with four optional parameters, an output schema, and annotations covering safety. The description covers the main non-obvious risk—how owner account type affects endpoint and private-repo visibility. The cryptic references are minor flaws rather than missing essential invocation information.
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 50%, with owner and per_page documented but page and sort left to inference. The description adds useful meaning for owner by explaining account-type-dependent endpoint behavior and private-repo visibility. However, it does not compensate for the undocumented page and sort parameters, leaving part of the parameter semantics to be guessed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Lists repositories for a user, an organisation, or the caller.' This distinguishes it from sibling tools that target PRs, releases, tags, or milestones. However, it does not explicitly name or contrast any sibling tool, so it stops short of full 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?
The description provides useful operational routing guidance—'the owner's account type picks the endpoint, since /orgs 404s on a person and /users hides an organisation's private repositories'—but does not explicitly say when to use this tool versus an alternative. The workflow line references github_get_skill('user-activity') rather than explaining tool-selection criteria. Usage context is mostly implied by the name and first sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_repository_treeGithub List Repository TreeARead-onlyInspect
Lists a repository's tree at ref, one level deep unless recursive. Each entry carries path, mode, type, size and sha. truncated is True where the tree exceeded GitHub's cap, which no amount of paging widens. See #409.
Workflow and conventions: github_get_skill('pr-analysis').
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch, tag or SHA to list at. Omit for the default branch | |
| path | No | Subdirectory to list. Omit for the repository root | |
| recursive | No | Descend into every subdirectory rather than one level | |
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ref | Yes | |
| path | Yes | |
| total | Yes | |
| entries | Yes | |
| truncated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint false, so safety is covered. The description adds valuable behavioral context: the 'truncated' field behavior and that paging cannot widen the cap, plus the entry field list. This goes beyond annotations and helps the agent handle edge cases. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose, but the cryptic '#409' reference and the workflow line about github_get_skill are tangential and may distract an agent. These additions do not clearly support tool usage and add noise without earning their place, so it is not as tight as it could be.
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 simple read-only listing tool with an output schema and annotations covering safety, the description is fairly complete. It covers the main behavior, the truncation edge case, and entry contents. It omits error handling and rate limits, but those are typically not required for such a straightforward tool, and the output schema likely covers return structure.
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 60% (3 of 5 params have descriptions). The description reinforces the meaning of 'recursive' and 'ref' but does not add details beyond what the schema already provides. It does not clarify repo_owner or repo_name, but those are conventional and obvious from the tool name. Overall, it adds marginal value over the schema, so a 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 lists a repository's tree at a given ref, with a clear one-level default and optional recursive behavior. It distinguishes itself from siblings like github_get_repository_file (which fetches a single file) and github_get_pr_diff (which returns diffs), so an agent can easily tell this is the tree-listing 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?
The description implies usage by describing what it does but does not explicitly state when to use this tool over alternatives, nor does it mention exclusions. The workflow line about github_get_skill('pr-analysis') is not directly about this tool's usage context, so it provides no alternative routing. Guidance 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.
github_list_skillsGithub List SkillsARead-onlyInspect
Lists the workflow guidance bundled with this server, each with the name github_get_skill takes and the skill:// URI the same content is served under. Read the one covering the task before starting it. See #414.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds that each item includes a name and URI, which gives some insight into the output structure but does not reveal any behavioral quirks (e.g., pagination, ordering). For a simple read-only listing, this is acceptable but not rich.
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 sentences long, front-loading the main action ('Lists the workflow guidance') and then providing a key relationship to github_get_skill. The mention of '#414' is cryptic but does not add unnecessary length. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, read-only) and the existence of an output schema, the description sufficiently explains what it does and how to use it. It mentions the skill name and URI, which are likely covered in the output schema. It does not mention pagination or filtering, but these are not critical for a list-all tool and are likely in the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline score is 4. The description does not need to explain parameters since there are none, and the schema is empty. No additional parameter semantics are required.
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's purpose: to list the workflow guidance bundled with the server. It also connects to the sibling tool github_get_skill by mentioning the name that tool takes and the skill:// URI, effectively distinguishing itself from that retrieval tool. The verb 'lists' is specific and the resource (workflow guidance) is well-defined.
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 gives explicit usage direction: 'Read the one covering the task before starting it.' This implies the tool should be used to discover which skill to fetch via github_get_skill, providing clear context for when to use it. It does not explicitly name alternatives or state when not to use it, but the guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_tagsGithub List TagsARead-onlyInspect
Lists a repository's tags and the commit each points at.
Workflow and conventions: github_get_skill('release-management').
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| per_page | No | Number of results per page (1-100) | |
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful detail that each tag is paired with the commit it points at, but it does not describe pagination behavior or other API nuances. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the core action front-loaded and no redundant filler. The workflow line adds a distinct piece of guidance, making every sentence earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple paginated list tool with an output schema and strong annotations, the description is nearly complete. The only mild gap is that the workflow instruction is cryptic—it tells the agent to fetch a skill but doesn't explain whether that step is mandatory before calling this 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 description coverage is only 25%, with only per_page documented. The description does not compensate by explaining repo_owner, repo_name, or page; it relies on their self-evident names. Parameter meaning is mostly left to the schema and naming conventions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Lists a repository's tags and the commit each points at.' This clearly distinguishes it from siblings like github_list_releases or github_get_release by emphasizing tags and their associated commits.
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 workflow pointer 'github_get_skill('release-management')' gives useful context that this tool belongs to a release-management skill, but it does not explicitly say when to choose list_tags over alternatives like list_releases, or when not to use it. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_merge_prGithub Merge PrAInspect
Merges a specific pull request. Read head_sha from github_get_pr_content and pass it as expected_head_sha, and GitHub refuses with a 409 rather than merge a push that arrived after the read. See #517.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes | ||
| commit_title | No | ||
| merge_method | No | squash | |
| commit_message | No | ||
| expected_head_sha | No | Refuse unless the head still matches this SHA, as github_get_pr_content reports it |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false and idempotentHint=false, but the description adds genuinely new behavioral context: a stale expected_head_sha causes a 409 refusal rather than a silent merge of newer pushes. This race-condition guard is exactly the kind of context annotations cannot convey. It does not cover permission requirements or irreversibility of the merge.
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 core behavior and the 409 rationale are front-loaded in the first two sentences, and the skill pointer is compact. 'See #517' is minor noise but is arguably evidence for why the guard exists, and no sentence is redundant.
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?
An output schema exists, so return values need not be explained, and the reference to github_get_skill('pr-management') offloads workflow conventions. The main residual gap is merge_method semantics and permission expectations, but for a merge tool the description covers the high-stakes details an agent needs.
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 only 14% (just expected_head_sha), so the description must compensate for six largely undocumented parameters. It does add real meaning for the one critical parameter by telling the agent where to source the SHA, but merge_method (including its squash default), commit_title, and commit_message are left entirely to the enum names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Merges a specific pull request') that is unambiguous and distinct from every sibling, including github_create_pr, github_update_pr, and github_get_pr_content. An agent can identify the operation without opening the schema.
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?
It states a concrete prerequisite workflow: read head_sha from github_get_pr_content and pass it as expected_head_sha. It also routes to github_get_skill('pr-management') for broader conventions. What is missing is any explicit statement of when not to merge (e.g., draft PRs, failing checks, merge conflicts).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_pr_issue_analyser_uiGithub Pr Issue Analyser UiAInspect
Execute Prefab Python code in a sandbox and render the result.
The code runs in a Pyodide WASM sandbox with full Python support.
Import everything you use. Use the components tool to look up
available components and their import paths.
Always use PrefabApp as the outermost context manager — this enables streaming so the UI renders progressively as code is written:
from prefab_ui.components import Column, Heading, Text, Row, Badge
from prefab_ui.app import PrefabApp
with PrefabApp() as app:
with Column(gap=4):
Heading("Dashboard")
with Row(gap=2):
Text("Revenue: $1.2M")
Badge("On Track", variant="success")For interactive UIs, pass initial state as a dict and use .rx
on stateful components for reactive bindings:
from prefab_ui.components import Column, Slider, Text
from prefab_ui.app import PrefabApp
with PrefabApp(state={"threshold": 50}) as app:
with Column(gap=4):
slider = Slider(value=50, min=0, max=100, name="threshold")
Text(f"Threshold: {slider.rx}%")slider.rx produces {{ threshold }}, a template expression
that resolves against client-side state. Use Rx("key") directly,
or apply pipe filters: Rx("balance").currency() produces
{{ balance | currency }}.
Available pipes: upper, lower, currency, length, json, round(n), default(val), truncate(n).
Charts live in prefab_ui.components.charts:
from prefab_ui.components.charts import BarChart, ChartSeries
BarChart(
data=[{"month": "Jan", "rev": 100}, {"month": "Feb", "rev": 200}],
series=[ChartSeries(data_key="rev", label="Revenue")],
x_axis="month",
)Values passed via data are available as global variables in the
code. Python features like loops, f-strings, and comprehensions all
work.
Layout patterns:
Card sub-components (CardHeader, CardContent, CardFooter) have built-in padding. Don't add extra padding to them. For a simple card without sub-components, use
Card(css_class="p-6").Use
Grid(columns=N, gap=4)for equal-width cards or panels. Grid handles sizing automatically — no flex classes needed. For unequal widths, pass a list:Grid(columns=[2, 1], gap=4)gives a 2:1 ratio.Row is for inline elements (badges, icons + text, buttons). Prefer Grid when children should have equal or proportional widths. Row does not wrap by default.
Column and Row accept
gap(Tailwind scale: 1-12),align(cross-axis), andjustify(main-axis) as native props — prefer these over raw css_class for spacing.Use
css_class="overflow-hidden"on containers if chart or content edges should clip to the container boundary.
Args: code: Python code that builds a Prefab component tree. data: Values injected as variables in the sandbox namespace. sandbox: A Sandbox instance. If not provided, a new one is created on each call.
Workflow and conventions: github_get_skill('interactive-ui').
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It thoroughly explains the sandboxed execution, streaming behavior, reactive state, and layout patterns. It also discloses the need to import all dependencies and use PrefabApp as the outermost context. While it does not explicitly state side effects or safety, the sandbox context implies a safe, read-only execution environment. This is substantial transparency for a complex 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 lengthy but well-structured with clear sections and code examples. It front-loads the core purpose and then provides necessary syntax, layout patterns, and pipe filters. Each section adds value, though the length could be trimmed for simpler contexts. Overall, it is appropriately sized for the complexity of the Prefab UI system.
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 covers the tool's functionality comprehensively: execution model, syntax, reactive bindings, charts, layout patterns, and parameter usage. It lacks a connection to the specific PR issue analysis domain implied by the tool name, but it fully covers the mechanics of the tool itself. Since there is no output schema, the description does not need to explain return values beyond 'render the result'. It is complete for calling and using the tool correctly.
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 description includes an 'Args' section that explicitly defines both parameters: 'code' as Python code building a Prefab component tree and 'data' as injected variables. This fully compensates for the 0% schema coverage. The description also provides multiple examples demonstrating how these parameters are used, adding rich meaning beyond the raw schema.
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 executes Prefab Python code in a sandbox and renders the result, which is a specific verb+resource. It distinguishes itself from sibling GitHub operation tools by being a UI rendering tool. However, the tool name suggests a PR issue analysis focus, but the description omits that domain context, making the purpose slightly ambiguous in this GitHub context.
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 does not explicitly state when to use this tool versus alternatives. It mentions a workflow convention to call github_get_skill('interactive-ui'), but this is a pointer to a skill, not an explicit usage guideline. No guidance on when not to use this tool or how it compares to other UI-related tools is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_remove_from_projectGithub Remove From ProjectADestructiveInspect
Takes an issue or pull request off a project board. The issue itself is untouched and stays open, but the field values its card held go with it.
Workflow and conventions: github_get_skill('project-boards').
| Name | Required | Description | Default |
|---|---|---|---|
| repo_name | Yes | ||
| repo_owner | Yes | ||
| issue_number | Yes | ||
| project_owner | Yes | ||
| project_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the agent knows it is destructive. The description adds valuable nuance: the issue remains open but its card's field values are lost. This goes beyond the annotation and helps set expectations. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no waste. It front-loads the core action and effect, then points to a skill for conventions. Every sentence earns its place, and the structure is easy to parse.
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 that an output schema exists (though not shown), the description does not need to explain return values. It covers the critical behavioral nuance (issue stays open, field values lost) and points to a skill for workflow conventions. It lacks explicit parameter explanations, but the parameter names are fairly obvious. Overall, it is reasonably complete for a destructive board operation, though it could mention idempotency or reversibility.
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 0%, so the description must compensate, but it does not explain any parameter. The parameter names are self-explanatory (repo_owner, issue_number, etc.), but the description gives no guidance on how they relate to the project board or any special constraints. This is a significant gap given five required 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 uses a clear verb and resource ('Takes an issue or pull request off a project board') and explicitly states the effect on the issue (untouched, stays open). It also distinguishes itself from the sibling 'github_add_to_project' by its opposite action. This makes the tool's purpose unmistakable.
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 clearly implies when to use the tool (when removing an item from a project board) and explains that the issue itself is not deleted, which helps an agent decide between this and other board-related tools. It does not explicitly name alternatives or exclusions, but the context is strong. The pointer to a skill for conventions adds a workflow cue, though it is not direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_reply_to_review_commentGithub Reply To Review CommentAInspect
Replies on an existing review thread rather than starting a new one.
Workflow and conventions: github_get_skill('pr-review').
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| pr_number | Yes | ||
| repo_name | Yes | ||
| comment_id | Yes | The review comment being replied to, which sets the thread | |
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| body | Yes | |
| line | No | |
| path | No | |
| side | No | |
| author | Yes | |
| html_url | Yes | |
| created_at | Yes | |
| start_line | No | |
| start_side | No | |
| in_reply_to_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (mutation), so the description's 'replies' aligns. It adds the nuance that it operates on an existing thread, which is not explicit in the schema. However, it lacks details on authentication requirements or response behavior, but given the annotations, a baseline of 3 is appropriate.
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 short (two sentences) and front-loads the core behavior: 'Replies on an existing review thread rather than starting a new one.' The reference to the workflow is extra but useful. No filler or 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?
For a mutation tool with an output schema, the description covers the main differentiation (reply vs new thread) and points to a skill for broader context. It does not detail all parameters or effects beyond the schema, but given the output schema and annotations, it is adequate for an agent to select and invoke correctly in most cases.
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 has only 20% description coverage, with only comment_id described as 'the review comment being replied to, which sets the thread.' The description does not elaborate on the other parameters like body or repo_name, but these are relatively self-explanatory. Given low coverage, the description could have done more, but the essential purpose of comment_id is covered in the schema. Baseline 3 is defensible.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (reply on an existing review thread) and explicitly contrasts it with starting a new one, which distinguishes it from sibling tools like github_add_inline_pr_comment and github_submit_review. It also references the workflow convention via github_get_skill('pr-review').
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 makes clear that this tool is for replying to an existing thread, implying when not to use it (when starting a new thread). However, it does not explicitly name alternative tools for the opposite case or provide conditions like 'if you need to start a new thread, use X'. Despite that, the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_request_reviewersGithub Request ReviewersAIdempotentInspect
Asks users and teams to review a pull request, or withdraws the request. Both calls answer with the pull request, so its reviewer lists show what took effect without a second read. The removal endpoint requires reviewers, so withdrawing teams alone sends an empty list. See #502.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| remove | No | Withdraw the request from these reviewers rather than ask them | |
| pr_number | Yes | ||
| repo_name | Yes | ||
| reviewers | No | User logins, each a collaborator on the repository | |
| repo_owner | Yes | ||
| team_reviewers | No | Team slugs in the repository's organisation |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely non-obvious behavior: both calls echo back the pull request so no follow-up read is needed, and the removal endpoint rejects a teams-only withdrawal unless `reviewers` is also passed — a real API quirk an agent would otherwise hit blind.
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?
Front-loads the two modes in the first sentence, then adds the return-value and edge-case detail in order of importance. The trailing 'See #502' is an opaque dangling issue reference that costs a line without helping the agent act.
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?
An output schema exists, so the brief note about the PR being returned is a bonus rather than a necessity. Combined with annotations covering idempotency and mutability, and the description covering both modes plus the reviewers/teams edge case, this is sufficient to call the tool correctly; only the three identifier parameters lack any prose, and their names are largely self-describing.
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 only 50% (reviewers, team_reviewers and remove are documented; repo_owner, repo_name and pr_number are not), so the description has to carry weight. It does, by explaining the empty-list interaction between `reviewers` and `team_reviewers` on the remove path — semantics the schema alone would not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — asking users/teams to review a pull request — and explicitly covers the inverse operation (withdrawing the request) via the `remove` flag. An agent can distinguish this from review-submission siblings like github_submit_review because the description frames it as requesting reviewers, not performing a review.
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 makes the add-vs-withdraw split explicit and routes the agent to github_get_skill('pr-management') for the broader workflow. It does not name any alternative sibling (e.g. when to use github_submit_review or github_update_pr instead), so it stops short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_rerun_jobGithub Rerun JobAInspect
Re-runs one Actions job and every job that depends on it, without a commit on the branch. Each call starts another attempt, so calling it twice runs the job twice. A re-run keeps the privileges of the first run, so a Dependabot job that failed on its read-only token wants github_create_empty_commit instead. It returns the run's id as workflow_run_id, which github_get_workflow_runs follows. See #503 and #537.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The check run's id, as github_get_pr_status_checks reports it | |
| repo_name | Yes | ||
| repo_owner | Yes | ||
| enable_debug_logging | No | Run the job again with runner and step debug logging |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses cascading behavior (dependent jobs are re-run too) and that a re-run inherits the first run's privileges, which is the real reason the Dependabot case fails. It also states the return linkage (workflow_run_id consumed by github_get_workflow_runs), so the agent knows the follow-up step.
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?
Front-loaded with the core action and its scope, with the alternative and the return linkage following logically. The trailing 'See #503 and #537' is unactionable noise for an agent and costs it a point.
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?
Annotations cover the safety profile and an output schema exists, so the description need not explain return shape in depth; it nonetheless names the ID field and its consumer. The only gap is the unexplained internal issue references, which add no usable context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: job_id and enable_debug_logging are already documented in the schema, and the description only implies job scope without adding format or sourcing detail. The two undocumented repo_owner/repo_name parameters are conventional enough that the description does not need to compensate, so the baseline 3 holds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Re-runs one Actions job and every job that depends on it') and immediately scopes it with 'without a commit on the branch'. It also names the sibling it is not (github_create_empty_commit), so an agent can separate it from the other Actions-related tools without reading any schema.
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?
Gives an explicit when-not and the alternative: a failed Dependabot job on a read-only token should use github_create_empty_commit instead. It also warns against repeat invocation ('calling it twice runs the job twice') and points to the pr-management skill for workflow conventions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_search_api_routesGithub Search Api RoutesARead-onlyInspect
Finds REST routes whose summary or path holds every word of the query, each with its method, path, summary, docs link and the request tool that sends it. The routes come from GitHub's OpenAPI description. See #543.
Workflow and conventions: github_get_skill('api-requests').
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Most routes to return | |
| query | Yes | Words for what the call should do, such as 'add collaborator' or 'ruleset' | |
| method | No | Only routes sent with this method |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| routes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds real context beyond that: the routes derive from GitHub's OpenAPI description, matching is ALL-words over summary or path (not fuzzy relevance ranking), and the result set includes a follow-up request tool. It does not mention truncation behavior beyond the limit 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?
Two tight sentences front-load the purpose and return shape, followed by a short workflow pointer. The trailing "See #543" is an opaque reference with no explained meaning for an agent and is the only wasted token.
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 an output schema covering return values, annotations covering safety, and full schema descriptions, the description only needed to supply matching semantics and the discovery workflow — both of which it does. An agent has everything required to search and then dispatch the returned request 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 baseline would be 3, and the description earns the bump by explaining how `query` is actually interpreted — conjunctive matching against summary or path — which the schema's "Words for what the call should do" does not convey. It does not elaborate on how `method` interacts with the query, but that parameter is self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Finds REST routes") and pins down the matching semantics precisely: every word of the query must appear in the summary or path. It also enumerates the fields returned (method, path, summary, docs link, request tool), which separates it cleanly from siblings like github_api_read or github_search_issues_prs.
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 makes the discovery-then-invoke workflow clear by noting each result carries "the request tool that sends it," and it routes agents to github_get_skill('api-requests') for conventions. It stops short of explicitly naming alternatives or stating when not to use this tool (e.g. when the route is already known, use github_api_read directly).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_search_issues_prsGithub Search Issues PrsARead-onlyInspect
Searches issues and pull requests by text and qualifiers. Unlike github_list_open_issues_prs the query is the caller's, so closed and merged items are reachable and any qualifier GitHub search accepts works. GitHub runs a lexical search when search_type is absent, so the default sends none. Semantic and hybrid cover issues alone, and GitHub falls back to lexical for a query that can reach a PR.
Workflow and conventions: github_get_skill('issue-management').
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| query | Yes | Terms and qualifiers, e.g. 'rate limit repo:owner/name is:closed label:bug' | |
| per_page | No | Number of results per page (1-100) | |
| search_type | No | lexical matches words. semantic and hybrid match issues by meaning and need is:issue in the query | lexical |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnly/openWorld already declared, the description still earns credit by disclosing fallback behavior: GitHub runs lexical when search_type is absent, semantic/hybrid cover issues alone, and GitHub falls back to lexical for a query that can reach a PR. Minor gap: it says the default 'sends none' while the schema declares default 'lexical', a nuance an agent may trip on.
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?
Purpose and sibling differentiation come first, then the search_type behavior, then a workflow pointer — a sensible front-loaded ordering with little waste. The trailing 'github_get_skill(issue-management)' line is terse but earns its place as a routing hint.
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?
An output schema exists, so return values need not be explained, and pagination params are self-documenting in the schema. What remains is behavioral nuance (rated/abuse limits, result ordering), which is not essential to invoke correctly.
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 75%, so the baseline is already decent; the description adds meaning for search_type by explaining what lexical vs semantic/hybrid actually match and the is:issue prerequisite, which the enum description only partly conveys. The free-form query qualifier syntax is left to the schema example, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Searches issues and pull requests') plus the mechanism ('by text and qualifiers'), and explicitly contrasts with sibling github_list_open_issues_prs, noting that closed and merged items are reachable. An agent can distinguish the two search paths without opening a schema.
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?
Names the alternative (github_list_open_issues_prs) and the condition that selects this tool: a caller-supplied query with arbitrary qualifiers. It also gives when-to-use rules for each search_type (semantic/hybrid need is:issue and cover issues only).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_search_prefab_componentsGithub Search Prefab ComponentsAInspect
Search the Prefab component library.
Use this tool to look up exact argument names, accepted values, and usage examples before writing component code. The skill covers patterns and layout; this tool has the API details.
The query matches component names and descriptions.
Space-separated terms match independently, so
"Card Badge Metric" returns all three.
When a query matches a small number of components, full details
(docstrings, args, examples) are shown automatically. For broad
searches, a compact listing is returned instead. Use detail to
override this behavior.
Args: query: Filter by component name or description. Space-separated terms are OR-matched. detail: Show full docstrings and args. Defaults to automatic (detailed for ≤5 matches, compact otherwise). limit: Max components to return in detail mode (default 8). No limit in compact mode.
Workflow and conventions: github_get_skill('interactive-ui').
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max components to return in detail mode (default 8). No limit in compact mode. | |
| query | No | Filter by component name or description. Space-separated terms are OR-matched. | |
| detail | No | Show full docstrings and args. Defaults to automatic (detailed for ≤5 matches, compact otherwise). | |
| components | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does an excellent job: it explains the OR-matching behavior, the automatic detail/compact mode based on match count (≤5), and how the 'detail' parameter overrides this. It also discloses the limit behavior difference between modes. These are precisely the behavioral traits an agent needs to predict the tool's response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized and front-loaded with the main purpose, then presents usage context, matching behavior, parameters, and a workflow reference. While it's longer than necessary, every sentence contributes meaning and the structure supports quick scanning. It could be tightened, but it's not padded.
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 covers the core search behavior, detail override, and limit semantics thoroughly, and mentions the workflow with github_get_skill. However, it omits the 'components' parameter entirely, leaving it unexplained. Given four parameters, one undocumented is a real gap that impacts an agent's ability to call the tool correctly in all cases. The output schema exists, so return format is covered, but the missing parameter drags completeness down.
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 already documents three parameters (query, detail, limit) with clear descriptions that largely match the text. The description adds little beyond the schema for these. More critically, the fourth parameter 'components' has no description in either the schema or the tool description, leaving it undefined. Since schema coverage is 75% (above the low threshold but not >80%), the description should have compensated but instead omits it entirely.
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 opening line 'Search the Prefab component library' states a clear verb and resource. It then distinguishes this tool from the sibling github_get_skill by specifying that the skill covers patterns/layout while this tool provides API details. The purpose is unambiguous and distinct from all sibling github tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('before writing component code') and contrasts it with the skill ('The skill covers patterns and layout; this tool has the API details'). It also names the specific alternative github_get_skill and references a workflow. This is direct and actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_search_userGithub Search UserBRead-onlyInspect
Search for a GitHub user by username using GraphQL API.
Workflow and conventions: github_get_skill('user-activity').
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| bio | Yes | |
| url | Yes | |
| name | Yes | |
| Yes | ||
| login | Yes | |
| company | Yes | |
| location | Yes | |
| followers | Yes | |
| following | Yes | |
| avatar_url | Yes | |
| created_at | Yes | |
| updated_at | Yes | |
| public_repos | Yes | |
| recent_repos | Yes | |
| organizations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=false, and destructiveHint=false, so the safety profile is covered. The description adds that it uses the GraphQL API, which is a minor behavioral detail, but it does not disclose things like rate limits, result shape, or whether partial username matches are supported. With annotations carrying the main safety burden, a 3 is appropriate.
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 short and front-loaded with the core purpose. The workflow note is a single extra sentence that adds a convention, though it is somewhat cryptic. No wasted words, but the workflow reference could be clearer.
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 simple one-parameter read-only search tool with an output schema present, the description is nearly sufficient. However, the workflow note is vague and the description does not clarify what the search returns or how to interpret the result. The presence of an output schema reduces the need to explain return values, but the missing usage guidance and parameter semantics keep it from being 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?
Schema description coverage is 0%, so the description must compensate for the undocumented 'username' parameter. The description says 'Search for a GitHub user by username,' which confirms the parameter's role, but it does not add details like case sensitivity, exact-match requirements, or whether the username can include special characters. The description adds minimal value beyond the schema's bare parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search for a GitHub user by username using GraphQL API.' This clearly distinguishes it from issue/PR search tools like github_search_issues_prs, though it doesn't explicitly name a sibling alternative. The mention of GraphQL API adds a small implementation detail but doesn't confuse the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions a workflow convention ('github_get_skill('user-activity')') but that is a follow-up action, not a usage condition or exclusion. There is no explicit context for when this tool is preferred over other search or user-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_set_assigneesGithub Set AssigneesCIdempotentInspect
Updates the assignees for a specific issue or pull request.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| assignees | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes | ||
| issue_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the description does not need to repeat those. However, the description adds no further behavioral context such as whether setting an empty array clears assignees, whether existing assignees are replaced or appended, or what permissions are required. Given this is a mutation tool, the lack of added behavioral detail is a noticeable 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 description is brief with the core purpose front-loaded in the first sentence. The second sentence is a concise pointer to a skill for workflow, adding some utility without excessive verbosity. It earns its place, though it could be more self-contained.
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 4 required parameters, no schema descriptions, and only a sparse description, an agent lacks critical context for correct invocation: valid values for assignees (e.g., GitHub usernames), whether the array replaces all assignees, and the exact meaning of issue_number. Although an output schema exists, the description is incomplete for a mutation tool with this complexity.
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 0%, so the description must compensate for the undocumented parameters. It mentions 'assignees' and 'issue or pull request' but does not explain the meaning or format of repo_owner, repo_name, issue_number, or the assignees array contents. The description adds minimal value beyond the parameter names already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Updates the assignees for a specific issue or pull request.' It identifies the target resource as an issue or PR, which is unambiguous. However, it does not explicitly differentiate itself from sibling tools like github_set_issue_milestone or github_set_pr_draft.
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 it: whenever assignees need to be updated on an issue or PR. It references a skill 'pr-management' for workflow, but gives no explicit guidance on when not to use this tool or what alternatives exist. This is minimal but not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_set_issue_milestoneGithub Set Issue MilestoneAIdempotentInspect
Files an issue under a milestone, or takes it off one. Takes the title rather than the number GitHub wants, and looks it up, which is the work github_update_issue is kept clear of. Omit the title to clear the milestone.
Workflow and conventions: github_get_skill('issue-management').
| Name | Required | Description | Default |
|---|---|---|---|
| milestone | No | Milestone title to file it under. Omit or pass null for no milestone | |
| repo_name | Yes | ||
| repo_owner | Yes | ||
| issue_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| body | Yes | |
| state | Yes | |
| title | Yes | |
| author | Yes | |
| labels | Yes | |
| number | Yes | |
| html_url | Yes | |
| assignees | Yes | |
| milestone | Yes | |
| created_at | Yes | |
| updated_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral detail beyond the annotations: it takes the title rather than the number and performs a lookup, and explains the clearing behavior via 'Omit the title to clear the milestone.' This does not contradict the annotations (readOnlyHint=false, idempotentHint=true) and enriches the agent's understanding of 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?
The description is two concise sentences plus a workflow reference, with the core purpose front-loaded. Every sentence adds information and there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers the primary action and the unique title-lookup behavior, and points to a skill for workflow. However, it leaves the required parameters unexplained and does not address error conditions or prerequisites like milestone existence. Given the tool's simplicity, this is a moderate gap but not severe.
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 only 25% (only milestone has a description). The description adds context that milestone is a title, but provides no elaboration on repo_owner, repo_name, or issue_number, which remain undocumented in both schema and description. With such low coverage, the description should compensate but does not.
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's function: 'Files an issue under a milestone, or takes it off one.' It also distinguishes itself from the sibling github_update_issue by noting it handles the title lookup, making the purpose unambiguous and differentiated.
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?
It explicitly references github_update_issue as an alternative and clarifies that this tool handles the milestone work, implying when to use it. It also points to github_get_skill('issue-management') for workflow conventions, but it does not enumerate all alternatives or state explicit when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_set_pr_draftGithub Set Pr DraftAIdempotentInspect
Moves a pull request between draft and ready for review. REST accepts draft only when the pull request is created, so this goes through GraphQL.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| draft | Yes | True puts the pull request back into draft, False marks it ready for review | |
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it explains the REST limitation and the GraphQL workaround, which is beyond what annotations provide. It doesn't detail side effects, but the idempotentHint covers the main concern.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core behavior is front-loaded, the technical constraint is explained in one clause, and the workflow reference is a single line. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 4-parameter boolean toggle, the description is nearly complete. The output schema exists, so return values are covered. The only minor gap is that it doesn't explicitly state prerequisites (e.g., the PR must exist), but that is implied by the resource naming and the workflow reference.
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 only 25%, with only the 'draft' parameter documented. The description clarifies the boolean semantics ('True puts the pull request back into draft, False marks it ready for review'), which adds value. However, repo_owner, repo_name, and pr_number are left undocumented in both schema and description, though their names are self-explanatory in context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Moves') and resource ('a pull request between draft and ready for review'), which clearly distinguishes it from siblings like github_update_pr or github_create_pr. It also explains the REST/GraphQL distinction, adding precision about what the tool actually does.
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 gives clear context for when to use this tool: when you need to toggle draft status, and it notes that REST cannot do this after creation, so GraphQL is used. It doesn't explicitly name alternatives or exclusions, but the workflow reference to github_get_skill('pr-management') provides additional guidance for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_set_project_fieldGithub Set Project FieldAIdempotentInspect
Sets a single-select field on an issue's card, naming the field and the option rather than their node ids. An issue not yet on the board is added first, since a field value has nowhere to live otherwise.
Workflow and conventions: github_get_skill('project-boards').
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | Single-select field to set, such as Status | |
| option | Yes | Option to set it to, such as In Progress | |
| repo_name | Yes | ||
| repo_owner | Yes | ||
| issue_number | Yes | ||
| project_owner | Yes | ||
| project_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey idempotence and non-destructiveness; the description adds real behavioral context by disclosing that an issue not on the board is added first, which is a meaningful side effect. It does not cover auth, rate limits, or exact return behavior, but the important mutation behavior is disclosed and consistent with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core capability is stated in the first sentence, the important side effect in the second, and the workflow reference in a single short line. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The key side effect and skill reference are included, and an output schema exists, so return values are covered. However, the low parameter coverage and lack of alternative-tool guidance leave gaps for an agent deciding between this and related project-board 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?
With only 29% schema description coverage, the description needed to compensate, but it only clarifies field and option. The five remaining parameters (project_owner, project_number, repo_owner, repo_name, issue_number) are left without explanation in either the schema or the description, so an agent must infer their meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Sets a single-select field on an issue's card', with the distinguishing detail that field and option are referenced by name rather than node IDs. It is clearly set apart from generic project operations, though it does not explicitly name a sibling 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?
The description implies when to use the tool: when setting a single-select field and when the issue may need to be added to the board first. However, it gives no explicit 'use this instead of X' guidance or exclusions relative to siblings like github_add_to_project or github_get_project_fields. The reference to github_get_skill('project-boards') is a useful workflow pointer but not a usage/exclusion rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_submit_reviewGithub Submit ReviewAInspect
Submits a review for a specific pull request. GitHub applies a review to the newest commit unless told otherwise, so pass head_sha from github_get_pr_content as expected_head_sha to review the commit that was read. See #517.
Workflow and conventions: github_get_skill('pr-review').
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| event | Yes | ||
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes | ||
| expected_head_sha | No | Attach the review to this SHA, as github_get_pr_content reports it. Omit for the newest commit |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only tell us it is a non-idempotent, non-destructive open-world write. The description adds genuinely non-obvious behavior: GitHub silently targets the newest commit unless a SHA is pinned, which is the classic stale-review hazard. It does not discuss permission requirements or what the response contains, but it earns credit for disclosing a real behavioral trap.
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?
Lead sentence states the action, second gives the practical SHA guidance, third routes to the skill. Efficient and front-loaded. The trailing 'See #517.' is an opaque dangling reference that costs a little clarity.
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?
Output schema exists, so return values need not be explained. But for a 6-parameter review-submission tool with three event modes, the description never says what each mode means or which fields each mode requires, leaving a meaningful gap for an agent choosing APPROVE vs REQUEST_CHANGES.
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 only 17%, so the description must compensate. It explains expected_head_sha well (though the schema already documents it) but gives no meaning for the event enum values (APPROVE / REQUEST_CHANGES / COMMENT) or the fact that body is effectively required for non-APPROVE events. Partial compensation only.
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?
Opens with a specific verb+resource: 'Submits a review for a specific pull request.' The use of 'review' rather than 'comment' implicitly separates it from github_add_pr_comments and github_add_inline_pr_comment, but no sibling is named explicitly, so differentiation requires inference.
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?
Gives a concrete procedural condition: pass head_sha from github_get_pr_content as expected_head_sha when you want the review attached to the commit you actually read, and points to github_get_skill('pr-review') for conventions. There is no explicit 'do not use this when...' guidance, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_update_issueGithub Update IssueAIdempotentInspect
Updates an existing issue. Only the fields supplied are sent, the rest keep their current values.
Workflow and conventions: github_get_skill('issue-management').
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Replacement body in Markdown. Omit to leave the current body alone | |
| state | No | Omit to leave the issue in whichever state it is already in | |
| title | No | Replacement title. Omit to leave the current title alone | |
| labels | No | Replacement label set. Omit to keep the current labels, pass [] to strip them all. The 'mcp' tracking label is not re-added here | |
| repo_name | Yes | ||
| repo_owner | Yes | ||
| issue_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| body | Yes | |
| state | Yes | |
| title | Yes | |
| author | Yes | |
| labels | Yes | |
| number | Yes | |
| html_url | Yes | |
| assignees | Yes | |
| milestone | Yes | |
| created_at | Yes | |
| updated_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the valuable behavioral detail that only supplied fields are updated, the rest remain unchanged—this partial-update semantics is not in the annotations. It also points to a skill for workflow/conventions, providing additional context beyond the schema and annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The core action is front-loaded, and the behavioral detail is concise. Every word earns its place, and the skill reference is efficiently integrated.
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 output schema and annotations, the description covers the essential behavior (partial update) and points to a skill for deeper workflow. It doesn't mention authentication or edge cases, but those are implied by annotations and the output schema. It's complete enough for an agent to call correctly.
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 already covers parameter descriptions for body, state, title, and labels, and the remaining params (repo_name, repo_owner, issue_number) are self-explanatory. The description does not add param-specific meaning beyond the schema, and coverage is moderate (57%), so it neither compensates nor repeats excessively.
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 clearly that it updates an existing issue, using a specific verb and resource. This distinguishes it from creating (github_create_issue) and updating pull requests (github_update_pr), so an agent can tell them apart without inspecting schemas.
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?
It implies usage on existing issues but does not explicitly contrast with alternatives like create_issue or set_issue_milestone. The reference to a skill suggests additional workflow guidance, but no clear when-to-use or when-not-to-use directives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_update_milestoneGithub Update MilestoneAIdempotentInspect
Changes a milestone in place. Only the fields supplied are sent, so closing one leaves its title and due date alone.
Workflow and conventions: github_get_skill('issue-management').
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Pass closed to close the milestone | |
| title | Yes | Title of the milestone to change | |
| due_on | No | Replacement due date as ISO 8601 | |
| new_title | No | Replacement title. Omit to leave it alone | |
| repo_name | Yes | ||
| repo_owner | Yes | ||
| description | No | Replacement description. Omit to leave it alone |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false (mutation), openWorldHint=true, idempotentHint=true, destructiveHint=false, and the description 'Changes a milestone' aligns. The description adds valuable context about partial updates, which is not in annotations. No contradictions.
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 total. The first sentence front-loads the core behavior and partial-update rule; the second points to workflow guidance. No filler, every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 params, mutation, and open-world hints, the description covers the essential behavior and points to a skill for deeper conventions. An output schema exists, so return format isn't needed. Could add explicit 'use for existing milestones only' but the skill pointer and phrase 'in place' suffice.
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 71% (5 of 7 params have descriptions). The description adds the key semantic that only supplied fields are sent, which clarifies how optional params (new_title, description, due_on, state) behave when omitted. This adds meaning beyond the schema's individual field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Changes a milestone in place' – a clear verb+resource with the nuance of modifying an existing milestone. It doesn't explicitly contrast with github_create_milestone, but the phrase 'in place' implies existing objects, and the name itself distinguishes from creation. Adequately clear.
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 partial-update behavior ('Only the fields supplied are sent') gives concrete guidance on how to use the tool, and the pointer to github_get_skill('issue-management') tells the agent where to find workflow conventions. It doesn't explicitly say when NOT to use this vs alternatives, but the context is strong enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_update_prGithub Update PrAIdempotentInspect
Updates an existing pull request. Only the fields supplied are sent, the rest keep their current values, so a title can change without restating the body. Labels take a second call, since the pull request endpoint does not take them. That call answers with the issue, which has no head, base or reviewers, so a labels-only update reads the pull request back.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Branch to retarget the pull request onto | |
| body | No | Replacement body in Markdown. Omit to leave the current body alone | |
| state | No | Omit to leave the state alone | |
| title | No | Replacement title. Omit to leave the current title alone | |
| labels | No | Replacement label set. Omit to keep the current labels, pass [] to strip them all. The 'mcp' tracking label is not re-added here | |
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| state | Yes | |
| title | Yes | |
| author | Yes | |
| labels | Yes | |
| merged | Yes | |
| commits | Yes | |
| base_ref | Yes | |
| head_ref | Yes | |
| head_sha | Yes | |
| is_draft | Yes | |
| additions | Yes | |
| assignees | Yes | |
| deletions | Yes | |
| mergeable | Yes | |
| created_at | Yes | |
| updated_at | Yes | |
| description | Yes | |
| changed_files | Yes | |
| mergeable_state | Yes | |
| requested_teams | Yes | |
| requested_reviewers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotent, non-read-only, non-destructive, so the bar is lower, but the description still contributes the non-obvious multi-call behavior: labels route through the issue endpoint and a labels-only update triggers a read-back of the PR. It does not discuss auth requirements, rate limits, or what happens on invalid state transitions.
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?
Front-loads the core action, then explains partial-update semantics and the labels edge case in three tight sentences, closing with the skill pointer. Dense but every sentence carries information an agent would otherwise get wrong.
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?
An output schema exists so return values need no prose, and the trickiest behavior (partial update, labels second call, read-back) is covered. Missing pieces are minor: no mention of error handling or the semantics of repo/pr identifiers.
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?
Adds real meaning beyond the schema: supplied fields are sent and the rest are left untouched, and labels are not part of the PR endpoint so they require a follow-up issue call whose response lacks head/base/reviewers. The three required identifiers (repo_owner, repo_name, pr_number) are never explained, which is the main gap at 63% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Updates an existing pull request') and scopes the updatable fields. It implicitly separates itself from close relatives like github_update_pr_branch or github_set_pr_draft by noting that head/base/state are handled here and that labels go through a separate call, but it never names a sibling tool explicitly.
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?
Makes clear this is for modifying an existing PR's title, body, base, state, or labels, and points at github_get_skill('pr-management') for workflow conventions. It does not state when to prefer a sibling instead (e.g. github_update_pr_branch for branch merges), so the guidance is contextual rather than exclusionary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_update_pr_branchGithub Update Pr BranchAIdempotentInspect
Updates the pull request branch with the latest upstream changes. Read head_sha from github_get_pr_content and pass it as expected_head_sha to be refused rather than to overwrite a push that landed since.
Workflow and conventions: github_get_skill('pr-management').
| Name | Required | Description | Default |
|---|---|---|---|
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes | ||
| expected_head_sha | No | Refuse unless the head still matches this SHA, as github_get_pr_content reports it |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond annotations: it reveals the concurrency guard, why expected_head_sha matters, and the risk of omitting it. Annotations only indicate non-read-only, idempotent, non-destructive behavior, so this extra context is valuable. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two purposeful sentences plus a compact skill pointer. It front-loads the main action, then the key workflow detail, and contains no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with an output schema and annotations, the description is largely complete: required parameters, optional guard semantics, and the recommended workflow are all present. Minor omissions include behavior when the branch is already up to date or when expected_head_sha is omitted, but these are not critical for calling the tool correctly.
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 only 25%, with only expected_head_sha documented. The description compensates for that parameter by telling the agent to source it from github_get_pr_content and explaining its purpose. However, repo_owner, repo_name, and pr_number receive no additional semantic guidance, leaving a gap despite their conventional names.
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 ('Updates'), the resource ('the pull request branch'), and the nature of the operation ('with the latest upstream changes'). It is distinguishable from siblings like github_update_pr and github_merge_pr, though it never names those alternatives explicitly.
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?
It gives a concrete before-call workflow: read head_sha from github_get_pr_content and pass it as expected_head_sha so the update is refused rather than overwriting a newer push. It also points to github_get_skill('pr-management') for conventions. It does not state explicit when-not-to-use cases or compare itself to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_update_pr_commentGithub Update Pr CommentAIdempotentInspect
Rewrites a comment already posted. Conversation and review comments have separate id spaces, so the kind has to match where the id came from.
Workflow and conventions: github_get_skill('pr-review').
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| kind | No | conversation | |
| repo_name | Yes | ||
| comment_id | Yes | The comment's own id, as returned by github_list_pr_comments, not the PR number | |
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| body | Yes | |
| author | Yes | |
| html_url | Yes | |
| created_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the call as non-read-only, idempotent, and non-destructive. The description adds valuable behavioral context beyond that: it warns about separate id spaces for conversation versus review/inline comments and points to a workflow skill. It does not discuss auth or error behavior, but the annotation coverage lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: purpose, critical caveat, workflow reference. Nothing is wasted, and the most important fact (rewrites an existing comment) is 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?
For a 5-param update operation with an output schema and useful annotations, the description gives the key disambiguation plus a workflow escape hatch. The only minor gap is not explicitly mapping the 'inline' enum value to 'review comments', but github_get_skill('pr-review') likely covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 20% schema description coverage, the description must carry extra weight. It does for the least obvious parameter, kind, by explaining that it must match where the comment id came from; comment_id itself is already documented in the schema. The remaining params (repo_owner, repo_name, body) are self-evident from names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and object: 'Rewrites a comment already posted' – unambiguously an update operation on an existing comment, not a create like github_add_pr_comments or github_add_inline_pr_comment. The title and description align, so an agent can tell the tool's purpose immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'already posted' defines the condition under which this tool applies, which distinguishes it from add-comment siblings. However, it does not explicitly name those alternatives or state when not to use them; the workflow pointer to github_get_skill('pr-review') partially fills this gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_update_releaseGithub Update ReleaseAIdempotentInspect
Changes a release in place, a draft included. Only the fields supplied are sent, so correcting a title does not wipe the notes. make_latest is settable on github_create_release alone, and only on the call that first publishes the tag, since publishing again falls through to here and this tool does not send it. Move the latest badge by deleting the release and publishing it again, or in the GitHub UI.
Workflow and conventions: github_get_skill('release-management').
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Replacement notes. Omit to leave them alone | |
| name | No | Replacement title. Omit to leave it alone | |
| draft | No | ||
| tag_name | Yes | Tag of the release to change | |
| repo_name | Yes | ||
| prerelease | No | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (non-destructive, idempotent, open-world), and the description adds genuinely useful behavior beyond that: partial-update semantics ('Only the fields supplied are sent'), the fact that make_latest is deliberately not sent here, and a skill pointer for conventions. Minor gap in not stating permission requirements.
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?
Purpose is front-loaded in the first sentence, and the make_latest caveat plus workflow pointer are appropriately placed after it. The make_latest sentence is somewhat convoluted ('falls through to here') but each sentence carries non-redundant 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?
With an output schema present and annotations covering safety, the description need not explain return values. It adequately covers the mutation contract, the partial-update behavior, and the workflow pointer; only the draft/prerelease toggle semantics remain unaddressed.
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 only 43%, so the description should compensate. It does clarify the general partial-update contract and explicitly explains that make_latest is not a parameter of this tool, which helps avoid confusion with create_release. However, draft and prerelease semantics are left undocumented in both schema and 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?
States a specific verb+resource ('Changes a release in place, a draft included') and distinguishes itself from siblings by naming github_create_release explicitly and explaining what it does not do. An agent can tell this apart from create_release/delete_release without opening any schema.
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?
Gives concrete guidance for the tricky case: make_latest cannot be set here, so the agent is routed to delete-then-republish or the GitHub UI, and a workflow skill is referenced. It lacks a general when-to-use-vs-alternatives statement, but the alternative routing is explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v55.0.0- Added
github_api_delete - Added
github_api_read - Added
github_api_write - Added
github_commit_files - Added
github_delete_branch - Changed
github_get_pr_content3 fields changed- added
Output schema / properties / assigneesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / labelsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "title", - "description", - "author", - "created_at", - "updated_at", - "state", - "is_draft", - "merged", - "mergeable", - "mergeable_state", - "head_sha", - "head_ref", - "base_ref", - "requested_reviewers", - "requested_teams", - "commits", - "additions", - "deletions", - "changed_files" -]New value: +[ + "title", + "description", + "author", + "created_at", + "updated_at", + "state", + "is_draft", + "merged", + "mergeable", + "mergeable_state", + "head_sha", + "head_ref", + "base_ref", + "requested_reviewers", + "requested_teams", + "labels", + "assignees", + "commits", + "additions", + "deletions", + "changed_files" +]
- Added
github_get_workflow_runs - Added
github_list_branches - Added
github_search_api_routes - Changed
github_update_pr3 fields changed- added
Output schema / properties / assigneesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / labelsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "title", - "description", - "author", - "created_at", - "updated_at", - "state", - "is_draft", - "merged", - "mergeable", - "mergeable_state", - "head_sha", - "head_ref", - "base_ref", - "requested_reviewers", - "requested_teams", - "commits", - "additions", - "deletions", - "changed_files" -]New value: +[ + "title", + "description", + "author", + "created_at", + "updated_at", + "state", + "is_draft", + "merged", + "mergeable", + "mergeable_state", + "head_sha", + "head_ref", + "base_ref", + "requested_reviewers", + "requested_teams", + "labels", + "assignees", + "commits", + "additions", + "deletions", + "changed_files" +]
11 tool updates
v54.0.0- Changed
github_add_inline_pr_comment1 field changed- added
Input schema / properties / expected_head_shaAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Attach the comment to this SHA, as github_get_pr_content reports it. Omit for the current head" +}
- Added
github_dispatch_workflow - Added
github_get_job_log - Changed
github_get_pr_content9 fields changed- added
Output schema / properties / additionsAdded value: +{ + "type": "integer" +} - added
Output schema / properties / changed_filesAdded value: +{ + "type": "integer" +} - added
Output schema / properties / commitsAdded value: +{ + "type": "integer" +} - added
Output schema / properties / deletionsAdded value: +{ + "type": "integer" +} - added
Output schema / properties / is_draftAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / mergeableAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / mergeable_stateAdded value: +{ + "type": "string" +} - added
Output schema / properties / mergedAdded value: +{ + "type": "boolean" +} - changed
Output schema / requiredPrevious value: -[ - "title", - "description", - "author", - "created_at", - "updated_at", - "state", - "head_sha", - "head_ref", - "base_ref", - "requested_reviewers", - "requested_teams" -]New value: +[ + "title", + "description", + "author", + "created_at", + "updated_at", + "state", + "is_draft", + "merged", + "mergeable", + "mergeable_state", + "head_sha", + "head_ref", + "base_ref", + "requested_reviewers", + "requested_teams", + "commits", + "additions", + "deletions", + "changed_files" +]
- Changed
github_get_pr_status_checks2 fields changed- added
Output schema / properties / head_shaAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - changed
Output schema / requiredPrevious value: -[ - "pr_number", - "overall", - "check_runs", - "commit_statuses", - "truncated" -]New value: +[ + "pr_number", + "head_sha", + "overall", + "check_runs", + "commit_statuses", + "truncated" +]
- Changed
github_merge_pr1 field changed- added
Input schema / properties / expected_head_shaAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Refuse unless the head still matches this SHA, as github_get_pr_content reports it" +}
- Added
github_request_reviewers - Added
github_rerun_job - Changed
github_search_issues_prs1 field changed- added
Input schema / properties / search_typeAdded value: +{ + "default": "lexical", + "description": "lexical matches words. semantic and hybrid match issues by meaning and need is:issue in the query", + "enum": [ + "lexical", + "semantic", + "hybrid" + ], + "type": "string" +}
- Changed
github_submit_review1 field changed- added
Input schema / properties / expected_head_shaAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Attach the review to this SHA, as github_get_pr_content reports it. Omit for the newest commit" +}
- Changed
github_update_pr9 fields changed- added
Output schema / properties / additionsAdded value: +{ + "type": "integer" +} - added
Output schema / properties / changed_filesAdded value: +{ + "type": "integer" +} - added
Output schema / properties / commitsAdded value: +{ + "type": "integer" +} - added
Output schema / properties / deletionsAdded value: +{ + "type": "integer" +} - added
Output schema / properties / is_draftAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / mergeableAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / mergeable_stateAdded value: +{ + "type": "string" +} - added
Output schema / properties / mergedAdded value: +{ + "type": "boolean" +} - changed
Output schema / requiredPrevious value: -[ - "title", - "description", - "author", - "created_at", - "updated_at", - "state", - "head_sha", - "head_ref", - "base_ref", - "requested_reviewers", - "requested_teams" -]New value: +[ + "title", + "description", + "author", + "created_at", + "updated_at", + "state", + "is_draft", + "merged", + "mergeable", + "mergeable_state", + "head_sha", + "head_ref", + "base_ref", + "requested_reviewers", + "requested_teams", + "commits", + "additions", + "deletions", + "changed_files" +]
1 tool update
v47.0.0- Added
github_create_empty_commit
1 tool update
v46.0.8- Changed
github_list_open_issues_prs1 field changed- changed
Input schema / properties / filtering / descriptionPrevious value: -"involves for items that user authored, is assigned, is mentioned in or reviewed, anywhere on GitHub. user for items in that user's repositories. org for an organisation's. repo for one repository"New value: +"involves for items that user authored, is assigned, is mentioned in or commented on, anywhere on GitHub. user for items in that user's repositories. org for an organisation's. repo for one repository"
1 tool update
v45.1.0- Added
github_list_projects
4 tool updates
v42.1.1- Changed
github_create_issue7 fields changed- added
Input schema / properties / labels / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - added
Input schema / properties / labels / defaultAdded value: +null - added
Input schema / properties / labels / descriptionAdded value: +"Labels to apply, with the 'mcp' tracking label appended unless mcp_label is False. Omit to leave the issue unlabelled" - removed
Input schema / properties / labels / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / labels / typeRemoved value: -"array" - added
Input schema / properties / mcp_labelAdded value: +{ + "default": true, + "description": "Append the 'mcp' tracking label to labels. Pass False to opt out", + "type": "boolean" +} - changed
Input schema / requiredPrevious value: -[ - "repo_owner", - "repo_name", - "title", - "body", - "labels" -]New value: +[ + "repo_owner", + "repo_name", + "title", + "body" +]
- Changed
github_create_pr2 fields changed- changed
Input schema / properties / labels / descriptionPrevious value: -"Labels to apply, with mcp appended. Omit to leave the pull request unlabelled"New value: +"Labels to apply, with the 'mcp' tracking label appended unless mcp_label is False. Omit to leave the pull request unlabelled" - added
Input schema / properties / mcp_labelAdded value: +{ + "default": true, + "description": "Append the 'mcp' tracking label to labels. Pass False to opt out", + "type": "boolean" +}
- Changed
github_update_issue1 field changed- changed
Input schema / properties / labels / descriptionPrevious value: -"Replacement label set. Omit to keep the current labels, pass [] to strip them all"New value: +"Replacement label set. Omit to keep the current labels, pass [] to strip them all. The 'mcp' tracking label is not re-added here"
- Changed
github_update_pr1 field changed- changed
Input schema / properties / labels / descriptionPrevious value: -"Replacement label set. Omit to keep the current labels, pass [] to strip them all"New value: +"Replacement label set. Omit to keep the current labels, pass [] to strip them all. The 'mcp' tracking label is not re-added here"
96 tool updates
v42.0.0- Removed
add_inline_pr_comment - Removed
add_pr_comments - Removed
add_to_project - Removed
create_issue - Removed
create_milestone - Removed
create_pr - Removed
create_release - Removed
create_tag - Removed
delete_release - Removed
delete_tag - Removed
get_issue - Removed
get_latest_sha - Removed
get_pr_content - Removed
get_pr_diff - Removed
get_pr_linked_issues - Removed
get_pr_status_checks - Removed
get_project_fields - Removed
get_release - Removed
get_repo_stars_since - Removed
get_user_activities - Added
github_add_inline_pr_comment - Added
github_add_pr_comments - Added
github_add_to_project - Added
github_create_issue - Added
github_create_milestone - Added
github_create_pr - Added
github_create_release - Added
github_create_tag - Added
github_delete_release - Added
github_delete_tag - Added
github_get_issue - Added
github_get_latest_sha - Added
github_get_pr_content - Added
github_get_pr_diff - Added
github_get_pr_linked_issues - Added
github_get_pr_status_checks - Added
github_get_project_fields - Added
github_get_release - Added
github_get_repo_stars_since - Added
github_get_repository_file - Added
github_get_skill - Added
github_get_user_activities - Added
github_list_milestones - Added
github_list_open_issues_prs - Added
github_list_pr_comments - Added
github_list_pr_reviews - Added
github_list_project_items - Added
github_list_releases - Added
github_list_repo_labels - Added
github_list_repos - Added
github_list_repository_tree - Added
github_list_skills - Added
github_list_tags - Added
github_merge_pr - Added
github_remove_from_project - Added
github_reply_to_review_comment - Added
github_search_issues_prs - Added
github_search_prefab_components - Added
github_search_user - Added
github_set_assignees - Added
github_set_issue_milestone - Added
github_set_pr_draft - Added
github_set_project_field - Added
github_submit_review - Added
github_update_issue - Added
github_update_milestone - Added
github_update_pr - Added
github_update_pr_branch - Added
github_update_pr_comment - Added
github_update_release - Removed
list_milestones - Removed
list_open_issues_prs - Removed
list_pr_comments - Removed
list_project_items - Removed
list_releases - Removed
list_repo_labels - Removed
list_repos - Removed
list_tags - Removed
merge_pr - Removed
remove_from_project - Removed
reply_to_review_comment - Removed
search_issues_prs - Removed
search_prefab_components - Removed
search_user - Removed
set_issue_milestone - Removed
set_pr_draft - Removed
set_project_field - Removed
update_assignees - Removed
update_issue - Removed
update_milestone - Removed
update_pr - Removed
update_pr_branch - Removed
update_pr_comment - Removed
update_pr_description - Removed
update_release - Removed
update_reviews
2 tool updates
v32.2.0- Changed
create_pr1 field changed- added
Input schema / properties / labelsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Labels to apply, with mcp appended. Omit to leave the pull request unlabelled" +}
- Changed
update_pr1 field changed- added
Input schema / properties / labelsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Replacement label set. Omit to keep the current labels, pass [] to strip them all" +}
4 tool updates
v31.0.4- Changed
create_issue2 fields changed- added
Output schema / properties / assigneesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "number", - "title", - "body", - "state", - "author", - "labels", - "milestone", - "html_url", - "created_at", - "updated_at" -]New value: +[ + "number", + "title", + "body", + "state", + "author", + "labels", + "assignees", + "milestone", + "html_url", + "created_at", + "updated_at" +]
- Added
get_issue - Changed
set_issue_milestone2 fields changed- added
Output schema / properties / assigneesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "number", - "title", - "body", - "state", - "author", - "labels", - "milestone", - "html_url", - "created_at", - "updated_at" -]New value: +[ + "number", + "title", + "body", + "state", + "author", + "labels", + "assignees", + "milestone", + "html_url", + "created_at", + "updated_at" +]
- Changed
update_issue2 fields changed- added
Output schema / properties / assigneesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "number", - "title", - "body", - "state", - "author", - "labels", - "milestone", - "html_url", - "created_at", - "updated_at" -]New value: +[ + "number", + "title", + "body", + "state", + "author", + "labels", + "assignees", + "milestone", + "html_url", + "created_at", + "updated_at" +]
1 tool update
v29.3.0- Added
list_repos
11 tool updates
v29.2.0- Added
add_to_project - Changed
create_issue3 fields changed- added
Input schema / properties / milestoneAdded value: +{ + "default": "", + "description": "Milestone title to file it under. Omit for none", + "type": "string" +} - added
Output schema / properties / milestoneAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - changed
Output schema / requiredPrevious value: -[ - "number", - "title", - "body", - "state", - "author", - "labels", - "html_url", - "created_at", - "updated_at" -]New value: +[ + "number", + "title", + "body", + "state", + "author", + "labels", + "milestone", + "html_url", + "created_at", + "updated_at" +]
- Added
create_milestone - Added
get_project_fields - Added
list_milestones - Added
list_project_items - Added
remove_from_project - Added
set_issue_milestone - Added
set_project_field - Changed
update_issue2 fields changed- added
Output schema / properties / milestoneAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - changed
Output schema / requiredPrevious value: -[ - "number", - "title", - "body", - "state", - "author", - "labels", - "html_url", - "created_at", - "updated_at" -]New value: +[ + "number", + "title", + "body", + "state", + "author", + "labels", + "milestone", + "html_url", + "created_at", + "updated_at" +]
- Added
update_milestone
TDQS
Scored across 66 tools
Most tools target a distinct resource+action, but the generic github_api_read/write/delete trio deliberately overlaps every specific tool, and the comment family (add_pr_comments vs add_inline_pr_comment vs reply_to_review_comment vs update_pr_comment) plus list_open_issues_prs vs search_issues_prs require careful reading to pick correctly. The detailed descriptions help, but an agent can plausibly reach for a generic or wrong-shaped tool in several places.
The vast majority follow a predictable github_verb_noun pattern (get_pr_diff, list_pr_reviews, update_issue, create_release). Outliers are limited: bare 'choose' and 'github_pr_issue_analyser_ui' break the verb_noun convention, and github_add_pr_comments uses a plural noun where others are singular.
At 66 tools this is far beyond a well-scoped set, and the surface balloons well past the 'PR Issue Analyser' title into projects, releases, tags, Actions, branches, files, and a Prefab UI sandbox. Many of these belong to separate concerns an agent looking for PR/issue analysis will rarely need.
Coverage is broad and near-complete: full PR lifecycle (create, update, merge, draft, reviewers, inline/conversation comments, reviews), issue/milestone/label reads, releases and tags with careful delete semantics, project boards, and branch/workflow/file reads. Remaining gaps (e.g. label CRUD, comment deletion, PR review dismissal) are reachable through the generic api_* escape hatch, so no hard dead ends.
Maintenance
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Create, deploy, and operate MCP servers directly from your GitHub repositories.
GitHub Copilot MCP: code, repo, PR, workflow tools for AI assistants.
A MCP server built for developers enabling Git based project management with project and personal…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to directly manage GitHub repositories, including PRs, issues, and code search, using natural language.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI agents to perform GitHub operations like creating repositories, issues, and commits through natural language.ISC
- AlicenseBqualityCmaintenanceA comprehensive MCP server that exposes 73 GitHub API tools for managing repositories, pull requests, issues, actions, releases, search, and more, enabling natural language control of GitHub.73MIT
- AlicenseNot gradedqualityBmaintenanceA production-grade MCP server that provides LLMs with safe, structured, tool-based access to GitHub repositories, including issue management, semantic search, and guarded write operations.MIT