Public endpoints
Every endpoint Scout calls is public, read-only, no auth, edge- cached (5 minutes for ecosystem data, 24 hours for the SDF skill proxy). Hit them from your agent, your dashboard, your Dune query, or anywhere else.
/api/hackathonsMerged feed of curated Stellar hackathons (from the Payload directory) and live DoraHacks events (SDF + Tellus orgs). Each row tagged with `source: 'curated' | 'dorahacks'`.
| Name | Type | Description |
|---|---|---|
| status | string | upcoming | active | completed |
| organizer | string | Slug of organizer entity |
| source | string | curated | dorahacks (restrict to one feed) |
| limit | number | Max rows (default 100, max 300) |
- ·.hackathons[*] — id, name, slug, dates, status, externalUrl, organizer, source, prizePoolUSD (DoraHacks only), hackersCount (DoraHacks only), url
- ·.meta.counts.{curated, dorahacks, returned} — coverage stats
/api/hackathons/{slug}Single curated hackathon detail — submissions, winners, prize-track aggregation, post-hack outcome funnel.
- ·.hackathon.stats — totalSubmissions, totalPrizeUSD, winners count, outcome funnel (built / inProgress / abandoned / unknown)
- ·.hackathon.tracks[*] — prize tracks derived from past submissions: { name, winnerCount, submissionCount, totalPrizeUSD }
- ·.winners[*] — projects that placed
- ·.submissions[*] — every submission with placement, prize, track
Only works for slugs in the curated Payload Hackathons collection. DoraHacks-sourced slugs return 404 — for those, see the externalUrl in the list endpoint.
/api/buildersStellar builder directory (synced from Stellar Passport). Small + growing dataset — opt-in profiles only.
| Name | Type | Description |
|---|---|---|
| q | string | Free-text match across bio + role + project names |
| location | string | Substring match against location field |
| scfTier | string | Filter by SCF tier |
| featured | 1 | Featured profiles only |
| limit | number | Max rows (default 50, max 200) |
- ·.builders[*] — githubUsername, displayName, bio, roleTitle, location, scfTier, projects[], url
When fewer than 3 builders match, the SKILL.md instructs the agent to surface that explicitly and recommend Stellar Discord #builders + the Stellar GitHub org as fallback channels.
/api/projects/searchSearch existing Stellar projects. Keyword-scored matches across name + short description + category. The workhorse for Deep Dive step 2 ("has anyone built this?").
| Name | Type | Description |
|---|---|---|
| q | string | Keywords to score against |
| category | string | Filter by project category |
| hackathon | string | Filter to one hackathon by slug |
| scfAwarded | 1 | Only SCF-funded projects |
| limit | number | Max rows (default 20, max 100) |
- ·.projects[*] — scored by keyword overlap, sorted by relevance; includes scfAwarded flag, scfTotalAwardedUSD, hackathon (if any), hackathonPlacement, hackathonPrize, hackathonPrizeTrack
/api/rfpsConfirmed Stellar RFPs / sponsor briefs — problem statements that get funded by the Stellar Community Fund when winners are picked. Native source for "is there an open RFP matching my idea?" Backed by src/data/ideas.ts (curated). Mirrors what's on /ideas.
| Name | Type | Description |
|---|---|---|
| q | string | Free-text match across title + description + technical requirements + category |
| category | string | ai | consumer-dapps | defi | developer-tooling | gaming | infrastructure | nfts | payments | scf | web3-social |
| quarter | string | q1-2026 | q2-2026 (more added as new rounds open) |
| limit | number | Max rows (default 100, max 200) |
- ·.rfps[*] — id, title, description, technicalRequirements, category, categoryLabel, authorName, quarter, quarterLabel, url
- ·.meta.categories, .meta.quarters — full enums for client-side filtering
- ·.funding — clarifies that winners are SCF-funded
/api/skillsCatalog of the 7 official Stellar Foundation skills from skills.stellar.org (soroban, dapp, assets, data, agentic-payments, zk-proofs, standards).
- ·.skills[*] — name, description, userInvocable, argumentHint, url, rawUrl
Server-cached for 24h via the upstream Next.js revalidate hint.
/api/skills/{name}Full content of one SDF skill. Use in Deep Dive step 5 (SDK recommendation) to quote/summarize inline before pointing the user at the upstream install URL.
- ·.skill.content — full SKILL.md markdown (frontmatter included)
- ·.skill.{name, description, userInvocable, argumentHint, url, wordCount}
/api/leaderboardStellar ecosystem developer-activity stats and ranked project leaderboard. Backed by the daily Electric Capital snapshot + GitHub Signals.
| Name | Type | Description |
|---|---|---|
| sort | string | activity | stars | issues |
| range | string | 7d | 30d | 90d | 1y | all |
| category | string | Filter by project category |
| limit | number | Max rows (default 50) |
| format | string | json (default) | csv |
- ·.ecosystem.{activeDevs28d, commits28d, fullTimeDevs, ...}
- ·.projects[*] — ranked
/api/statusSelf-check + data freshness. Call this on first invocation so you can surface dataset age in answers.
- ·.ok, .service, .version, .generatedAt
- ·.sources[*] — per-source { name, count, lastUpdatedAt, notes? }
- ·.endpoints[*] — full catalog
- ·.docs, .skill — canonical URLs
Source
All endpoints live in alexanderkoh/stellarlight. The skill manifest that documents them is in Stellar-Light/stellar-scout.