ChurnLens
Buyer-side SaaS due-diligence maths: NRR, GRR, revenue concentration, zombie MRR, LTV:CAC.
Should I use this
Quality & Safety
Findings (2)
- HIGH
- MEDIUMin get_scoring_bands
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"churnlens": {
"url": "https://churnlens.site/api/mcp"
}
}
}Remote endpoints
https://churnlens.site/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟢calculate_churn_rate(starting_mrr, expansion_mrr, contraction_mrr, churned_mrr)
Calculate net revenue retention (NRR), gross revenue retention (GRR), revenue churn and implied customer lifetime from one period's MRR movements. Also reports the NRR-minus-GRR spread, which reveals how much churn is being masked by expansion revenue.
Input Schema
{
"type": "object",
"properties": {
"starting_mrr": {
"type": "number",
"description": "MRR at the start of the period, in any single currency unit."
},
"expansion_mrr": {
"type": "number",
"description": "MRR gained from upgrades and expansion within the existing base. Excludes new customers."
},
"contraction_mrr": {
"type": "number",
"description": "MRR lost to downgrades (customer retained)."
},
"churned_mrr": {
"type": "number",
"description": "MRR lost to full cancellations."
}
},
"required": [
"starting_mrr"
]
}🟢analyze_revenue_concentration(customer_mrrs, top_n, whale_threshold_pct)
Assess customer concentration risk across a book of revenue using the Herfindahl-Hirschman Index (HHI), top-N share and whale detection. Answers the question every acquirer asks first: how much revenue walks out with one logo?
Input Schema
{
"type": "object",
"properties": {
"customer_mrrs": {
"type": "array",
"items": {
"type": "number"
},
"description": "Per-customer MRR values. Order does not matter."
},
"top_n": {
"type": "number",
"description": "How many top customers to aggregate for the top-N share. Default 5."
},
"whale_threshold_pct": {
"type": "number",
"description": "Revenue share above which a customer counts as a whale. Default 25."
}
},
"required": [
"customer_mrrs"
]
}⚪detect_zombie_mrr(accounts, threshold_days)
Identify dormant-but-paying accounts — revenue that still counts in MRR but whose customers have stopped showing up. Zombie revenue is one renewal notice from cancelling and is invisible to standard revenue dashboards.
Input Schema
{
"type": "object",
"properties": {
"accounts": {
"type": "array",
"description": "One entry per paying account.",
"items": {
"type": "object",
"properties": {
"customer": {
"type": "string"
},
"mrr": {
"type": "number"
},
"days_since_last_activity": {
"type": "number"
}
},
"required": [
"mrr",
"days_since_last_activity"
]
}
},
"threshold_days": {
"type": "number",
"description": "Days of inactivity before an account counts as dormant. Default 90."
}
},
"required": [
"accounts"
]
}⚪score_saas_health(monthly_churn_rate_pct, nrr_pct, top_customer_share_pct, ltv_to_cac_ratio, annual_plan_share_pct)
Score a SaaS business 0-100 across five dimensions — retention, growth, concentration, efficiency and durability — and return the composite. Every mapping is published, so the score can be reconstructed by hand.
Input Schema
{
"type": "object",
"properties": {
"monthly_churn_rate_pct": {
"type": "number",
"description": "Monthly revenue churn, as a percentage (5 means 5%)."
},
"nrr_pct": {
"type": "number",
"description": "Net revenue retention, as a percentage."
},
"top_customer_share_pct": {
"type": "number",
"description": "Largest single customer's share of revenue, as a percentage."
},
"ltv_to_cac_ratio": {
"type": "number",
"description": "Lifetime value divided by customer acquisition cost."
},
"annual_plan_share_pct": {
"type": "number",
"description": "Share of revenue on annual contracts, as a percentage."
}
},
"required": [
"monthly_churn_rate_pct",
"nrr_pct",
"top_customer_share_pct",
"ltv_to_cac_ratio",
"annual_plan_share_pct"
]
}🟢calculate_ltv(arpa, monthly_churn_rate_pct, gross_margin_pct, cac)
Calculate gross-margin-adjusted customer lifetime value, the LTV:CAC ratio and CAC payback in months. Omitting gross margin yields lifetime revenue rather than lifetime value — usually a third of the number.
Input Schema
{
"type": "object",
"properties": {
"arpa": {
"type": "number",
"description": "Average revenue per account, per month."
},
"monthly_churn_rate_pct": {
"type": "number",
"description": "Monthly churn, as a percentage."
},
"gross_margin_pct": {
"type": "number",
"description": "Gross margin percentage. Defaults to 100, which gives lifetime revenue."
},
"cac": {
"type": "number",
"description": "Customer acquisition cost. Optional — supply it to get the ratio and payback."
}
},
"required": [
"arpa",
"monthly_churn_rate_pct"
]
}🟢get_scoring_bands(metric)
Return the scoring thresholds ChurnLens applies to NRR, revenue concentration and the composite health score. These are bands, not measured benchmark data — the sourced benchmark figures are cited at https://churnlens.site/benchmarks.
Input Schema
{
"type": "object",
"properties": {
"metric": {
"type": "string",
"description": "Which band set to return: 'nrr', 'concentration', 'health', or omit for all.",
"enum": [
"nrr",
"concentration",
"health"
]
}
}
}Community
Evidence