MCP · Cascade · 94 tools · open source (MIT)

Your analytics, inside Windsurf.

Ship a feature in Windsurf, then ask Cascade “did it work?” without leaving the editor. One connect command wires the MCP server in, and that one connection operates every project in your org (pass project="checkout" to any tool). Because Cascade has your code and tracking plan, you can ask by your own names (“MAU for the PQR page”) and it resolves them to routes; answers are computed from deterministic reports, never generated SQL.

windsurf cascade · /whats-broken-today
you ▸ /whats-broken-today
ai ▸ One thing changed: signup is down 18% vs a typical day (94 vs 115), started around 14:00. Tracking is healthy: all 6 planned events flowing. Traffic is normal, referrer mix unchanged. This is a product problem, not a tracking problem. Most useful action today: check yesterday's deploy to the signup form.
computed from deterministic reports, not guessed SQL. (demo data)

what analytics works inside Windsurf?

smolanalytics is open-source (MIT) web and product analytics you ask from inside Windsurf. It ships an MCP server, and `smolanalytics connect windsurf` writes your org's single cloud MCP endpoint into ~/.codeium/windsurf/mcp_config.json with your org token, the file Windsurf reads its MCP servers from, so Cascade can call the tools. That one connection operates your whole org: pass project="checkout" to any of the 94 tools and it routes to that project's own instance, and you can provision a new project with create_project without opening a browser. Your secret read key stays server-side, never in your editor config, and the org token is permanent, so you set it up once and it persists. Once connected, Windsurf gets 94 tools and 15 built-in prompts (instrument-my-app, whats-broken-today, weekly-review, and more). Because Cascade also has your codebase and tracking plan, you can ask in your own terms, like "what's the MAU for the PQR page", and it resolves PQR to the /pqr route before querying. Answers are computed from exact, deterministic reports (funnels, retention, paths), never LLM-generated SQL. A plan-as-code gate (`smolanalytics plan check`) fails CI when an event your tracking plan expects stops firing, and it can run against existing PostHog data via --source=posthog before you migrate. You bring your own model, so asking from Cascade is never metered. Self-host the single Go binary free forever, or use the cloud at smolanalytics.com: 14-day full trial, then $19/month.

built for the agent loop

One command wires it into Cascade
smolanalytics connect windsurf writes your org's one MCP endpoint into ~/.codeium/windsurf/mcp_config.json with your org token, the path Windsurf reads MCP from, so Cascade can call it. 94 tools land: funnels, retention, paths, trends, instrumentation health, alerts. That single connection operates every project in your org: pass project="checkout" to any tool and it routes to that project's instance. Your secret read key stays server-side, never in your editor config, and the token persists, so you set it up once. Your model does the reasoning, so asking is free.
15 built-in prompts
Type / and pick a routine: instrument-my-app wires tracking on a fresh repo, whats-broken-today is the morning triage, weekly-review is the recap a good cofounder would give you. Each prompt calls the right tools in the right order and gives you the read, not a data dump.
Deterministic reports
The tools are computed reports, never generated SQL, so Cascade can't hallucinate a number it never computes. The editor's number is the dashboard's number.
Plan-as-code, gated in CI
Your tracking plan lives in smolanalytics.plan.json. smolanalytics plan check exits 1 when an event the plan expects stops flowing, so instrumentation drift fails the build, not the launch. Already on PostHog? Run it with --source=posthog: same gate, zero migration.

Honest pricing: self-hosting is free forever, one MIT-licensed Go binary. The cloud is a 14-day full trial, then Pro $19/mo (2M events, 2 instances) or Scale $49/mo (5M events, 10 instances); overage is a flat $6 per million, dashboard never locks. Asking from Cascade is never metered: it's your model.

Stop alt-tabbing to a dashboard.

Wire it into Windsurf in one command, gate your instrumentation in CI, and get the real number where you already work.

questions

How do I connect smolanalytics to Windsurf?
Run smolanalytics connect windsurf once: it writes your org's one cloud MCP endpoint into ~/.codeium/windsurf/mcp_config.json with your org token, the file Windsurf reads its MCP servers from, so Cascade can call the tools. That single connection operates every project: pass project="checkout" to any tool and it routes to that project's instance, and create_project spins up a new one without a browser. Your secret read key stays server-side, never in your editor config, and the token is permanent, so it persists after the one setup. You get 94 tools and 15 prompts. No API keys to us: your own model does the reasoning, so asking is never metered.
Can Cascade hallucinate my numbers?
No. The MCP tools are exact, deterministic reports (funnels, retention, paths), never LLM-generated SQL. You get the real number or nothing.
Can I fail CI when my tracking breaks?
Yes. Declare your tracking plan in smolanalytics.plan.json and run smolanalytics plan check in CI: it exits 1 when an event the plan expects stops flowing or a property goes missing. It also works against existing PostHog data with --source=posthog, so you can adopt the gate before migrating anything.

go deeper