# glim.sh GitHub Search

> glim.sh GitHub Search is a paid API for AI agents from surf.cascade.fyi, paid per call via x402, $0.002/call, status unknown (last checked 2026-09-15).

Search GitHub repositories or conversations using GitHub search syntax, returning paginated results without requiring API keys.

## Facts

- Endpoint: POST https://surf.cascade.fyi/api/v1/github/search
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/glim-sh-github-search-e6211341
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_8ZhWypjAUcGKFOAALpltw

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability glim-sh-github-search-e6211341 -d '<json body>'
```

Example prompt: Search GitHub for repos related to 'x402 payment protocol' — show me the top 10 results, repos kind, first page.

## When to prefer this

Use this endpoint when an agent needs to search GitHub repositories or conversations without managing GitHub API credentials or scraping infrastructure. Ideal for discovering open source projects, finding code examples, or exploring discussions on GitHub topics in a pay-per-call model with no setup overhead.

## Known failure modes

- Invalid 'kind' enum value — only 'repos' or 'conversations' are accepted
- per_page exceeds 30 — returns error or clamped results
- Empty or malformed query string — may return zero results or an error
- Payment failure via x402 — endpoint returns 402 before delivering results
- GitHub upstream rate limit or downtime causing 5xx response

## How this service works

One remote endpoint gives your agent live data from Twitter, Reddit, the open web, GitHub and more. No API keys, no scraping stack - just connect the URL and go.

## Output

A JSON object containing a results array of matching repositories or conversations (e.g. with full_name fields), the total_count of matches, and a has_more boolean indicating whether additional pages are available.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "kind": {
   "enum": [
    "repos",
    "conversations",
    "code",
    "discussions"
   ],
   "type": "string",
   "description": "What to search: 'repos', 'conversations' (issues+PRs), 'discussions' (GitHub Discussions - a separate index from issues/PRs), or 'code' (literal/regex/symbol search across 2.8M+ public GitHub repos). Optional - inferred from the query: is:answered/category: implies discussions, is:/label:/author: implies conversations, path:/symbol:/content://regex/ implies code, stars:/topic:/in:readme implies repos, otherwise repos. type:code / type:repos / type:discussions in the query also works. A conversations search that matches nothing is retried as discussions, so an answer that lives in Discussions is not silently missed."
  },
  "page": {
   "type": "integer",
   "default": 1,
   "maximum": 10,
   "minimum": 1,
   "description": "Page number"
  },
  "repo": {
   "type": "string",
   "description": "Scope to one repository. Accepts 'owner/name', a github.com URL, or a partial 'owner/' (code). Works with any kind; setting it with kind=repos routes the search to conversations, since repo-name search can't scope to one repo. Equivalent to a repo: qualifier in the query (if both are given they must match)."
  },
  "query": {
   "type": "string",
   "maxLength": 1000,
   "minLength": 1,
   "description": "Search query in full GitHub search syntax: qualifiers (repo:owner/name, org:/user:, language:, path: with globs, symbol:, content:, is:, stars:>N, label:, sort:stars), boolean AND/OR/NOT with parentheses, \"exact strings\", and /regex/. kind=repos: minimal distinctive keywords - the project/library name (GOOD: 'rtk', 'react query'; BAD: 'rtk rust token killer' - every extra word must ALL match and buries the real repo; filter with qualifiers, not prose). kind=code: ONE literal code pattern as it appears in files ('useState('), an \"exact string\", a /regex/, or symbol:name for definitions; narrow with repo:/language:/path:, not extra words. kind=conversations: keywords plus filters (is:issue, label:bug). kind=discussions: keywords plus repo:/org:/author:/is:answered/category: - a separate GitHub index from issues/PRs, so a thread that lives in Discussions is invisible to kind=conversations (and vice versa). category: matches the repo's own category name (Ideas, Q&A) and needs a repo: scope; sort: does not apply. Caution: sort: REPLACES relevance ranking (sort:reactions = most-popular thread mentio
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "results": [
   {
    "full_name": "x402-foundation/x402"
   }
  ],
  "has_more": true,
  "total_count": 42
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/glim-sh-github-search-e6211341/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from surf.cascade.fyi](https://www.zero.xyz/host/surf.cascade.fyi/llms.txt)
