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
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
How do you configure the GitHub DADL?
- Navigate to GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
- Click 'Generate new token (classic)'
- 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
- Copy the token (starts with ghp_ or github_pat_)
Environment variable: CREDENTIAL_GITHUB_TOKEN
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.