streamable-httpMITupdated 16d ago
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.
What can you do with ChurnLens?
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.
Install
Add ChurnLens to your client. Pick the one you use.
claude mcp add --transport http churnlens https://churnlens.site/api/mcpcodex mcp add churnlens --url https://churnlens.site/api/mcp{
"mcpServers": {
"churnlens": {
"url": "https://churnlens.site/api/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"churnlens": {
"type": "http",
"url": "https://churnlens.site/api/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"churnlens": {
"url": "https://churnlens.site/api/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"churnlens": {
"serverUrl": "https://churnlens.site/api/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
6 tools
ChurnLens exposes 6 tools to a connected agent.
- 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
Score
72 / 100
Good
- Documentation22/25
- Maintenance19/25
- Trust13/20
- Capability6/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 9 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 6 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 1.0.1Latest | Aug 14, 2026 |
| 1.0.0 | Jul 19, 2026 |