MCP App Store
by KeenEthics

Overview

Churn Solution's MCP server gives AI assistants secure access to your cancellation and retention data. Using natural language, investigate why customers leave, measure the impact of your cancel flows, identify at-risk accounts and revenue, track retention trends, and answer complex questions about your subscription business. Built for founders and growth, product, and finance teams, it turns Churn Solution data into actionable retention insights and faster decisions.

Tools

get_cancel_flow_metrics

ChatGPT
Cancel-flow (cancellation/save) headline metrics for your company over a period. READ-ONLY. With no from/to these are the all-time figures on the dashboard "Core Metrics" card; pass from/to to scope them to a window. USE WHEN: the user asks about cancellation sessions, how many were saved, the save rate, the reactivation rate, HOW MANY SAVED CUSTOMERS ACTUALLY CONTINUED PAYING / kept paying / stayed subscribed / renewed after being saved (that is reactivated_subscriptions — see below), saved revenue, or how many customers/how much revenue is pending or at risk now. Returns: sessions, saved_sessions, save_rate, saved_subscriptions, reactivated_subscriptions, should_have_reactivated_subscriptions, reactivation_rate, saved_revenue_usd, and current pending/at-risk customer counts + revenue. TERMINOLOGY: a "session" is one time a customer went through your cancel flow (user-initiated; passive/webhook cancellations are NOT counted), and "cancelled" includes pending cancellations. saved_sessions counts save EVENTS (sessions retained); saved_subscriptions is the "Customers Saved" figure (distinct subscriptions/customers saved). save_rate is SESSION-based (saved_sessions / sessions) — do NOT divide saved_subscriptions by sessions. reactivated_subscriptions = saved subscriptions that ACTUALLY continued paying after being saved (they went on to make a subsequent successful charge). This is the number to answer "how many saved customers actually continued paying / kept paying / stayed / renewed after being saved". Do NOT try to compute that from search_cancel_flow_sessions or subscription_status — read reactivated_subscriptions here. should_have_reactivated_subscriptions = saved subscriptions that were due to bill again (the denominator); reactivation_rate = reactivated_subscriptions / should_have_reactivated_subscriptions. sessions/saved/revenue are period-scoped; pending/at-risk are a live snapshot ("now"). Requires the revenue-stats entitlement.

get_cancel_flow_outcomes_by_flow

ChatGPT
Cancel-flow outcomes broken down per cancel flow (audience / A-B variant) for the period. READ-ONLY. USE WHEN: the user asks which cancel flow performs best/worst, or wants save rate or retained/cancelled counts compared across their cancel flows or audiences (not the single company-wide total that get_cancel_flow_metrics returns). Returns one row per flow: flow_name, sessions, saved_sessions, cancelled, save_rate (saved_sessions / sessions). Sorted by sessions, busiest flow first. Period-scoped by from/to. NOTE: this is the dashboard "Sessions Outcomes" view — it counts only sessions that reached a recorded outcome, so the summed sessions/save_rate can differ slightly from the headline in get_cancel_flow_metrics (the "Core Metrics" definition, which counts every cancel-flow session).

get_cancel_flow_revenue

ChatGPT
"Boosted Revenue" from the cancel flow over time, for your company (USD). READ-ONLY. This is the dashboard's Boosted Revenue chart with its two series. USE WHEN: the user asks how much revenue the cancel flow saved/retained, wants a revenue trend, OR asks about FORECASTED / projected / expected future revenue. Returns per bucket: period_start, period_end, saved_revenue_usd (REALIZED — saved charges already collected in that bucket) and forecasted_revenue_usd (FORECASTED — projected upcoming-invoice revenue for still-active saved subscriptions whose next invoice falls in that bucket, discounted by the reactivation rate). IMPORTANT: a forecast is only produced for roughly the next 2 months (upcoming invoices); past buckets and buckets more than ~2 months out have forecasted_revenue_usd = 0 — that is expected, not missing data. So for "forecasted revenue in <month>", use granularity=MONTH and read forecasted_revenue_usd for that month (it is only non-zero if that month is within the forecast horizon). granularity=TOTAL (default) returns a single bucket over [from,to]; MONTH returns a monthly series (revenue is stored monthly).

get_cancel_flow_revenue_by_offer

ChatGPT
Realized "boosted revenue" broken down by save method / accepted offer, for your company (USD). READ-ONLY. This mirrors the dashboard's "Added Revenue From X" cards. USE WHEN: the user asks how much revenue each offer / save method / deflection brought in, or which offer drives the most saved revenue (e.g. "boosted revenue for each offer", "revenue from coupons vs pauses"). Returns one row per method: method (the SaveStatus — COUPON, PAUSE, ABANDONED, CONTACT, TRIAL_EXTENSION, SWITCH_PLAN, SEND_TO_PAGE, SWITCH_PRODUCT, ...), boosted_revenue_usd (REALIZED revenue collected from subscriptions saved via that method), saved_subscriptions, and reactivated_subscriptions — highest revenue first. IMPORTANT: boosted_revenue_usd is realized collected revenue, NOT amount_at_risk. Do NOT compute per-offer revenue yourself by summing session amount_at_risk from search_cancel_flow_sessions — that is a different, larger measure and will be wrong. Use this tool for per-offer revenue.

get_cancel_flow_save_rate

ChatGPT
Cancel-flow save rate over time for your company. READ-ONLY. USE WHEN: the user asks how the save rate (or churn rate) is trending, this month vs last, or wants a save-rate/churn time series. granularity=TOTAL (default) returns a single bucket over [from,to]; MONTH or DAY returns a series. Returns per bucket: period_start, period_end, retained, cancelled, save_rate. Churn rate = 1 - save_rate (cancelled / (retained + cancelled)). This is the dashboard "Save Rate" chart (session-level; retained vs cancelled cancel-flow sessions that reached an outcome, user-initiated, cancelled includes pending). Its total can differ slightly from get_cancel_flow_metrics.save_rate (the "Core Metrics" definition, which counts every cancel-flow session). For the distinct saved-customers count use get_cancel_flow_metrics.saved_subscriptions.

get_feedback_category_breakdown

ChatGPT
Customer-feedback counts broken down by category and sentiment for your company over a period. READ-ONLY. USE WHEN: the user asks what customers give feedback about — the topics/categories (e.g. Pricing, Usability, Support) and how sentiment splits within each. Returns rows of { category, sentiment, count }, busiest first. Only classified feedback is counted.

get_feedback_sentiment_trend

ChatGPT
How customer-feedback sentiment breaks down (and trends) for your company over a period. READ-ONLY. USE WHEN: the user asks about feedback sentiment — how positive/negative feedback is, or how it's trending. granularity=TOTAL (default) returns one count per sentiment over [from,to]; MONTH returns a per-month series (period = "YYYY-MM"). Only classified feedback is counted (see this product's note); to read the raw comments use search_cancel_flow_sessions.

list_cancel_flow_cancellation_reasons

ChatGPT
Top reasons customers gave for cancelling, with counts, for your company over a period. READ-ONLY. USE WHEN: the user asks why customers cancel/churn or wants the most common cancellation reasons overall. Returns reasons sorted by count (highest first). To break the reasons down per plan, use list_cancel_flow_cancellation_reasons_by_plan instead. Counts reflect only cancel-flow sessions where the customer actually selected a reason (cancelled or pending-cancel, user-initiated); passive/webhook cancellations with no reason are excluded, so these totals are smaller than raw cancellation counts and match the dashboard's reason breakdown.

list_cancel_flow_cancellation_reasons_by_plan

ChatGPT
Top cancellation reasons broken down per plan, for your company over a period. READ-ONLY. USE WHEN: the user wants to compare why customers cancel across plans/tiers. Returns a list of { plan_external_id, reasons: [...] }; within each plan reasons are sorted by count (highest first). For a single overall list (not per plan), use list_cancel_flow_cancellation_reasons.

list_cancel_flow_offer_performance

ChatGPT
Retention-offer performance (accepted vs declined, with acceptance rate) per offer type, for your company over a period. READ-ONLY. USE WHEN: the user asks which retention offers work, offer acceptance rates, or which offers to kill (e.g. acceptance below a threshold). Returns per offer_type: accepted, declined, acceptance_rate (0..1). Optionally keep only offers at or below max_acceptance_rate.

list_connections

ChatGPT
List the connections (payment gateways) for your company. READ-ONLY. USE THIS FIRST: other analytics tools accept one or more connection ids (company_gateway_id). Call this to discover them, then pass the chosen id(s) as 'connection_ids' to the analytics tools. Returns: company_gateway_id, external_name (human label, may be null), account_id, gateway type, and whether the connection is live or test. Scope: only your own company's connections; you cannot see other companies'. Omit from/to to list ALL connections (the default for discovery); pass a window to keep only connections that had subscription activity in it.

list_feedback_intents

ChatGPT
Customer-feedback counts by intent for your company over a period. READ-ONLY. USE WHEN: the user asks what customers are trying to do / express in their feedback (their intent, e.g. Suggestion, Complaint). Returns { intent, count }, most common first. Only classified feedback is counted.

list_plans

ChatGPT
List the subscription plans seen across your company's connections. READ-ONLY. USE WHEN: you need to filter analytics by plan or map a plan to a human label. The analytics store has no plan name, so 'label' combines the plan's external id with an amount/interval summary. Returns: plan_external_id, label, unit_amount, currency, interval. Omit from/to to list ALL plans (the default for discovery); pass a window to keep only plans with subscription activity in it.

search_cancel_flow_sessions

ChatGPT
Search individual cancel-flow sessions for your company (paginated). READ-ONLY. USE WHEN: the user wants to list/inspect specific cancellation sessions or customers — e.g. high-MRR customers who cancelled, sessions for a given reason/sentiment/plan, who is pending cancellation, or to read/search the verbatim feedback customers left (e.g. "who asked for a refund?" → set feedback_contains). Each row has the session status, plan, cancellation reason, the customer's verbatim feedback_text, its sentiment/category/intent, amount_at_risk_usd, mrr_usd, and current subscription_status. NOTE: feedback_text is what the customer typed; sentiment/category/intent are classifier output and are null when the feedback hasn't been classified. SAVED CUSTOMERS: each row has a boolean saved — this is the dashboard's "saved customer / saved session" definition: the customer was RETAINED (session status is neither CANCELLED nor PENDING_CANCEL). Every deflection outcome counts as saved — PAUSE, COUPON, UNCANCELLED, TRIAL_EXTENSION, CONTACT, SEND_TO_PAGE, SWITCH_PLAN/PRODUCT, etc. saved is about the flow outcome and is INDEPENDENT of the current subscription_status (a saved customer may have churned later). To list saved customers set saved=true (e.g. "saved customers who accepted the send-to-page offer" → saved=true AND statuses=["SEND_TO_PAGE"]); set saved=false for only cancelled sessions. Filter by any combination; sort by CREATED_AT_DESC (default), AMOUNT_AT_RISK_DESC, or MRR_DESC. Use page/page_size to paginate; the result's has_more tells you whether to fetch the next page.

get_cancel_flow_metrics

Claude

get_cancel_flow_outcomes_by_flow

Claude

get_cancel_flow_revenue

Claude

get_cancel_flow_revenue_by_offer

Claude

get_cancel_flow_save_rate

Claude

get_feedback_category_breakdown

Claude

get_feedback_sentiment_trend

Claude

list_cancel_flow_cancellation_reasons

Claude

list_cancel_flow_cancellation_reasons_by_plan

Claude

list_cancel_flow_offer_performance

Claude

list_connections

Claude

list_feedback_intents

Claude

list_plans

Claude

search_cancel_flow_sessions

Claude

Similar Apps