Odel
ChurnLens

ChurnLens

@kindrat86MITUpdated 2w ago

Buyer-side SaaS due-diligence maths: NRR, GRR, revenue concentration, zombie MRR, LTV:CAC.

Server endpointStreamable HTTPNo authProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

ChurnLens MCP server

Buyer-side SaaS due-diligence maths for AI agents. Net and gross revenue retention, revenue concentration risk, dormant ("zombie") MRR, LTV:CAC and a composite health score — computed from figures you supply.

Live endpoint: https://churnlens.site/api/mcp — streamable HTTP, MCP protocol 2024-11-05. No authentication, no account, no rate limit, and nothing you send is stored.

Install

Claude Desktop, Claude Code, or any client that speaks stdio:

npx mcp-remote https://churnlens.site/api/mcp

By config:

{
  "mcpServers": {
    "churnlens": {
      "command": "npx",
      "args": ["mcp-remote", "https://churnlens.site/api/mcp"]
    }
  }
}

A GET on the endpoint returns the manifest. The machine-readable descriptor is at /.well-known/mcp.json.

Tools

ToolWhat it returns
calculate_churn_rateNRR, GRR, revenue churn, correctly compounded annualised churn, and the NRR−GRR spread that exposes churn masked by expansion
analyze_revenue_concentrationHerfindahl-Hirschman Index, top-N revenue share, and which customers are large enough that losing one is a balance-sheet event
detect_zombie_mrrAccounts still paying but dormant past a threshold, and the ARR at risk behind them
score_saas_healthComposite 0–100 across retention, growth, concentration, efficiency and durability, plus the weakest dimension
calculate_ltvGross-margin-adjusted lifetime value, LTV:CAC and CAC payback in months
get_scoring_bandsEvery threshold the tools apply, with its provenance

Every tool returns structuredContent alongside the text block, so an agent gets typed numbers rather than prose it has to parse back out.

Example

calculate_churn_rate({
  starting_mrr:    100000,
  expansion_mrr:    37000,
  contraction_mrr:   5000,
  churned_mrr:      17000
})

// nrr_pct: 115, grr_pct: 78, expansion_masking_spread_pts: 37
// "A wide NRR-GRR spread: expansion revenue is masking substantial
//  churn underneath. Diligence should look at the retained base
//  separately from upsell."

A business reporting 115% net revenue retention sounds excellent. The same business at 78% gross revenue retention is losing nearly a quarter of its revenue base a year and covering the hole with upsell. Most dashboards show the first number and not the second.

On the scoring bands

get_scoring_bands returns thresholds, not measured data. They are informed by published industry benchmarks — SaaS Capital, Benchmarkit, Recurly and FE International — cited with sources at churnlens.site/benchmarks. Segment matters enormously: median retention for enterprise infrastructure and for SMB self-serve are not the same number. Do not present a band as though it were a survey result.

What it does not do

These tools compute from summary figures you supply. They cannot see what only emerges from customer-level data — cohort decay curves, renewal-cliff timing, concentration in specific logos. Treat them as a first-pass screen.

Verify the maths yourself

The same calculations are open source under MIT at kindrat86/saas-metrics — zero dependencies, every scoring band documented, 27 tests. A result from this server can be reproduced independently.

Interactive versions for humans, no signup: churnlens.site/free.

About

ChurnLens is a buyer-side SaaS due-diligence tool for acquirers, private-equity firms and M&A analysts.

Unaffiliated with the similarly named churnlens.io (retention automation) or churnlens.tech (churn prediction).

MIT licensed. Free.