get_retention_stats
Read what Revenue Recovery did on a project over a window — failed renewals, reminders, pauses, recoveries with their US dollars, win-back messages and members won back, the cancellation screens with their offers, and why members cancelled. Read-only.
Judge whether the grace window, the offers or a sequence are earning their keep before changing
them: the figures the dashboard card shows, over a period preset, counted from the same ledger
list_retention_activity pages. The
reasons block says why members cancelled, the most given reason first with its share.
Read-only. Never mutates anything.
Two figures ignore the window
in_grace_now (members who keep access on an unpaid renewal right now) and paused_now (members
paused for non-payment, waiting for a charge to settle) are the moment's figures, whatever
period says.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Annotations
It reads and never changes anything.
Arguments
project_id*stringUUID of the project whose Revenue Recovery figures to read.
periodstringoptionalWindow preset: 7d, 14d, 30d, 60d, 90d, 1y, mtd, qtd, ytd or all. Defaults to 30d. The two "right now" figures ignore it.
What it returns
{ "data": { "period": "30d", "range": { "from": "2026-09-12", "to": "2026-10-12" }, "failed_renewals": 14, "reminders_sent": 9, "access_paused": 3, "payments_recovered": 8, "recovered_usd": "212.00", "access_restored": 2, "in_grace_now": 2, "paused_now": 1, "winback_sent": 11, "won_back": 2, "cancellations": 6, "offers_shown": 4, "offers_taken": 1, "reasons": [ { "reason": "too_expensive", "label": "Too expensive", "count": 3, "share_percent": 50 }, { "reason": "taking_a_break", "label": "Taking a break", "count": 2, "share_percent": 33.3 }, { "reason": "other", "label": "Other", "count": 1, "share_percent": 16.7 } ] }}recovered_usd is a decimal string with two places, every recovered renewal restated in US dollars
at the current rates. won_back counts passages through a sequence that ended because the member
paid again; payments_recovered counts failed renewals that settled later.
How it fails
VALIDATION_FAILEDa period that is not one of the presets.
RESOURCE_NOT_FOUNDunknown project_id, or the project is outside the token's scope.
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-subscription:view-any.
How is this guide?
Last updated on
get_retention_settings
Read a project's Revenue Recovery settings — the grace window with its ladder in words, the daily digest, the cancellation question and the three offers, with whether the offers are on the plan. Read-only.
list_cancellation_feedback
List the cancellation screens a project's members reached — the reason they gave, their own words, the offer shown and whether they took it, and where they answered. Read-only. Paginated, narrowed by reason or surface.