{"dataset_version":"1.910149.28558.28556.coding_agent:20260809151128:0-mcp_server:20260908012351:868471","catalog_version":"7ff253a9df88994d7f63","rule_version":"2026-09-08.1","report":{"id":"github-remote-public-read","connection":{"endpoint":"https://api.githubcopilot.com/mcp/","transport":"streamable-http","version":null},"checked_at":"2026-09-07T12:44:31.631Z","environment":{"node":"v25.9.0","platform":"darwin","client":"@modelcontextprotocol/sdk","client_version":"1.30.0"},"authentication":{"method":"bearer","granted_scopes":null,"tested_resources":["github/github-mcp-server"],"permissions_verified":false},"method":"practical_test","status":"read_test_passed","steps":[{"operation":"initialize","status":"passed","duration_ms":1096},{"operation":"tools/list","status":"passed","tool_count":44,"schema_hash":"d4eb085396985be2c2753ae6265117c182af7e5dc576ceef13c3fe882e02b44d"},{"operation":"search_repositories","capability":"repository.read","input":{"query":"repo:github/github-mcp-server","perPage":1},"assertion":"Returned the requested public repository","response_shape":["total_count","incomplete_results","items"],"status":"passed","duration_ms":598,"response_bytes":603,"response_hash":"6d54a5abf167236b43061375a45dd3dccadcb10557b330267110f7ed9682938c"},{"operation":"list_issues","capability":"issue.search","input":{"owner":"github","repo":"github-mcp-server","perPage":1,"state":"OPEN"},"assertion":"Returned numbered issues belonging to the requested public repository","response_shape":["issues","totalCount","pageInfo"],"item_fields":["number","title","body","state","user","labels","assignees","comments","created_at","updated_at"],"status":"passed","duration_ms":1175,"response_bytes":2196,"response_hash":"74d3bc4b012bd182cfdfa3fcd05c9ad204cc7291b23e31bee851a3eec4b7dbd4"}],"limitations":["A successful public read does not prove private repository access, writes or other providers.","The remote deployment version was not established."],"tool_inventory":{"complete":true,"tools":[{"name":"add_comment_to_pending_review","input_schema":{"type":"object","properties":{"body":{"type":"string","description":"The text of the review comment"},"line":{"type":"number","description":"The line of the blob in the pull request diff that the comment applies to. For multi-line comments, the last line of the range"},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"path":{"type":"string","description":"The relative path to the file that necessitates a comment"},"pullNumber":{"type":"number","description":"Pull request number"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"side":{"type":"string","description":"The side of the diff to comment on. LEFT indicates the previous state, RIGHT indicates the new state","enum":["LEFT","RIGHT"]},"startLine":{"type":"number","description":"For multi-line comments, the first line of the range that the comment applies to"},"startSide":{"type":"string","description":"For multi-line comments, the starting side of the diff that the comment applies to. LEFT indicates the previous state, RIGHT indicates the new state","enum":["LEFT","RIGHT"]},"subjectType":{"type":"string","description":"The level at which the comment is targeted","enum":["FILE","LINE"]}},"required":["owner","repo","pullNumber","path","body","subjectType"]}},{"name":"add_issue_comment","input_schema":{"type":"object","properties":{"body":{"type":"string","description":"Comment content. Required unless reaction is provided.","minLength":1},"comment_id":{"type":"integer","description":"The numeric ID of the issue or pull request comment to react to. Use this for reactions to comments; omit it to react to the issue or pull request itself. Cannot be combined with body.","minimum":1},"issue_number":{"type":"number","description":"Issue or pull request number to comment on or react to."},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"reaction":{"type":"string","description":"Emoji reaction to add. Required unless body is provided.","enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"]},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo","issue_number"]}},{"name":"add_reply_to_pull_request_comment","input_schema":{"type":"object","properties":{"body":{"type":"string","description":"The text of the reply. Required unless reaction is provided."},"commentId":{"type":"number","description":"The numeric ID of the pull request review comment to reply or react to. Use the number from a #discussion_r... anchor, not the GraphQL thread node ID (PRRT_...).","minimum":1},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"pullNumber":{"type":"number","description":"Pull request number. Required when body is provided."},"reaction":{"type":"string","description":"Emoji reaction to add. Required unless body is provided.","enum":["+1","-1","laugh","confused","heart","hooray","rocket","eyes"]},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo","commentId"]}},{"name":"create_branch","input_schema":{"type":"object","properties":{"branch":{"type":"string","description":"Name for new branch"},"from_branch":{"type":"string","description":"Source branch (defaults to repo default)"},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo","branch"]}},{"name":"create_or_update_file","input_schema":{"type":"object","properties":{"allow_symlink_write":{"type":"boolean","description":"Set true to update a symbolic link itself; content must be its new target path.","default":false},"branch":{"type":"string","description":"Branch to create/update the file in"},"content":{"type":"string","description":"Content of the file, exactly as it should appear once written. Do not base64-encode it; this server does that before calling the REST API."},"message":{"type":"string","description":"Commit message"},"owner":{"type":"string","description":"Repository owner (username or organization)","x-mcp-header":"owner"},"path":{"type":"string","description":"Path where to create/update the file"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"sha":{"type":"string","description":"The blob SHA of the file being replaced. Required if the file already exists. Retrieve it with get_file_contents using the same owner, repo, and path, with ref set to this tool's branch value."}},"required":["owner","repo","path","content","message","branch"]}},{"name":"create_pull_request","input_schema":{"type":"object","properties":{"base":{"type":"string","description":"Branch to merge into"},"body":{"type":"string","description":"PR description"},"draft":{"type":"boolean","description":"Create as draft PR"},"head":{"type":"string","description":"Branch containing changes"},"maintainer_can_modify":{"type":"boolean","description":"Allow maintainer edits"},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"reviewers":{"type":"array","items":{"type":"string"},"description":"GitHub usernames or ORG/team-slug team reviewers to request reviews from"},"title":{"type":"string","description":"PR title"}},"required":["owner","repo","title","head","base"]}},{"name":"create_repository","input_schema":{"type":"object","properties":{"autoInit":{"type":"boolean","description":"Initialize with README"},"description":{"type":"string","description":"Repository description"},"name":{"type":"string","description":"Repository name"},"organization":{"type":"string","description":"Organization to create the repository in (omit to create in your personal account)"},"private":{"type":"boolean","description":"Whether the repository should be private. Defaults to true (private) when omitted.","default":true}},"required":["name"]}},{"name":"delete_file","input_schema":{"type":"object","properties":{"branch":{"type":"string","description":"Branch to delete the file from"},"message":{"type":"string","description":"Commit message"},"owner":{"type":"string","description":"Repository owner (username or organization)","x-mcp-header":"owner"},"path":{"type":"string","description":"Path to the file to delete"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo","path","message","branch"]}},{"name":"fork_repository","input_schema":{"type":"object","properties":{"organization":{"type":"string","description":"Organization to fork to"},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo"]}},{"name":"get_commit","input_schema":{"type":"object","properties":{"detail":{"type":"string","description":"Level of detail to include for changed files. \"none\" omits stats and files entirely. \"stats\" (default) includes per-file metadata: filename, status, and lines-of-code counts (additions, deletions, changes), with no patch content. \"full_patch\" additionally includes the unified diff content for each file and can be very large.","default":"stats","enum":["none","stats","full_patch"]},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"sha":{"type":"string","description":"Commit SHA, branch name, or tag name"}},"required":["owner","repo","sha"]}},{"name":"get_file_contents","input_schema":{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string","enum":["type","name","path","size","sha","url","git_url","html_url","download_url"]},"description":"Subset of fields to return for each entry when the path is a directory. If omitted, all fields are returned. Ignored when the path is a single file. Use this to reduce response size when listing directories and you only need specific fields, e.g. just 'name' and 'type'."},"owner":{"type":"string","description":"Repository owner (username or organization)","x-mcp-header":"owner"},"path":{"type":"string","description":"Path to file/directory","default":"/"},"ref":{"type":"string","description":"Accepts optional git refs such as `refs/tags/{tag}`, `refs/heads/{branch}` or `refs/pull/{pr_number}/head`"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"sha":{"type":"string","description":"Accepts optional commit SHA. If specified, it will be used instead of ref"}},"required":["owner","repo"]}},{"name":"get_label","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Label name."},"owner":{"type":"string","description":"Repository owner (username or organization name)","x-mcp-header":"owner"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo","name"]}},{"name":"get_latest_release","input_schema":{"type":"object","properties":{"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo"]}},{"name":"get_me","input_schema":{"type":"object","properties":{}}},{"name":"get_release_by_tag","input_schema":{"type":"object","properties":{"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"tag":{"type":"string","description":"Tag name (e.g., 'v1.0.0')"}},"required":["owner","repo","tag"]}},{"name":"get_tag","input_schema":{"type":"object","properties":{"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"tag":{"type":"string","description":"Tag name"}},"required":["owner","repo","tag"]}},{"name":"get_team_members","input_schema":{"type":"object","properties":{"org":{"type":"string","description":"Organization login (owner) that contains the team."},"team_slug":{"type":"string","description":"Team slug"}},"required":["org","team_slug"]}},{"name":"get_teams","input_schema":{"type":"object","properties":{"user":{"type":"string","description":"Username to get teams for. If not provided, uses the authenticated user."}}}},{"name":"issue_read","input_schema":{"type":"object","properties":{"issue_number":{"type":"number","description":"The number of the issue"},"method":{"type":"string","description":"The read operation to perform on a single issue.\nOptions are:\n1. get - Get issue details. Also returns best-effort hierarchy flags (`has_parent`, `has_children`); `parent` and `sub_issues_summary` are optional relationship summaries, and `closed_by_pull_requests` summarizes the pull requests configured to close the issue as `total_count` plus up to 5 `references`.\n2. get_comments - Get issue comments.\n3. get_sub_issues - Get sub-issues (children) of the issue.\n4. get_parent - Get the parent issue, if this issue is a sub-issue of another.\n5. get_labels - Get labels assigned to the issue.\n","enum":["get","get_comments","get_sub_issues","get_parent","get_labels"]},"owner":{"type":"string","description":"The owner of the repository","x-mcp-header":"owner"},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"repo":{"type":"string","description":"The name of the repository","x-mcp-header":"repo"}},"required":["method","owner","repo","issue_number"]}},{"name":"issue_write","input_schema":{"type":"object","properties":{"assignees":{"type":"array","items":{"type":"string"},"description":"Usernames to assign to this issue"},"body":{"type":"string","description":"Issue body content"},"duplicate_of":{"type":"number","description":"Issue number that this issue is a duplicate of. Required when state_reason is 'duplicate'."},"issue_fields":{"type":"array","items":{"type":"object","properties":{"delete":{"type":"boolean","description":"Set to true to clear this field's current value on the issue. When false or omitted, this property is ignored. Cannot be true when 'value' or 'field_option_name' is provided."},"field_name":{"type":"string","description":"Issue field name (case-insensitive). Must match a field returned by list_issue_fields for this repository or its organization."},"field_option_name":{"type":"string","description":"Option name for single-select fields. Validated against the field's options before the API call. Cannot be combined with 'value' or 'delete: true'."},"value":{"type":["string","number","boolean"],"description":"Value to set. Use for text, number, and date fields (date as YYYY-MM-DD). For single-select fields, prefer 'field_option_name' so the option is validated before the API call. Cannot be combined with 'field_option_name' or 'delete: true'."}},"required":["field_name"],"additionalProperties":false},"description":"Issue field values to set or clear. Each item requires 'field_name' and exactly one of 'value', 'field_option_name', or 'delete: true'."},"issue_number":{"type":"number","description":"Issue number to update"},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply to this issue"},"method":{"type":"string","description":"Write operation to perform on a single issue.\nOptions are:\n- 'create' - creates a new issue.\n- 'update' - updates an existing issue.\n","enum":["create","update"]},"milestone":{"type":"number","description":"Milestone number"},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"parent_issue_number":{"type":"number","description":"Issue number of the parent issue. Only used when method is 'create' and cannot be combined with issue_fields. The new issue is created and attached to this parent in the same operation.","minimum":1},"parent_owner":{"type":"string","description":"Repository owner of the parent issue. Must be provided with parent_repo. Omit both to use owner and repo. Only used when method is 'create' and parent_issue_number is provided."},"parent_repo":{"type":"string","description":"Repository name of the parent issue. Must be provided with parent_owner. Omit both to use owner and repo. Only used when method is 'create' and parent_issue_number is provided."},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"state":{"type":"string","description":"New state","enum":["open","closed"]},"state_reason":{"type":"string","description":"Reason for the state change. Ignored unless state is changed.","enum":["completed","not_planned","duplicate"]},"title":{"type":"string","description":"Issue title"},"type":{"description":"Type of this issue. For updates, pass null to remove the current type. Only use if issue types are enabled for this repository. Use list_issue_types to get valid type values for this repository or its owner organization. If the repository doesn't support issue types, omit this parameter.","anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["method","owner","repo"]}},{"name":"list_branches","input_schema":{"type":"object","properties":{"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo"]}},{"name":"list_commits","input_schema":{"type":"object","properties":{"author":{"type":"string","description":"Author username or email address to filter commits by"},"fields":{"type":"array","items":{"type":"string","enum":["sha","html_url","commit","author","committer"]},"description":"Subset of fields to return for each commit. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields, e.g. just 'sha' and 'html_url'."},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"path":{"type":"string","description":"Only commits containing this file path will be returned"},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"sha":{"type":"string","description":"Commit SHA, branch or tag name to list commits of. If not provided, uses the default branch of the repository. If a commit SHA is provided, will list commits up to that SHA."},"since":{"type":"string","description":"Only commits after this date will be returned (ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ or YYYY-MM-DD)"},"until":{"type":"string","description":"Only commits before this date will be returned (ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ or YYYY-MM-DD)"}},"required":["owner","repo"]}},{"name":"list_issue_fields","input_schema":{"type":"object","properties":{"owner":{"type":"string","description":"The account owner of the repository or organization. The name is not case sensitive.","x-mcp-header":"owner"},"repo":{"type":"string","description":"The name of the repository. When provided, returns fields for this specific repository (inherited from its organization). When omitted, returns org-level fields directly.","x-mcp-header":"repo"}},"required":["owner"]}},{"name":"list_issue_types","input_schema":{"type":"object","properties":{"owner":{"type":"string","description":"The account owner of the repository or organization.","x-mcp-header":"owner"},"repo":{"type":"string","description":"The name of the repository. When provided, returns issue types for this specific repository. When omitted, returns org-level issue types directly.","x-mcp-header":"repo"}},"required":["owner"]}},{"name":"list_issues","input_schema":{"type":"object","properties":{"after":{"type":"string","description":"Cursor for pagination. Use the cursor from the previous response."},"direction":{"type":"string","description":"Order direction. If provided, the 'orderBy' also needs to be provided.","enum":["ASC","DESC"]},"field_filters":{"type":"array","items":{"type":"object","properties":{"field_name":{"type":"string","description":"Name of the custom field (e.g. \"Priority\"). Case-insensitive."},"value":{"type":"string","description":"Value to filter on. For single-select fields, the option name (e.g. \"P1\"). For dates, YYYY-MM-DD. For numbers, the numeric value as a string. For text, the text value."}},"required":["field_name","value"]},"description":"Filter by custom issue field values. Each entry takes a field_name and a value; the server looks up the field and coerces the value to its type (single-select option name, text, number, or YYYY-MM-DD date)."},"fields":{"type":"array","items":{"type":"string","enum":["number","title","body","state","user","labels","assignees","comments","created_at","updated_at","field_values"]},"description":"Subset of fields to return for each issue. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields; omitting 'body' and 'field_values' in particular drops the largest per-result data."},"labels":{"type":"array","items":{"type":"string"},"description":"Filter by labels"},"orderBy":{"type":"string","description":"Order issues by field. If provided, the 'direction' also needs to be provided.","enum":["CREATED_AT","UPDATED_AT","COMMENTS"]},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"since":{"type":"string","description":"Filter by date (ISO 8601 timestamp)"},"state":{"type":"string","description":"Filter by state, by default both open and closed issues are returned when not provided","enum":["OPEN","CLOSED"]}},"required":["owner","repo"]}},{"name":"list_pull_requests","input_schema":{"type":"object","properties":{"base":{"type":"string","description":"Filter by base branch"},"direction":{"type":"string","description":"Sort direction","enum":["asc","desc"]},"fields":{"type":"array","items":{"type":"string","enum":["number","title","body","state","draft","merged","mergeable_state","html_url","user","labels","assignees","requested_reviewers","merged_by","head","base","additions","deletions","changed_files","commits","comments","created_at","updated_at","closed_at","merged_at","milestone"]},"description":"Subset of fields to return for each pull request. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields; omitting 'body' in particular drops the largest per-result data."},"head":{"type":"string","description":"Filter by head user/org and branch"},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"sort":{"type":"string","description":"Sort by","enum":["created","updated","popularity","long-running"]},"state":{"type":"string","description":"Filter by state","enum":["open","closed","all"]}},"required":["owner","repo"]}},{"name":"list_releases","input_schema":{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string","enum":["id","tag_name","name","body","html_url","published_at","prerelease","draft","author"]},"description":"Subset of fields to return for each release. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields; omitting 'body' in particular drops the largest per-release data."},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo"]}},{"name":"list_repository_collaborators","input_schema":{"type":"object","properties":{"affiliation":{"type":"string","description":"Filter by affiliation. Can be one of: 'outside' (outside collaborators), 'direct' (all with permissions regardless of org membership), 'all' (all collaborators). Default: 'all'","enum":["outside","direct","all"]},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"page":{"type":"number","description":"Page number for pagination (default 1, min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (default 30, min 1, max 100)","minimum":1,"maximum":100},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo"]}},{"name":"list_tags","input_schema":{"type":"object","properties":{"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo"]}},{"name":"merge_pull_request","input_schema":{"type":"object","properties":{"commit_message":{"type":"string","description":"Extra detail for merge commit"},"commit_title":{"type":"string","description":"Title for merge commit"},"expectedHeadSha":{"type":"string","description":"The expected SHA of the pull request's HEAD ref"},"merge_method":{"type":"string","description":"Merge method","enum":["merge","squash","rebase"]},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"pullNumber":{"type":"number","description":"Pull request number"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo","pullNumber"]}},{"name":"pull_request_read","input_schema":{"type":"object","properties":{"after":{"type":"string","description":"Cursor for pagination, used only by the get_review_comments method. Pass the endCursor from the previous page's PageInfo to fetch the next page."},"method":{"type":"string","description":"Action to specify what pull request data needs to be retrieved from GitHub. \nPossible options: \n 1. get - Get details of a specific pull request.\n 2. get_diff - Get the diff of a pull request.\n 3. get_status - Get combined commit status of a head commit in a pull request.\n 4. get_files - Get the list of files changed in a pull request. Use with pagination parameters to control the number of results returned.\n 5. get_commits - Get the list of commits on a pull request. Use with pagination parameters to control the number of results returned.\n 6. get_review_comments - Get review threads on a pull request. Each thread contains logically grouped review comments made on the same code location during pull request reviews. Returns thread metadata and comments with nullable current and original line-range coordinates (line, start_line, original_line, original_start_line). Current coordinates are omitted when unavailable, such as for outdated comments. Use cursor-based pagination (perPage, after) to control results.\n 7. get_reviews - Get the reviews on a pull request. When asked for review comments, use get_review_comments method. Use with pagination parameters to control the number of results returned.\n 8. get_comments - Get comments on a pull request. Use this if user doesn't specifically want review comments. Use with pagination parameters to control the number of results returned.\n 9. get_check_runs - Get check runs for the head commit of a pull request. Check runs are the individual CI/CD jobs and checks that run on the PR.\n","enum":["get","get_diff","get_status","get_files","get_commits","get_review_comments","get_reviews","get_comments","get_check_runs"]},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"pullNumber":{"type":"number","description":"Pull request number"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["method","owner","repo","pullNumber"]}},{"name":"pull_request_review_write","input_schema":{"type":"object","properties":{"body":{"type":"string","description":"Review comment text"},"commitID":{"type":"string","description":"SHA of commit to review"},"event":{"type":"string","description":"Review action to perform.","enum":["APPROVE","REQUEST_CHANGES","COMMENT"]},"method":{"type":"string","description":"The write operation to perform on pull request review.","enum":["create","submit_pending","delete_pending","resolve_thread","unresolve_thread"]},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"pullNumber":{"type":"number","description":"Pull request number"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"threadId":{"type":"string","description":"The node ID of the review thread (e.g., PRRT_kwDOxxx). Required for resolve_thread and unresolve_thread methods. Get thread IDs from pull_request_read with method get_review_comments."}},"required":["method","owner","repo","pullNumber"]}},{"name":"push_files","input_schema":{"type":"object","properties":{"branch":{"type":"string","description":"Branch to push to"},"files":{"type":"array","items":{"type":"object","properties":{"content":{"type":"string","description":"file content"},"path":{"type":"string","description":"path to the file"}},"required":["path","content"],"additionalProperties":false},"description":"Array of file objects to push, each object with path (string) and content (string)"},"message":{"type":"string","description":"Commit message"},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo","branch","files","message"]}},{"name":"request_copilot_review","input_schema":{"type":"object","properties":{"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"pullNumber":{"type":"number","description":"Pull request number"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo","pullNumber"]}},{"name":"run_secret_scanning","input_schema":{"type":"object","properties":{"files":{"description":"A single string or an array of strings containing file contents, snippets, or diff hunks to scan for secrets. These must be raw contents, not repository file paths.","anyOf":[{"type":"string","minLength":1},{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":100}]},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["files","owner","repo"]}},{"name":"search_code","input_schema":{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string","enum":["name","path","sha","repository","text_matches"]},"description":"Subset of fields to return for each code search result. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields; omitting 'repository' and 'text_matches' in particular drops the largest per-result data."},"order":{"type":"string","description":"Sort order for results","enum":["asc","desc"]},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"query":{"type":"string","description":"Search query (GitHub code search REST). Implicit AND between terms; supports `OR`, `NOT`, and `\"quoted phrase\"` for exact match. Qualifiers: `repo:owner/repo`, `org:`, `user:`, `language:`, `path:dir` (prefix match), `filename:exact.ext`, `extension:`, `in:file`, `in:path`, `size:`, `is:archived`, `is:fork`. Max 256 chars. Examples: `WithContext language:go org:github`; `\"package main\" repo:o/r`; `func extension:go path:cmd repo:o/r`; `NOT TODO language:go repo:o/r`."},"sort":{"type":"string","description":"Sort field ('indexed' only)"}},"required":["query"]}},{"name":"search_commits","input_schema":{"type":"object","properties":{"order":{"type":"string","description":"Sort order","enum":["asc","desc"]},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"query":{"type":"string","description":"Commit search query (GitHub commit search REST). Searches commit messages on the default branch only. Scope the search with `repo:owner/repo`, `org:`, or `user:` (queries without a scope qualifier match across all of GitHub and are usually not what you want). Other qualifiers: `author:`, `committer:`, `author-name:`, `committer-name:`, `author-email:`, `committer-email:`, `author-date:`, `committer-date:` (supports `>`, `<`, `>=`, `<=`, and `YYYY-MM-DD..YYYY-MM-DD` ranges), `merge:true|false`, `hash:`, `tree:`, `parent:`, `is:public`. Examples: `repo:owner/repo fix panic`; `org:github author:defunkt committer-date:>=2024-01-01`; `\"refactor cache\" repo:o/r`; `hash:abc1234 repo:o/r`."},"sort":{"type":"string","description":"Sort by author or committer date (defaults to best match)","enum":["author-date","committer-date"]}},"required":["query"]}},{"name":"search_issues","input_schema":{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string","enum":["number","title","body","state","state_reason","draft","locked","html_url","user","author_association","labels","assignee","assignees","milestone","comments","reactions","created_at","updated_at","closed_at","closed_by","type","repository_url","pull_request","field_values"]},"description":"Subset of fields to return for each issue result. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields; omitting 'body', 'reactions', and 'labels' in particular drops the largest per-result data."},"order":{"type":"string","description":"Sort order","enum":["asc","desc"]},"owner":{"type":"string","description":"Optional repository owner. If provided with repo, only issues for this repository are listed.","x-mcp-header":"owner"},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"query":{"type":"string","description":"The search query, as natural language. When the user gives alternative wordings, include them as plain words rather than joining them with OR."},"repo":{"type":"string","description":"Optional repository name. If provided with owner, only issues for this repository are listed.","x-mcp-header":"repo"},"sort":{"type":"string","description":"Sort field by number of matches of categories, defaults to best match","enum":["comments","reactions","reactions-+1","reactions--1","reactions-smile","reactions-thinking_face","reactions-heart","reactions-tada","interactions","created","updated"]}},"required":["query"]}},{"name":"search_pull_requests","input_schema":{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string","enum":["number","title","body","state","state_reason","draft","locked","html_url","user","author_association","labels","assignee","assignees","milestone","comments","reactions","created_at","updated_at","closed_at","closed_by","pull_request","repository_url"]},"description":"Subset of fields to return for each pull request result. If omitted, all fields are returned. Use this to reduce response size when you only need specific fields; omitting 'body', 'reactions', and 'labels' in particular drops the largest per-result data."},"order":{"type":"string","description":"Sort order","enum":["asc","desc"]},"owner":{"type":"string","description":"Optional repository owner. If provided with repo, only pull requests for this repository are listed.","x-mcp-header":"owner"},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"query":{"type":"string","description":"Search query using GitHub pull request search syntax"},"repo":{"type":"string","description":"Optional repository name. If provided with owner, only pull requests for this repository are listed.","x-mcp-header":"repo"},"sort":{"type":"string","description":"Sort field by number of matches of categories, defaults to best match","enum":["comments","reactions","reactions-+1","reactions--1","reactions-smile","reactions-thinking_face","reactions-heart","reactions-tada","interactions","created","updated"]}},"required":["query"]}},{"name":"search_repositories","input_schema":{"type":"object","properties":{"minimal_output":{"type":"boolean","description":"Return minimal repository information (default: true). When false, returns full GitHub API repository objects.","default":true},"order":{"type":"string","description":"Sort order","enum":["asc","desc"]},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"query":{"type":"string","description":"Repository search query. Examples: 'machine learning in:name stars:>1000 language:python', 'topic:react', 'user:facebook'. Supports advanced search syntax for precise filtering."},"sort":{"type":"string","description":"Sort repositories by field, defaults to best match","enum":["stars","forks","help-wanted-issues","updated"]}},"required":["query"]}},{"name":"search_users","input_schema":{"type":"object","properties":{"order":{"type":"string","description":"Sort order","enum":["asc","desc"]},"page":{"type":"number","description":"Page number for pagination (min 1)","minimum":1},"perPage":{"type":"number","description":"Results per page for pagination (min 1, max 100)","minimum":1,"maximum":100},"query":{"type":"string","description":"User search query. Examples: 'john smith', 'location:seattle', 'followers:>100'. Search is automatically scoped to type:user."},"sort":{"type":"string","description":"Sort users by number of followers or repositories, or when the person joined GitHub.","enum":["followers","repositories","joined"]}},"required":["query"]}},{"name":"sub_issue_write","input_schema":{"type":"object","properties":{"after_id":{"type":"number","description":"The ID of the sub-issue to be prioritized after (either after_id OR before_id should be specified)"},"before_id":{"type":"number","description":"The ID of the sub-issue to be prioritized before (either after_id OR before_id should be specified)"},"issue_number":{"type":"number","description":"The number of the parent issue"},"method":{"type":"string","description":"The action to perform on a single sub-issue\nOptions are:\n- 'add' - add a sub-issue to a parent issue in a GitHub repository.\n- 'remove' - remove a sub-issue from a parent issue in a GitHub repository.\n- 'reprioritize' - change the order of sub-issues within a parent issue in a GitHub repository. Use either 'after_id' or 'before_id' to specify the new position.\nWrites issue hierarchy. To move a sub-issue to a new parent, use `add` with `replace_parent=true`; there is no writable parent field.\n"},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"replace_parent":{"type":"boolean","description":"When true, replaces the sub-issue's current parent issue. Use with 'add' method only."},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"sub_issue_id":{"type":"number","description":"The ID of the sub-issue to add. ID is not the same as issue number"}},"required":["method","owner","repo","issue_number","sub_issue_id"]}},{"name":"update_pull_request","input_schema":{"type":"object","properties":{"base":{"type":"string","description":"New base branch name"},"body":{"type":"string","description":"New description"},"draft":{"type":"boolean","description":"Mark pull request as draft (true) or ready for review (false)"},"maintainer_can_modify":{"type":"boolean","description":"Allow maintainer edits"},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"pullNumber":{"type":"number","description":"Pull request number to update"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"},"reviewers":{"type":"array","items":{"type":"string"},"description":"GitHub usernames or ORG/team-slug team reviewers to request reviews from"},"state":{"type":"string","description":"New state","enum":["open","closed"]},"title":{"type":"string","description":"New title"}},"required":["owner","repo","pullNumber"]}},{"name":"update_pull_request_branch","input_schema":{"type":"object","properties":{"expectedHeadSha":{"type":"string","description":"The expected SHA of the pull request's HEAD ref"},"owner":{"type":"string","description":"Repository owner","x-mcp-header":"owner"},"pullNumber":{"type":"number","description":"Pull request number"},"repo":{"type":"string","description":"Repository name","x-mcp-header":"repo"}},"required":["owner","repo","pullNumber"]}}],"retrieved_at":"2026-09-07T12:44:31.631Z"}}}