{"serverId":"mcp-registry/io.github.kindrat86/churnlens","tools":[{"name":"analyze_revenue_concentration","fixed":{"name":"analyze_revenue_concentration","description":"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?","inputSchema":{"type":"object","required":["customer_mrrs"],"properties":{"top_n":{"type":"number","description":"How many top customers to aggregate for the top-N share. Default 5."},"customer_mrrs":{"type":"array","items":{"type":"number"},"description":"Per-customer MRR values. Order does not matter."},"whale_threshold_pct":{"type":"number","description":"Revenue share above which a customer counts as a whale. Default 25."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":199,"tokensAfter":199},{"name":"calculate_churn_rate","fixed":{"name":"calculate_churn_rate","description":"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.","inputSchema":{"type":"object","required":["starting_mrr"],"properties":{"churned_mrr":{"type":"number","description":"MRR lost to full cancellations."},"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)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":223,"tokensAfter":223},{"name":"calculate_ltv","fixed":{"name":"calculate_ltv","description":"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.","inputSchema":{"type":"object","required":["arpa","monthly_churn_rate_pct"],"properties":{"cac":{"type":"number","description":"Customer acquisition cost. Optional — supply it to get the ratio and payback."},"arpa":{"type":"number","description":"Average revenue per account, per month."},"gross_margin_pct":{"type":"number","description":"Gross margin percentage. Defaults to 100, which gives lifetime revenue."},"monthly_churn_rate_pct":{"type":"number","description":"Monthly churn, as a percentage."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":210,"tokensAfter":210},{"name":"get_scoring_bands","fixed":{"name":"get_scoring_bands","description":"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.","inputSchema":{"type":"object","properties":{"metric":{"enum":["nrr","concentration","health"],"type":"string","description":"Which band set to return: 'nrr', 'concentration', 'health', or omit for all."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":135,"tokensAfter":135},{"name":"score_saas_health","fixed":{"name":"score_saas_health","description":"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.","inputSchema":{"type":"object","required":["monthly_churn_rate_pct","nrr_pct","top_customer_share_pct","ltv_to_cac_ratio","annual_plan_share_pct"],"properties":{"nrr_pct":{"type":"number","description":"Net revenue retention, 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."},"monthly_churn_rate_pct":{"type":"number","description":"Monthly revenue churn, as a percentage (5 means 5%)."},"top_customer_share_pct":{"type":"number","description":"Largest single customer's share of revenue, as a percentage."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":265,"tokensAfter":265}],"toolsChanged":5,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}