GitHub

Connect your AI agents to GitHub.

Authentication: OAuth or personal access token. See Magic Link for the runtime auth flow, or Application credentials to bring your own OAuth app.

Sample use cases

  • Triage open issues across our org. Assign me to anything labeled priority:high and post a daily digest in Slack.
  • Open a pull request from feature/billing-refactor into main with the changelog as the description and request review from the platform team.
  • Find every open PR that hasn’t had a review in three days and DM the assigned reviewer.
  • Summarize what landed in our production repos this week. Group by author.

Available Tools

list_workflows

List all workflows in a repository’s .github/workflows directory. Returns workflow IDs needed for other workflow tools

get_workflow

Get a specific workflow by ID or filename (e.g. ‘ci.yml’). Use list_workflows to discover workflow IDs

list_workflow_runs

List workflow runs for a repository or specific workflow. Filter by branch or status. Returns run history

get_workflow_run

Get details for a specific workflow run including status, conclusion, and timing

trigger_workflow

Trigger a workflow dispatch event to manually run a workflow. The workflow must have a workflow_dispatch trigger

list_workflow_jobs

List jobs for a workflow run. Each job represents a step in the workflow

get_job_logs

Get the log content for a workflow job. Use list_workflow_jobs to find job IDs

list_discussion_categories

List discussion categories available in a repository. Categories are required when creating discussions

list_discussions

List discussions in a repository. Returns discussion metadata including category, comment count, and author

get_discussion

Get a specific discussion by number including body, category, and metadata

get_discussion_comments

Get comments on a discussion thread with pagination

create_discussion_comment

Add a comment to a discussion. Supports GitHub Markdown formatting

update_discussion_comment

Update an existing discussion comment. Use get_discussion_comments to find comment IDs

get_file_contents

Get file or directory contents from a repository. For files, returns base64-encoded content and metadata

create_or_update_file

Create or update a single file in a repository. Provide the sha of an existing file to update it

delete_file

Delete a file from a repository. Requires the file’s current blob SHA (get sha from get_file_contents)

push_files

Push multiple files in a single commit using the Git Data API. Creates or updates multiple files atomically

get_repository_tree

Get the complete file tree for a repository. Use recursive=true (default) to get all files in all subdirectories

list_gists

List gists for the authenticated user or a specific user. Gists are public or secret code snippets

get_gist

Get a specific gist by ID including all file contents

create_gist

Create a new gist with one or more files. Set public=true for a public gist visible to everyone

update_gist

Update a gist’s description or file contents. To delete a file, set its value to null in the files map

delete_gist

Delete a gist permanently. Only the gist owner can delete it

get_issue

Get a single issue by number from a specific repository. Returns detailed issue information including comments, labels, and assignees

get_issues

Get a list of issues from a repository with filtering options by state, labels, assignee, creator, and more. Supports pagination and sorting

search_issues

Search for issues across all accessible repositories using GitHub’s search syntax. Supports advanced filtering and sorting options

create_issue

Create a new issue in a repository with title, body, labels, assignees, and milestone. Returns the created issue

update_issue

Update an existing issue’s title, body, state, labels, assignees, milestone, and other properties

close_issue

Close an issue by setting its state to closed. Optionally specify a reason for closing

reopen_issue

Reopen a closed issue by setting its state to open

get_issue_comments

Get comments for a specific issue. Supports filtering by date and pagination for issues with many comments

create_issue_comment

Create a new comment on an issue. Comments support GitHub markdown formatting

update_issue_comment

Update an existing issue comment’s content. Only the comment author or repository owners can update comments

delete_issue_comment

Delete an issue comment. Only the comment author or repository owners can delete comments

add_labels_to_issue

Add labels to an issue. Labels must already exist in the repository

remove_label_from_issue

Remove a specific label from an issue

set_issue_labels

Set labels on an issue, replacing all existing labels with the new set

remove_all_labels_from_issue

Remove all labels from an issue

lock_issue

Lock an issue to prevent new comments. Only collaborators will be able to add new comments

unlock_issue

Unlock an issue to allow new comments from all users

list_labels

List labels for a repository with pagination

get_label

Get a single repository label by name. Use list_labels to browse all labels

create_label

Create a new label in a repository. Color must be a 6-character hex code without the # (e.g. ‘f29513’)

update_label

Update an existing repository label’s name, color, or description

delete_label

Delete a label from a repository. This removes the label from all issues and pull requests that have it

list_notifications

List notifications for the authenticated user. Set all=true to include read notifications

get_notification

Get details for a specific notification thread by ID. Use list_notifications to find thread IDs

mark_notification_read

Mark a notification thread as read

mark_all_notifications_read

Mark all notifications as read. Optionally scope to a specific repository

dismiss_notification

Unsubscribe from a notification thread so you no longer receive notifications for it

manage_notification_subscription

Subscribe to or mute a notification thread. Set subscribed=true to receive notifications, ignored=true to mute

manage_repo_notification_subscription

Manage repository-level notification subscription. Set subscribed=true to watch all notifications

get_pull_request

Get a single pull request by number from a specific repository. Returns detailed PR information including merge status, reviews, and file changes

get_pull_requests

Get a list of pull requests from a repository with filtering options by state, head/base branches, and sorting. Supports pagination

create_pull_request

Create a new pull request to merge changes from one branch into another. Supports creating draft PRs and setting reviewers

update_pull_request

Update an existing pull request’s title, body, state, base branch, and other properties

merge_pull_request

Merge a pull request using specified merge method (merge, squash, or rebase). Verifies PR can be merged before attempting

close_pull_request

Close a pull request without merging it. The PR can be reopened later if needed

reopen_pull_request

Reopen a closed pull request. The PR must not be merged to be reopened

convert_to_draft

Convert a pull request to draft status, preventing it from being merged until marked ready for review

mark_ready_for_review

Mark a draft pull request as ready for review, allowing it to be merged once approved

get_pull_request_reviews

Get reviews for a pull request including approval status, comments, and reviewer information

create_pull_request_review

Create a review for a pull request with approval, change requests, or general comments

create_pull_request_comment

Create a review comment on a pull request for code review. Comments specific lines of code in pull request diffs

add_reply_to_pull_request_comment

Reply to an existing review comment on a pull request

request_reviewers

Request specific users or teams to review a pull request. Reviewers will be notified of the request

remove_review_request

Remove review requests from specific users or teams for a pull request

get_pull_request_files

Get the files changed in a pull request with diff information, additions, deletions, and patch data

check_if_merged

Check if a pull request has been merged and get merge details if applicable

get_pull_request_commits

Get commits in a pull request showing the individual changes that make up the PR

update_pull_request_branch

Update the head branch of a pull request to include the latest changes from the base branch

get_commit_status

Get the combined status for a specific commit or ref (legacy statuses API)

get_check_runs

Get check runs for a specific commit or ref (Checks API)

get_pull_request_checks

Get an overall CI status summary for a PR’s head commit, including checks and legacy status

get_repository

Get a single repository by owner and name. Returns detailed repository information including stats, settings, and metadata

get_repositories

Get a list of repositories. Can filter by type, visibility, and sort options. Supports pagination for large result sets

create_repository

Create a new repository. Can create private or public repositories with various settings like issues, wiki, etc

create_organization_repository

Create a new repository in an organization. Can create private or public repositories with various settings like issues, wiki, etc

update_repository

Update an existing repository’s settings, description, visibility, and other properties

delete_repository

Delete a repository permanently. This action cannot be undone. Use with extreme caution

fork_repository

Fork a repository into the authenticated user’s account or a specified organization

list_repository_collaborators

List collaborators for a repository. Filter by affiliation: outside (external), direct, or all

get_branches

Get repository branches with optional filtering by protection status. Includes commit information for each branch

create_branch

Create a new branch from an existing commit. Requires the SHA of the commit to branch from

get_commits

Get repository commits with filtering options by author, date range, file path, and branch/SHA

get_commit

Get a single commit by SHA with detailed information including file changes, statistics, and parent commits

get_releases

Get repository releases including tags, assets, and release notes. Returns both published and draft releases

get_latest_release

Get the latest release for a repository. Returns the most recent non-prerelease, non-draft release

get_release_by_tag

Get a release by its tag name (e.g. ‘v1.0.0’). Use get_releases to list all releases

list_tags

List tags for a repository with pagination

check_starred

Check if the authenticated user has starred a repository

star_repository

Star a repository for the authenticated user

unstar_repository

Unstar a repository for the authenticated user

search_repositories

Search GitHub repositories using search syntax. Supports qualifiers like language:python, stars:>100

search_code

Search code across GitHub repositories. Must include a qualifier: repo:, org:, user:, language:, or path:

search_commits

Search commits across GitHub repositories. Use qualifiers like author:, committer:, author-date:

search_pull_requests

Search pull requests across GitHub repositories. Supports filtering by state, author, reviewer, label

search_users

Search GitHub users and organizations. Use qualifiers like type:user, type:org, location:

search_orgs

Search for organizations on GitHub. Use qualifiers like location:, language:, repos:>N

get_authenticated_user

Get the authenticated user’s profile information including public and private details

get_user

Get detailed information about any GitHub user by their username

get_organization

Get detailed information about a GitHub organization by its name

get_followers

Get a list of users who follow a specific user. Supports pagination for users with many followers

get_following

Get a list of users that a specific user follows. Supports pagination for users who follow many people

check_following

Check if the authenticated user follows a specific user

follow_user

Follow a user as the authenticated user. The user will be notified of the follow

unfollow_user

Unfollow a user as the authenticated user

get_organization_members

Get members of an organization with filtering options by role and 2FA status

get_user_organizations

Get organizations that a user is publicly a member of

get_organization_teams

Get teams in an organization. Requires organization membership or public visibility

get_team_members

Get members of a specific team with filtering by role (member or maintainer)

check_team_membership

Check if a user is a member of a specific team

add_team_membership

Add a user to a team with specified role (member or maintainer). Requires admin permissions

remove_team_membership

Remove a user from a team. Requires admin permissions

create_team

Create a team in an organization. Requires org admin permissions

get_user_memberships

Get the authenticated user’s organization memberships including private memberships

get_user_events

Get public events for a user showing their recent GitHub activity

get_user_starred_repos

Get repositories starred by a user. Shows what projects they have bookmarked