# GitHub Repo Browser - Read Only

## Links

- Product page URL: https://www.agentpmt.com/marketplace/github-repo-browser-read-only
- Product markdown URL: https://www.agentpmt.com/marketplace/github-repo-browser-read-only?format=agent-md
- Product JSON URL: https://www.agentpmt.com/marketplace/github-repo-browser-read-only?format=agent-json

## Overview

- Product ID: 69c304d6385f218fb97453fb
- Type: function
- Unit type: request
- Price: 500 credits
- Categories: Developer Tools, Automation, Data Processing, Team Collaboration & Workspaces, Task & Workflow Automation
- Generated at: 2026-06-23T22:01:23.847Z

### Page Description

Give your AI agent secure, read-only access to your GitHub repositories. Browse your personal repos, organization repos, and any public project on GitHub. Explore folder structures, read source files and READMEs, view branches and commit history, and search across repositories or code. Download individual files or entire repository archives directly to file storage with integrity verification — perfect for downstream processing, attestation, or analysis. No risk of accidental writes, pushes, or deletions. Connects to your GitHub account so agents can access your private repos alongside any public repository on GitHub.

### Agent Description

Read-only GitHub access for agents. List personal and organization repositories, browse directory trees, read source files and READMEs, view branches and commit history with diffs, and search repositories or code across all accessible repos. Download individual files or entire repo archives (with optional subdirectory filtering) to file storage with SHA1 integrity verification. Supports pagination, branch/tag/SHA targeting, and commit time filtering. No write operations — safe for autonomous agent use.

## Details

### Details

Give your AI agent secure, read-only access to your GitHub repositories. Browse your personal repos, organization repos, and any public project on GitHub. Explore folder structures, read source files and READMEs, view branches and commit history, and search across repositories or code. Download individual files or entire repository archives directly to file storage with integrity verification — perfect for downstream processing, attestation, or analysis. No risk of accidental writes, pushes, or deletions. Connects to your GitHub account so agents can access your private repos alongside any public repository on GitHub.

### Actions

- `list_my_repos` (5 credits): List repositories the connected GitHub account can access, with pagination and sorting.
- `list_org_repos` (5 credits): List repositories for an organization the connected account can access.
- `get_repo` (5 credits): Fetch repository metadata, default branch, permissions, and URLs.
- `list_branches` (5 credits): List repository branches with pagination.
- `list_commits` (5 credits): List commits for a repository, optionally scoped to a branch and filtered to the last N hours. Results are returned newest first.
- `get_commit` (5 credits): Fetch a specific commit by SHA, including changed files and commit stats.
- `list_directory` (5 credits): List the contents of a repository directory at a branch, tag, or commit.
- `get_file` (5 credits): Read a text file from a repository at a branch, tag, or commit. Binary and oversized files are rejected.
- `get_readme` (5 credits): Fetch the repository README content and metadata.
- `search_repositories` (5 credits): Search repositories visible to the connected account.
- `search_code` (5 credits): Search code visible to the connected account, optionally scoped to a specific repository.
- `download_to_storage` (5 credits): Download a single file from a GitHub repository and save it to file storage with SHA1 integrity verification. Returns a file_id and signed_url. Supports files up to 100 MB including binary files.
- `download_repo_to_storage` (5 credits): Download a repository archive as a .tar.gz file and save it to file storage. Use ref to select a branch, tag, or commit. Use path to optionally filter to a specific subdirectory. Archives up to 100 MB are supported.

### Use Cases

Browse your private GitHub repositories from a chat agent, Explore any public repository's folder structure and source files, Read README files and documentation from any repo, Search for code patterns across your repositories or any public project, Review recent commit history and see what changed in each commit, List branches and compare code across different branches, Audit dependencies by reading package.json or requirements.txt files, Gather code context for debugging without leaving your workflow, Onboard to unfamiliar codebases by exploring structure and reading key files, Research how open source projects implement specific features, Download individual files with integrity verification for processing or attestation, Download entire repository archives or specific subdirectories as .tar.gz files, Pull code snapshots from specific branches or tags for analysis

### Workflows Using This Tool

#### GitHub Dev Announcements

Generate user-facing development update announcements from recent GitHub commits across one or more repositories. The user supplies a list of repos on the first run (wildcards like `org/*` allowed); the workflow stores them in a Google Sheet so subsequent runs need no input. For each run, the agent fetches commits since the last run (or last 7 days on first run), categorizes them into New Features / Updates / Bug Fixes, applies a security filter to strip internal paths, endpoints, secrets, and vulnerability details, drafts the announcement in a Google Doc, polishes the writing with a quality check tool, and logs the run (date, repos, commit count, doc URL, status) back in the sheet. Designed as a starting template — users can remix it to add their own follow-up steps such as posting to Slack or emailing subscribers.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/github-dev-announcements
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/github-dev-announcements?format=agent-md
- Published: 2026-04-30T17:43:08.504Z

#### GitHub Repository Code Signing and Attestation with Post-Quantum Cryptography

Automate post-quantum code signing and software supply chain attestation for GitHub repositories and release artifacts. This workflow asks the user which GitHub repository, branch, tag, or specific file they want to certify, downloads the content using the GitHub Repo Browser tool, and signs it with the Quantum-Safe File Attestation tool using ML-DSA-65 (Dilithium3) post-quantum digital signatures via hardware security module. Returns a verifiable attestation package containing a cryptographic manifest, digital signature, and verification bundle with a downloadable certificate link. Use cases include software release signing, open source distribution integrity, SBOM attestation, build artifact certification, code audit compliance evidence, CI/CD pipeline integrity verification, regulatory submission of source code, DevSecOps supply chain security, and tamper-proof repository snapshots for legal or IP protection.

- Page URL: https://www.agentpmt.com/agent-workflow-skills/github-repository-code-signing-and-attestation-with-post-quantum-cryptography
- Markdown URL: https://www.agentpmt.com/agent-workflow-skills/github-repository-code-signing-and-attestation-with-post-quantum-cryptography?format=agent-md
- Published: 2026-03-30T03:28:05.173Z

### Related Content

#### AI DevOps: Give Your Agents Eyes on Every Codebase

- Type: article
- Page URL: https://www.agentpmt.com/articles/ai-devops-give-your-agents-eyes-on-every-codebase
- Markdown URL: https://www.agentpmt.com/articles/ai-devops-give-your-agents-eyes-on-every-codebase?format=agent-md
GitHub Repo Browser - Read Only gives AI agents full visibility into GitHub repositories through 13 structured, read-only actions -- browsing files, commits, branches, and code -- while making it structurally impossible to modify anything.

## Integration Details

### DynamicMCP

- Setup page URL: https://www.agentpmt.com/dynamic-mcp
- Claude setup guide: https://www.agentpmt.com/dynamic-mcp#platform=claude
- ChatGPT setup guide: https://www.agentpmt.com/dynamic-mcp#platform=chatgpt
- Cursor setup guide: https://www.agentpmt.com/dynamic-mcp#platform=cursor
- Windsurf setup guide: https://www.agentpmt.com/dynamic-mcp#platform=windsurf

Use the local router for command-based MCP clients. It forwards requests to `https://api.agentpmt.com/mcp` and does not execute tools locally.

```bash
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

### REST API

The live page renders cURL, Python, JavaScript, and Node.js examples. Logged-in users see those examples prefilled with their own API and budget credentials.

- Purchase endpoint: https://api.agentpmt.com/products/purchase
- Authorization format: `Bearer <base64(apiKey:budgetKey)>`

```bash
curl -X POST "https://api.agentpmt.com/products/purchase" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eW91ci1hcGkta2V5LWhlcmU6eW91ci1idWRnZXQta2V5LWhlcmU=" \
  -d '{
    "product_id": "69c304d6385f218fb97453fb",
    "parameters": {
      "action": "list_my_repos"
    }
  }'
```

### Autonomous Agents

Autonomous agents can access this tool through AgentAddress credit balances or direct x402 payments. Use the Autonomous Agent API reference for endpoint shapes after choosing the access pattern below.

- Autonomous Agent API reference URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents
- Autonomous Agent API reference markdown URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents?format=agent-md
- Credit-Based Access Using AgentAddress: https://www.agentpmt.com/docs/autonomous-agents/credit-based-tool-usage-with-agentaddress
- AgentAddress is preferred for persistent file access, stored platform state, and maximum tool use ability across repeated calls.
- Direct x402 is for independent one-off tool calls that do not require shared files or stored platform state.
- Direct x402 public payments: USDC on Base, Arbitrum, Optimism, Polygon, and Avalanche.

### Schema

#### Credentials

These runtime credentials should be provided under `parameters._credentials` when required.

- GitHub (`github_token`, oauth_token, required)
  Help: Connect your GitHub account to grant repository access.
  Connection ID: 69874b2bda401d1af03b6e72

#### Parameters

- Schema type: actions

```json
{
  "actions": {
    "list_my_repos": {
      "description": "List repositories the connected GitHub account can access, with pagination and sorting.",
      "properties": {
        "visibility": {
          "type": "string",
          "description": "Repository visibility filter.",
          "required": false,
          "enum": [
            "all",
            "public",
            "private"
          ]
        },
        "affiliation": {
          "type": "string",
          "description": "Comma-separated affiliation filter such as owner,collaborator,organization_member.",
          "required": false
        },
        "sort": {
          "type": "string",
          "description": "Sort field.",
          "required": false,
          "enum": [
            "created",
            "updated",
            "pushed",
            "full_name"
          ]
        },
        "direction": {
          "type": "string",
          "description": "Sort direction.",
          "required": false,
          "enum": [
            "asc",
            "desc"
          ]
        },
        "per_page": {
          "type": "integer",
          "description": "Items per page.",
          "required": false,
          "minimum": 1,
          "maximum": 100
        },
        "page": {
          "type": "integer",
          "description": "Page number.",
          "required": false,
          "minimum": 1,
          "maximum": 1000
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    },
    "list_org_repos": {
      "description": "List repositories for an organization the connected account can access.",
      "properties": {
        "org": {
          "type": "string",
          "description": "Organization login.",
          "required": true
        },
        "type_filter": {
          "type": "string",
          "description": "Repository type filter.",
          "required": false,
          "enum": [
            "all",
            "public",
            "private",
            "forks",
            "sources",
            "member"
          ]
        },
        "sort": {
          "type": "string",
          "description": "Sort field.",
          "required": false,
          "enum": [
            "created",
            "updated",
            "pushed",
            "full_name"
          ]
        },
        "direction": {
          "type": "string",
          "description": "Sort direction.",
          "required": false,
          "enum": [
            "asc",
            "desc"
          ]
        },
        "per_page": {
          "type": "integer",
          "description": "Items per page.",
          "required": false,
          "minimum": 1,
          "maximum": 100
        },
        "page": {
          "type": "integer",
          "description": "Page number.",
          "required": false,
          "minimum": 1,
          "maximum": 1000
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    },
    "get_repo": {
      "description": "Fetch repository metadata, default branch, permissions, and URLs.",
      "properties": {
        "owner": {
          "type": "string",
          "description": "Repository owner.",
          "required": true
        },
        "repo": {
          "type": "string",
          "description": "Repository name.",
          "required": true
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    },
    "list_branches": {
      "description": "List repository branches with pagination.",
      "properties": {
        "owner": {
          "type": "string",
          "description": "Repository owner.",
          "required": true
        },
        "repo": {
          "type": "string",
          "description": "Repository name.",
          "required": true
        },
        "protected_only": {
          "type": "boolean",
          "description": "When true, list only protected branches.",
          "required": false
        },
        "per_page": {
          "type": "integer",
          "description": "Items per page.",
          "required": false,
          "minimum": 1,
          "maximum": 100
        },
        "page": {
          "type": "integer",
          "description": "Page number.",
          "required": false,
          "minimum": 1,
          "maximum": 1000
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    },
    "list_commits": {
      "description": "List commits for a repository, optionally scoped to a branch and filtered to the last N hours. Results are returned newest first.",
      "properties": {
        "owner": {
          "type": "string",
          "description": "Repository owner.",
          "required": true
        },
        "repo": {
          "type": "string",
          "description": "Repository name.",
          "required": true
        },
        "ref": {
          "type": "string",
          "description": "Branch, tag, or commit SHA to scope the commit list.",
          "required": false
        },
        "path": {
          "type": "string",
          "description": "Optional file or directory path to filter commits.",
          "required": false
        },
        "since_hours": {
          "type": "integer",
          "description": "Only include commits from the last N hours.",
          "required": false,
          "minimum": 1,
          "maximum": 720
        },
        "per_page": {
          "type": "integer",
          "description": "Items per page.",
          "required": false,
          "minimum": 1,
          "maximum": 100
        },
        "page": {
          "type": "integer",
          "description": "Page number.",
          "required": false,
          "minimum": 1,
          "maximum": 1000
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    },
    "get_commit": {
      "description": "Fetch a specific commit by SHA, including changed files and commit stats.",
      "properties": {
        "owner": {
          "type": "string",
          "description": "Repository owner.",
          "required": true
        },
        "repo": {
          "type": "string",
          "description": "Repository name.",
          "required": true
        },
        "commit_sha": {
          "type": "string",
          "description": "Commit SHA to fetch.",
          "required": true
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    },
    "list_directory": {
      "description": "List the contents of a repository directory at a branch, tag, or commit.",
      "properties": {
        "owner": {
          "type": "string",
          "description": "Repository owner.",
          "required": true
        },
        "repo": {
          "type": "string",
          "description": "Repository name.",
          "required": true
        },
        "path": {
          "type": "string",
          "description": "Directory path. Omit or use empty string for repository root.",
          "required": false
        },
        "ref": {
          "type": "string",
          "description": "Branch, tag, or commit SHA. Defaults to repository default branch.",
          "required": false
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    },
    "get_file": {
      "description": "Read a text file from a repository at a branch, tag, or commit. Binary and oversized files are rejected.",
      "properties": {
        "owner": {
          "type": "string",
          "description": "Repository owner.",
          "required": true
        },
        "repo": {
          "type": "string",
          "description": "Repository name.",
          "required": true
        },
        "path": {
          "type": "string",
          "description": "File path to read.",
          "required": true
        },
        "ref": {
          "type": "string",
          "description": "Branch, tag, or commit SHA. Defaults to repository default branch.",
          "required": false
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    },
    "get_readme": {
      "description": "Fetch the repository README content and metadata.",
      "properties": {
        "owner": {
          "type": "string",
          "description": "Repository owner.",
          "required": true
        },
        "repo": {
          "type": "string",
          "description": "Repository name.",
          "required": true
        },
        "ref": {
          "type": "string",
          "description": "Branch, tag, or commit SHA. Defaults to repository default branch.",
          "required": false
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    },
    "search_repositories": {
      "description": "Search repositories visible to the connected account.",
      "properties": {
        "query": {
          "type": "string",
          "description": "GitHub repository search query.",
          "required": true
        },
        "sort": {
          "type": "string",
          "description": "Search sort field.",
          "required": false,
          "enum": [
            "stars",
            "forks",
            "help-wanted-issues",
            "updated"
          ]
        },
        "order": {
          "type": "string",
          "description": "Search order.",
          "required": false,
          "enum": [
            "asc",
            "desc"
          ]
        },
        "per_page": {
          "type": "integer",
          "description": "Items per page.",
          "required": false,
          "minimum": 1,
          "maximum": 100
        },
        "page": {
          "type": "integer",
          "description": "Page number.",
          "required": false,
          "minimum": 1,
          "maximum": 100
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    },
    "search_code": {
      "description": "Search code visible to the connected account, optionally scoped to a specific repository.",
      "properties": {
        "query": {
          "type": "string",
          "description": "GitHub code search query. You can include qualifiers like language:python or path:src.",
          "required": true
        },
        "owner": {
          "type": "string",
          "description": "Optional repository owner to scope the search.",
          "required": false
        },
        "repo": {
          "type": "string",
          "description": "Optional repository name to scope the search; requires owner when provided.",
          "required": false
        },
        "sort": {
          "type": "string",
          "description": "Search sort field when supported.",
          "required": false,
          "enum": [
            "indexed"
          ]
        },
        "order": {
          "type": "string",
          "description": "Search order.",
          "required": false,
          "enum": [
            "asc",
            "desc"
          ]
        },
        "per_page": {
          "type": "integer",
          "description": "Items per page.",
          "required": false,
          "minimum": 1,
          "maximum": 100
        },
        "page": {
          "type": "integer",
          "description": "Page number.",
          "required": false,
          "minimum": 1,
          "maximum": 100
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    },
    "download_to_storage": {
      "description": "Download a single file from a GitHub repository and save it to file storage with SHA1 integrity verification. Returns a file_id and signed_url. Supports files up to 100 MB including binary files.",
      "properties": {
        "owner": {
          "type": "string",
          "description": "Repository owner.",
          "required": true
        },
        "repo": {
          "type": "string",
          "description": "Repository name.",
          "required": true
        },
        "path": {
          "type": "string",
          "description": "File path to download.",
          "required": true
        },
        "ref": {
          "type": "string",
          "description": "Branch, tag, or commit SHA. Defaults to repository default branch.",
          "required": false
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    },
    "download_repo_to_storage": {
      "description": "Download a repository archive as a .tar.gz file and save it to file storage. Use ref to select a branch, tag, or commit. Use path to optionally filter to a specific subdirectory. Archives up to 100 MB are supported.",
      "properties": {
        "owner": {
          "type": "string",
          "description": "Repository owner.",
          "required": true
        },
        "repo": {
          "type": "string",
          "description": "Repository name.",
          "required": true
        },
        "ref": {
          "type": "string",
          "description": "Branch, tag, or commit SHA. Defaults to repository default branch.",
          "required": false
        },
        "path": {
          "type": "string",
          "description": "Subdirectory to filter the archive to. Only files under this path will be included.",
          "required": false
        },
        "timeout_seconds": {
          "type": "integer",
          "description": "HTTP timeout in seconds.",
          "required": false,
          "minimum": 5,
          "maximum": 120
        }
      }
    }
  }
}
```

### Usage Instructions

# GitHub Repo Browser

Read-only GitHub repository navigation for agents. Use it to browse accessible repositories, inspect repo structure, read files, fetch READMEs, search repositories or code, and download files or entire repo archives to file storage.

## Actions

### `list_my_repos`
List repositories the connected GitHub account can access.

Optional fields:
- `visibility`: `all`, `public`, or `private`
- `affiliation`: comma-separated GitHub affiliation filter such as `owner,collaborator,organization_member`
- `sort`: `created`, `updated`, `pushed`, or `full_name`
- `direction`: `asc` or `desc`
- `per_page`: 1-100
- `page`: 1+

```json
{"action":"list_my_repos","visibility":"private","per_page":20,"page":1}
```

### `list_org_repos`
List repositories in an organization the connected account can access.

Required fields:
- `org`

Optional fields:
- `type_filter`: `all`, `public`, `private`, `forks`, `sources`, or `member`
- `sort`, `direction`, `per_page`, `page`

```json
{"action":"list_org_repos","org":"acme","type_filter":"private","per_page":25}
```

### `get_repo`
Fetch repository metadata including default branch, permissions, visibility, and URLs.

Required fields:
- `owner`
- `repo`

```json
{"action":"get_repo","owner":"acme","repo":"platform"}
```

### `list_branches`
List repository branches with pagination.

Required fields:
- `owner`
- `repo`

Optional fields:
- `protected_only`
- `per_page`
- `page`

```json
{"action":"list_branches","owner":"acme","repo":"platform","protected_only":true}
```

### `list_commits`
List commits for a repository. You can scope the list to a branch, tag, or commit ancestry using `ref`, and filter to commits from the last `N` hours using `since_hours`. Results come back newest first.

Required fields:
- `owner`
- `repo`

Optional fields:
- `ref`
- `path`
- `since_hours`
- `per_page`
- `page`

```json
{"action":"list_commits","owner":"acme","repo":"platform","ref":"release/2026.03","since_hours":24,"per_page":20}
```

### `get_commit`
Fetch a specific commit by SHA, including commit metadata, stats, and changed files.

Required fields:
- `owner`
- `repo`
- `commit_sha`

```json
{"action":"get_commit","owner":"acme","repo":"platform","commit_sha":"abc123def4567890abc123def4567890abc12345"}
```

### `list_directory`
List the contents of a repository directory.

Required fields:
- `owner`
- `repo`

Optional fields:
- `path`: omit for repository root
- `ref`: branch, tag, or commit SHA

```json
{"action":"list_directory","owner":"acme","repo":"platform","path":"src","ref":"main"}
```

### `get_file`
Read a text file from a repository. Binary files and files larger than 1 MB are rejected.

Required fields:
- `owner`
- `repo`
- `path`

Optional fields:
- `ref`

```json
{"action":"get_file","owner":"acme","repo":"platform","path":"src/app.py","ref":"main"}
```

### `get_readme`
Fetch the repository README content and metadata.

Required fields:
- `owner`
- `repo`

Optional fields:
- `ref`

```json
{"action":"get_readme","owner":"acme","repo":"platform"}
```

### `search_repositories`
Search repositories visible to the connected account.

Required fields:
- `query`

Optional fields:
- `sort`: `stars`, `forks`, `help-wanted-issues`, or `updated`
- `order`: `asc` or `desc`
- `per_page`
- `page`

```json
{"action":"search_repositories","query":"terraform language:hcl org:acme","sort":"updated","per_page":10}
```

### `search_code`
Search code visible to the connected account. You can scope the search to a repository by providing `owner` and `repo`, or by including qualifiers directly in `query`.

Required fields:
- `query`

Optional fields:
- `owner`
- `repo`
- `sort`: `indexed`
- `order`: `asc` or `desc`
- `per_page`
- `page`

```json
{"action":"search_code","query":"OpenAI apiKey path:src language:typescript","owner":"acme","repo":"platform"}
```

### `download_to_storage`
Download a file from a GitHub repository and save it to file storage. Returns a `file_id` and `signed_url` for downstream tools to access the exact bytes. Files up to 100 MB are supported. Downloaded bytes are integrity-verified against GitHub's git SHA before storage.

Required fields:
- `owner`
- `repo`
- `path`

Optional fields:
- `ref`

```json
{"action":"download_to_storage","owner":"acme","repo":"platform","path":"assets/logo.png","ref":"main"}
```

### `download_repo_to_storage`
Download a repository archive as a `.tar.gz` file and save it to file storage. Returns a `file_id` and `signed_url`. Use `ref` to select a specific branch, tag, or commit SHA. Use `path` to optionally filter the archive to a subdirectory.

Required fields:
- `owner`
- `repo`

Optional fields:
- `ref`: branch, tag, or commit SHA (defaults to the repository's default branch)
- `path`: subdirectory to filter the archive to

Download an entire repository:
```json
{"action":"download_repo_to_storage","owner":"acme","repo":"platform","ref":"main"}
```

Download only a subdirectory:
```json
{"action":"download_repo_to_storage","owner":"acme","repo":"platform","ref":"v2.1.0","path":"service"}
```

## Notes

- This tool is intentionally read-only. It does not support issue creation, pull request edits, pushes, or generic passthrough requests.
- All actions require a connected GitHub account via the existing `github_token` software connection.
- Pagination metadata includes `page`, `per_page`, `next_page`, `prev_page`, `has_next_page`, and `has_prev_page` when applicable.
- `list_commits` uses GitHub's commit listing endpoint and applies the `since_hours` filter by converting it to a GitHub `since` timestamp.
- `get_file` and `get_readme` return UTF-8 decoded text content for files up to 1 MB.
- `download_to_storage` downloads raw bytes (any file type) up to 100 MB and verifies integrity via git SHA1 before uploading to file storage.
- `download_repo_to_storage` downloads a full repository archive (or a filtered subdirectory) as a `.tar.gz` file up to 100 MB and uploads it to file storage.

### Frequently Asked Questions

#### How do I connect this tool to an external agent?

- Page URL: https://www.agentpmt.com/faq
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md

You can install the local MCP server by opening a terminal and running:

```
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

This will connect you to local agents like Claude Code, Windsurf, Grok Build, Cursor, etc.

Alternatively you can connect to the hosted version with this config block, no installation required:

```
{
  "mcpServers": {
    "agentpmt": {
      "type": "streamable-http",
      "url": "https://api.agentpmt.com/mcp",
      "headers": {
        "Authorization": "Bearer <AGENTPMT_BEARER_TOKEN>",
        "x-instance-metadata": "{\"client\":\"generic-mcp\",\"platform\":\"remote\"}"
      }
    }
  }
}
```

[View MCP Connection Instructions](/docs/mcp-reference/connection) for more details.

#### How does an external agent use this tool?

- Page URL: https://www.agentpmt.com/faq
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md

After the external agent is connected to an Agent Group that can use this tool, paste this prompt into the agent:

> Use the AgentPMT-Tool-Search-and-Execution tool. First call action 'get\_instructions' so you know how to use the tool search interface. Then call action 'get\_schema' with tool\_id 69c304d6385f218fb97453fb ("GitHub Repo Browser - Read Only"). After reading the schema and any returned instructions, tell me what this tool can do, we are going to be using it

The agent should fetch the tool schema first, collect the required parameters for your request, and then call the tool through AgentPMT.

### Dependencies

This product has no public dependency products.