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
| Tool | What it returns |
|---|---|
calculate_churn_rate | NRR, GRR, revenue churn, correctly compounded annualised churn, and the NRR−GRR spread that exposes churn masked by expansion |
analyze_revenue_concentration | Herfindahl-Hirschman Index, top-N revenue share, and which customers are large enough that losing one is a balance-sheet event |
detect_zombie_mrr | Accounts still paying but dormant past a threshold, and the ARR at risk behind them |
score_saas_health | Composite 0–100 across retention, growth, concentration, efficiency and durability, plus the weakest dimension |
calculate_ltv | Gross-margin-adjusted lifetime value, LTV:CAC and CAC payback in months |
get_scoring_bands | Every 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.