MCP App Store
by KeenEthics
Recovr icon

Recovr

By Recovr Pty Ltd

Get New App Alerts

Overview

Recovr helps gym owners, studio managers and coaches spot changes in member engagement early and turn them into timely, personal follow-up. Connect your existing Recovr account to see which members are at risk of cancelling, understand changes in attendance and engagement scores, and review membership, package and conversation history. Plan your weekly outreach, draft a check-in grounded in each member’s situation, and investigate patterns among members who have left. When you choose to act, flag or snooze a member, assign follow-up to a coach, or log an interaction. Message drafts are shown for review in your assistant. Sending an SMS or email is a separate action that requires your explicit approval of the recipient and message. The plugin cannot book classes, process payments or refunds, or send bulk messages. Includes four MCP usage guides: member lookup, analytics, messaging and follow-up actions. Analytics can answer questions from your Recovr data; creating or editing Builder apps, forms, pages, boards and saved reports is not available through this connection. Requires a Recovr staff account. Each connection is limited to the gym location and permissions approved at sign-in. Tools use data already held in Recovr; they do not query your booking platform directly. A member’s health score measures engagement and cancellation risk, not medical health.

Tools

recovr_describe_analytics_model

ChatGPT
Returns the analytics data model catalogue — every cube with its measures (aggregations) and dimensions (filters / group-bys) — plus query_guide, worked example queries for common questions, and studio_today, the location's current calendar day. Call it before recovr_query_analytics to get the exact names that tool takes. Prefer the views ClientOverview (one row per member, current state), AttendanceBySlot (class / time-of-day headcounts) and ClassRoster (one row per client per booking — who is in a given class, with their risk band and whether they are on an intro offer). The catalogue covers birthdays and birth dates; churn, cancellations and cancellation reasons; revenue, payments and transactions; attendance by class, class time, day of week or time block; no-shows and late cancels; health-score history, score movement and attendance trend over time; class rosters, including which intro or trial members are booked into them; packages, expiry dates and remaining sessions; trial and intro conversion rates; tenure, join dates and cohorts; and labels, tags and contact-log history.

recovr_draft_client_message

ChatGPT
Draft an outreach message for one client and return it for review. It returns text only: it sends nothing, reaches no one and saves nothing in Recovr. The draft comes back for the user to approve, edit or discard, and sending it is a separate call to recovr_send_client_message. Write the exact words the member would receive in message, in the gym's own voice and answering their actual situation. When draft_failed is true no draft could be written: say so, and never pass proposed_message on as a message. Clients marked do-not-contact on the channel, or snoozed, are not drafted for; left_out_reason says which. Use when the user wants to reach out to a client.

recovr_find_clients

ChatGPT
Find clients with filters: risk band (or conversion / renewal), status, current package names, package type (membership, intro, class pack), labels, who sold their current packages (sold_by), the staff member they are assigned to, attendance in a date range, not attended since a date, flagged/snoozed/assigned state, and name search. conversion = intro/trial journey including expiring trials; renewal = membership/non-intro packages approaching expiry. For members, use members_only (has_current_package true also matches trials and class packs); the member count is recovr_get_retention_summary's. Risk lists include snoozed clients (each row's snoozed marks them; exclude_snoozed drops them) and, like the Clients page, leave out members only on packages hidden from reports unless include_hidden_from_reports is set. client_status 'Cancelled' is current status, not proof of a recent cancellation. Returns one page of matching clients (limit, then offset = next_offset for the next page), total_matched, and total_is_exact, which is false when the read stopped at its cap or failed: total_matched is then a lower bound, not a count. When several clients share a name, ask which one is meant. recovr_get_retention_summary has the location-wide totals.

recovr_get_attendance

ChatGPT
Get attendance from Recovr. Choose a view: recent_sessions lists sessions actually attended over the last days days (default 7, max 14; cancellations, no-shows and future bookings excluded), newest first, up to limit rows, with totals for the whole period; session_report returns one studio calendar day's classes (date YYYY-MM-DD, default today) grouped by class time and name, with booked/attended/no-show/cancelled counts and each client's health score and risk tag — narrow it with session_time, session_name, risk_level and client_ids. For a future date, health_score and tag are that day's forecast and current_health_score/current_tag are today's. For the studio's today, studio_time_now is the time at the studio, for 'now', 'next class' and 'tonight'. A report covering several classes lists at most 20 people per class: each class's clients_not_shown says how many more are booked and its counts cover the whole class, so for a full roster narrow to one class (session_time / session_name, up to 100 people) and never present a capped list as everyone. A report with error is a failed read, not an empty day. Use when the user asks who came in recently, about a day's classes, or which at-risk clients are booked. Returns { view } plus the chosen view's field (recent_sessions or session_report).

recovr_get_client

ChatGPT
Get one client's data from Recovr. Choose a view: details returns the profile — contact details, membership status, the current health score with its analysis and risk tag, attendance trend, visit metrics, packages and recent contact history (in recent_contact_logs, source 'staff' is the team reaching out; 'booking_system' entries are mostly the booking platform's automated emails); timeline returns sessions attended, contact logs and tag changes over the last days days (default 30); health_score returns the recorded score (0–100), risk tag and attendance trend for one studio calendar day (date, omit for today), with found:false when no score exists for that day; health_trajectory returns the daily score and tag from from to to (both required, YYYY-MM-DD), for trends. The details view also returns notes, the most recent notes on the client's profile (written in Recovr, by a workflow, or synced from the booking platform), newest first. Use when the user asks about a specific client. Returns { view, client_id } plus the chosen view's field (details, timeline, health_score or health_trajectory). A view with error is a failed read, not an empty one.

recovr_get_conversation_messages

ChatGPT
Read the message thread for one conversation. Returns the most recent messages with sender direction and timestamps. Takes a conversation_id from recovr_list_conversations.

recovr_get_next_up

ChatGPT
Get today's Next Up list: the ranked people the studio should reach today, each with the reason, the same list as the Next Up page in Recovr. It is not the high-risk list (that is recovr_find_clients with risk): it also holds medium-risk members who are drifting and good-news moments. owed_reply is the people waiting on an answer from the gym; reach_out is everyone else to contact, in queue order; reminders are staff follow-ups that are due. Keep owed_reply apart from the others when answering. Use for 'who should I reach out to today', 'who needs attention', 'who's next up'. When Next Up is not switched on for the studio, enabled is false and nothing else is returned.

recovr_get_package_sales

ChatGPT
Package sales in a date range and who sold each one, as the booking platform records it: for sales credit and commission ('sales by staff member this month', 'how many did Jane sell last week', 'who sold Sam's membership'). A sale is a package whose purchase date (studio calendar day; the start date the booking platform gives it) falls in from..to. A shared sale credits each seller an equal share (two sellers = 0.5 each, in credit), because platforms record who shared a sale but not the split; say so. Sales with no recorded seller (online or self-serve, or a platform that does not record sellers) are in unattributed_sales and belong to no one. no_seller_data true means this location's booking platform has not reported sellers (Recovr reads them from Mindbody, Momence and Vygor where recorded). This is not the assigned coach, and it carries no dollar amounts. For clients whose CURRENT packages a person sold, use recovr_find_clients sold_by.

recovr_get_retention_summary

ChatGPT
Start here. Returns the studio's context (studio_name, studio_today and timezone, the dates every other tool's results are in) and its counts: active members (the gym's member count: Active status with a current package classified Membership in Settings > Packages, shown in reports and not an intro; trials, class packs and hidden packages do not count since 22 Oct 2026), on_trial (Active on a current intro package) and on_hold (Suspended with a current package) as their own numbers beside it, Active-status clients in total (leads, trials and class packs included; quote only when asked), members_breakdown (who holds a current package without being a member, and the suspended and not-yet-started clients beside it), and how many are high-risk, medium-risk, low-risk, non-attenders, conversions and renewals. The risk and non-attender bands cover clients with a score today on a package shown in reports, class-pack holders included, so they need not add up to active_members. Use for 'how many members do I have', 'how is the gym doing', an overview or a status update. These counts cover the whole location; recovr_find_clients returns one page of matching rows, so its total is not a member count.

recovr_list_conversations

ChatGPT
List the location's conversations, newest message first, optionally only unread, only awaiting a reply, or only those where a reply is owed; search matches contact names and message text from the last 90 days. conversations is one page of at most limit rows, and the whole-inbox counts are returned separately in the total_* fields. awaiting_reply means the contact sent the newest message and nothing has been sent back since; reply_owed is the subset that is recent and actually asks for an answer. Read a thread with recovr_get_conversation_messages.

recovr_list_team_members

ChatGPT
List the staff members at the location, each with the user_id that recovr_update_clients takes as assigned_to_user_id for its assign action. Use when the user asks who is on their team, or to resolve a staff member's name to an id before assigning someone.

recovr_log_client_interaction

ChatGPT
Add a note to a client's profile in Recovr. Use when the user asks to note or log something about a specific client. Each call adds a new note.

recovr_query_analytics

ChatGPT
Run a structured analytics query against Recovr's semantic layer (Cube) and return the result rows. Use for trends, rates and breakdowns. Takes measures, dimensions, filters, timeDimensions, order and limit, using names from recovr_describe_analytics_model — call that first; its query_guide has worked queries for common questions. Measures are the catalogue's aggregations; a numeric dimension is not a measure. The location filter is applied automatically and cannot be set. Aggregation and grouping happen in the cube, so ask for the measure you want rather than fetching rows to total. Dates run in the location's timezone and come back as its calendar days. dateRange takes 'today', 'this month' or ['2026-06-01','2026-06-30'] (both days included); 'last 7 days' ends yesterday and excludes today. HealthScoreHistory holds projected rows up to about 7 days ahead, so end its ranges at today unless a forecast is wanted.

recovr_reply_to_conversation

ChatGPT
Send an SMS to a client from the location's phone number. SMS only: it never replies by email, Instagram, Messenger, WhatsApp or any other channel, and the text goes to the client's phone rather than into a non-SMS thread. Pass conversation_id when replying to an inbox thread — the tool checks that thread's channel and sends nothing if it is not SMS. This reaches a real person and cannot be undone, so the user has to confirm the exact wording, and the channel, first.

recovr_search_help

ChatGPT
Search Recovr's documentation to answer how Recovr works or how to do something in it: setting up SMS, email, WhatsApp and other channels, workflows and their send times, the health/risk score, conversions and renewals, member feedback, custom fields, the mobile and desktop apps, Recovr Builder, and connecting Recovr to Claude or ChatGPT. Returns help-centre articles first, then sections of Recovr's product guide, each with a link to cite. Documentation only: it reads no gym's data.

recovr_send_client_message

ChatGPT
Send an SMS or email to one client from the studio and log it on their profile. This reaches a real person and cannot be undone: only call it after the user has approved this exact recipient, channel and text. success means Recovr accepted the message for sending, not that it was delivered or read. Never retry after a timeout or an error without first reading the client's conversation with recovr_get_conversation_messages to see whether it went, and asking the user. Clients marked do-not-contact on the channel are refused. To reply on an existing SMS thread, recovr_reply_to_conversation.

recovr_set_client_do_not_contact

ChatGPT
Stop or resume outbound messages to one client on specific channels — the durable do-not-contact switch. Use when someone has opted out, asked not to be messaged again, or after a bereavement or complaint. It is checked at send time on the paths that reach a member automatically: Recovr AI's own sends, workflow sends and the HighLevel provider. It is not a hard block on every path — a staff member sending by hand from the Recovr inbox is not stopped by it. A note on the client's profile stops nothing at all, and snooze is a different thing again: it pauses retention alerts for a few days and then expires. Requires the user's confirmation before calling.

recovr_update_clients

ChatGPT
Change the follow-up status of one or more clients in Recovr. Choose one action: flag marks the clients for follow-up so they appear in Recovr's flagged view; unflag clears that flag; snooze pauses their retention alerts for days days (default 7); unsnooze resumes alerts now; assign makes a staff member responsible for following them up (requires assigned_to_user_id, a user_id from recovr_list_team_members); unassign removes the assigned staff member. reason is optional and is recorded with flag, snooze, assign and unassign. Use when the user asks to flag, snooze or assign specific clients, or to undo one of those. For more than one client, show the user the affected clients and the count and get their confirmation before calling. Every action can be reversed with its opposite and none of them contacts the client. Returns one result per client_id.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

Similar Apps