Skip to main content
Glama
Lipdog
by Lipdog

search_repos

Read-onlyIdempotent

Find GitHub repositories by running multiple query phrasings in parallel. Results are ranked by description and topic match, not just star count, to surface quality gems for development reference.

Instructions

Discover GitHub repositories — the go-to tool for finding real, maintained, coherent repos during a coding session. Optimized for "find reference implementations / prior art / learning material / small-but-quality gems in an ecosystem," NOT for "rank by raw popularity." Returns per-result: name, full description, topics, primary language, star count, last-push date, license, homepage, and archived status.

Dev-session use cases this serves well:
  • "Rust agent harness — what are my options?" — finds frameworks/harnesses ranked by literal relevance, not star count
  • "Python async rate limiter — show me existing libraries" — dedicated libs beat big frameworks
  • "What's the landscape of LLM observability tools?" — surfaces the actual category leaders
  • "Is there already a tool for managing Claude Code sessions?" — hyper-specific gem hunting, small focused CLIs float up
  • "What's new in this ecosystem this week?" — set `trending=True` for repos created in the last 7 days
  • "Disambiguate a name the user mentioned" — one-hop metadata lookup

Ranking (multi-query mode): composite relevance score combining literal description match × 3, topic-tag match × 2, cross-phrasing robustness × 2, recency bonus (0-3), and log-scaled stars at half-weight. Stars are a TIEBREAK, not a driver — this is why a 500-star literal-match repo can outrank a 40,000-star repo that doesn't contain the query terms in its description. Tested against 6 dev-session queries in benchmarks/rank_experiment.py; composite scoring produced the best top-5 on 5/6 queries and consistently surfaced small-but-quality gems that star-first ranking buried.

Query sharpness — most→least noisy:
  • `topic:X` — self-assigned tags. Noisy for umbrella terms (e.g. `topic:mcp` returns opportunistic taggers like n8n). Sharp for tight niches (`topic:ratatui`).
  • `in:readme "phrase"` — matches any mention in the README. Medium.
  • `in:description "phrase"` — matches repos whose short description contains the phrase. Sharpest, but note that GitHub does literal substring matching — so `"embeddings database"` will also match "embedded database" (burned in testing). Prefer specific, domain-meaningful phrases.

SHORTLISTING — always use `queries=[...]` with 2-4 phrasings. Single-phrase `in:description` is sharp but narrow; popular options routinely describe themselves with different wording. For example, `in:description "Postgres operator"` returns Zalando's postgres-operator (5k★) but misses CloudNativePG (8k★), which describes itself as "Kubernetes-native PostgreSQL." Passing both phrasings via `queries=` runs them in parallel, dedupes by repo, and annotates each result with `matched K/N`. Recipe for concept X in language L: `queries=['in:description "X" language:L', 'in:description "X synonym" language:L', 'topic:X-slug language:L']`.

Other tips: keep queries short (GitHub uses AND logic — more terms = fewer results). Use the `language` filter instead of putting the language in the query. Use `archived:false` to exclude abandoned repos. Use `pushed:>YYYY-MM-DD` to filter by activity. For strict popularity filtering (production dependency shortlisting), add `stars:>N` explicitly — the tool no longer applies a star floor by default because gem-finding needs to see small repos.

NOT for: searching code inside repos (use `search_code`), fetching a repo you already know by name (use `get_file`/`repo_tree`), or authoritative library popularity (check package registries via `search_packages`).

IMPORTANT: repo search does NOT support file-level qualifiers like path:, filename:, extension:, content:, symbol: — GitHub silently matches them as literal content, giving misleading results with no error. Use `search_code` for those.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryNoRepository search query. Keep short (1-2 terms) — AND logic means more terms = fewer results. Use topic: for ecosystem discovery. Repo-search qualifiers: in:, repo:, user:, org:, size:, followers:, forks:, stars:, created:, pushed:, language:, topic:, license:, is:, mirror:, archived:, template:. File/content qualifiers (path:, filename:, extension:, content:, symbol:) are NOT supported by repo search — use `search_code` for those.
queriesNoList of query phrasings to run in parallel and merge. STRONGLY PREFERRED over `query` for shortlisting work — pass 2-4 different phrasings of the same concept (e.g. ['in:description "Postgres operator"', 'in:description "PostgreSQL" in:description "Kubernetes"', 'topic:postgres-operator']) and the tool will run them concurrently, dedupe by repo, and rank the union. Each result is annotated with `matched K/N` showing how many of your phrasings found it — a popular option found by only one phrasing would have been missed by a single-query call. If both `query` and `queries` are set, `query` is prepended to the list.
topicNoFilter by topic.
languageNoFilter by programming language.
trendingNoIf true, find repos created in the last 7 days sorted by stars.
sortNoSort by: stars, forks, updated, or best match.best match
orderNoSort order: asc or desc.desc
pageNoPage number.
per_pageNoResults per page (max 100).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, idempotentHint), the description details the ranking algorithm (composite relevance, star tiebreak), multi-query merging, and potential pitfalls (substring matching, noisy topic tags). This fully discloses behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections and examples, but slightly verbose. Could trim some repetition in use-case examples while retaining all necessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description lists return fields and explains ranking behavior. It covers all parameters and provides complete guidance for effective use, making it highly self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds significant value: explains query vs queries interaction, provides query examples, warns about unsupported qualifiers, and gives usage advice for language, archived, and stars filters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Discover GitHub repositories' for finding maintained, coherent repos. It distinguishes from siblings like search_code, get_file, and search_packages by specifying what the tool is NOT for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides extensive guidance on when to use (e.g., 'find reference implementations', 'prior art', 'gem hunting') and when not to use (e.g., 'searching code inside repos'). It includes specific examples and tips like using queries parameter and avoiding file qualifiers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Lipdog/fossick-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server