--- name: stellar-ecosystem-scout description: Map a sector or topic of the Stellar ecosystem into a landscape of projects, categories, regions, and related content using the LumenLoop directory and semantic search. Use when the user asks to survey, map, or get an overview of an area of Stellar (e.g. 'what RWA projects exist', 'map Stellar DeFi', 'who is building wallets'). user-invocable: true --- # 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="", 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_projects` for project→project — that one maps a CONTENT > item to the projects it mentions (Pass 4). For project→project, always use > `find_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=, 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="")`. ### Pass 5 — Detail each project (slim shape) For every project that makes the landscape, pull the writer-friendly slim row: ``` get_project(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="", 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=, content_type="article") # Pass 5 — detail each keeper get_project(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:** — 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 — ` from Pass 4. - **Gaps / white space:** categories or capabilities with thin or no coverage. - **Go deeper:** route to `../stellar-project-dossier/SKILL.md` for any single project, `../stellar-integration-finder/SKILL.md` to pick a dependency, or `../stellar-builder-quickstart/SKILL.md` to turn the gap into a build plan. ## Gotchas - `search_directory` is keyword/ILIKE — SHORT terms ("wallet", "RWA", "oracle") hit; long NL phrases return 0. For concept discovery use `search_content_semantic` / `find_similar_projects_semantic`. - The content tools return AI SUMMARIES + a source `url`, not full article text — cite the url. - `get_related_projects` is content→projects (needs `content_id` + `content_type`); it is NOT project→project. Use `find_similar_projects_semantic` for that. - `get_project` default is a large full row; pass `compact=true` for 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.