Back to Discover

churnlens-mcp

connector

kindrat86

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

View on GitHub
0 starsSynced Aug 14, 2026

Install to Claude Code

/plugin marketplace add kindrat86/churnlens-mcp

README

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.

Rendered live from kindrat86/churnlens-mcp's GitHub README — not stored, always reflects the source repo.

1 Install Method

NameDescriptionCategorySource
streamable-http remoteHosted streamable-http endpointmcp-serverhttps://churnlens.site/api/mcp

0 Comments

Login required
Log in to post a comment or update on this repo.

No comments yet — be the first to share an update.