← all tools
Data & sourcing

GitHub

Judge an engineer by their code, not by their CV.

GitHub is a data and sourcing tool, and one of the 53 tools hyreflow connects to Claude, ChatGPT and other AI assistants. Through hyreflow, an AI agent can run 16 actions, all of which look something up. GitHub costs no hyreflow credits, and you can connect your own GitHub key.

Cost per callfree
Your own keyoptional
CategoryData & sourcing

Your agent searches GitHub developers by language, location and project, reads what they have actually shipped, and scores it against your brief. Sometimes the email is right there on the profile. Often it is not, and enrichment picks that up.

GitHub runs before enrichment. It finds and qualifies the engineer; the waterfall finds the email.

What can you ask Claude or ChatGPT to do with GitHub?

With hyreflow connected, you ask for the outcome in plain language and the assistant runs GitHub for you. For example:

  • “Find Rust engineers in Berlin who contribute to open source, then get emails through Prospeo”
  • “Read this job brief url and find contributors whose work actually matches it”
  • “Who are the top contributors on this project? Enrich them with FullEnrich”
  • “Assess this candidate's real skill level and write the summary into Vincere”

Which tools work well with GitHub?

In a hyreflow run, GitHub is most often paired with Prospeo, FullEnrich, BuiltWith and Vincere.

  • Prospeo

    GitHub rarely carries the email, this finds it

  • FullEnrich

    the waterfall for developers with private commit addresses

  • BuiltWith

    find the companies running the stack these engineers know

  • Vincere

    file the technical assessment on the candidate

Which GitHub actions can an AI agent run through hyreflow?

Through hyreflow, an AI agent can run 16 GitHub actions, all of which look something up. GitHub costs no hyreflow credits, and you can connect your own GitHub key.

GitHub actionWhat it doesCost through hyreflow
Find user emailsLooks something upfree
Search codeLooks something upfree
Search profile matchLooks something upfree
Search repositoriesLooks something upfree
Search usersLooks something upfree
Candidate dossierLooks something upfree
Read fileLooks something upfree
User dossierLooks something upfree
List repo commitsLooks something upfree
List user eventsLooks something upfree
Show all 16 GitHub actions →
GitHub actionWhat it doesCost through hyreflow
List user followersLooks something upfree
List user reposLooks something upfree
Get repo contributorsLooks something upfree
Get repo treeLooks something upfree
Get userLooks something upfree
Get user social accountsLooks something upfree

One credit is priced on the pricing page. The full price list for every tool is in the pricing tables.

Which hyreflow skills use GitHub?

5 hyreflow skills call GitHub as part of the run. A skill is a whole pipeline your agent already knows, end to end.

Sourcing

Source engineers on proof of work instead of job titles

use whenyou are filling a developer role and the profiles all claim the same stack

GitHubAI ArkProspeoFirecrawlLeadMagicFullEnrich
starts from a job spec · 7 stepsget the prompt →
Signals

Reach displaced talent in the week the layoff lands

use whena company in your market has announced redundancies and there is a short window before everyone else calls

Layoff SignalFirecrawlGitHubAI ArkProspeoFullEnrichLeadMagicEnrichleySourceWhale
starts from just your niche · 7 stepsget the prompt →
Contact data

Find personal emails for candidates who are not looking

use whenthe people you want are in a job and not looking, and your approach must not land in an inbox their employer owns

LeadMagicFullEnrichWizaEnrichleyGitHub
starts from a list · 8 stepsget the prompt →
Research and mapping

Brief yourself on a candidate's public work before the first call

use whenyou have a first call booked with a candidate and want more than a skim of their profile, without straying into anything personal

AI ArkProspeoLeadMagicFirecrawlGitHubExahyreflow Nativehyreflow Agent
starts from a candidate · 7 stepsget the prompt →
Research and mapping

Map a company's engineering team from its public GitHub organisation

use whenyou are about to source from, or pitch to, a named tech company and want to know who builds what there before you open LinkedIn

GitHubPredictLeadshyreflow AgentAI ArkProspeoSerperLeadMagicFullEnrich
starts from a list · 7 stepsget the prompt →

How does an AI agent know how to use GitHub?

hyreflow ships a written playbook for GitHub, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.

Read the GitHub docs →
Show the raw playbookwritten for the agent

HOW in lib/github.py. Sourcing-relevant subset only; index: reference/docs/github/raw/endpoints.md.

Auth & config

  • REST: https://api.github.com · GraphQL: https://api.github.com/graphql.
  • Auth: PAT (fine-grained or classic) → Authorization: Bearer <token> (env GITHUB_TOKEN; never hardcode) + X-GitHub-Api-Version: 2022-11-28.
  • Rate limits: REST 5,000/hr · Search 30 req/min, 1,000-result cap · GraphQL ~5,000 points/hr. Search pagination: page/per_page (≤100); iter_search_users respects the cap. Adapter auto-sleeps on 403/429 rate-limit + transient 5xx.

Operations

Discovery: search_users/iter_search_users, search_repositories, search_code. Profile + skill signal: get_user, list_user_repos, get_repo_contributors, list_user_followers. Ops: get_rate_limit. graphql(query, variables) — generic passthrough (one endpoint; you specify the fields) for rich single-call dossiers: profile + socialAccounts (linked LinkedIn/Twitter) + top languages + pinned repos + contributionsCollection.

Pulling contact details when they ARE listed/derivable

GitHub does expose contact info three ways — try these before falling back to the waterfall:

  1. Public profile email + site + twitter: get_user(username) → email (if the dev set one public), blog, twitter_username, bio.
  2. LinkedIn / social links (the icons under the avatar): get_user_social_accounts(username) → [{provider, url}] (linkedin, mastodon, …). Also in GraphQL user.socialAccounts.
  3. Commit-email harvest (when the profile email is private): find_user_emails(username) walks their recent owned repos' commits and returns real emails, dropping *@users.noreply.github.com proxies. (Primitives: list_repo_commits(author=…), list_user_events.)

⚠️ The recruiter reality

  • Even with the above, many devs have no usable email on GitHub (private email + noreply commits). So GitHub is still primarily discovery + skill signal → if 1–3 come up empty, hand name + company + GitHub/LinkedIn to the enrichment waterfall. GitHub slots in before enrichment.
  • Run narrow search queries (rate cap; find_user_emails is bounded by max_repos). Keep outreach human-paced (ToS).

Handoff (IT candidate sourcing)

search_users/get_repo_contributors by language+location → get_user+list_user_repos (skill signal) → score vs the JD (agent, free) → enrich email (waterfall) → validate → ATS (Vincere/Bullhorn) → sequencer (SourceWhale/Lemlist/HeyReach). The engineer-sourcing front-end for the "source & shortlist" recipe.

Callable surface — lib/github.py

Import: from lib.github import GitHub → instantiate GitHub() (reads key from env). Base: https://api.github.com. Generic passthrough: request(method, path, *, params, json).

  • candidate_dossier(full_name: str | None = None, *, github_url: str | None = None, company_name: str | None = None, location: str | None = None, linkedin_url: str | None = None, jd_keywords: list[str] | str | None = None, max_candidates: int = 5, max_repos: int = 12, include_emails: bool = True) -> dict[str, Any] — End-to-end IT-sourcing GitHub leg: match identity → build dossier → score repos vs JD.
  • find_user_emails(username: str, *, max_repos: int = 10) -> list[str] — Harvest candidate emails from a user's public commits (when the profile email is private).
  • get_rate_limit() -> Any — GET /rate_limit — remaining REST/Search/GraphQL budget for the caller's own GitHub token; requires the workspace's own token.
  • get_repo_contributors(owner: str, repo: str, **params) -> Any — GET /repos/{owner}/{repo}/contributors — source the people who build a given project.
  • get_repo_tree(owner: str, repo: str, *, ref: str = 'HEAD', recursive: bool = True) -> Any — GET /repos/{owner}/{repo}/git/trees/{ref} — list every path in the repo in one call.
  • get_user(username: str) -> Any — GET /users/{username} — profile: name, company, location, blog, email (if public), hireable, counts.
  • get_user_social_accounts(username: str) -> Any — GET /users/{username}/social_accounts — the linked social accounts shown on the profile (e.g. LinkedIn, Mastodon, Twitter): list of {provider, url}. This is where a profile's LinkedIn lives.
  • graphql(query: str, variables: dict | None = None) -> Any — POST /graphql — run any GraphQL query/mutation. Best for rich single-call candidate dossiers (profile + socialAccounts + top languages + pinned repos + contributions in one round-trip).
  • iter_search_users(q: str, *, per_page: int = 100, max_results: int = 1000, **params) -> Iterator[dict] — Paginate /search/users up to GitHub's 1,000-result cap.
  • list_repo_commits(owner: str, repo: str, *, author: str | None = None, per_page: int = 100, **params) -> Any — GET /repos/{owner}/{repo}/commits — commits (filter by author=username). Each carries commit.author.email / commit.committer.email — the basis for commit-email harvesting.
  • list_user_events(username: str, **params) -> Any — GET /users/{username}/events/public — public activity (PushEvents carry commit author emails).
  • list_user_followers(username: str, **params) -> Any — GET /users/{username}/followers — network expansion.
  • list_user_repos(username: str, *, sort: str = 'pushed', per_page: int = 100, **params) -> Any — GET /users/{username}/repos — skill signal: languages, stars, recency. sort: pushed|updated|created|full_name.
  • read_file(owner: str, repo: str, path: str, *, ref: str | None = None) -> Any — GET /repos/{owner}/{repo}/contents/{path} — read one file, authenticated + decoded.
  • search_code(q: str, *, per_page: int = 30, page: int = 1, **params) -> Any — GET /search/code — find code (derive authors using a specific tech). Stricter rate limit.
  • search_profile_match(full_name: str, *, company_name: str | None = None, location: str | None = None, linkedin_url: str | None = None, max_candidates: int = 5) -> dict[str, Any] — Name → likely GitHub identity matches with confidence scoring.
  • search_repositories(q: str, *, sort: str | None = None, order: str | None = None, per_page: int = 30, page: int = 1) -> Any — GET /search/repositories — q e.g. 'language:rust stars:>500 topic:cli'. sort: stars|forks|updated.
  • search_users(q: str, *, sort: str | None = None, order: str | None = None, per_page: int = 30, page: int = 1) -> Any — GET /search/users — find developers. q e.g. 'location:Berlin language:Go followers:>50 repos:>10'.
  • user_dossier(username: str, *, jd_keywords: list[str] | str | None = None, max_repos: int = 12, include_emails: bool = True) -> dict[str, Any] — Return a recruiter-ready GitHub dossier for one user.

Questions about GitHub and hyreflow

Can I use GitHub inside Claude or ChatGPT?

Yes. hyreflow is a connector for Claude, ChatGPT and other AI assistants. Once hyreflow is connected, you ask for the outcome in plain language and the assistant calls GitHub for you. hyreflow exposes 16 GitHub actions this way.

Do I need my own GitHub account to use it with hyreflow?

No. GitHub needs no account to use through hyreflow, though you can connect your own GitHub key.

What does GitHub cost through hyreflow?

GitHub costs no hyreflow credits, and you can connect your own GitHub key.

How do I connect GitHub to an AI agent over MCP?

Add the hyreflow MCP server to your assistant and sign in. hyreflow calls the GitHub API directly and exposes its actions as tools the assistant can run, so there is no separate GitHub server to install.

Connect hyreflow to your assistant →

Put GitHub to work from one prompt

Connect hyreflow to Claude or ChatGPT and ask for the outcome. It reads the playbook above before it makes a single call.