Skip to content

GitHub MCP Server — 249 tools via DADL

The GitHub DADL turns GitHub's API into an MCP server that Claude, GPT or any MCP-compatible agent can consume directly. One YAML file declares all 249 tools — repo, org, issue, pull, team, workflow, and more — and ToolMesh serves them at runtime. No Python boilerplate, no per-endpoint code, no separate MCP server process.

Below: the endpoint coverage matrix, a two-block ToolMesh setup, the full tool reference grouped by GitHub feature area, required credential scopes.

Source: GitHub REST API v3

Credits: Dunkel Cloud GmbH Updated: 2026-04-02

Which GitHub endpoints are covered?

25% (249 of ~1000 endpoints)

Focus: repos (full CRUD + fork + collaborators + topics), orgs (members + teams), issues (full CRUD + comments + events + reactions + types), sub-issues (hierarchy + reprioritize), issue dependencies (blocked_by + blocking), PRs (full CRUD + merge + reviews + review comments + requested reviewers), commits, branches (+ protection), rulesets (repo + org full CRUD + branch rules + rule suites), custom properties (org schema + repo/org values), git refs + objects (blobs, trees, commits), file management, labels, milestones, search (code + issues + repos + users + commits), releases (full CRUD), actions (workflows + runs + jobs + logs + secrets + artifacts + dispatch), users, tags, webhooks, deployments (+ statuses), environments, gists (full CRUD), notifications, check runs/suites, commit statuses, starring, watching, pages, traffic (views + clones + paths + referrers), statistics (contributors + commit activity + code frequency + participation + punch card), code scanning, dependabot, secret scanning, packages (org + user: list, get, delete, restore, versions)

Missing: projects v2, codespaces, copilot, security advisories, rate limit API, git LFS, autolinks

Last reviewed: 2026-06-19

How do you configure the GitHub DADL?

  1. Navigate to GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
  2. Click 'Generate new token (classic)'
  3. Select scopes: repo (full access), read:org (list organizations), admin:org (org rulesets, custom properties, issue types), workflow (actions), admin:repo_hook (webhooks), delete_repo (delete repos), gist, notifications, read:packages, write:packages, delete:packages
  4. Copy the token (starts with ghp_ or github_pat_)

Environment variable: CREDENTIAL_GITHUB_TOKEN

Authentication docs ↗

How do you install the GitHub MCP server with ToolMesh?

Add to your backends.yaml:

- name: github
  transport: rest
  dadl: github.dadl
  url: "https://api.github.com"

Set the credential:

CREDENTIAL_GITHUB_TOKEN=your-token-here

What 249 tools does the GitHub DADL expose?

POST create_repo Create a new repository for the authenticated user. Set private=true for a private repo. auto_init=true creates an initial commit with a README.
POST create_org_repo Create a new repository in an organization. Requires org admin or repo creation permissions.
POST create_repo_from_template Create a new repository from a template. The template must have is_template=true.
GET list_user_repos List repositories for the authenticated user. Use type to filter (owner, member, all).
GET list_user_repos_by_username List public repositories for a specific user.
GET get_repo Get a single repository by owner and name.
PATCH update_repo Update repository settings. Only include fields you want to change. Use for description, homepage, visibility, merge settings, etc.
DELETE delete_repo Delete a repository. Requires delete_repo scope. This action is irreversible.
PUT replace_topics Replace all repository topics. Provide the full list of desired topics.
GET list_repo_languages List languages for a repository. Returns a map of language name to bytes of code.
GET list_repo_contributors List contributors to a repository, sorted by number of commits.
GET get_readme Get the README file for a repository. Content is base64 encoded.
GET list_forks List forks of a repository.
POST create_fork Fork a repository. Optionally specify an organization to fork into. Forking is asynchronous — poll get_repo to check when complete.
GET list_collaborators List collaborators for a repository. Affiliation: outside, direct, all.
GET check_collaborator Check if a user is a collaborator. Returns 204 if yes, 404 if no.
PUT add_collaborator Add a collaborator to a repository. Permission: pull, triage, push, maintain, admin.
DELETE remove_collaborator Remove a collaborator from a repository.
GET list_orgs List organizations the authenticated user belongs to.
GET get_org Get an organization by name, including member count, repo count, and billing info.
GET list_org_repos List repositories for an organization. Use list_orgs first to find org names.
GET list_org_members List members of an organization. Filter by role: all, admin, member.
GET list_org_teams List teams in an organization.
GET get_team Get a team by its slug (URL-friendly name).
POST create_team Create a team in an organization. Privacy: secret (visible to org members) or closed (visible to org members, searchable).
PATCH update_team Update a team. Only include fields you want to change.
DELETE delete_team Delete a team from an organization.
GET list_team_members List members of a team. Role filter: all, member, maintainer.
PUT add_team_member Add or update a team member. Role: member or maintainer.
DELETE remove_team_member Remove a member from a team.
GET list_team_repos List repositories a team has access to.
PUT add_team_repo Add a repository to a team. Permission: pull, triage, push, maintain, admin.
DELETE remove_team_repo Remove a repository from a team.
GET list_issues List issues for a repository. Also returns PRs unless filtered. State: open, closed, all. Note: GitHub treats PRs as issues — check for pull_request field to distinguish.
GET get_issue Get a single issue by number, including body, labels, assignees, and milestone.
POST create_issue Create a new issue. Labels are an array of label name strings. type is the org issue-type name (string, e.g. 'Bug') — see list_issue_types.
PATCH update_issue Update an issue. Set state to 'closed' to close it. Only include fields you want to change. type sets the org issue-type by name (string), or null to clear it.
PUT lock_issue Lock an issue. Lock reason: off-topic, too heated, resolved, spam.
DELETE unlock_issue Unlock an issue.
GET list_issue_comments List comments on an issue or pull request.
POST create_issue_comment Add a comment to an issue or pull request. Body supports GitHub-Flavored Markdown.
PATCH update_issue_comment Update an issue comment.
DELETE delete_issue_comment Delete an issue comment.
GET list_issue_events List events for an issue (labeled, assigned, closed, reopened, etc.).
GET list_issue_assignees List available assignees for issues in a repository (users with push access).
GET list_issue_reactions List reactions on an issue. Content: +1, -1, laugh, confused, heart, hooray, rocket, eyes.
POST create_issue_reaction Create a reaction on an issue. Content: +1, -1, laugh, confused, heart, hooray, rocket, eyes.
POST create_issue_comment_reaction Create a reaction on an issue comment.
GET list_pulls List pull requests for a repository. State: open, closed, all.
GET get_pull Get a single pull request including diff stats, mergeable state, and review status.
GET list_pull_files List files changed in a pull request with patch diffs and stats.
GET list_pull_reviews List reviews on a pull request (approved, changes_requested, commented).
POST create_pull Create a new pull request. head is the branch with changes, base is the target branch (e.g. main). Set draft=true to create a draft PR.
PATCH update_pull Update a pull request. Set state to 'closed' to close it. Only include fields you want to change.
PUT merge_pull Merge a pull request. merge_method: merge, squash, or rebase. Optionally provide sha to ensure merging the expected head commit.
GET list_pull_commits List commits on a pull request, ordered chronologically.
POST create_pull_review Create a review on a pull request. event: APPROVE, REQUEST_CHANGES, or COMMENT. Body is the review summary.
GET list_pull_review_comments List review comments on a pull request (inline code comments, not issue comments).
POST create_pull_review_comment Create an inline review comment on a pull request. Specify path and line (or start_line + line for multi-line). side: LEFT or RIGHT for diff side.
GET list_requested_reviewers List users and teams requested to review a pull request.
POST request_reviewers Request review from users or teams on a pull request.
DELETE remove_requested_reviewers Remove requested reviewers from a pull request.
GET list_commits List commits on a repository. Filter by sha (branch), path, author, or date range.
GET get_commit Get a single commit by SHA or ref, including full diff stats and file changes.
GET compare_commits Compare two commits. basehead format: 'base...head' (e.g. 'main...feature-branch'). Returns diff stats, commits, and file changes.
GET list_branches List branches for a repository.
GET get_branch Get a single branch including its latest commit SHA and protection status.
GET get_branch_protection Get branch protection rules for a branch.
PUT update_branch_protection Update branch protection rules. Set required_status_checks, enforce_admins, required_pull_request_reviews, and restrictions.
DELETE delete_branch_protection Delete branch protection rules for a branch.
POST create_ref Create a git reference (branch or tag). For branches use ref='refs/heads/branch-name'. sha is the commit to point to.
PATCH update_ref Update a git reference to point to a new SHA. ref is without 'refs/' prefix (e.g. 'heads/main'). Set force=true to do a non-fast-forward update.
DELETE delete_ref Delete a git reference. For branches use ref='heads/branch-name' (without refs/ prefix). For tags use ref='tags/tag-name'.
GET get_tree Get a git tree by SHA. Set recursive=true to get the full tree (all nested directories). Returns tree entries with path, mode, type, sha.
POST create_tree Create a git tree. Each tree entry has path, mode (100644=file, 100755=executable, 040000=directory, 160000=submodule, 120000=symlink), type (blob/tree/commit), and sha or content.
POST create_blob Create a git blob. Content can be utf-8 or base64 encoded (set encoding accordingly).
POST create_git_commit Create a git commit object. tree is the SHA of the tree, parents is an array of parent commit SHAs. Use with create_tree and update_ref for programmatic commits.
POST create_tag_object Create an annotated tag object. object is the SHA to tag. type is the object type (commit, tree, blob). Use create_ref to create the tag ref afterwards.
GET get_content Get file or directory contents. Files are base64 encoded. Directories return a listing. Use ref for a specific branch/tag/SHA.
PUT create_or_update_file Create or update a file. Content must be base64 encoded. To update an existing file, provide the current blob sha (from get_content). Creates a commit.
DELETE delete_file Delete a file from the repository. Requires the current blob sha (from get_content). Creates a commit.
GET search_code Search for code across repositories. Query syntax: 'keyword repo:owner/repo language:go path:internal'. Results include file path, repo, and text matches.
GET search_issues Search issues and PRs across repositories. Query syntax: 'bug repo:owner/repo is:open label:bug'. Use is:pr or is:issue to filter.
GET search_repos Search repositories. Query syntax: 'keyword language:go stars:>100 topic:cli'. Sort: stars, forks, help-wanted-issues, updated.
GET search_users Search users. Query syntax: 'username type:user location:germany language:go followers:>100'.
GET search_commits Search commits. Query syntax: 'fix repo:owner/repo author:username committer-date:>2026-01-01'. Sort: author-date, committer-date.
GET search_topics Search topics by name. Returns matching topic names with descriptions and related info.
GET list_releases List releases for a repository, newest first.
GET get_latest_release Get the latest published release (not draft/prerelease).
GET get_release Get a single release by its numeric ID.
GET get_release_by_tag Get a release by tag name (e.g. 'v1.0.0').
POST create_release Create a release. tag_name is required. If the tag does not exist, target_commitish (branch or SHA) is used to create it. Set draft=true for unpublished releases.
PATCH update_release Update a release. Only include fields you want to change.
DELETE delete_release Delete a release. Does not delete the associated git tag.
GET list_release_assets List assets (attached files) for a release.
DELETE delete_release_asset Delete a release asset.
GET list_workflows List all workflows in a repository. Returns workflow ID, name, path, and state.
GET get_workflow Get a specific workflow by ID or filename (e.g. 'ci.yml').
POST dispatch_workflow Trigger a workflow_dispatch event. ref is the branch/tag to run on. inputs is a map of workflow input values.
GET list_workflow_runs List workflow runs for a repository. Filter by branch, status (queued, in_progress, completed), or event (push, pull_request).
GET get_workflow_run Get a single workflow run including status, conclusion, and timing.
GET list_workflow_run_jobs List jobs for a workflow run. Filter by latest attempt or all attempts.
GET get_job Get a single workflow job by ID, including steps with status and timing.
GET get_job_log Download the log output of a workflow job. Returns plain text with timestamps. The API responds with a 302 redirect to a temporary download URL which is followed automatically.
POST cancel_workflow_run Cancel a workflow run that is in progress or queued.
POST rerun_workflow Re-run an entire workflow run. Only works for completed runs.
POST rerun_failed_jobs Re-run only the failed jobs in a workflow run.
DELETE delete_workflow_run Delete a workflow run. The run must be completed.
GET list_workflow_run_artifacts List artifacts for a workflow run. Artifacts are files produced during a run (logs, binaries, test results).
GET list_repo_secrets List repository secrets for GitHub Actions. Only returns secret names, not values.
GET get_repo_public_key Get the public key for encrypting secrets. Required before creating or updating a secret.
PUT create_or_update_repo_secret Create or update a repository secret. The encrypted_value must be encrypted with the repo's public key (from get_repo_public_key) using libsodium.
DELETE delete_repo_secret Delete a repository secret.
GET list_repo_variables List repository variables for GitHub Actions.
POST create_repo_variable Create a repository variable for GitHub Actions.
PATCH update_repo_variable Update a repository variable.
DELETE delete_repo_variable Delete a repository variable.
GET list_repo_webhooks List webhooks for a repository.
GET get_repo_webhook Get a single webhook by ID.
POST create_repo_webhook Create a webhook for a repository. config.url is the payload URL. events is an array of event names (e.g. ['push', 'pull_request']).
PATCH update_repo_webhook Update a webhook. Only include fields you want to change.
DELETE delete_repo_webhook Delete a webhook from a repository.
POST ping_repo_webhook Send a ping event to a webhook to test its configuration.
GET list_deployments List deployments for a repository. Filter by sha, ref, task, or environment.
GET get_deployment Get a single deployment.
POST create_deployment Create a deployment. ref is the branch/tag/SHA to deploy. environment defaults to 'production'.
DELETE delete_deployment Delete a deployment. Only inactive deployments can be deleted.
GET list_deployment_statuses List statuses for a deployment. States: error, failure, inactive, in_progress, queued, pending, success.
POST create_deployment_status Create a deployment status. state: error, failure, inactive, in_progress, queued, pending, success.
GET list_environments List deployment environments for a repository.
GET get_environment Get a deployment environment by name.
PUT create_or_update_environment Create or update a deployment environment. Configure wait_timer (minutes), reviewers, and deployment_branch_policy.
DELETE delete_environment Delete a deployment environment.
GET list_labels List all labels for a repository.
GET get_label Get a single label by name.
POST create_label Create a label. Color is a 6-character hex code without '#' prefix (e.g. 'ff0000' for red).
PATCH update_label Update a label. Only include fields you want to change. Use new_name to rename.
DELETE delete_label Delete a label from the repository.
GET list_milestones List milestones for a repository. State: open, closed, all.
GET get_milestone Get a single milestone by its number, including open/closed issue counts.
POST create_milestone Create a milestone. due_on is an ISO 8601 timestamp (e.g. '2026-04-01T00:00:00Z').
PATCH update_milestone Update a milestone. Set state to 'closed' to close it. Only include fields you want to change.
DELETE delete_milestone Delete a milestone.
GET get_authenticated_user Get the currently authenticated user's profile including login, name, email, and bio.
GET get_user Get a public user profile by username.
GET list_followers List followers of a user.
GET list_following List users that a user is following.
GET list_tags List tags for a repository, newest first. Each tag includes name and commit SHA.
GET list_stargazers List users who have starred a repository.
GET list_starred_repos List repositories starred by the authenticated user.
GET check_starred Check if the authenticated user has starred a repo. Returns 204 if yes, 404 if no.
PUT star_repo Star a repository for the authenticated user.
DELETE unstar_repo Unstar a repository for the authenticated user.
GET list_watchers List users watching (subscribed to) a repository.
GET get_repo_subscription Get the authenticated user's subscription (watch status) for a repository.
PUT watch_repo Watch a repository. Set subscribed=true to receive notifications, ignored=true to mute.
DELETE unwatch_repo Stop watching a repository.
GET list_gists List gists for the authenticated user.
GET list_public_gists List public gists, newest first.
GET list_starred_gists List gists starred by the authenticated user.
GET get_gist Get a single gist by ID, including all files and their content.
POST create_gist Create a gist. files is a map of filename to {content: string}. Set public=true for a public gist.
PATCH update_gist Update a gist. To delete a file, set its value to null. To rename, delete the old name and create a new one.
DELETE delete_gist Delete a gist.
GET list_notifications List notifications for the authenticated user. Set all=true to include read notifications.
PUT mark_notifications_read Mark all notifications as read. Optionally provide last_read_at (ISO 8601) to only mark notifications before that time.
GET list_repo_notifications List notifications for a repository.
PUT mark_repo_notifications_read Mark all notifications in a repository as read.
GET get_notification_thread Get a single notification thread.
PATCH mark_thread_read Mark a notification thread as read.
GET list_check_runs_for_ref List check runs for a commit SHA, branch name, or tag. Filter by check_name, status, or filter (latest, all).
GET list_check_run_annotations List annotations for a check run. Returns inline lint/test errors with file path, line number, and message. Use this to inspect CI failure details programmatically.
GET list_check_suites_for_ref List check suites for a commit SHA, branch name, or tag.
GET get_combined_status Get the combined status for a commit (aggregates all status checks). Returns state: success, failure, pending.
GET list_commit_statuses List individual status checks for a commit ref.
POST create_commit_status Create a commit status. state: error, failure, pending, success. Provide target_url for linking to CI details.
GET get_pages Get GitHub Pages configuration for a repository.
POST create_pages_site Enable GitHub Pages for a repository. source.branch is the branch to publish from, source.path is '/' or '/docs'.
PUT update_pages_info Update GitHub Pages configuration.
DELETE delete_pages_site Disable GitHub Pages for a repository.
GET list_pages_builds List GitHub Pages builds.
GET list_code_scanning_alerts List code scanning alerts for a repository. State: open, closed, dismissed, fixed.
GET get_code_scanning_alert Get a single code scanning alert.
PATCH update_code_scanning_alert Update a code scanning alert. Set state to 'dismissed' with a dismissed_reason, or 'open' to reopen.
GET list_dependabot_alerts List Dependabot alerts for a repository. State: auto_dismissed, dismissed, fixed, open.
GET get_dependabot_alert Get a single Dependabot alert.
PATCH update_dependabot_alert Update a Dependabot alert. Set state to 'dismissed' with a dismissed_reason, or 'open' to reopen.
GET list_secret_scanning_alerts List secret scanning alerts for a repository. State: open, resolved.
GET get_secret_scanning_alert Get a single secret scanning alert.
PATCH update_secret_scanning_alert Update a secret scanning alert. Set state to 'resolved' with a resolution (false_positive, wont_fix, revoked, used_in_tests, pattern_edited, pattern_deleted).
GET list_org_packages List packages in an organization. package_type is required: npm, maven, rubygems, docker, nuget, container.
GET get_org_package Get a specific package in an organization.
DELETE delete_org_package Delete an entire package in an organization. Requires admin permissions. Cannot be undone after 30 days.
POST restore_org_package Restore a deleted organization package. Only works within 30 days of deletion.
GET list_org_package_versions List all versions of an organization package. Filter by state: active (default), deleted.
GET get_org_package_version Get a specific version of an organization package.
DELETE delete_org_package_version Delete a specific version of an organization package. Cannot be undone after 30 days.
POST restore_org_package_version Restore a deleted version of an organization package. Only works within 30 days.
GET list_user_packages List packages owned by the authenticated user. package_type is required: npm, maven, rubygems, docker, nuget, container.
GET get_user_package Get a package owned by the authenticated user.
DELETE delete_user_package Delete a package owned by the authenticated user. Cannot be undone after 30 days.
GET list_user_package_versions List all versions of a package owned by the authenticated user.
DELETE delete_user_package_version Delete a specific version of a package owned by the authenticated user.
GET get_issue_parent Get the parent issue of a sub-issue. Returns the full parent issue object, or 404 if the issue has no parent.
GET list_sub_issues List the sub-issues of an issue, in their manual priority order. Returns full issue objects.
POST add_sub_issue Add a sub-issue under a parent issue. sub_issue_id is the database id (the 'id' field of get_issue), NOT the issue_number. Set replace_parent=true to move a sub-issue that already belongs to a different parent.
DELETE remove_sub_issue Remove a sub-issue from its parent. Note the singular 'sub_issue' in the path. sub_issue_id is the database id, not the issue_number. Only the parent/child link is removed — the issue itself is not deleted.
PATCH reprioritize_sub_issue Reorder a sub-issue within its parent's list. Provide after_id OR before_id (another sub-issue's database id) to position it — they are mutually exclusive. sub_issue_id is the database id of the sub-issue being moved.
GET list_issue_blocked_by List the issues that block the given issue (its 'blocked by' dependencies). Returns full issue objects.
POST add_issue_blocked_by Mark issue_number as blocked by another issue. issue_id (body) is the database id (the 'id' field of get_issue) of the blocking issue, NOT its issue_number.
DELETE remove_issue_blocked_by Remove a 'blocked by' dependency. issue_id (path) is the database id of the blocking issue. Only the dependency link is removed; neither issue is deleted.
GET list_issue_blocking List the issues that the given issue is blocking (the inverse of blocked_by). Returns full issue objects.
GET list_issue_types List the issue types defined for an organization (id, name, description, color, is_enabled). Assign one to an issue via the `type` field of create_issue/update_issue.
POST create_issue_type Create a new issue type for an organization. color is one of gray, blue, green, yellow, orange, red, pink, purple (or null).
PUT update_issue_type Update an organization issue type. The API requires name and is_enabled even for partial edits — resend the current values for fields you are not changing.
DELETE delete_issue_type Delete an organization issue type. Any issues currently using it lose their type.
GET list_repo_rulesets List the rulesets for a repository. includes_parents=true (default) also returns inherited org-level rulesets. targets filters by comma-separated target types (branch,tag,push).
GET get_repo_ruleset Get a single repository ruleset by id, including its full rules and conditions.
POST create_repo_ruleset Create a repository ruleset. enforcement is one of disabled, active, evaluate. target is branch (default), tag, or push. rules is an array of rule objects, each with a `type` (e.g. pull_request, required_status_checks, required_signatures, non_fast_forward, commit_message_pattern, required_linear_history) and an optional `parameters` object. bypass_actors is an array of {actor_id, actor_type (Team|Integration|RepositoryRole|OrganizationAdmin|DeployKey|User), bypass_mode (always|pull_request)}. conditions is {ref_name:{include:[...], exclude:[...]}}; refs use refs/heads/* or the ~DEFAULT_BRANCH / ~ALL placeholders.
PUT update_repo_ruleset Update a repository ruleset. Same writable fields as create_repo_ruleset; send only the fields you want to change (each provided field replaces its previous value).
DELETE delete_repo_ruleset Delete a repository ruleset. Removes the policy and its protections immediately.
GET get_branch_rules Get the effective rules that apply to a branch, aggregated across all active rulesets (repo + inherited org). Each entry names the rule type and the ruleset it comes from.
GET list_repo_rule_suites List rule evaluation runs (rule suites) for a repository — the audit log of ruleset enforcement. Filter by ref, time_period (hour|day|week|month), actor_name, rule_suite_result (pass|fail|bypass|all), evaluate_status (all|active|evaluate).
GET get_repo_rule_suite Get a single repository rule suite (one evaluation run), including the per-rule pass/fail/bypass results.
GET list_org_rulesets List all organization-level rulesets. targets filters by comma-separated target types (branch,tag,push,repository).
GET get_org_ruleset Get a single organization ruleset by id, including rules and conditions.
POST create_org_ruleset Create an organization ruleset. enforcement is disabled|active|evaluate. target is branch (default), tag, push, or repository. conditions may target refs (ref_name) and repositories (repository_name:{include,exclude}, repository_id, or repository_property to match custom properties). rules and bypass_actors have the same shape as repository rulesets — see create_repo_ruleset.
PUT update_org_ruleset Update an organization ruleset. Same writable fields as create_org_ruleset; send only the fields you want to change.
DELETE delete_org_ruleset Delete an organization ruleset. Removes the policy from every targeted repository immediately.
GET list_org_rule_suites List rule evaluation runs (rule suites) across an organization's repositories — the org-wide enforcement audit log. Filter by repository_name, ref, time_period (hour|day|week|month), actor_name, rule_suite_result (pass|fail|bypass|all), evaluate_status (all|active|evaluate).
GET get_org_rule_suite Get a single organization rule suite (one evaluation run), including per-rule pass/fail/bypass results.
GET get_org_properties_schema List all custom property definitions for an organization (property_name, value_type, required, allowed_values, default_value).
PATCH set_org_properties_schema Create or update multiple custom property definitions in one call. properties is an array of objects: {property_name (required), value_type (string|single_select|multi_select|true_false, required), required (bool), default_value, description, allowed_values, values_editable_by (org_actors|org_and_repo_actors)}.
GET get_org_property Get a single custom property definition by name.
PUT set_org_property Create or update a single custom property definition. value_type is string, single_select, multi_select, or true_false.
DELETE remove_org_property Remove a custom property definition from an organization. Also clears that property's values on all repositories.
GET list_org_property_values List custom property values assigned to repositories across the org. repository_query filters repos using GitHub search syntax.
PATCH set_org_property_values Assign custom property values to a list of repositories in one call. repository_names is an array of repo names (max 30 per call). properties is an array of {property_name, value} — value is a string, an array (multi_select), or null to clear.
GET get_repo_property_values Get all custom property values set on a single repository. Returns an array of {property_name, value}.
PATCH set_repo_property_values Create or update custom property values on a single repository. properties is an array of {property_name, value}; value=null removes the property from the repo.
GET get_traffic_views Get page-view counts for the last 14 days. per is 'day' (default) or 'week'. Returns total count, uniques, and a per-period breakdown. Requires push access.
GET get_traffic_clones Get git clone counts for the last 14 days. per is 'day' (default) or 'week'. Returns total count, uniques, and a per-period breakdown. Requires push access.
GET list_traffic_paths Get the top 10 most-visited content paths over the last 14 days (path, title, count, uniques). Requires push access.
GET list_traffic_referrers Get the top 10 referrer sources over the last 14 days (referrer, count, uniques). Requires push access.
GET get_stats_contributors Per-contributor commit stats: total commits plus weekly added/deleted/commits buckets (w = week start, epoch seconds). Returns 202 on a cold cache — retried automatically.
GET get_stats_commit_activity Last 52 weeks of commit activity: per week {total, week (epoch seconds), days[7] from Sun..Sat}. Returns 202 on a cold cache — retried automatically.
GET get_stats_code_frequency Weekly additions/deletions as an array of [week (epoch seconds), additions, deletions (negative)]. Returns 202 on a cold cache — retried automatically.
GET get_stats_participation Last 52 weeks of commit counts as {all:[...], owner:[...]} (oldest first). Returns 200 with data; may briefly return 202 on a cold cache.
GET get_stats_punch_card Commit counts per weekday/hour as an array of [day (0=Sun..6=Sat), hour (0-23), commits]. Returns 200 with data; may briefly return 202 on a cold cache.