# GitHub connector

[Product](https://paperclip.ing/product/) / [Connectors](https://paperclip.ing/product/connectors/) / GitHub

Read code and pull requests, comment on issues.

Category: [Developer tools](/product/connectors/?category=developer)
Tools from: GitHub
Sign-in: GitHub App or personal access token
Works as: Agent tool, chat

List recorded: Sep 30, 2026

## Overview

Paperclip’s GitHub connector gives your AI agents tools from GitHub’s official MCP server to read and search code, open pull requests and comment on issues. Each tool can be Allowed, Ask first or Off.

Agents act through your GitHub account or a dedicated agent account, within its repository access. A separate experimental chat connection lets people work with an agent from issues and pull requests.

## What agents can do with GitHub

- Open a pull request with a code change (`create_branch`, `push_files`, `create_pull_request`)
- Review a pull request and leave comments (`pull_request_read`, `pull_request_review_write`)
- Triage and update issues (`list_issues`, `issue_write`, `add_issue_comment`)
- Find code and inspect its contents (`search_code`, `get_file_contents`)

## How to connect GitHub

1. In Paperclip, open Connectors, find GitHub and select Connect.
2. On the Access step, choose which agents may use the connection.
3. Choose Use this connection as an agent tool, then choose your account or a dedicated agent identity for managed access. Authorize with GitHub and select repository access on the installation. Or choose Personal access token (advanced): create a fine-grained token with selected repository access and permissions in GitHub, then paste it into Paperclip.

[Setup guide](https://docs.paperclip.ing/connectors/github-setup/)

## GitHub tools for agents (44)



### Read (27)

<div data-tool-name="get_commit" data-tool-class="read">
<code>get_commit</code>
<p class="c4-description-summary">Get details for a commit from a GitHub repository</p>
</div>

<div data-tool-name="get_file_contents" data-tool-class="read">
<code>get_file_contents</code>
<p class="c4-description-summary">Get the contents of a file or directory from a GitHub repository</p>
</div>

<div data-tool-name="get_label" data-tool-class="read">
<code>get_label</code>
<p class="c4-description-summary">Get a specific label from a repository.</p>
</div>

<div data-tool-name="get_latest_release" data-tool-class="read">
<code>get_latest_release</code>
<p class="c4-description-summary">Get the latest release in a GitHub repository</p>
</div>

<div data-tool-name="get_me" data-tool-class="read">
<code>get_me</code>
<p class="c4-description-summary">Get details of the authenticated GitHub user.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for get_me">Full description</summary>

<pre class="faq-answer c4-description-text">Get details of the authenticated GitHub user. Use this when a request is about the user's own profile for GitHub. Or when information is missing to build other tool calls.</pre>
</details>
</div>

<div data-tool-name="get_release_by_tag" data-tool-class="read">
<code>get_release_by_tag</code>
<p class="c4-description-summary">Get a specific release by its tag name in a GitHub repository</p>
</div>

<div data-tool-name="get_tag" data-tool-class="read">
<code>get_tag</code>
<p class="c4-description-summary">Get details about a specific git tag in a GitHub repository</p>
</div>

<div data-tool-name="get_team_members" data-tool-class="read">
<code>get_team_members</code>
<p class="c4-description-summary">Get member usernames of a specific team in an organization.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for get_team_members">Full description</summary>

<pre class="faq-answer c4-description-text">Get member usernames of a specific team in an organization. Limited to organizations accessible with current credentials</pre>
</details>
</div>

<div data-tool-name="get_teams" data-tool-class="read">
<code>get_teams</code>
<p class="c4-description-summary">Get details of the teams the user is a member of.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for get_teams">Full description</summary>

<pre class="faq-answer c4-description-text">Get details of the teams the user is a member of. Limited to organizations accessible with current credentials</pre>
</details>
</div>

<div data-tool-name="issue_read" data-tool-class="read">
<code>issue_read</code>
<p class="c4-description-summary">Get information about a specific issue in a GitHub repository.</p>
</div>

<div data-tool-name="list_branches" data-tool-class="read">
<code>list_branches</code>
<p class="c4-description-summary">List branches in a GitHub repository</p>
</div>

<div data-tool-name="list_commits" data-tool-class="read">
<code>list_commits</code>
<p class="c4-description-summary">Get list of commits of a branch in a GitHub repository.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for list_commits">Full description</summary>

<pre class="faq-answer c4-description-text">Get list of commits of a branch in a GitHub repository. Returns at least 30 results per page by default, but can return more if specified using the perPage parameter (up to 100).</pre>
</details>
</div>

<div data-tool-name="list_issue_fields" data-tool-class="read">
<code>list_issue_fields</code>
<p class="c4-description-summary">List issue fields for a repository or organization.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for list_issue_fields">Full description</summary>

<pre class="faq-answer c4-description-text">List issue fields for a repository or organization. Returns field definitions including name, type (text, number, date, single_select), and for single_select fields the list of valid option names. When repo is omitted, returns org-level fields directly.</pre>
</details>
</div>

<div data-tool-name="list_issue_types" data-tool-class="read">
<code>list_issue_types</code>
<p class="c4-description-summary">List supported issue types for a repository or its owner organization.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for list_issue_types">Full description</summary>

<pre class="faq-answer c4-description-text">List supported issue types for a repository or its owner organization. When repo is omitted, returns org-level issue types directly.</pre>
</details>
</div>

<div data-tool-name="list_issues" data-tool-class="read">
<code>list_issues</code>
<p class="c4-description-summary">List issues in a GitHub repository.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for list_issues">Full description</summary>

<pre class="faq-answer c4-description-text">List issues in a GitHub repository. For pagination, use the 'endCursor' from the previous response's 'pageInfo' in the 'after' parameter.</pre>
</details>
</div>

<div data-tool-name="list_pull_requests" data-tool-class="read">
<code>list_pull_requests</code>
<p class="c4-description-summary">List pull requests in a GitHub repository.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for list_pull_requests">Full description</summary>

<pre class="faq-answer c4-description-text">List pull requests in a GitHub repository. If the user specifies an author, then DO NOT use this tool and use the search_pull_requests tool instead.</pre>
</details>
</div>

<div data-tool-name="list_releases" data-tool-class="read">
<code>list_releases</code>
<p class="c4-description-summary">List releases in a GitHub repository</p>
</div>

<div data-tool-name="list_repository_collaborators" data-tool-class="read">
<code>list_repository_collaborators</code>
<p class="c4-description-summary">List collaborators of a GitHub repository.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for list_repository_collaborators">Full description</summary>

<pre class="faq-answer c4-description-text">List collaborators of a GitHub repository. Results are paginated; the response includes `nextPage`, `prevPage`, `firstPage`, and `lastPage` fields. To get the next page, use the `nextPage` value as the `page` parameter.</pre>
</details>
</div>

<div data-tool-name="list_tags" data-tool-class="read">
<code>list_tags</code>
<p class="c4-description-summary">List git tags in a GitHub repository</p>
</div>

<div data-tool-name="pull_request_read" data-tool-class="read">
<code>pull_request_read</code>
<p class="c4-description-summary">Get information on a specific pull request in GitHub repository.</p>
</div>

<div data-tool-name="run_secret_scanning" data-tool-class="read">
<code>run_secret_scanning</code>
<p class="c4-description-summary">Scan files, content, or recent changes for secrets such as API keys, passwords, tokens, and credentials.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for run_secret_scanning">Full description</summary>

<pre class="faq-answer c4-description-text">Scan files, content, or recent changes for secrets such as API keys, passwords, tokens, and credentials.

This tool is intended for targeted scans of specific files, snippets, or diffs provided directly as content. The files parameter accepts either a single string or an array of strings containing raw file contents or diff hunks, and returns detected secrets with their locations and related secret scanning metadata. Content must not be empty. For full repository scanning, other mechanisms are available.

Caveats:

- Only files within the codebase should be scanned. Files outside of the codebase should not be sent.
- Files listed in .gitignore should be skipped.</pre>
</details>
</div>

<div data-tool-name="search_code" data-tool-class="read">
<code>search_code</code>
<p class="c4-description-summary">Fast and precise code search across ALL GitHub repositories using GitHub's native search engine.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for search_code">Full description</summary>

<pre class="faq-answer c4-description-text">Fast and precise code search across ALL GitHub repositories using GitHub's native search engine. Best for finding exact symbols, functions, classes, or specific code patterns.</pre>
</details>
</div>

<div data-tool-name="search_commits" data-tool-class="read">
<code>search_commits</code>
<p class="c4-description-summary">Search for commits across GitHub repositories using GitHub's commit search syntax.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for search_commits">Full description</summary>

<pre class="faq-answer c4-description-text">Search for commits across GitHub repositories using GitHub's commit search syntax. Useful for finding specific changes, authors, or messages across one or many repositories. Searches the default branch only.</pre>
</details>
</div>

<div data-tool-name="search_issues" data-tool-class="read">
<code>search_issues</code>
<p class="c4-description-summary">Search issues using natural-language semantic matching.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for search_issues">Full description</summary>

<pre class="faq-answer c4-description-text">Search issues using natural-language semantic matching. Best for conceptual or paraphrased queries (e.g. &quot;login fails after password reset&quot;). Already scoped to is:issue.</pre>
</details>
</div>

<div data-tool-name="search_pull_requests" data-tool-class="read">
<code>search_pull_requests</code>
<p class="c4-description-summary">Search for pull requests in GitHub repositories using issues search syntax already scoped to is:pr</p>
</div>

<div data-tool-name="search_repositories" data-tool-class="read">
<code>search_repositories</code>
<p class="c4-description-summary">Find GitHub repositories by name, description, readme, topics, or other metadata.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for search_repositories">Full description</summary>

<pre class="faq-answer c4-description-text">Find GitHub repositories by name, description, readme, topics, or other metadata. Perfect for discovering projects, finding examples, or locating specific repositories across GitHub.</pre>
</details>
</div>

<div data-tool-name="search_users" data-tool-class="read">
<code>search_users</code>
<p class="c4-description-summary">Find GitHub users by username, real name, or other profile information.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for search_users">Full description</summary>

<pre class="faq-answer c4-description-text">Find GitHub users by username, real name, or other profile information. Useful for locating developers, contributors, or team members.</pre>
</details>
</div>

### Write (17)

<div data-tool-name="add_comment_to_pending_review" data-tool-class="write">
<code>add_comment_to_pending_review</code>
<p class="c4-description-summary">Add review comment to the requester's latest pending pull request review.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for add_comment_to_pending_review">Full description</summary>

<pre class="faq-answer c4-description-text">Add review comment to the requester's latest pending pull request review. A pending review needs to already exist to call this (check with the user if not sure).</pre>
</details>
</div>

<div data-tool-name="add_issue_comment" data-tool-class="write">
<code>add_issue_comment</code>
<p class="c4-description-summary">Add a comment and/or reaction to a specific issue or issue comment in a GitHub repository.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for add_issue_comment">Full description</summary>

<pre class="faq-answer c4-description-text">Add a comment and/or reaction to a specific issue or issue comment in a GitHub repository. Use this tool with pull requests as well (in this case pass pull request number as issue_number), but only if user is not asking specifically to add or react to review comments. At least one of body or reaction is required.</pre>
</details>
</div>

<div data-tool-name="add_reply_to_pull_request_comment" data-tool-class="write">
<code>add_reply_to_pull_request_comment</code>
<p class="c4-description-summary">Add a reply and/or reaction to an existing pull request comment.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for add_reply_to_pull_request_comment">Full description</summary>

<pre class="faq-answer c4-description-text">Add a reply and/or reaction to an existing pull request comment. This can create a new comment linked as a reply to the specified comment, add an emoji reaction to the specified comment, or do both. At least one of body or reaction is required.</pre>
</details>
</div>

<div data-tool-name="create_branch" data-tool-class="write">
<code>create_branch</code>
<p class="c4-description-summary">Create a new branch in a GitHub repository</p>
</div>

<div data-tool-name="create_or_update_file" data-tool-class="write">
<code>create_or_update_file</code>
<p class="c4-description-summary">Create or update a single file in a GitHub repository.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for create_or_update_file">Full description</summary>

<pre class="faq-answer c4-description-text">Create or update a single file in a GitHub repository.&#32;
If updating, you should provide the SHA of the file you want to update. Use this tool to create or update a file in a GitHub repository remotely; do not use it for local file operations.

To obtain the current blob SHA before updating, call the get_file_contents tool with the same owner, repo, and path, and set its ref parameter to this tool's branch value. The first text result reports the blob SHA for the requested path.

SHA MUST be provided for existing file updates.</pre>
</details>
</div>

<div data-tool-name="create_pull_request" data-tool-class="write">
<code>create_pull_request</code>
<p class="c4-description-summary">Create a new pull request in a GitHub repository.</p>
</div>

<div data-tool-name="create_repository" data-tool-class="write">
<code>create_repository</code>
<p class="c4-description-summary">Create a new GitHub repository in your account or specified organization</p>
</div>

<div data-tool-name="delete_file" data-tool-class="write">
<code>delete_file</code>
<p class="c4-description-summary">Delete a file from a GitHub repository</p>
</div>

<div data-tool-name="fork_repository" data-tool-class="write">
<code>fork_repository</code>
<p class="c4-description-summary">Fork a GitHub repository to your account or specified organization</p>
</div>

<div data-tool-name="issue_write" data-tool-class="write">
<code>issue_write</code>
<p class="c4-description-summary">Create a new or update an existing issue in a GitHub repository.</p>
</div>

<div data-tool-name="merge_pull_request" data-tool-class="write">
<code>merge_pull_request</code>
<p class="c4-description-summary">Merge a pull request in a GitHub repository.</p>
</div>

<div data-tool-name="pull_request_review_write" data-tool-class="write">
<code>pull_request_review_write</code>
<p class="c4-description-summary">Create and/or submit, delete review of a pull request.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for pull_request_review_write">Full description</summary>

<pre class="faq-answer c4-description-text">Create and/or submit, delete review of a pull request.

Available methods:
- create: Create a new review of a pull request. If &quot;event&quot; parameter is provided, the review is submitted. If &quot;event&quot; is omitted, a pending review is created.
- submit_pending: Submit an existing pending review of a pull request. This requires that a pending review exists for the current user on the specified pull request. The &quot;body&quot; and &quot;event&quot; parameters are used when submitting the review.
- delete_pending: Delete an existing pending review of a pull request. This requires that a pending review exists for the current user on the specified pull request.
- resolve_thread: Resolve a review thread. Requires only &quot;threadId&quot; parameter with the thread's node ID (e.g., PRRT_kwDOxxx). The owner, repo, and pullNumber parameters are not used for this method. Resolving an already-resolved thread is a no-op.
- unresolve_thread: Unresolve a previously resolved review thread. Requires only &quot;threadId&quot; parameter. The owner, repo, and pullNumber parameters are not used for this method. Unresolving an already-unresolved thread is a no-op.</pre>
</details>
</div>

<div data-tool-name="push_files" data-tool-class="write">
<code>push_files</code>
<p class="c4-description-summary">Push multiple files to a GitHub repository in a single commit</p>
</div>

<div data-tool-name="request_copilot_review" data-tool-class="write">
<code>request_copilot_review</code>
<p class="c4-description-summary">Request a GitHub Copilot code review for a pull request.</p>
<details class="faq-item c4-tool-description">
<summary class="faq-header" aria-label="Full description for request_copilot_review">Full description</summary>

<pre class="faq-answer c4-description-text">Request a GitHub Copilot code review for a pull request. Use this for automated feedback on pull requests, usually before requesting a human reviewer.</pre>
</details>
</div>

<div data-tool-name="sub_issue_write" data-tool-class="write">
<code>sub_issue_write</code>
<p class="c4-description-summary">Add a sub-issue to a parent issue in a GitHub repository.</p>
</div>

<div data-tool-name="update_pull_request" data-tool-class="write">
<code>update_pull_request</code>
<p class="c4-description-summary">Update an existing pull request in a GitHub repository.</p>
</div>

<div data-tool-name="update_pull_request_branch" data-tool-class="write">
<code>update_pull_request_branch</code>
<p class="c4-description-summary">Update the branch of a pull request with the latest changes from the base branch.</p>
</div>

Only tools active on the connected account when this list was recorded are shown. Quarantined tools are held until enabled; disabled tools were unavailable at that time.

These lists show actions from a connected account when the list was recorded. On this website, evidence that an action changes data or submits information elsewhere puts it in Write, even when the account originally grouped it as Read. The original account grouping is retained separately. Read describes the reviewed evidence; it does not guarantee that an action has no side effects. Account groupings and available actions can change.

Only actions active on the connected account when this list was recorded are shown. Disabled actions were unavailable, and actions held for review needed to be enabled. This list does not establish their current availability.



### Connection policies

On managed connections, new or changed actions are normally held back on refresh. Safe defaults can exempt actions classified as read. With your own credential, discovered actions become active under the connection’s existing policies. Review the list after each refresh. You can set any tool to Ask first or Off. Shell Git and gh on a managed dedicated identity are not constrained by these tool settings.

## GitHub connector FAQ

### Can agents push code or merge pull requests?

push_files and merge_pull_request are listed Write tools. Set either to Ask first for human approval of each call or Off. Shell Git and gh are outside these switches, so use branch protection and required reviews on GitHub.

### Which repositories can agents reach?

Reach follows the selected GitHub credential. For managed access, review the App installation’s repositories; for a token, review its repository selection and permissions. Paperclip cannot widen that access.

### Do I need Paperclip Cloud?

The managed GitHub App path needs an instance enrolled with Paperclip Cloud and an advertised GitHub profile. Personal access token (advanced) does not need that enrollment.


Ways to connect

- Use this connection as an agent tool
  - Paperclip-managed GitHub App authorization, when Cloud enrollment and the GitHub profile are available.
- Personal access token (advanced)
  - A fine-grained token with repository access and permissions you choose in GitHub.
- Chat with an agent (Experimental)
  - A separate GitHub App connects issue and pull-request conversations to one agent.

Server: `https://api.githubcopilot.com/mcp/`

[GitHub connector](https://docs.paperclip.ing/connectors/github/)

[Setup guide](https://docs.paperclip.ing/connectors/github-setup/)

## Related connectors

- [Sentry](https://paperclip.ing/product/connectors/sentry/): Search issues, inspect error context and update issues.
- [Cloudflare](https://paperclip.ing/product/connectors/cloudflare/): Find API operations and execute resource changes.
- [Netlify](https://paperclip.ing/product/connectors/netlify/): Inspect projects and deploys and start deployments.

## Give your agents GitHub.

Join the Paperclip waitlist to connect GitHub and choose what your agents can do.

[Join the waitlist](https://paperclip.ing/waitlist/)
