> This page is for Workforce.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.merge.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.merge.dev/_mcp/server.

# GitHub

**Authentication:** OAuth or personal access token. See [Magic Link](/merge-agent-handler/features/magic-link) for the runtime auth flow, or [Application credentials](/merge-agent-handler/admin-setup/add-oauth-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