Cora
Personal health coach
- Category
- Health & Wellness
- Primary Subcategory
- Calorie & Nutrition Tracking Coaches
Integration details
Description
Cora helps users understand and act on their own sleep, recovery, activity, nutrition, body metrics, training plans, habits, routines, journals, and profile data through ChatGPT. Users can review trends, log meals and workouts, plan training and meals, manage personal routines, and request data-grounded coaching through scoped OAuth access to their private Cora account.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Calorie & Nutrition Tracking Coaches
- Secondary Subcategories
- None listed
- Brand
- Cora
- Access
- Account required
- First tracked
- 2026-08-08
- Tool count
- 63
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for Cora
Get updates when Cora’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

Competing in ChatGPT Calorie & Nutrition Tracking Coaches
View Category63 tools agents can invoke
Schedule one new workout using an exact HealthKit activity name. Trusted code derives the numeric HealthKit ID. Never choose or pass a numeric workout type. Use manage_training_plan for move/rename/remove and add_workout_from_template for an existing saved template. Args: date: Local scheduled day in YYYY-MM-DD format. workout_type_name: Exact Apple HealthKit activity name from the enum. display_name: Optional user-facing workout name. plan_id: Active plan ID to attach to, or omit for a standalone workout. target_duration_min: Target duration; omitted defaults to 60 minutes.
cora_add_planned_workout
Schedule a saved workout template onto a date in the training plan. Args: template_id: Template id — find it via get_saved_workouts. scheduled_date: Day to schedule it, YYYY-MM-DD.
cora_add_workout_from_template
Estimate calories/macros for a described meal WITHOUT saving anything. Use to preview a new/hypothetical meal estimate or prepare item data for plan_meal. It never saves. For a known logged meal, fetch the saved data rather than estimating again; to estimate-and-save genuinely new food use log_nutrition. Args: description: The food to analyze, e.g. "2 eggs, toast with butter". meal_type: breakfast | lunch | dinner | snack | dessert.
cora_analyze_meal
Ask Cora, the user's AI fitness coach, for ADVICE — not data. Runs a real coaching turn over the user's data and returns Cora's reply. Use ONLY for judgment/advice questions ("am I recovered enough to train hard?", "what should I eat post-workout?"). Do NOT use it to fetch data: for sleep/recovery/meals/plan/habits the cora_get_* tools are faster, complete, and structured — and to log or edit data use the dedicated write tools. Slow (~10-30s, full coaching turn); nothing is saved to the user's chat history. Args: message: The advice question for Cora.
cora_ask_coach
Cancel a pending one-shot push reminder by id.
cora_cancel_reminder
Mark a routine as completed for a day (idempotent per day). Args: routine_id: The routine id — find it via get_habits. timestamp: ISO datetime it was done (defaults to now). notes: Optional note.
cora_complete_routine
Create a new habit for the user to track. Args: title: Habit name, e.g. "No screens before bed". metric: What is tracked — e.g. "manual_checkoff" for simple done/not- done habits (an invalid value returns the full supported list). frequency: DAILY, WEEKLY, or MONTHLY. threshold: Target per period (for manual_checkoff habits use 1). notes: Optional notes shown with the habit.
cora_create_habit
Create a journal (a recurring check-in question the user answers). Args: title: Journal name, e.g. "Evening mood". prompt: The question asked each time, e.g. "How was your mood today?" category: Journal category (an invalid value returns the valid list). input_kind: Answer type (an invalid value returns the valid list) — e.g. scale, yes_no, text, tags, number. unit: Unit label for numeric answers. scale_max: Max value for scale answers (e.g. 5 or 10). tag_options: Selectable options for tags answers. schedule_kind: How often it's asked (invalid value returns the list). days_of_week: Days 0-6 (0=Sunday) for weekly schedules. reminder_enabled: Whether to remind the user (needs hour+minute). reminder_hour: Reminder hour 0-23 (user's timezone). reminder_minute: Reminder minute 0-59. notes: Optional notes.
cora_create_journal
Create a routine (an ordered checklist, e.g. a wind-down routine). Args: title: Routine name, e.g. "Evening wind-down". slot: When in the day it belongs (invalid value returns valid list). category: Routine category (invalid value returns the valid list). steps: 1-8 step titles, in order. description: Optional description. schedule_kind: How often (invalid value returns the valid list). days_of_week: Days 0-6 (0=Sunday) for weekly schedules. reminder_enabled: Whether to remind the user (needs hour+minute). reminder_hour: Reminder hour 0-23 (user's timezone). reminder_minute: Reminder minute 0-59. notes: Optional notes.
cora_create_routine
Delete a habit permanently (confirm with the user first). The response includes the deleted habit's title so the user can verify. Args: goal_id: The habit's goal id — find it via get_habits.
cora_delete_habit
Delete a journal permanently (confirm with the user first). The response includes the deleted journal's title for verification. Args: checkin_id: The journal id — find it via get_habits.
cora_delete_journal
Delete a routine permanently (confirm with the user first). The response includes the deleted routine's title for verification. Args: routine_id: The routine id — find it via get_habits.
cora_delete_routine
Delete one of the user's sleep schedules by its scheduleId. Get the scheduleId from get_sleep_schedules. A stale/unknown id errors. This soft-deletes the schedule and stops its sleep reminders. Args: scheduleId: The id of the schedule to delete (from get_sleep_schedules).
cora_delete_sleep_schedule
Re-log a known past meal or saved template without AI re-estimation. Use only after resolving the exact typed source through get_nutrition or search_nutrition. Re-read the target day afterward to verify the write. Args: source: "entry" (copy a past logged meal) or "template" (instantiate a saved meal template). source_id: Id of the source entry/template. For an exact day, get the entry id from get_nutrition; for a vague meal or template, use search_nutrition. A planned_meal_id is never valid here. date: Day to log to, YYYY-MM-DD. portions: Portion multiplier (default 1).
cora_duplicate_nutrition
Scale the portions of a logged meal, or delete it. Args: entry_id: The nutrition entry id — find it via get_nutrition or search_nutrition. action: "scale" (multiply all macros by scale_factor) or "delete" (removes the entry — irreversible). scale_factor: Required for "scale", e.g. 0.5 for half, 2 for double.
cora_edit_nutrition
Generate a complete personalized training plan and make it the user's CURRENT plan in Cora — structure (phases/weeks) plus the first week of concrete workouts with exercises. Takes ~30-60 seconds (two AI generations). The previous current plan is archived to Plan History (recoverable), so CONFIRM with the user before calling if they already have an active plan (check get_training_plan). `description` is freeform — goals, schedule, equipment, experience, injuries, preferences (e.g. "build muscle, 4x/week, full gym, bad left knee, hate burpees"). Optional duration_weeks (4-16) and workouts_per_week (2-6) pin those choices; omitted = AI decides. After it returns, the plan is live in the app immediately. Use manage_training_plan for day-to-day edits and get_training_plan to view it.
cora_generate_training_plan
How the Cora app works: screens, navigation paths, feature flows, metric definitions/ranges, and troubleshooting — the SAME knowledge base Cora's in-app FAQ uses. Call this whenever the user asks "how do I…", "where do I find…", "what does <metric/score> mean", or something in Cora looks broken. Pass a few keywords as `query` (e.g. "connect chatgpt", "recovery score bands", "edit habit"); omit it for a table of contents. Answer from the returned entries — do not guess at app behavior. No user data is involved and no data scope is required.
cora_get_app_help
Get the user's weekly cardio (zone-minutes) goals, if set.
cora_get_cardio_goals
Day-by-day sleep, recovery, and activity scores for exact dates. Use this (NOT get_sleep/get_recovery, which return window summaries) when the user asks about a SPECIFIC day — "what was my sleep score last night / on July 2?". Each row is one local calendar day in the user's timezone; a sleep row for day D covers the night ending that morning. Args: start_date: Range start YYYY-MM-DD. Omit for the last 14 days. end_date: Range end YYYY-MM-DD. Omit for today (user's timezone).
cora_get_daily_scores
Get one habit's streak, completion rate and recent period results. Args: goal_id: The habit's goal id — find it via get_habits. range: Window — one of 7d, 30d, 90d, 180d, 365d.
cora_get_habit_progress
Get the user's active habits, routines and journals.
cora_get_habits
Raw per-day values for ONE metric — use for trend graphs and tables. This is the series behind get_stats' aggregates: every recorded value with its date, sorted ascending. Perfect for "graph my resting heart rate for the past week" or correlating two metrics (call twice). Args: metric: One metric slug — same slugs as get_stats (e.g. "resting_heart_rate", "hrv", "sleep_score", "step_count", "daily_protein_g"). An invalid value returns the full list. range: Window ending today — one of 7d, 30d, 90d, 180d, 365d. Ignored when start_date/end_date are given. start_date: Optional exact range start, YYYY-MM-DD. end_date: Optional exact range end, YYYY-MM-DD (defaults to today in the user's timezone when only start_date is given).
cora_get_metric_timeseries
Get the user's logged meals and macro totals for one day. Use whenever the source day is known, including when resolving a logged entry for a later edit or duplicate operation. Each item's macro values are consumed totals after its servings multiplier; servings and serving_size_g are returned separately for exact comparison. Args: date: Day to fetch as YYYY-MM-DD. Omit to use today (user's timezone).
cora_get_nutrition
Get the user's daily nutrition goals (calorie/macro targets). Goals are dated and carry forward until changed; this returns the targets in effect today (user's timezone).
cora_get_nutrition_goals
Read the user's saved Nutrition profile — the answers from the app's Your Profiles > Nutrition screen (goals, style, eating pattern/routine, diet type, restrictions, food likes/avoids, meals per day, challenges, notes). Returns {profile, completed, answers}. Use before set_nutrition_profile to see what's already set (a provided list REPLACES, so read first).
cora_get_nutrition_profile
Get stable field and option ids for one onboarding intake stage. Args: stage: goal | current | profile. pillar: Required for current/profile. Read the active pillar from get_onboarding_status.
cora_get_onboarding_options
Get progress for a new user's goal -> current -> profile intake. Use current_stage and active_pillar to call get_onboarding_options, then save answers using only its stable option ids. When has_completed_native_onboarding is true, intake is closed; use the get_/set_*_profile tools instead.
cora_get_onboarding_status
Get the user's planned (not-yet-logged) meals and meal notes for a range. These are meals the user has planned ahead, distinct from logged diary entries (see get_nutrition for what was actually eaten). Args: start_date: Range start YYYY-MM-DD. Omit for today (user's timezone). end_date: Range end YYYY-MM-DD. Omit to use start_date + 7 days.
cora_get_planned_meals
List the valid option ids for every Training/Sleep/Nutrition profile field, so you don't hardcode them. Use these values with set_*_profile. Returns {training, sleep, nutrition} -> field -> either a list of allowed ids (enum fields) or a machine descriptor for non-enum fields ({"type": "free_text"} or {"type": "number", "min": .., "max": ..}). This is static vocabulary and exposes no user data; it gates on ANY read scope purely to keep the surface authenticated.
cora_get_profile_options
Summary stats of recovery score, HRV and resting HR over a window. Returns min/max/mean over the window — for a SPECIFIC day's values use get_daily_scores instead. Args: range: Window — one of 7d, 30d, 90d, 180d, 365d.
cora_get_recovery
Get the user's saved workout templates, optionally filtered by name. Use the returned template id with add_workout_from_template to schedule it. manage_training_plan does not accept template ids. Args: query: Optional text to match against template names. Omit to list all.
cora_get_saved_workouts
Summary stats of the user's sleep duration and score over a window. Returns min/max/mean over the window — for a SPECIFIC day's score use get_daily_scores instead. Args: range: Window — one of 7d, 30d, 90d, 180d, 365d.
cora_get_sleep
Read the user's saved Sleep profile — the answers from the app's Your Profiles > Sleep screen (ideal hours, goals, issues, environment, lifestyle factors, notes). Returns {profile, completed, answers, note}. `note` flags that this reads the backend sleep profile Cora uses for coaching; the app's on-device Sleep screen (MMKV) is stored separately and may not match — read it and surface the caveat rather than assuming this is the source of truth.
cora_get_sleep_profile
List the user's active sleep schedules — each with its scheduleId, bedtime, wake time, days, and optional wind-down/up minutes. Use this to resolve a day-conflict from set_sleep_schedule (find the overlapping schedule, then update or delete it), or to fetch the current scheduleId before an update. Each set_sleep_schedule write returns a NEW scheduleId, so re-read here if you've lost track. Returns {schedules: [...]}.
cora_get_sleep_schedules
Compute summary statistics for health metrics over a time window. Supported metric slugs: Recovery: recovery_score, hrv, resting_heart_rate Sleep: sleep (duration), sleep_score Activity/day: zo2_strain_actual_score, zo2_strain_target_score, step_count, active_energy_burned, basal_energy_burned, vo2_max, max_heart_rate, hrr, o2_saturation, zone0_minutes..zone5_minutes, low_intensity_minutes, high_intensity_minutes Workouts: workout_duration, workout_calories, workout_strain_score, workout_average_heart_rate, workout_max_heart_rate, workout_distance, workout_average_pace, workout_low_intensity_minutes, workout_high_intensity_minutes Nutrition macros: daily_calories, daily_protein_g, daily_carbs_g, daily_fat_g, daily_sugar_g Nutrition micros: daily_fiber_g, daily_sodium_mg, daily_saturated_fat_g, daily_cholesterol_mg, daily_potassium_mg, daily_calcium_mg, daily_iron_mg, daily_vitamin_d_ug, daily_added_sugars_g, daily_trans_fat_g, daily_caffeine_mg Args: metric: Metric slug(s), comma-separated, max 10 (e.g. "hrv" or "recovery_score,sleep,daily_protein_g"). range: Window — one of 7d, 30d, 90d, 180d, 365d.
cora_get_stats
Get the user's current training plan and its scheduled workouts.
cora_get_training_plan
Read the user's saved Training profile — the answers from the app's Your Profiles > Training screen (goals, training types, environment, schedule, experience, injuries, notes). Returns {profile, completed, answers}. `completed` is false when the user hasn't finished this profile yet. Use before set_training_profile to see what's already set (a provided list REPLACES, so read first to avoid dropping existing answers).
cora_get_training_profile
Get the user's logged body-weight entries over a window (newest first). Returns weights the user logged via Cora (values in their stated unit). Does NOT include Apple Health data. Args: range: Window — one of 7d, 30d, 90d, 180d, 365d.
cora_get_weight_history
Get full details of one planned workout (exercises, sets, instructions). Args: workout_id: The planned workout id — get it from get_training_plan.
cora_get_workout_details
Get the user's COMPLETED workouts (planned + manually logged). Omit both dates to get the most recent workout(s). For the upcoming plan use get_training_plan; for one planned workout's exercises use get_workout_details. Args: start_date: Range start YYYY-MM-DD. Omit with end_date for "recent N". end_date: Range end YYYY-MM-DD. limit: Max workouts (used in recent-N mode; default 1 when no dates).
cora_get_workouts
List pending one-shot push reminders.
cora_list_reminders
Record one or more body circumference measurements. Values are interpreted in the user's preferred unit from their profile (inches for imperial, centimeters otherwise). Args: measurements: Items with "type" (waist, neck, shoulders, chest, biceps, glutes, forearms, abdomen, thighs, or calves) and positive numeric "value". date: Day to record as YYYY-MM-DD. Omit for today (user's timezone).
cora_log_body_measurement
Record an answer to a journal (check-in). Args: checkin_id: The journal id — find it via get_habits. value: The answer — a number for scale/number journals, true/false for yes/no, a string for text, or a list of strings for tags. timestamp: ISO datetime it happened (defaults to now). notes: Optional note.
cora_log_checkin_event
Mark a habit as done for a period (binary/check-off habits only). Args: goal_id: The habit's goal id — find it via get_habits. value: Optional numeric value (defaults to 1 = done). timestamp: ISO datetime it happened (defaults to now, user timezone). notes: Optional note for the log.
cora_log_habit_event
Log a meal from a free-text description (Cora estimates the macros). Use when the user describes genuinely new food they ate, such as "I had a protein shake and a banana". This estimates calories/macros and saves them. Do not use for a known past entry or template; resolve and duplicate that record instead so it is not estimated again. Args: text: What the user ate, in natural language (3-2000 chars). date: Day to log to as YYYY-MM-DD. Omit for today (user's timezone).
cora_log_nutrition
Record the user's body weight. NOTE: this saves to the user's Cora body-measurement record; it does NOT write to Apple Health / HealthKit (that is the app's on-device job). Args: value: Weight amount in the given unit (must be positive). unit: "kg" or "lb". Defaults to "kg" — always pass the user's unit. date: Day to record as YYYY-MM-DD. Omit for today (user's timezone).
cora_log_weight
Log a COMPLETED strength/resistance workout from a description. Parses the described exercises, sets, reps and weights into structured data (matched to the exercise library) and saves it as a finished workout. Use ONLY for strength/weightlifting/bodyweight/HIIT — not runs, cycling, or yoga. Args: description: Exercises with sets/reps/weight, e.g. "bench press 3x8 at 185, squats 4x5 at 225". activity_title: Short title, e.g. "Leg Day", "Push Day", "Upper Body". date: Day the workout was done (YYYY-MM-DD). Omit for today. duration_minutes: Total minutes if known; omitted = estimated from the exercises and sets (~5 min per exercise).
cora_log_workout
Move, rename, or remove workouts in the user's training plan. Each operation is an object with an "action" and its fields: - {"action": "move", "workoutId": "<id>", "date": "YYYY-MM-DD"} Reschedules an existing workout to a new date. - {"action": "rename", "workoutId": "<id>", "displayName": "New name"} Renames an existing workout. - {"action": "remove", "workoutId": "<id>"} Deletes a workout from the plan. Get workout IDs from get_training_plan first. For a new scheduled workout, use add_planned_workout so trusted code derives its HealthKit ID from an exact activity name. Legacy clients may continue replaying the older add operation shape. To log a workout the user actually did, use log_workout. Args: operations: List of operation objects as described above.
cora_manage_training_plan
Pause a habit (stops streak tracking until resumed). Args: goal_id: The habit's goal id — find it via get_habits.
cora_pause_habit
Plan a future meal (NOT logged as eaten — see get_planned_meals). Args: name: Meal name, e.g. "Chicken burrito bowl". items: At least one food item; always required, including template-only saves. Each item uses per-serving name, calories, proteinG, carbsG, fatG, sugarG, servings, and servingSizeG fields. date: Day (YYYY-MM-DD) or list of days to plan it on. Either date or save_as_template is required. meal_type: breakfast | lunch | dinner | snack | dessert. description: Optional short note about the meal. recipe: FULL recipe text (ingredients + instructions). When the conversation contains a recipe the user wants saved, pass the complete text here — it is stored on the meal and template and shown in the Cora app. Do not summarize it away. save_as_template: Also save it as a reusable meal template. Note: this does NOT create a reminder. To schedule a one-shot push notification, use set_reminder.
cora_plan_meal
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.
What are Cora alternatives on ChatGPT?
As of 2026-09-22, Cora competes with Alma: Nutrition Coach, Amy Food Journal, BurnFat – Calorie Tracker, BurnWeek, Cal Plus, Calorie Tracker, Calorie Tracker Guide, CalorieCam, Calories Club, ChefPlan, MyFitnessPal, NutriMindz, NutriSave, PlateLens, SnapCal, Sphere Calorie Tracker, SpoonPal, WeightWatchers, WeightWise, Zinde AI Free Calorie Tracker in ChatGPT Calorie & Nutrition Tracking Coaches, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.