# robots.txt — lifescenario.ai # Policy: open to search and AI assistants. See https://contentsignals.org/ for # the Content-Signal syntax. # # NOTE (RFC 9309 §2.2.1): a crawler obeys only its most specific matching # group. Named per-crawler "Allow: /" groups would therefore EXEMPT those # crawlers from every Disallow below — so there is deliberately ONE group. # Absence of a named group means allowed by default; AI crawlers (GPTBot, # ClaudeBot, PerplexityBot, Google-Extended, Bingbot, …) are welcome and # governed by the same product-route Disallows as everyone else. User-agent: * Allow: / Content-Signal: search=yes, ai-input=yes, ai-train=yes # --- Product routes: app shells with no indexable content --- # /sign-up, /sign-in, /profile-select, /play, /demo and /portal (an old # address that forwards to /sign-in) are deliberately NOT listed: they carry # , which crawlers can only see # if they are allowed to fetch the page. Disallow: /train$ Disallow: /train/ Disallow: /train-router Disallow: /child/ Disallow: /child-progress/ Disallow: /children/ Disallow: /parent/ Disallow: /dashboard Disallow: /profile$ Disallow: /my-progress Disallow: /my-collection Disallow: /session-results Disallow: /avatar-select Disallow: /avatar-demo Disallow: /unlock Disallow: /educator/ Disallow: /org/ Disallow: /games/ Disallow: /group-sessions/ Disallow: /admin/ Disallow: /auth$ Disallow: /auth/ Disallow: /complete-signup Disallow: /force-logout Disallow: /onboarding$ # --- API --- # /api/mcp is the public, read-only MCP endpoint that /llms.txt, /auth.md, # /.well-known/api-catalog and the MCP server card advertise, so it is allowed # (the longer rule wins; it is also listed first for parsers that stop at the # first match). It answers POST only: a GET is a 405, so there is nothing to # index. Every other API route stays closed. Allow: /api/mcp Disallow: /api/ # --- Parameterised entry points --- # Content pages link to /play?scenario=&ref=, /sign-up?scenario=…, # /sign-up?plan=… and /demo?ref=…: one URL per article and scenario page, all # of them the same app shell. Only the query-string variants are blocked ("?" # is literal here), so the bare pages stay fetchable and show their noindex. Disallow: /play? Disallow: /demo? Disallow: /sign-up? Disallow: /sign-in? Disallow: /profile-select? # --- Test/debug pages that should not exist in prod (slated for deletion) --- Disallow: /design-demo Disallow: /uxsystem-demo Disallow: /simple-avatar-test Disallow: /debug-auth Disallow: /test-email Disallow: /test-parent-guidance Disallow: /test-safety Disallow: /test-timeout Disallow: /FunFact Sitemap: https://lifescenario.ai/sitemap.xml