cora_add_planned_workout
ChatGPTSchedule 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_workout_from_template
ChatGPTSchedule 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_analyze_meal
ChatGPTEstimate 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_ask_coach
ChatGPTAsk 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_cancel_reminder
ChatGPTCancel a pending one-shot push reminder by id.
cora_complete_routine
ChatGPTMark 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_create_habit
ChatGPTCreate 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_journal
ChatGPTCreate 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_routine
ChatGPTCreate 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_delete_habit
ChatGPTDelete 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_journal
ChatGPTDelete 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_routine
ChatGPTDelete 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_sleep_schedule
ChatGPTDelete 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_duplicate_nutrition
ChatGPTRe-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_edit_nutrition
ChatGPTScale 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_generate_training_plan
ChatGPTGenerate 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_get_app_help
ChatGPTHow 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_cardio_goals
ChatGPTGet the user's weekly cardio (zone-minutes) goals, if set.
cora_get_daily_scores
ChatGPTDay-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_habit_progress
ChatGPTGet 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_habits
ChatGPTGet the user's active habits, routines and journals.
cora_get_metric_timeseries
ChatGPTRaw 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_nutrition
ChatGPTGet 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_goals
ChatGPTGet 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_profile
ChatGPTRead 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_onboarding_options
ChatGPTGet 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_status
ChatGPTGet 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_planned_meals
ChatGPTGet 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_profile_options
ChatGPTList 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_recovery
ChatGPTSummary 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_saved_workouts
ChatGPTGet 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_sleep
ChatGPTSummary 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_profile
ChatGPTRead 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_schedules
ChatGPTList 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_stats
ChatGPTCompute 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_training_plan
ChatGPTGet the user's current training plan and its scheduled workouts.
cora_get_training_profile
ChatGPTRead 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_weight_history
ChatGPTGet 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_workout_details
ChatGPTGet full details of one planned workout (exercises, sets, instructions). Args: workout_id: The planned workout id — get it from get_training_plan.
cora_get_workouts
ChatGPTGet 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_list_reminders
ChatGPTList pending one-shot push reminders.
cora_log_body_measurement
ChatGPTRecord 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_checkin_event
ChatGPTRecord 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_habit_event
ChatGPTMark 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_nutrition
ChatGPTLog 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_weight
ChatGPTRecord 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_workout
ChatGPTLog 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_manage_training_plan
ChatGPTMove, 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_pause_habit
ChatGPTPause a habit (stops streak tracking until resumed). Args: goal_id: The habit's goal id — find it via get_habits.
cora_plan_meal
ChatGPTPlan 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_resume_habit
ChatGPTResume a paused habit. Args: goal_id: The habit's goal id — find it via get_habits.
cora_save_healthkit_workout_template
ChatGPTSave a reusable HealthKit workout template from an exact activity name. Trusted code derives the numeric HealthKit ID. Use save_workout_template for custom or built-in Cora workout identifiers. Args: name: Template name, e.g. "Saturday Basketball". exercises: A non-empty list of exercises in order; each exercise needs a title and may include set_count/library_exercise_id/ custom_exercise_id. workout_type_name: Exact Apple HealthKit activity name from the enum. description: Optional template description. target_duration_min: Estimated duration in minutes (default 45). equipment_needed: Optional equipment list. components: Optional instructions, each {"description": ...}.
cora_save_onboarding_step
ChatGPTValidate and save one goal/current/profile intake step. Read get_onboarding_status and get_onboarding_options first. Omit expected_state_version on the first save. Every subsequent save must pass the state_version returned by the previous save or by get_onboarding_status. Validation errors identify invalid stable ids; correct them and retry. Continue until collection_status is complete.
cora_save_workout_template
ChatGPTSave a reusable workout template (a saved workout). Args: name: Template name, e.g. 'Upper Body Push'. exercises: Exercises in order — each {"title", optional "set_count" (defaults to 3), optional "library_exercise_id"/"custom_exercise_id"}. workout_type: {"source": "custom"|"standard", "name"/"code"}. Use source='custom' with a name for most cases. Legacy integrations remain supported; new HealthKit templates must use save_healthkit_workout_template instead. description: Optional template description. target_duration_min: Estimated duration in minutes (default 45). equipment_needed: Optional equipment list. components: Optional instructions, each {"description": ...}.
cora_search_nutrition
ChatGPTSearch the user's past logged meals and/or saved meal templates. Use when the meal/date is vague, or to find a saved template before calling duplicate_nutrition. For a known day use get_nutrition instead. Search text should be food/title words, not date phrases such as "yesterday". Args: query: Optional text to match against titles/descriptions. Omit to list recent items. source: "entries" (logged meals), "templates" (saved meals), or "all". limit: Max results per source (1-50, default 20).
cora_set_meal_note
ChatGPTSet (or clear with "") the user's meal note for a day + meal slot. Args: date: Day, YYYY-MM-DD. slot: general | breakfast | lunch | dinner | snack | dessert. note: The note text; empty string clears it.
cora_set_nutrition_profile
ChatGPTFill in the user's Nutrition profile — the same answers as the app's Your Profiles > Nutrition screen. Cora uses these for all nutrition coaching. Only provide fields you actually know about the user; omitted fields (and empty lists / blank notes) are left unchanged. A provided list REPLACES that field entirely — send the full desired set, not a delta. Marks the profile complete once at least one real field is given — a call with no fields does nothing. Args: nutritionGoals: Any of: fat_loss, muscle_gain, maintenance, body_recomp, performance, eat_smarter. nutritionStyle: Any of: strict_tracking, flexible_tracking, structure_no_count, intuitive, occasional_tips, meal_suggestions. currentEatingPattern: One of: dialed_in, mostly_good, inconsistent, unstructured, starting_over, not_sure. eatingRoutine: One of: cook_at_home, mixed, eat_out, meal_prep, family_meals, travel_shift. dietType: Any of: high_protein, mediterranean, keto, paleo, vegetarian, vegan, pescatarian, whole30, carnivore, flexible_dieting. dietaryRestrictions: Any of: gluten_free, dairy_free, nut_free, soy_free, egg_free, shellfish_free, low_fodmap, halal, kosher, sugar_free. foodAvoidTags: Free-text foods to avoid (NOT a fixed list). Common category tags like red_meat, shellfish, dairy, eggs, gluten, soy, nuts render as chips in-app; any other food is kept as plain text. foodLikeTags: Free-text foods the user likes (same free-form style as foodAvoidTags — any string is accepted). mealsPerDay: Any of: 2_meals, 3_meals, 4_meals, 5_plus_meals, varies, snacking. nutritionChallenges: Any of: overeating, undereating, low_protein, late_night_snacking, skipping_meals, too_much_sugar, eating_out, lack_of_time, food_cravings, social_eating, meal_planning, portion_control. extraNotes: Free-text notes about nutrition.
cora_set_reminder
ChatGPTSchedule a one-shot push notification reminder. The message is stored and delivered as a push notification almost verbatim. This does not run Cora, inspect user data, or create recurring reminders. Args: message: Reminder body, 2-500 chars, e.g. "Start my zone 2 run". reminder_date: Local date to send on, YYYY-MM-DD. reminder_time: Local time to send at, HH:MM or HH:MM:SS. timezone_name: IANA timezone, e.g. America/Los_Angeles.
cora_set_sleep_profile
ChatGPTFill in the user's Sleep profile — the same answers as the app's Your Profiles > Sleep screen. Cora uses these for all sleep coaching. (Note: this updates the backend sleep profile Cora reads; the app's on-device Sleep screen won't visibly reflect it yet.) Only provide fields you actually know about the user; omitted fields (and empty lists / blank notes) are left unchanged. A provided list REPLACES that field entirely — send the full desired set, not a delta. Marks the profile complete once at least one real field is given — a call with no fields does nothing. Args: idealSleepHours: Target hours of sleep per night (number). sleepGoals: Any of: fall_asleep_faster, sleep_longer, better_quality, more_energy, consistent_schedule, fewer_wakeups. sleepIssues: Any of: trouble_falling_asleep, waking_during_night, waking_too_early, sleep_apnea, snoring, restless_legs, teeth_grinding, insomnia, none. sleepEnvironment: Any of: too_warm, too_cold, too_bright, noisy, uncomfortable_mattress, partner, pets, children. lifestyleFactors: Any of: late_caffeine, screen_time, late_exercise, shift_work, travel_timezones, stress_anxiety, alcohol, late_meals. extraNotes: Free-text notes about sleep.
cora_set_sleep_schedule
ChatGPTSet (create or update) the user's sleep schedule — target bedtime, wake time and which days it applies to. Unlike the sleep profile preferences, this DOES persist server-side and drives the app's sleep reminders. Omit scheduleId to create a new schedule; pass an existing scheduleId to update it. NOTE: each write returns a NEW scheduleId (the previous row is closed) — persist the returned id and pass THAT to the next update; a stale/closed id errors. Day sets can't overlap another active schedule (that errors — get_sleep_schedules then update/delete the other one instead). Args: bedtime: Target bedtime as "HH:MM" (24-hour), e.g. "22:30". wakeTime: Target wake time as "HH:MM" (24-hour), e.g. "06:30". days: Days this applies to — ints 0=Sunday .. 6=Saturday, 1-7 unique. windDownMinutes: Optional pre-bed wind-down length (0-180). windUpMinutes: Optional post-wake wind-up length (0-180). scheduleId: Existing schedule id to update; omit to create a new one. Each write returns a NEW scheduleId; pass the latest one back.
cora_set_training_profile
ChatGPTFill in the user's Training profile — the same answers as the app's Your Profiles > Training screen. Cora uses these for all training coaching. Only provide fields you actually know about the user; omitted fields (and empty lists / blank notes) are left unchanged. A provided list REPLACES that field entirely — send the full desired set, not a delta. Marks the profile complete once at least one real field is given — a call with no fields does nothing. Args: mainGoal: Primary goal. One of: build_muscle, lose_fat, improve_cardio, performance, health_energy, routine, recovery, general_fitness. secondaryGoals: Other goals, from the same set as mainGoal. trainingTypes: Preferred training. Any of: weightlifting, cardio, hiit, functional, mobility, sports, bodyweight, walking. environment: Equipment/access. Any of: gym, home, dumbbells, bodyweight, outdoor, mix. schedule: Weekly frequency. One of: 1_per_week, 2_per_week, 3_per_week, 4_per_week, 5_per_week, 6_plus_per_week. sessionDuration: Typical session length. One of: quick, medium, standard, long, very_long. injuriesToAvoid: Areas to work around. Any of: lower_back, knee, shoulder, neck, ankle, wrist_elbow, hip_glutes, foot. experienceLevel: One of: beginner, beginner_intermediate, intermediate, intermediate_advanced, advanced. extraNotes: Free-text notes about training preferences.
cora_update_journal
ChatGPTUpdate a journal. Only the provided fields change. Args: checkin_id: The journal id — find it via get_habits. title: New name. prompt: New question text. category: New category (invalid value returns the valid list). input_kind: New answer type (invalid value returns the valid list). schedule_kind: New schedule (invalid value returns the valid list). days_of_week: Days 0-6 (0=Sunday) for weekly schedules. reminder_enabled: Turn the reminder on/off (first enable needs reminder_hour + reminder_minute). reminder_hour: Reminder hour 0-23. reminder_minute: Reminder minute 0-59. notes: New notes.
cora_update_routine
ChatGPTUpdate a routine. Only the provided fields change. WARNING: passing steps REPLACES the routine's entire checklist. Args: routine_id: The routine id — find it via get_habits. title: New name. description: New description. slot: New time-of-day slot (invalid value returns the valid list). category: New category (invalid value returns the valid list). schedule_kind: New schedule (invalid value returns the valid list). days_of_week: Days 0-6 (0=Sunday) for weekly schedules. steps: REPLACES all steps (1-8 step titles, in order). reminder_enabled: Turn the reminder on/off (first enable needs reminder_hour + reminder_minute). reminder_hour: Reminder hour 0-23. reminder_minute: Reminder minute 0-59. notes: New notes.
activate_skill
Claudecall_tool
Claudelist_custom_skills
Claudeload_custom_skill
Claudesearch_tools
Claudewhoami
Claude