TRAINEDBY
Coach from verified records
- Category
- Pending
- Primary Subcategory
- Pending
Integration details
Description
TRAINEDBY lets an authenticated coach use ChatGPT with the clients currently on that coach’s roster. It can read workouts, meals, check-ins, body progress and supported health evidence; investigate patterns; and prepare precise workout or nutrition drafts. External AI cannot publish plan-affecting changes: the coach reviews and applies them inside TRAINEDBY.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- Unknown
- Access
- Account required
- First tracked
- 2026-09-24
- Tool count
- 61
- Geography
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for TRAINEDBY
Get updates when TRAINEDBY’s Discoverability Score or category rank changes.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competitive lineup
61 tools agents can invoke
Write into this client’s own context file. Lands immediately. Idempotent on idempotency_key. Does not mix clients, does not write identity fields, does not delete history.
append_client_context
Write a confirmed coaching rule or why into this coach’s own file immediately. Not a draft and not derived memory.
append_coach_context
Write into this lead’s own pre-onboarding context file. Lands immediately. Requires lead_id (not client_id). Idempotent on idempotency_key. When the lead becomes a ClientUser, this file is copied into the client file; later onboarding notes append after it.
append_lead_context
Apply a compatible non-coaching AgentDraft. MCP-linked coaching and plan-affecting drafts return review_required and must be resolved inside TRAINEDBY.
apply_draft
Create a coach offer via POST /coach/offers → upsertCoachOffer. Does not create raw Stripe products. action_type is pay_now.
create_offer
Preview the diff for an owned workout_plan_draft, workout_plan_revision_draft, or diet_plan_draft. Read-only; coach dashboard remains the publish path.
diff_plan
Create a pending Competition OS draft for coach review. Draft-only; does not publish, activate, finalize, snapshot scores, create public pages, or write source client facts.
draft_competition
Create a pending diet_plan_draft for coach dashboard review. Computes diet totals server-side and does not send to the client. Structured item shape: meals[].items[] and days[].meals[].items[] must be food objects with food_ref.kind green or custom, unit, quantity, and grams_per_unit; plain string items are rejected. green refs require a FoodProduct id from search_food_products/resolve_food_names. custom refs carry an inline name and optional per-100g calories/proteinG/carbsG/fatG for coach review.
draft_diet_plan
Create a pending message_draft weekly check-in for a client. Does not send a message.
draft_weekly_check_in
Create a pending workout_plan_draft for a new client. Does not publish or mutate live plans. If the client already has a sent or session-backed plan, use draft_workout_plan_revision instead. Assign every plan day with a named weekday (Monday through Sunday); the coach chooses the actual start date and can drag workouts in the dated preview before publish. Cardio rows must use mode:"cardio", muscleGroup:"Cardio", sets:1, reps:1, and cardio{activity, structure, durationSeconds, distanceMeters, targetPaceSecPerKm, targetPaceSecPer500m, targetPaceSecPer100m, targetPaceZone, targetHrZone, intervals}. activity enum: run, treadmill_run, walk, bike, row, ski_erg, swim, elliptical, stair_climber, other. structure enum: steady | intervals only. targetPaceZone enum: easy | marathon | threshold | interval | repetition. targetHrZone is a number 1-5, not a string. cardio requires at least one of durationSeconds, distanceMeters, or intervals. intervals[] shape: { repeats: 1-50 required, exactly one of workSeconds or workDistanceMeters, restSeconds: 0-28800, targetPaceSecPerKm and/or targetPaceSecPer500m and/or targetPaceSecPer100m, targetPaceZone }. Use targetPaceSecPer500m as the natural unit for row and ski_erg; use targetPaceSecPer100m as the natural unit for swim; use targetPaceSecPerKm as the natural unit for run and walk. If multiple pace units are supplied they must agree. Timed/hold rows (planks, side planks, dead hangs) must use mode:"timed", muscleGroup:"Core" (or the relevant group), sets (the number of holds, 1-20), and durationSeconds = the target hold in seconds (5-600). reps is a fixed 1 placeholder. Do not include a cardio object and do not encode a hold as strength sets x reps or as cardio. Strength rows keep the existing sets/reps shape.
draft_workout_block
Create a pending, dashboard-review-only targeted edit draft for one workout day in the active plan. Does not mutate the live plan. Rejects completed days and requires exact date OR week_number + day_number. Strength set_prescription values accept legacy {sets,reps,weight?,rpe?} or per-set {sets,setTargets:[{setNumber,reps,weight,rpe?}]}; do not mix those shapes. Cardio rows must use mode:"cardio", muscleGroup:"Cardio", sets:1, reps:1, and cardio{activity, structure, durationSeconds, distanceMeters, targetPaceSecPerKm, targetPaceSecPer500m, targetPaceSecPer100m, targetPaceZone, targetHrZone, intervals}. activity enum: run, treadmill_run, walk, bike, row, ski_erg, swim, elliptical, stair_climber, other. structure enum: steady | intervals only. targetPaceZone enum: easy | marathon | threshold | interval | repetition. targetHrZone is a number 1-5, not a string. cardio requires at least one of durationSeconds, distanceMeters, or intervals. intervals[] shape: { repeats: 1-50 required, exactly one of workSeconds or workDistanceMeters, restSeconds: 0-28800, targetPaceSecPerKm and/or targetPaceSecPer500m and/or targetPaceSecPer100m, targetPaceZone }. Use targetPaceSecPer500m as the natural unit for row and ski_erg; use targetPaceSecPer100m as the natural unit for swim; use targetPaceSecPerKm as the natural unit for run and walk. If multiple pace units are supplied they must agree. Timed/hold rows (planks, side planks, dead hangs) must use mode:"timed", muscleGroup:"Core" (or the relevant group), sets (the number of holds, 1-20), and durationSeconds = the target hold in seconds (5-600). reps is a fixed 1 placeholder. Do not include a cardio object and do not encode a hold as strength sets x reps or as cardio.
draft_workout_day_edit
Create a pending structural revision draft for a client whose plan is protected (already sent and/or has logged sessions). revision_mode is mandatory: partial_revision means only the supplied changes are intended, while full_replacement means plan_data.weeks is the entire replacement plan. MCP does not publish, activate, or mutate the live plan, block, schedule, or sessions. Use named weekdays Monday through Sunday; the coach reviews and can drag workouts in the dated preview before applying. Cardio rows must use mode:"cardio", muscleGroup:"Cardio", sets:1, reps:1, and cardio{activity, structure, durationSeconds, distanceMeters, targetPaceSecPerKm, targetPaceSecPer500m, targetPaceSecPer100m, targetPaceZone, targetHrZone, intervals}. activity enum: run, treadmill_run, walk, bike, row, ski_erg, swim, elliptical, stair_climber, other. structure enum: steady | intervals only. targetPaceZone enum: easy | marathon | threshold | interval | repetition. targetHrZone is a number 1-5, not a string. cardio requires at least one of durationSeconds, distanceMeters, or intervals. intervals[] shape: { repeats: 1-50 required, exactly one of workSeconds or workDistanceMeters, restSeconds: 0-28800, targetPaceSecPerKm and/or targetPaceSecPer500m and/or targetPaceSecPer100m, targetPaceZone }. Use targetPaceSecPer500m as the natural unit for row and ski_erg; use targetPaceSecPer100m as the natural unit for swim; use targetPaceSecPerKm as the natural unit for run and walk. If multiple pace units are supplied they must agree. Timed/hold rows (planks, side planks, dead hangs) must use mode:"timed", muscleGroup:"Core" (or the relevant group), sets (the number of holds, 1-20), and durationSeconds = the target hold in seconds (5-600). reps is a fixed 1 placeholder. Do not include a cardio object and do not encode a hold as strength sets x reps or as cardio. Strength rows keep the existing sets/reps shape.
draft_workout_plan_revision
Create pending workout_progression drafts for a client. Does not mutate the live plan. Reuse idempotency_key only for an identical retry against the same client and optional exercise target; generate a new key when either target changes.
draft_workout_progression
Explain an owned workout_plan_draft, workout_plan_revision_draft, or diet_plan_draft in coach-readable terms. Read-only; does not publish.
explain_change
Explain one participant competition preview score and missing-data impact. Read-only; explanation uses deterministic preview artifacts only.
explain_competition_score
Get a native TrainedBy booking link for a session type. Optional client_id mints the existing client booking token. Uses GET /coach/clients/:id/booking-link and public /book/:slug.
get_booking_link
Read one call transcript's raw text, chunk-paginated with a hard 30k-character cap per call. Long calls need multiple calls: follow next_chunk/from_chunk until next_chunk is null. Verbatim code-switched text ([MM:SS] Speaker N: ... lines); not summarised.
get_call_transcript
Read a client's body-scan assessment profile: AI body composition (body-fat range, muscle definition, symmetry), posture findings, measurements, and comparison to previous scan. Read-only projection over existing body scans. Excludes photos and raw AI output.
get_client_assessment_profile
Read a client consistency board for a 7-day, 14-day, or custom local-date window: daily_flags grid (gym / meals / HealthKit steps vs goal / weigh-ins), summaries, habits_per_day, weekly_check_in, last_gym, and today_partial when the window ends on the still-open local day. Emits every inclusive localDate — does not invent days or treat missing HealthKit as a step miss. Steps come from DailyBiometric apple_health|health_connect, never DailyCheckin.stepsCount. Shared projection with coach graphs / CoS briefs. Read-only; owned client only.
get_client_consistency
Read this client’s own context file — the whole coaching story for that person only. Not a shared notes pile. Empty until something has been written.
get_client_context
Read a client's daily status for one local day: timezone, today's scheduled training occurrence and completion, lastWorkoutAt/lastWorkoutLabel (last plan-linked gym when one exists, otherwise latest durable session including wearable walks), activeTrainingBlock, habitual training time, Home DAYS streak (currentStreak / longestStreak / protectedDates from DailyCheckin via closedRingsFromCheckin — not weekly CheckIn.streakAtCheckin), DailyCheckin step count/target, HealthKit/rings steps (DailyBiometric apple_health|health_connect, null when no sample), and this week's weekly check-in (submitted or not, which week, submittedAt). Read-only projection; performs no writes, scheduling, monitoring, or notifications.
get_client_daily_status
Read the client's single ACTIVE diet plan: plan meta (status/sent/revision), daily targets, and per-meal prescribed macros with full food items (name, provenance green/custom, qty, unit, gramsPerUnit, per-100g and per-unit macros). Single-day "simple" plans return meals[] + dayTotals; multi-day plans return days[] each with dayNumber, dayTotals, meals[]. These per-meal totals are the same prescribed values MealEntry rows carry as prescribedCalories/ProteinG/CarbsG/FatG. Read-only; mutates nothing; meal LOGS are not included (use list_client_meal_entries).
get_client_diet_plan
Daily strength volume (sum kg×reps) and top-set load by catalog primary muscle group for one owned client. Joins logged exercises to the Exercise library (same source as search_exercises). Coarse session muscleGroup strings like "Full Body" are not invented into groups. Read-only.
get_client_muscle_volume
Read this client’s operating brief: intake, onboarding, and their own context file through live coaching. Plan writes stay draft_only; writing the file uses append_client_context.
get_client_operating_brief
Get a converted client profile, last durable workout (lastWorkoutAt/lastWorkoutLabel — last plan-linked gym when one exists, otherwise latest durable session including wearable walks), active training block, current workout plan summary, and latest weekly review summary. If client_id identifies an unconverted Lead, returns { state: 'lead_not_converted' } without reading evidence or plans; use get_lead_context with that lead id for pre-onboarding context.
get_client
Read whether a client can receive a first workout-plan draft, including setup-plan and onboarding context. Read-only.
get_client_plan_readiness
Latest recovery snapshot for one client: most recent recovery/HRV/RHR/sleep/strain values (last 3 days) plus each metric's trailing 28-day personal baseline mean and percent deviation. Baselines need 14+ days of data. Informational only — surfaces check-in prompts, never diagnoses. Read-only.
get_client_recovery_status
Read a client workout plan/block context for drafting. Read-only; does not mutate plans or sessions.
get_client_plan
Read this coach’s own living coaching-intelligence file. No coach_id argument: authorization selects the file.
get_coach_context
Inspect coach-owned participants for competition metric readiness. Read-only; does not create drafts, snapshots, leaderboards, or source fact writes.
get_competition_data_readiness
Read this lead’s own pre-onboarding context file. Use lead_id — leads have no ClientUser. Empty until something has been written. After the lead becomes a client, the same file is copied into get_client_context; later onboarding is appended, not wiped.
get_lead_context
Fetch one meal photo as an image for coach analysis, downscaled server-side. Read-only; returns the photo the coach already sees in the Meal Evidence dashboard.
get_meal_photo
Get one durable workout session with full set-level logs and notes. Read-only; scoped to the requesting coach via client ownership.
get_workout_session
Link this connected AI client to the authenticated coach account using a one-time code from TrainedBy Settings.
link_coach_account
List clients/items needing coach attention this week, sorted by severity. Includes training_block.ended when the latest owned block is completed/ended_early/archived or its endDate is in the past (read-only; does not draft or apply a next block). Also includes daily miss kinds: meals, steps, weekly check-in, and workout (workout miss only if scheduled and not rest/sick/block-ended). Steps miss uses DailyCheckin.stepsCount but is suppressed when a HealthKit/rings sample (DailyBiometric apple_health|health_connect) already meets the target; HealthKit count is null when no sample exists.
list_attention
List client wearable biometrics (recovery score, HRV, resting HR, sleep, strain, calories, SpO2, skin temp) over a client-local date range. Returns one resolved value per day and metric with its provider provenance. Read-only.
list_client_biometrics
List raw call transcripts from recorded Google Meet booking calls for one owned client, newest first. Returns metadata plus a short preview per transcript; use get_call_transcript for the full text. Transcripts are stored verbatim and are not summarised by this tool.
list_client_call_transcripts
List historical daily check-ins for one client over a strict client-local date range. Includes DailyCheckin.stepsCount and a separate HealthKit/rings step count (DailyBiometric apple_health|health_connect; null when no sample). Read-only.
list_client_daily_checkins
Read coach-owned form-check videos for one client (GET /form-checks/coach/queue). Returns stored video URLs and coach feedback. No new ML analysis.
list_client_form_videos
List client meal logs and nutrition entries over a strict client-local date range. Read-only. Each entry includes MealEntry.photoUrl / photoUrls when the client uploaded a photo; empty when there is no photo. Does not include raw AI payloads. Use get_meal_photo to fetch image bytes.
list_client_meal_entries
List the WhatsApp Cloud API thread for one owned client. Read-only; scoped to the requesting coach. Uses the coach WABA already connected for Lead CRM.
list_client_whatsapp_thread
Read recent owned-client coaching decisions, coach resolutions, evaluated outcomes, and evidence-backed personal response patterns. Compact by default.
list_coaching_decisions
List approved Competition OS metrics and resolver contracts. Read-only; arbitrary formulas are not allowed.
list_competition_metric_catalog
List the authenticated coach's offers (GET /coach/offers), including the public /o/:slug/:offerId URL.
list_offers
List recent weekly check-ins for one client.
list_recent_check_ins
List recent durable workout sessions for one client across all plans and blocks, including wearable walks. last_plan_session is the latest plan-linked/gym session even when sessions[0] is a walk. Use plan_linked to list only plan-linked sessions; use active_only or plan_id to scope to a single plan.
list_recent_workouts
List live (non-archived) clients in the coach roster. Pass include_archived=true to include archived leavers.
list_roster
List upcoming native coach bookings. Wraps GET /coach/bookings.
list_upcoming_bookings
List inbound WhatsApp Cloud API messages for the authenticated coach. Optionally filter to one owned client. Read-only; never leaks another coach's ledger.
list_whatsapp_inbound
Mark a past client-local day as sick/excused via POST /coach/clients/:id/streak-protections. Date must be in the client's past, ringsClosed !== 3, 2 per local month, env-gated writes.
mark_sick_day
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.