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:highand post a daily digest in Slack. - Open a pull request from
feature/billing-refactorintomainwith 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 all workflows in a repository’s .github/workflows directory. Returns workflow IDs needed for other workflow tools
Get a specific workflow by ID or filename (e.g. ‘ci.yml’). Use list_workflows to discover workflow IDs
List workflow runs for a repository or specific workflow. Filter by branch or status. Returns run history
Get details for a specific workflow run including status, conclusion, and timing
Trigger a workflow dispatch event to manually run a workflow. The workflow must have a workflow_dispatch trigger
List jobs for a workflow run. Each job represents a step in the workflow
Get the log content for a workflow job. Use list_workflow_jobs to find job IDs
List discussion categories available in a repository. Categories are required when creating discussions
List discussions in a repository. Returns discussion metadata including category, comment count, and author
Get a specific discussion by number including body, category, and metadata
Get comments on a discussion thread with pagination
Add a comment to a discussion. Supports GitHub Markdown formatting
Update an existing discussion comment. Use get_discussion_comments to find comment IDs
Get file or directory contents from a repository. For files, returns base64-encoded content and metadata
Create or update a single file in a repository. Provide the sha of an existing file to update it
Delete a file from a repository. Requires the file’s current blob SHA (get sha from get_file_contents)
Push multiple files in a single commit using the Git Data API. Creates or updates multiple files atomically
Get the complete file tree for a repository. Use recursive=true (default) to get all files in all subdirectories
List gists for the authenticated user or a specific user. Gists are public or secret code snippets
Get a specific gist by ID including all file contents
Create a new gist with one or more files. Set public=true for a public gist visible to everyone
Update a gist’s description or file contents. To delete a file, set its value to null in the files map
Delete a gist permanently. Only the gist owner can delete it
Get a single issue by number from a specific repository. Returns detailed issue information including comments, labels, and assignees
Get a list of issues from a repository with filtering options by state, labels, assignee, creator, and more. Supports pagination and sorting
Search for issues across all accessible repositories using GitHub’s search syntax. Supports advanced filtering and sorting options
Create a new issue in a repository with title, body, labels, assignees, and milestone. Returns the created issue
Update an existing issue’s title, body, state, labels, assignees, milestone, and other properties
Close an issue by setting its state to closed. Optionally specify a reason for closing
Reopen a closed issue by setting its state to open
Get comments for a specific issue. Supports filtering by date and pagination for issues with many comments
Create a new comment on an issue. Comments support GitHub markdown formatting
Update an existing issue comment’s content. Only the comment author or repository owners can update comments
Delete an issue comment. Only the comment author or repository owners can delete comments
Add labels to an issue. Labels must already exist in the repository
Remove a specific label from an issue
Set labels on an issue, replacing all existing labels with the new set
Remove all labels from an issue
Lock an issue to prevent new comments. Only collaborators will be able to add new comments
Unlock an issue to allow new comments from all users
List labels for a repository with pagination
Get a single repository label by name. Use list_labels to browse all labels
Create a new label in a repository. Color must be a 6-character hex code without the # (e.g. ‘f29513’)
Update an existing repository label’s name, color, or description
Delete a label from a repository. This removes the label from all issues and pull requests that have it
List notifications for the authenticated user. Set all=true to include read notifications
Get details for a specific notification thread by ID. Use list_notifications to find thread IDs
Mark a notification thread as read
Mark all notifications as read. Optionally scope to a specific repository
Unsubscribe from a notification thread so you no longer receive notifications for it
Subscribe to or mute a notification thread. Set subscribed=true to receive notifications, ignored=true to mute
Manage repository-level notification subscription. Set subscribed=true to watch all notifications
Get a single pull request by number from a specific repository. Returns detailed PR information including merge status, reviews, and file changes
Get a list of pull requests from a repository with filtering options by state, head/base branches, and sorting. Supports pagination
Create a new pull request to merge changes from one branch into another. Supports creating draft PRs and setting reviewers
Update an existing pull request’s title, body, state, base branch, and other properties
Merge a pull request using specified merge method (merge, squash, or rebase). Verifies PR can be merged before attempting
Close a pull request without merging it. The PR can be reopened later if needed
Reopen a closed pull request. The PR must not be merged to be reopened
Convert a pull request to draft status, preventing it from being merged until marked ready for review
Mark a draft pull request as ready for review, allowing it to be merged once approved
Get reviews for a pull request including approval status, comments, and reviewer information
Create a review for a pull request with approval, change requests, or general comments
Create a review comment on a pull request for code review. Comments specific lines of code in pull request diffs
Reply to an existing review comment on a pull request
Request specific users or teams to review a pull request. Reviewers will be notified of the request
Remove review requests from specific users or teams for a pull request
Get the files changed in a pull request with diff information, additions, deletions, and patch data
Check if a pull request has been merged and get merge details if applicable
Get commits in a pull request showing the individual changes that make up the PR
Update the head branch of a pull request to include the latest changes from the base branch
Get the combined status for a specific commit or ref (legacy statuses API)
Get check runs for a specific commit or ref (Checks API)
Get an overall CI status summary for a PR’s head commit, including checks and legacy status
Get a single repository by owner and name. Returns detailed repository information including stats, settings, and metadata
Get a list of repositories. Can filter by type, visibility, and sort options. Supports pagination for large result sets
Create a new repository. Can create private or public repositories with various settings like issues, wiki, etc
Create a new repository in an organization. Can create private or public repositories with various settings like issues, wiki, etc
Update an existing repository’s settings, description, visibility, and other properties
Delete a repository permanently. This action cannot be undone. Use with extreme caution
Fork a repository into the authenticated user’s account or a specified organization
List collaborators for a repository. Filter by affiliation: outside (external), direct, or all
Get repository branches with optional filtering by protection status. Includes commit information for each branch
Create a new branch from an existing commit. Requires the SHA of the commit to branch from
Get repository commits with filtering options by author, date range, file path, and branch/SHA
Get a single commit by SHA with detailed information including file changes, statistics, and parent commits
Get repository releases including tags, assets, and release notes. Returns both published and draft releases
Get the latest release for a repository. Returns the most recent non-prerelease, non-draft release
Get a release by its tag name (e.g. ‘v1.0.0’). Use get_releases to list all releases
List tags for a repository with pagination
Check if the authenticated user has starred a repository
Star a repository for the authenticated user
Unstar a repository for the authenticated user
Search GitHub repositories using search syntax. Supports qualifiers like language:python, stars:>100
Search code across GitHub repositories. Must include a qualifier: repo:, org:, user:, language:, or path:
Search commits across GitHub repositories. Use qualifiers like author:, committer:, author-date:
Search pull requests across GitHub repositories. Supports filtering by state, author, reviewer, label
Search GitHub users and organizations. Use qualifiers like type:user, type:org, location:
Search for organizations on GitHub. Use qualifiers like location:, language:, repos:>N
Get the authenticated user’s profile information including public and private details
Get detailed information about any GitHub user by their username
Get detailed information about a GitHub organization by its name
Get a list of users who follow a specific user. Supports pagination for users with many followers
Get a list of users that a specific user follows. Supports pagination for users who follow many people
Check if the authenticated user follows a specific user
Follow a user as the authenticated user. The user will be notified of the follow
Unfollow a user as the authenticated user
Get members of an organization with filtering options by role and 2FA status
Get organizations that a user is publicly a member of
Get teams in an organization. Requires organization membership or public visibility
Get members of a specific team with filtering by role (member or maintainer)
Check if a user is a member of a specific team
Add a user to a team with specified role (member or maintainer). Requires admin permissions
Remove a user from a team. Requires admin permissions
Create a team in an organization. Requires org admin permissions
Get the authenticated user’s organization memberships including private memberships
Get public events for a user showing their recent GitHub activity
Get repositories starred by a user. Shows what projects they have bookmarked