OnlineFitness.app

Run the business side of online coaching from Claude, ChatGPT or any MCP client.

От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетБез входаГлобальныйБесплатноМожет изменять данные

Что умеет

  • List Clients: Lists all of the coach's clients with status and last workout date.
  • Get Client: Returns one client's full card by id, including compliance stats, tags and the client's AI system prompt.
  • List Inactive Clients: Lists active clients with no scheduled workout in the last N days (default 7), including clients who never had one.

Какие данные видит

Нужен ли аккаунт

Не нужен: сервер работает без входа

Run the business side of online coaching from Claude, ChatGPT or any MCP client. Other fitness servers read an athlete's data — this one writes into a coach's practice: clients, training, conversations and the funnel that fills the roster.

  • Clients — onboard, tag, archive, and find who has gone quiet
  • Training — build workouts and programs from the coach's own exercise library, schedule them, read results
  • Conversations — see who is waiting for a reply, answer, or broadcast to everyone at once
  • Lead funnels — quiz funnels and lead magnets, with leads and their attribution
  • Content — plan and draft posts for the coach's channels

129 tools. Free for up to 3 clients.

Docs: https://onlinefitness.app/ai/mcp-tools · Website: https://onlinefitness.app

Список инструментов сервера (60)

Технические названия из tools/list. Нужны только разработчикам.

list_clientsLists all of the coach's clients with status and last workout date.
get_clientReturns one client's full card by id, including compliance stats, tags and the client's AI system prompt.
list_inactive_clientsLists active clients with no scheduled workout in the last N days (default 7), including clients who never had one.
create_clientCreates a client and SENDS an invitation email to the given address. Calling it again for the same email does not duplicate the client — it re-sends the invitation (use this to re-invite a pending client). Returns the client card plus the invitation link the coach can share directly.
list_client_tagsLists all of the coach's client tags grouped into cohorts: each tag with the ids of clients labeled by it. Use it to see existing tags before set_client_tags and to resolve tag-based audiences.
set_client_tagsREPLACES a client's whole tag set: pass the complete desired list, not a diff (an empty list clears all tags). Tags are normalized to lowercase, trimmed, and a leading '#' is stripped; reuse existing tags from list_client_tags where possible. Returns the client's resulting tags.
set_client_accessGrants or extends a client's paid access until a calendar date (inclusive, end of day in the client's timezone) — a date in the past is accepted and ends access immediately, so double-check the year. Pass amount (with optional currency, default USD, and paidAtIso) to also record a payment in the coach's private ledger. Works only for active clients. On the free plan this is the only paid gate: opening access for a client who is not billable yet fails when the coach already has 3 such clients (extending an already billable client always works, and revoke_client_access is never gated). Returns the updated client card (see accessSummary; trialUntil marks access granted automatically as a trial, which does not take a plan slot).
revoke_client_accessRevokes a client's paid access immediately (accessSummary keeps the period as history with cancelledAt set). Reversible by granting access again via set_client_access. Not idempotent: each call re-stamps cancelledAt and logs the action — don't retry a successful call. Returns the updated client card.
list_client_paymentsLists a client's payments from the coach's private ledger, newest first (by paidAt). Payments are created by set_client_access when amount is passed. limit defaults to 20, max 100; offset skips newer entries (capped at 1000).
delete_client_paymentDeletes one payment record from the coach's private ledger (IRREVERSIBLE). Does NOT change the client's access period — adjust that via set_client_access. No-op if missing (deleted:false).
archive_clientArchives a client (status archivedByCoach, hides from the active list). Reversible via activate_client. Returns the updated client card.
activate_clientRestores an archived client to active status. Reverse of archive_client. Returns the updated client card.
update_clientSets the system prompt of the client's built-in AI assistant (persona/instructions). An empty string resets it to the default. Name and email cannot be changed here. Returns the updated client card.
list_client_workoutsLists a client's workouts within a date window (summaries, no exercises). Defaults to today±30 days. If more than 100 match, the most recent are returned with truncated=true — narrow from/to.
get_client_workoutReturns one client workout with full exercise cards (descriptions, video, completion).
create_client_workoutCreates a client workout as an empty shell — add exercises separately. type: workout (regular) or rest_day. Returns the created workout (lean).
update_client_workoutUpdates a client workout. Pass only the fields to change (omitted fields keep their value). exerciseIds may only reorder/remove EXISTING exercise ids (unknown ids are rejected); to add new exercises use add_exercises_to_client_workout. Returns the updated workout (lean).
delete_client_workoutDeletes a client workout (IRREVERSIBLE, hard delete). Cascades: its exercises, the workout chat (comments/media) and the calendar event are deleted; the workout disappears from the client's schedule. No-op if missing (deleted:false).
add_exercises_to_client_workoutAdds exercises from the coach's library to a client workout, in the given order (each is copied; library video carries over). Set per-exercise instructions (e.g. '3×12, rest 60s') right away. Items are applied independently: a failed item is reported in results[] and the rest continue; exercises already in the workout are skipped as duplicates — retrying a batch is safe. Returns per-item results and the updated workout (lean).
create_client_workout_exerciseCreates a custom exercise directly in a client workout (not from the library). videoUrl: YouTube only. Prefer add_exercises_to_client_workout for library exercises. Returns the updated workout (lean).
update_client_workout_exerciseUpdates an exercise inside a client workout (exerciseId from get_client_workout). Pass only the fields to change; omitted fields keep their value, including video. videoUrl: YouTube only. Returns the updated workout (lean).
delete_client_workout_exerciseRemoves an exercise from a client workout (IRREVERSIBLE). Cascades: the exercise chat (comments/media) is deleted. exerciseId is the id inside the workout. No-op if already gone (deleted:false). Returns {deleted, workout} with the updated workout (lean).
list_exercisesLists the coach's exercise library as summaries (no descriptions — use get_exercise for the full card). Filters: tag (exact match), query (case-insensitive substring of the title) and folderId (see list_exercise_folders). limit defaults to 50, max 100; truncated=true if more matched.
get_exerciseReturns one library exercise by id with the full description. The same id serves as sourceExerciseId for get_exercise_progress.
create_exerciseCreates an exercise in the coach's library. videoUrl: YouTube link only (video files cannot be uploaded via MCP). Returns the created exercise.
update_exerciseUpdates a library exercise. Pass only the fields to change; omitted fields keep their value. Video cannot be cleared via MCP — omitting videoUrl keeps the current one. Returns the updated exercise.
delete_exerciseDeletes a library exercise (IRREVERSIBLE, hard delete). Workouts it was copied into are NOT affected (they hold snapshots). No-op if missing (deleted:false).
get_exercise_progressReturns a client's latest results for one movement by sourceExerciseId (newest first). limit defaults to 20, max 100; offset skips newer results to reach older ones (capped at 1000).
list_leadsLists funnel leads (newest first). Without from/to returns the most recent (up to 100, then truncated=true). Each lead has status (new/seen/archived) and converted (became a client).
get_leadReturns one lead by id: questionnaire answers, contact, UTM attribution, conversion status.
mark_lead_seenMarks a lead as seen (status new → seen). Idempotent (no-op on an already seen lead). Returns the updated lead.
archive_leadArchives a lead (removes it from the active inbox). Reversible via restore_lead. Returns the updated lead.
restore_leadRestores an archived lead back to the inbox (status archived → seen, not new). Returns the updated lead.
list_formsLists the coach's forms (questionnaires/check-ins) with their questions. Use a form's id with list_client_form_answers to narrow answers to that form.
get_formReturns one form by id (questionnaire questions).
list_client_form_answersLists a client's form answers as question–answer pairs (newest first). formId narrows to one form. truncated=true if more than 200 matched — narrow by formId.
create_formCreates a form (questionnaire/check-in) with an ordered list of question texts. Questions are shown to clients verbatim — write them in the client's language. Returns the created form.
update_formUpdates a form. Pass only the fields to change (omitted fields keep their value). questions REPLACES the whole list — pass the complete new list, not a diff. Returns the updated form.
delete_formDeletes a form (IRREVERSIBLE, hard delete). Already submitted client answers are kept — they store question/answer snapshots. No-op if missing (deleted:false).
list_client_measurementsLists a client's measurement entries (weight/circumferences), newest first. values holds the metrics; hasPhotos tells whether progress photos exist. limit defaults to 20, max 100; offset skips newer entries (capped at 1000).
list_client_health_recordsLists a client's health form entries, newest first. answers maps each condition (chronic_conditions, hormonal_medications, injuries_and_surgeries, pain, varicose, diastasis) to the client's answer: present tells yes/no, details holds their explanation. A condition missing from answers means the client did not answer it — that is not the same as 'no'. limit defaults to 20, max 100; offset skips newer entries (capped at 1000).
list_client_fitness_goalsLists a client's fitness goal entries, newest first. Each entry is what the client wanted at that moment: desiredWeight plus their own wording for the month (monthResult, monthGoal). The newest entry is the current request; older ones show how it changed. limit defaults to 20, max 100; offset skips newer entries (capped at 1000).
list_client_inventoryLists the equipment the client says they have (their own wording, e.g. 'dumbbells 5 kg', 'resistance bands'), oldest first. Read-only: the client edits it in the app. An empty list means the client has not filled it in — it does NOT mean they have no equipment. Check it before building a program so the exercises match what they actually own.
list_contentLists the coach's planned social content, newest first. Summary cards (channel, format, status, pillar, hook, scheduledAt) without the post body — use get_content for the full text. limit defaults to 20, max 100; offset skips newer items (capped at 1000).
get_contentReturns one content item's full card by id, including the post body.
create_contentCreates a content item for the coach and returns its full card. channel and format are required; status defaults to draft — pass published to log an already-posted item, or scheduled together with scheduledAtIso (ISO 8601 slot time).
update_contentUpdates a content item's fields (channel, format, pillar, hook, body). Pass only the fields to change; omitted fields keep their value. Status and slot are changed by dedicated tools. Returns the updated card.
schedule_contentPuts a draft or in-review content item into a calendar slot (status → scheduled). scheduledAtIso is the ISO 8601 slot time. Returns the updated card.
publish_contentMarks a scheduled content item as published (status → published) — use once it has been posted to the channel. Returns the updated card.
archive_contentMoves a content item into the archive (status → archived) — use to shelve an idea or draft you no longer plan to publish. Allowed from any non-terminal status; rejected for already-analyzed or archived items. Returns the updated card.
delete_contentDeletes a content item (IRREVERSIBLE, hard delete). Prefer archive_content to keep a record. No-op if missing (deleted:false).
promote_contentTurns an idea from the idea bank into a draft (status → draft). Allowed only from idea. Returns the updated card.
submit_content_for_reviewSends a draft for the coach's approval (status → review). Allowed only from draft. Returns the updated card.
return_content_to_draftReturns content to draft and clears its slot (status → draft) — use to reject a review, unschedule, or replan a missed slot. Allowed from review, scheduled or missed. Returns the updated card.
list_client_chatsOne row per client with the last message of their coach↔client chat (who sent it, when, a short preview), newest conversations first. awaitingReply=true means the client wrote last — that is the answer to "who is waiting for a reply". Read the thread with get_client_chat and answer with send_client_chat_message. Covers up to 100 clients; truncated=true means the coach has more.
get_client_chatReturns the latest coach↔client chat messages in chronological order. Each message has from (coach/client), text and attachments (image/video/file/audio). The client's AI chat is not included. limit defaults to 30, max 100.
get_exercise_chatReturns the comment thread of one exercise in a client workout (form-check photos/videos, notes), oldest first. clientId/workoutId/exerciseId come from get_client_workout. limit defaults to 30, max 100.
send_client_chat_messageSends a text message from the coach to the client's chat. The client sees it in the app immediately and gets a push notification — write in the client's language. Text only (attachments are app-only). Do not retry a successful call: it would post a duplicate.
send_exercise_chat_messageSends a text comment from the coach into one exercise's thread (form feedback). clientId/workoutId/exerciseId come from get_client_workout; the client gets a push notification — write in the client's language. Text only. Do not retry a successful call: it would post a duplicate.
list_broadcastsLists the coach's broadcasts, newest first: status (draft/scheduled/sending/sent/failed), audience, delivery counters and a content preview. Full text — get_broadcast. limit defaults to 20, max 100; offset skips newer entries (capped at 1000).