add_to_list
ChatGPTAdd ONE item to a list; for 3+ use bulk_add_to_list. Prefer list_id; fall back to list_name or list_type only when no id is known. category files it under one of the list's categories (see get_lists); a new name creates one. On a list with fields (e.g. subscriptions), item_text is just the name and values carries the fields.
add_to_shopping_list
ChatGPTAdd one or more items to the shopping list.
bulk_add_to_list
ChatGPTAPPEND items to a list in submitted order (switches it to manual sort); prefer over add_to_list for 3+ items. Never reorders or replaces existing items. Lists cap at 100: overflow comes back in skipped_count/skipped, so check those and don't assume full success. Give each item a category to group the list; new names are created automatically.
complete_chore
ChatGPTMark a chore completed; for recurring chores, the given instance.
complete_list_item
ChatGPTCheck off or uncheck a list item.
complete_reminder
ChatGPTMark a reminder as completed
create_birthday
ChatGPTCreate a birthday, anniversary or other yearly date; recurs annually as an all-day calendar event. For several use create_birthdays.
create_birthdays
ChatGPTCreate several yearly dates at once; ALWAYS prefer over repeated create_birthday. items: same fields as create_birthday. Existing entries are skipped and reported as already_present.
create_chore
ChatGPTCreate a chore. Omit assigned_to to leave it 'up for grabs' (any member can claim it by completing it and earn the feathers).
create_event
ChatGPTCreate a calendar event. For several at once (e.g. a timetable) use create_events.
create_events
ChatGPTCreate up to 50 events per call (batch if more); ALWAYS prefer this over repeated create_event. items: same fields as create_event, at least title and start_date; family_member_ids, never names.
create_list
ChatGPTCreate a list (manual order by default). grocery=true for shopping lists (aisle sorting). shared_with_family=false hides it from the rest of the family - use for gift/surprise/secret lists. categories when the list naturally splits into groups (packing: Clothes, Toiletries, Kids), then file items via bulk_add_to_list's category; not for grocery lists, which use aisles. preset='subscriptions' for tracking recurring payments (amount, billing cadence, renewal date).
create_meal_plan
ChatGPTAdd meals to the meal plan (a weekly grid, not the calendar: use this, not create_event). Pass the whole week in one call. name is the dish as a string - do not call save_recipe just to attach ids; recipe_id only for a recipe already saved (get_saved_recipes).
create_reminder
ChatGPTCreate a reminder; family_member_ids from get_family_members, never names. For several use create_reminders.
create_reminders
ChatGPTCreate several reminders at once; ALWAYS prefer over repeated create_reminder. items: same fields as create_reminder.
delete_event
ChatGPTDelete one event. Recurring: instance_date deletes only that occurrence, omit it for the whole series.
delete_list_item
ChatGPTRemove an item from a list.
delete_reminder
ChatGPTDelete a reminder
get_birthdays
ChatGPTGet family birthdays sorted by how soon they occur; days_ahead sets the window.
get_chores
ChatGPTChores due in a date window; ALWAYS pass start_date and end_date (today: both today; this week: today to +7 days). ONE row per chore with dates (every due date in the window) and completed_dates. truncated=true means chores were left out and error means the lookup failed: say so rather than concluding what is scheduled. Do NOT pass status to ask what got done - a recurring chore stays pending for life, so status='completed' matches none; read completed_dates.
get_event_by_id
ChatGPTOne event's full stored record by id (description, location, source links, alerts, visibility, recurrence; source_ids.email_id is the forwarded email it came from), plus reminders_from_same_source: reminders read off the same flyer or email (forms, fees, what to bring), which may belong to other events in it. Use to verify a create_event/update_event took effect. Accepts a recurring-instance id (parentId_YYYY-MM-DD), resolved to the parent series.
get_events
ChatGPTCalendar events with recurring instances expanded. ALWAYS pass start_date and end_date (today: both today; this week: today to +7 days). Filter by family_member_id, never a name. start_time/end_time are wall-clock in the event's 'timezone' (IANA; null = user's home timezone); an event in another zone also has local_start_date/local_start_time/local_end_date/local_end_time on the user's clock - say those. Writes take start_ in the event's zone: to keep a time unchanged pass start_ back as stored; to move it to a time the user names (their clock), pass that start_time and the end_time on the same clock (keep the duration) with timezone set to the user's zone. A timezone that doesn't match the event's location (a Crete dinner labelled Europe/London) was mislabelled at import: fix via update_event's timezone with start_time unchanged, never by shifting the clock. Full records; for one event by id (e.g. to verify a write) use get_event_by_id.
get_family_members
ChatGPTGet the user's family members: children, adults, and profiles (people or labels without a login - assignable to events and reminders, never chores).
get_list_items
ChatGPTGet a list's items (list ID from get_lists).
get_lists
ChatGPTThe user's lists with folder_id/folder_name; check before adding items.
get_meal_plan
ChatGPTPlanned meals in a date range; check before suggesting or adding meals.
get_pantry
ChatGPTThe family's kitchen inventory: what's on hand by place (Pantry/Fridge/Freezer...) with best-before dates; use_soon lists what to use first. Also answers, one mode per call: recipe_id = do we have everything for this recipe (have/short/missing per ingredient); start_date+end_date = what the meal plan in that range needs that isn't on hand (to_buy, ready for add_to_shopping_list; meals without a saved recipe are listed in not_checked); suggest_recipes = what can we make with what we have (saved recipes, fewest missing first, use-soon food preferred; recipes with a family member's allergen or against their diet are left out). warnings name allergies or diets a recipe breaks. Check it before suggesting meals or building a shopping list.
get_recipe_details
ChatGPTFull details of a saved recipe (ingredients, instructions).
get_reminders
ChatGPTGet or search reminders. Overdue: end_date yesterday + status pending. Today: start_date and end_date today.
get_saved_recipes
ChatGPTSaved recipes as summary rows (no ingredients; get_recipe_details for the full record). Narrow with search, cuisine or tag. Rows carry family feedback when present: favorite_of (first names), verdicts (name -> loved/liked/not_for_us), times_made, last_made.
import_recipe_from_url
ChatGPTImport a recipe from a web link: Sense fetches the REAL ingredients, instructions, times and photo. ALWAYS use for a recipe URL or 'save this recipe from' a site; NEVER write one out from a link with save_recipe. Returns the saved recipe.
save_recipe
ChatGPTSave a generated or discussed recipe the user wants to keep.
search
ChatGPTKeyword search across reminders, events, lists, recipes and chores.
search_events
ChatGPTKeyword search over events: the fewest distinctive keywords (a name, place or noun), not a sentence. Returns lean summaries. Fuzzy and typo-tolerant, so loose matches appear; if the event isn't among them retry with different or broader keywords before concluding it doesn't exist.
search_reminders
ChatGPTKeyword search over reminders.
update_event
ChatGPTUpdate a calendar event; only passed fields change.
update_family_member_info
ChatGPTSet a family member's food profile (parents only): allergies, diet, loves, avoids (won't eat). Each list you send REPLACES theirs, so read get_family_members first and send the full list. Allergies and diets are hard rules for meal suggestions; loves and avoids only change ranking. additional_info adds a stable non-food trait to a child.
update_list_item
ChatGPTUpdate a list item's text, notes, completion, or field values (lists with fields; money in major units, null clears a value).
update_meal_plan
ChatGPTUpdate one meal plan entry; only passed fields change.
update_pantry
ChatGPTOne call for any pantry change: add what came home; use (subtract an amount, or without one it's finished); remove; update an item (rename, amount, move place, best-before); cooked = a saved recipe was made, so take out what it used and log it as made; settings = auto-remove days, add/rename places, the family's keeping times for a food. Never adds to shopping lists.
update_reminder
ChatGPTUpdate a reminder; reassign via family_member_ids (the full new list), never names. Only passed fields change.