Stellar Ecosystem Scout
Turn a sector or topic ("RWA tokenization", "wallets", "DeFi", "cross-border payments") into a structured landscape: the projects that fill it, how they group by category and region, the controlled tags that describe them, and the editorial / news / talk / research content that explains the space — every content claim tied to a source url. This skill runs on LumenLoop's free, read-only Stellar ecosystem MCP at https://mcp.lumenloop.com (the public project directory, SCF data, and content library). It maps a space; it does not deep-dive one team or pick one dependency.
When to use this skill
- The user asks "what projects exist for X on Stellar" or "map / survey the X space".
- You need a landscape of a sector grouped by category and region before going deeper.
- You want to grow a cluster from one known project to its semantic neighbors.
- You need the narrative around a sector — articles, talks, research — with cited urls.
- You want to spot gaps / white space in a category before building or investing.
- The user names a fuzzy theme ("regenerative finance", "gaming") and wants the serious players plus the supporting content surfaced.
Related skills
- Set up / troubleshoot the connector and see all 18 tools →
../lumenloop-mcp-connect/SKILL.md. - Deep-dive ONE project you surfaced here (funding, talks, comparables) →
../stellar-project-dossier/SKILL.md. - Pick ONE dependency to integrate from a landscape (wallet/oracle/anchor/…) →
../stellar-integration-finder/SKILL.md. - Turn the landscape into a build plan (primitives, prior art, stack) →
../stellar-builder-quickstart/SKILL.md. - For actually BUILDING on Stellar (Soroban contracts, JS stellar-sdk / Freighter / Stellar Wallets Kit, classic assets + trustlines + SAC, Stellar RPC / Horizon data, SEP/CAP standards, Reflector oracle), see the Stellar developer docs at https://developers.stellar.org.
The scouting recipe
Work in five passes. Each pass is one or two tool calls; stop when the cluster stops growing and the narrative is covered.
| Pass | Goal | Tool(s) |
|---|---|---|
| 1. Frame | Learn the buckets | get_categories, get_regions, get_project_tags_vocabulary |
| 2. Seed | Find anchor projects | several SHORT search_directory queries |
| 3. Grow | Expand the cluster | find_similar_projects_semantic(slug, limit) |
| 4. Narrate | Add context + sources | search_content_semantic(query, types), then get_related_projects |
| 5. Detail | Slim project facts | get_project(slug, compact=true) |
Pass 1 — Frame the taxonomy
Pull the controlled vocabularies first so you bucket everything consistently and can name gaps in the project's own language.
get_categories()
get_regions()
get_project_tags_vocabulary()
get_categories() returns the five live buckets — Applications,
Developer Tooling, Education & Community, Financial Protocols,
Infrastructure & Services. get_regions() returns distinct based_in /
operating_region values for the geo view. get_project_tags_vocabulary() returns
the controlled PROJECT tags (e.g. "Wallet Infra", "Cross-Border Payments", "SDK",
"RWA") — these are the precise labels to slice the landscape by, and the best source
of SHORT seed terms for Pass 2. (Note: get_tags_vocabulary() returns CONTENT tags
for articles/AV, not project tags — don't confuse the two.)
Pass 2 — Seed by keyword (mind the ILIKE gotcha)
search_directory(query, limit?) is a keyword / ILIKE match over project
title, description, and other_names. SHORT terms win. A long natural-language
phrase matches nothing.
search_directory(query="real world assets tokenization") # → 0 results (too long)
search_directory(query="RWA") # → real hits
search_directory(query="tokenization") # → real hits
search_directory(query="asset") # → real hits
Fire several short, orthogonal queries to cover synonyms (for RWA: RWA,
tokenization, asset, stablecoin, real estate). Results come back as one JSON
object {count, projects}; each project row is
{slug, title, description, category, tags, website}. Collect the slugs — these are
your seeds. If a query returns 0, the response includes a recovery hint — shorten the
term or pivot to the semantic tools below.
Pass 3 — Grow the cluster semantically
Pick the most central seed slug and expand to its semantic neighbors. This beats tag/category matching for finding adjacent players you didn't have a keyword for.
find_similar_projects_semantic(slug="<seed-slug>", limit=10)
It returns projects similar to the seed by embedding distance. Run it on two or three different seeds and union the results to triangulate the cluster boundary; the overlap is the dense core of the sector, the long tail is the frontier.
Do NOT use
get_related_projectsfor project→project — that one maps a CONTENT item to the projects it mentions (Pass 4). For project→project, always usefind_similar_projects_semantic.
Pass 4 — Add narrative + cite sources
Layer the story on top of the project list with semantic content search. This is also
the rescue path when search_directory returned 0 for a long phrase.
search_content_semantic(query="real world asset tokenization on Stellar",
types=["articles"], limit=8)
types ⊆ articles | av | events | research (omit for a broad sweep; narrow for
speed). limit defaults to 5 per content type. It returns per-type arrays of
{id, title, url, domain, publishing_date, summary, slug, similarity} — pass
response_format="detailed" if you also want each hit's long_summary. These are
LumenLoop's AI-generated summaries plus the source url — cite the url, never quote
them as full article text. A query like the one above surfaces real explainers such
as "tokenization-basics".
For any salient article, map it back to the projects it discusses:
get_related_projects(content_id=<id-from-content-result>, content_type="article")
content_type ∈ article | av | event | research (plural/alias ok); the source must
be published. This often surfaces projects you missed in Pass 2/3 because the article
named them but the directory keyword didn't match. To pull direct quotes from talks
or podcasts about the sector, use find_av_passages(query="<sector>").
Pass 5 — Detail each project (slim shape)
For every project that makes the landscape, pull the writer-friendly slim row:
get_project(slug="<slug>", compact=true)
compact=true returns ~500 chars — slug, title, short description, category, tags,
twitter_handles, website, other_names — exactly what a landscape table needs. Omit
compact (default full row) only when you genuinely need the long record; for a
sector map the compact shape keeps it tight.
Worked example — mapping RWA / tokenization
# Pass 1 — frame
get_categories() # → Applications, Developer Tooling, Education &
# Community, Financial Protocols, Infrastructure & Services
get_project_tags_vocabulary() # → includes "RWA", "Stablecoins", "Cross-Border Payments"…
# Pass 2 — seed (short terms only)
search_directory("real world assets tokenization") # → 0 results — phrase too long
search_directory("RWA") # → seed slugs
search_directory("tokenization") # → more seeds
search_directory("stablecoin") # → adjacent seeds
# Pass 3 — grow from the strongest seed
find_similar_projects_semantic(slug="<rwa-seed-slug>", limit=10)
# Pass 4 — narrative + sources (also rescues the long phrase from Pass 2)
search_content_semantic(query="real world asset tokenization on Stellar",
types=["articles"], limit=8) # → e.g. "tokenization-basics"
get_related_projects(content_id=<that-article-id>, content_type="article")
# Pass 5 — detail each keeper
get_project(slug="<slug>", compact=true)
From there, assemble the landscape: group the projects by the five categories, note their tags and regions, list the cited content under "context", and call out which categories are crowded vs empty (the gaps).
Output: the landscape
Produce a landscape grouped by category, with a project table (slug + tags + region +
website), a cited-content section (one-line takeaway + source url per item), and an
explicit gaps / white-space note. Use the full template at
reference/landscape-template.md.
A skeleton:
- Sector: <topic> — one-sentence scope.
- Per category (Applications / Developer Tooling / Education & Community /
Financial Protocols / Infrastructure & Services): a table of projects
| project | slug | tags | region | website |. - Context & sources: bullet list, each
takeaway — <url>from Pass 4. - Gaps / white space: categories or capabilities with thin or no coverage.
- Go deeper: route to
../stellar-project-dossier/SKILL.mdfor any single project,../stellar-integration-finder/SKILL.mdto pick a dependency, or../stellar-builder-quickstart/SKILL.mdto turn the gap into a build plan.
Gotchas
search_directoryis keyword/ILIKE — SHORT terms ("wallet", "RWA", "oracle") hit; long NL phrases return 0. For concept discovery usesearch_content_semantic/find_similar_projects_semantic.- The content tools return AI SUMMARIES + a source
url, not full article text — cite the url. get_related_projectsis content→projects (needscontent_id+content_type); it is NOT project→project. Usefind_similar_projects_semanticfor that.get_projectdefault is a large full row; passcompact=truefor the slim shape.get_tags_vocabulary= content tags;get_project_tags_vocabulary= project tags.- If a tool stops appearing after a server update, reconnect the connector
(see
../lumenloop-mcp-connect/SKILL.md).
Further reading
- LumenLoop MCP overview and full tool catalog →
../lumenloop-mcp-connect/SKILL.md. - Stellar developer docs (build references) → https://developers.stellar.org.