MCP 서버

haus

app.onehaus/haus
생산성 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Manages household tasks, calendars, shopping lists, contacts, meals, recipes, subscriptions, pets, vehicles, appliances, and documents.

add_shopping_list_item
Add one item to the shopping list. A new item gets a category from its name; if an unbought item of the same name exists, its quantity is increased instead of duplicating it.
입력 스키마
{'type': 'object', 'examples': [{'name': 'Milk', 'quantity': 2}], 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['Milk'], 'description': "Item name, e.g. 'Milk'. A new item gets a category from its name; a matching unbought item has its quantity increased instead."}, 'category': {'enum': ['FruitAndVegetables', 'Bakery', 'DeliAndPreparedFoods', 'MeatAndSeafood', 'DairyAndEggs', 'Frozen', 'PantryAndDryGoods', 'SnacksAndConfectionery', 'Beverages', 'HouseholdAndCleaning', 'HealthAndPersonalCare', 'BabyAndKids', 'PetSupplies', 'Online', 'Other'], 'type': 'string', 'examples': ['DairyAndEggs'], 'description': 'Store-aisle category to use instead of auto-assigning one; the name is then kept exactly as given. Omit to auto-categorise. Ignored when merged into an existing item.'}, 'quantity': {'type': 'integer', 'examples': [2], 'description': 'How many to add, 1-9999, default 1. Added to the existing quantity when merged.'}, 'shoppingListId': {'type': 'string', 'examples': ['0189c8d4f2b1712a9e4d6c9a1b2e3f4a'], 'description': 'Target list, an id from list_shopping_lists. Omit for the default. Merging only happens within one list.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
assign_task
Assign or unassign a task to a household member.
입력 스키마
{'type': 'object', 'examples': [{'id': '018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a', 'assignedToMemberId': '7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a'], 'description': 'Task id from create_task or list_tasks.'}, 'assignedToMemberId': {'type': ['string', 'null'], 'examples': ['7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e'], 'description': 'Member id from list_house_members. Empty or null unassigns.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
batch_add_shopping_list_items
Add up to 25 shopping list items at once, for a whole shop. Names are deduplicated within the batch and merged into any matching unbought item already listed.
입력 스키마
{'type': 'object', 'examples': [{'items': [{'name': 'Milk', 'quantity': 2}, {'name': 'Eggs', 'quantity': 1}]}], 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'quantity'], 'properties': {'name': {'type': 'string', 'examples': ['Milk'], 'description': "Item name, e.g. 'Milk'. Duplicate names are summed within the batch and merged into any matching unbought item."}, 'category': {'enum': ['FruitAndVegetables', 'Bakery', 'DeliAndPreparedFoods', 'MeatAndSeafood', 'DairyAndEggs', 'Frozen', 'PantryAndDryGoods', 'SnacksAndConfectionery', 'Beverages', 'HouseholdAndCleaning', 'HealthAndPersonalCare', 'BabyAndKids', 'PetSupplies', 'Online', 'Other'], 'type': 'string', 'examples': ['DairyAndEggs'], 'description': 'Store-aisle category to use instead of auto-assigning one; the name is then kept exactly as given. Omit to auto-categorise. Ignored when merged into an existing item.'}, 'quantity': {'type': 'integer', 'minimum': 1, 'examples': [2], 'description': 'How many to add, 1-9999. Summed quantities are capped at 9999.'}}, 'description': 'One item to add, with its quantity.'}, 'examples': [[{'name': 'Milk', 'quantity': 2}]], 'maxItems': 25, 'description': 'Items to add, up to 25 per call.'}, 'shoppingListId': {'type': 'string', 'examples': ['0189c8d4f2b1712a9e4d6c9a1b2e3f4a'], 'description': 'Target list for every item in this call, an id from list_shopping_lists. Omit for the default. Merging only happens within one list.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
buy_shopping_list_item
Mark units of a shopping list item as bought, reducing its quantity by quantityToBuy and clearing it off the list once nothing is left.
입력 스키마
{'type': 'object', 'examples': [{'id': '0189c8d4f2b1712a9e4d6c9a1b2e3f4a', 'quantityToBuy': 1}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0189c8d4f2b1712a9e4d6c9a1b2e3f4a'], 'description': 'Item id from add_shopping_list_item or list_shopping_list_items.'}, 'quantityToBuy': {'type': 'integer', 'examples': [1], 'description': 'Units bought, 1-9999, default 1. At or above the remaining quantity the item is fully bought and leaves the list.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
complete_task
Marks a task as completed and records the completion for the household's momentum stats. Fails with a conflict if the task is already completed.
입력 스키마
{'type': 'object', 'examples': [{'id': '018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a'], 'description': 'Task id from create_task or list_tasks.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
create_appliance
Create an appliance record for the household, tracking purchase date, warranty expiry, and optional references to previously created warranty/insurance documents.
입력 스키마
{'type': 'object', 'examples': [{'name': 'Kitchen Refrigerator', 'brand': 'Samsung', 'model': 'RF28R7351SG', 'purchaseDate': '2023-11-04', 'serialNumber': 'S/N-4471829', 'warrantyExpiryDate': '2025-11-04'}], 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['Kitchen Refrigerator'], 'description': 'Name, e.g. what it is or where it lives.'}, 'brand': {'type': 'string', 'examples': ['Samsung'], 'description': 'Manufacturer or brand.'}, 'model': {'type': 'string', 'examples': ['RF28R7351SG'], 'description': 'Model, as printed on the appliance or manual.'}, 'notes': {'type': 'string', 'examples': ['Extended warranty purchased in-store, receipt in the kitchen drawer.'], 'description': 'Freeform notes.'}, 'purchaseDate': {'type': 'string', 'examples': ['2023-11-04'], 'description': 'Purchase date, YYYY-MM-DD.'}, 'serialNumber': {'type': 'string', 'examples': ['S/N-4471829'], 'description': 'Serial number, for support or warranty claims.'}, 'warrantyDocumentId': {'type': 'string', 'examples': ['doc_8f3a1c2b9e4d'], 'description': 'Warranty document id from create_document.'}, 'warrantyExpiryDate': {'type': 'string', 'examples': ['2025-11-04'], 'description': 'Warranty expiry, YYYY-MM-DD. Must not precede purchaseDate.'}, 'insuranceDocumentId': {'type': 'string', 'examples': ['doc_1a2b3c4d5e6f'], 'description': 'Insurance document id from create_document.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
create_calendar_event
Creates a single, one-off calendar event on the household calendar. Timed events need startDateTime; all-day events need startDate (plus endDate for several days). Set reminders with reminderOffsetMinutes. For a repeating schedule use create_recurring_calendar_event instead.
입력 스키마
{'type': 'object', 'examples': [{'notes': 'Bring insurance card', 'title': 'Dentist appointment', 'isAllDay': False, 'location': {'$type': 'Address', 'line1': '221B Baker Street', 'postalCode': 'NW1 6XE', 'countryCode': 'GB'}, 'timezone': 'Europe/London', 'description': 'Annual checkup with Dr. Smith', 'endDateTime': '2026-08-03T15:30:00Z', 'startDateTime': '2026-08-03T14:30:00Z', 'reminderOffsetMinutes': [60, 1440]}, {'title': 'Half term', 'endDate': '2026-10-30', 'isAllDay': True, 'startDate': '2026-10-26'}], 'required': ['title', 'isAllDay'], 'properties': {'notes': {'type': 'string', 'examples': ['Bring insurance card'], 'description': 'Freeform notes.'}, 'title': {'type': 'string', 'examples': ['Dentist appointment'], 'description': 'Title shown in calendar views.'}, 'endDate': {'type': 'string', 'examples': ['2026-08-05'], 'description': 'All-day only: LAST day, inclusive, YYYY-MM-DD. Omit for a single day. The event may cover at most 366 days, between 1900 and 2200.'}, 'isAllDay': {'type': 'boolean', 'examples': [False], 'description': 'True for all-day, false for timed.'}, 'location': {'type': 'object', 'required': ['$type'], 'properties': {'url': {'type': 'string', 'examples': ['https://meet.google.com/abc-defg-hij'], 'description': 'Absolute http/https join link.'}, '$type': {'enum': ['Address', 'OnlineLocation'], 'type': 'string', 'examples': ['Address'], 'description': 'Which location shape this is.'}, 'line1': {'type': 'string', 'examples': ['221B Baker Street'], 'description': 'Address line 1. An Address needs one of line1-3 or postalCode.'}, 'line2': {'type': 'string', 'examples': ['Flat 3'], 'description': 'Address line 2, e.g. flat or suite.'}, 'line3': {'type': 'string', 'examples': ['London'], 'description': 'Address line 3.'}, 'notes': {'type': 'string', 'examples': ['Parking on level 2'], 'description': 'Access detail, e.g. parking or passcode.'}, 'postalCode': {'type': 'string', 'examples': ['NW1 6XE'], 'description': 'Postal or ZIP code.'}, 'countryCode': {'type': 'string', 'examples': ['GB'], 'description': 'ISO country code, e.g. GB.'}}, 'description': "Where it happens. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes."}, 'timezone': {'type': ['string', 'null'], 'examples': ['Europe/London'], 'description': "IANA zone for the wall-clock times, e.g. 'Europe/London'. Null means UTC. Not stored when an all-day event is sent with startDate."}, 'startDate': {'type': 'string', 'examples': ['2026-08-03'], 'description': 'All-day only (preferred for all-day): first day, YYYY-MM-DD. Takes precedence over startDateTime. Stored as startDateTime 00:00Z on this day, with endDateTime 00:00Z on the last day (null for a single day).'}, 'description': {'type': 'string', 'examples': ['Annual checkup with Dr. Smith'], 'description': 'Longer description.'}, 'endDateTime': {'type': 'string', 'examples': ['2026-08-03T15:30:00Z'], 'description': 'End of a timed event, ISO 8601 UTC. Must not precede startDateTime. For all-day events send endDate instead. An all-day event sent with endDateTime and no startDate stores it as given, and a midnight endDateTime then names the LAST day (inclusive).'}, 'startDateTime': {'type': 'string', 'examples': ['2026-08-03T14:30:00Z'], 'description': 'Start of a timed event, ISO 8601 UTC with a Z suffix. For an all-day event send startDate instead; when startDate is present this is ignored.'}, 'reminderOffsetMinutes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 525600, 'minimum': 60, 'examples': [1440], 'multipleOf': 60, 'description': 'One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.'}, 'examples': [[1440, 10080]], 'maxItems': 5, 'description': 'Reminder lead times, in minutes before the event starts. Each value is whole hours, 60-1380 (1-23 hours), or whole days, a multiple of 1440 up to 525600 (365 days); a week is 10080. Up to 5 values. An all-day event counts from 00:00 on its first day, so 300 (5 hours) is 19:00 the evening before. Day and week reminders arrive at 19:00 on the earlier day; hour reminders arrive that many hours before the start, or up to 15 minutes earlier. Every household member is reminded.', 'uniqueItems': True}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
create_contact
Add a contact to the address book. Only firstName is required; address, date of birth, notes and the birthday-present flag can follow via update_contact.
입력 스키마
{'type': 'object', 'examples': [{'email': 'sarah.jones@example.com', 'notes': 'Met at the neighbourhood BBQ.', 'phone': '+44 7911 123456', 'address': {'line1': '12 Baker Street', 'postalCode': 'NW1 6XE', 'countryCode': 'GB'}, 'lastName': 'Jones', 'firstName': 'Sarah', 'dateOfBirth': '1990-05-15', 'prepareBirthdayPresent': True}], 'required': ['firstName'], 'properties': {'email': {'type': 'string', 'examples': ['sarah.jones@example.com'], 'description': 'Email address.'}, 'notes': {'type': 'string', 'examples': ['Met at the neighbourhood BBQ.'], 'description': 'Free-text notes.'}, 'phone': {'type': 'string', 'examples': ['+44 7911 123456'], 'description': 'Phone number, any format.'}, 'address': {'type': 'object', 'properties': {'line1': {'type': 'string', 'examples': ['12 Baker Street'], 'description': 'Line 1, typically number and street.'}, 'line2': {'type': 'string', 'examples': ['Flat 3'], 'description': 'Line 2, e.g. apartment or unit.'}, 'line3': {'type': 'string', 'examples': ['London'], 'description': 'Line 3, e.g. town or city.'}, 'postalCode': {'type': 'string', 'examples': ['NW1 6XE'], 'description': 'Postal or ZIP code.'}, 'countryCode': {'type': 'string', 'examples': ['GB'], 'description': 'ISO country code, e.g. GB.'}}, 'description': 'Postal address.'}, 'lastName': {'type': 'string', 'examples': ['Jones'], 'description': 'Last (family) name.'}, 'firstName': {'type': 'string', 'examples': ['Sarah'], 'description': 'First name. The only required field.'}, 'dateOfBirth': {'type': 'string', 'examples': ['1990-05-15'], 'description': 'Date of birth, YYYY-MM-DD. Drives the birthday reminder.'}, 'displayName': {'type': 'string', 'examples': ['Sarah from book club'], 'description': 'Name to show instead of first/last, e.g. a nickname or company.'}, 'prepareBirthdayPresent': {'type': 'boolean', 'examples': [True], 'description': 'Whether to flag a birthday present for them.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
create_document
Store a document (passport, insurance, certificate, warranty, license, other) with its reference number, issuing authority, fee and notes. Returns the new id, which an appliance, vehicle or pet can link to.
입력 스키마
{'type': 'object', 'examples': [{'fee': {'value': 8250, 'currencyCode': 'GBP'}, 'notes': 'Renew before the next family trip.', 'title': 'UK Passport', 'documentType': 'Passport', 'documentNumber': '512345678', 'issuingAuthority': 'HM Passport Office'}], 'required': ['documentType'], 'properties': {'fee': {'type': 'object', 'required': ['value', 'currencyCode'], 'properties': {'value': {'type': 'integer', 'examples': [1599], 'description': "Amount in the currency's minor units. Most currencies have 2 decimal places (1599 = 15.99 USD), but some have none (1500 = 1500 JPY) and a few have 3 (12345 = 12.345 KWD)."}, 'currencyCode': {'type': 'string', 'pattern': '^[A-Z]{3}$', 'examples': ['USD'], 'description': 'Uppercase ISO 4217 code, e.g. USD, GBP, JPY.'}}, 'description': 'Cost, e.g. a renewal or issuance fee.'}, 'notes': {'type': 'string', 'examples': ['Renew before the next family trip.'], 'description': 'Free-text notes.'}, 'title': {'type': 'string', 'examples': ['UK Passport'], 'description': "Custom title. Defaults to type plus number, e.g. 'Passport - 512345678'."}, 'documentType': {'enum': ['Passport', 'Insurance', 'Certificate', 'Warranty', 'License', 'Other'], 'type': 'string', 'examples': ['Passport'], 'description': 'Kind of document.'}, 'documentNumber': {'type': 'string', 'examples': ['512345678'], 'description': 'Reference or serial number, e.g. a passport or policy number.'}, 'issuingAuthority': {'type': 'string', 'examples': ['HM Passport Office'], 'description': 'Who issued it.'}, 'renewalCronExpression': {'type': 'string', 'examples': ['0 0 1 1 *'], 'description': 'Accepted but not yet stored or acted on; has no effect.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
create_meal_plan
Plan a meal for a specific date and meal type. Provide recipeId to link an existing recipe (from list_recipes) OR name for a custom meal; when recipeId is given any name is ignored and stored as null.
입력 스키마
{'type': 'object', 'examples': [{'date': '2026-10-01', 'mealType': 'dinner', 'recipeId': '8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f', 'servings': 4}], 'required': ['date', 'mealType'], 'properties': {'date': {'type': 'string', 'description': "Date, YYYY-MM-DD. Must be today or within the next 28 days, so work it out from today's date."}, 'name': {'type': 'string', 'examples': ['Leftover curry'], 'description': 'Custom meal name when no recipe is linked.'}, 'notes': {'type': 'string', 'examples': ['Double the rice'], 'description': 'Free-text notes.'}, 'mealType': {'enum': ['breakfast', 'lunch', 'dinner', 'snack'], 'type': 'string', 'examples': ['dinner'], 'description': 'Meal slot of the day.'}, 'recipeId': {'type': 'string', 'examples': ['8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f'], 'description': 'Recipe id from list_recipes or list_global_recipes.'}, 'servings': {'type': 'integer', 'examples': [4], 'description': 'Servings, 1-100.'}, 'recipeSource': {'enum': ['household', 'global'], 'type': 'string', 'examples': ['household'], 'description': "Use 'global' when recipeId came from list_global_recipes. Defaults to 'household'."}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
create_pet
Add a pet, optionally with its microchip number and date of birth, and links to an existing contact as vet and document as insurance. Returns the new pet's id.
입력 스키마
{'type': 'object', 'examples': [{'name': 'Bella', 'notes': 'Allergic to chicken; on prescription food.', 'dateOfBirth': '2021-06-15', 'microchipNumber': '985141000123456'}], 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['Bella'], 'description': 'Name.'}, 'notes': {'type': 'string', 'examples': ['Allergic to chicken; on prescription food.'], 'description': 'Freeform notes, e.g. diet or medical history.'}, 'dateOfBirth': {'type': 'string', 'examples': ['2021-06-15'], 'description': 'Date of birth, YYYY-MM-DD.'}, 'vetContactId': {'type': 'string', 'examples': ['contact_5e6f7a8b9c0d'], 'description': 'Vet contact id from create_contact.'}, 'microchipNumber': {'type': 'string', 'examples': ['985141000123456'], 'description': 'Microchip number.'}, 'insuranceDocumentId': {'type': 'string', 'examples': ['doc_1a2b3c4d5e6f'], 'description': 'Insurance document id from create_document.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
create_recipe
Save a recipe with optional ingredients, source URL, instructions and servings. Link it to a date with create_meal_plan.
입력 스키마
{'type': 'object', 'examples': [{'url': 'https://example.com/recipes/chicken-tikka-masala', 'name': 'Chicken Tikka Masala', 'servings': 4, 'ingredients': [{'name': 'chicken breast', 'quantity': 2}, {'name': 'tomato', 'quantity': 4}], 'instructions': 'Marinate the chicken, then simmer in the spiced tomato sauce for 20 minutes.'}], 'required': ['name'], 'properties': {'url': {'type': 'string', 'examples': ['https://example.com/recipes/chicken-tikka-masala'], 'description': 'Source URL.'}, 'name': {'type': 'string', 'examples': ['Chicken Tikka Masala'], 'description': 'Recipe name.'}, 'servings': {'type': 'integer', 'examples': [4], 'description': 'Servings the recipe yields, minimum 1.'}, 'ingredients': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'quantity'], 'properties': {'name': {'type': 'string', 'examples': ['chicken breast'], 'description': 'Ingredient name.'}, 'quantity': {'type': 'integer', 'examples': [2], 'description': 'Whole-number quantity, minimum 1. No fractions or units.'}}, 'description': 'One ingredient and its quantity.'}, 'description': 'Ingredients.'}, 'instructions': {'type': 'string', 'examples': ['Marinate the chicken, then simmer in the spiced tomato sauce for 20 minutes.'], 'description': 'Cooking method.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
create_recurring_calendar_event
Create a recurring calendar event. It generates event instances on a schedule, each with the reminders set in reminderOffsetMinutes.
입력 스키마
{'type': 'object', 'examples': [{'notes': 'Bring your laptop', 'title': 'Weekly team standup', 'endDate': '2026-12-31', 'duration': 'PT30M', 'isAllDay': False, 'timezone': 'Europe/London', 'startDate': '2026-08-03', 'startTime': '09:00:00', 'description': 'Sync on sprint progress', 'cronExpression': '1 Week', 'maxOccurrences': 20, 'reminderOffsetMinutes': [60]}], 'required': ['title', 'cronExpression'], 'properties': {'notes': {'type': 'string', 'examples': ['Bring your laptop'], 'description': 'Notes on each instance.'}, 'title': {'type': 'string', 'examples': ['Weekly team standup'], 'description': 'Title of every generated instance.'}, 'endDate': {'type': 'string', 'examples': ['2026-12-31'], 'description': 'Last date an instance may fall on, YYYY-MM-DD.'}, 'duration': {'type': 'string', 'examples': ['PT30M'], 'description': "Length of each instance, ISO 8601 duration e.g. 'PT30M'."}, 'isAllDay': {'type': 'boolean', 'examples': [False], 'description': 'True for all-day instances, false for timed. An all-day instance starts at midnight of its occurrence date in the template timezone (stored in UTC; omit startTime) and ends duration later (no end without a duration), so a duration of one day or more makes each instance span that many whole days.'}, 'location': {'type': 'object', 'required': ['$type'], 'properties': {'url': {'type': 'string', 'examples': ['https://meet.google.com/abc-defg-hij'], 'description': 'Absolute http/https join link.'}, '$type': {'enum': ['Address', 'OnlineLocation'], 'type': 'string', 'examples': ['Address'], 'description': 'Which location shape this is.'}, 'line1': {'type': 'string', 'examples': ['221B Baker Street'], 'description': 'Address line 1. An Address needs one of line1-3 or postalCode.'}, 'line2': {'type': 'string', 'examples': ['Flat 3'], 'description': 'Address line 2, e.g. flat or suite.'}, 'line3': {'type': 'string', 'examples': ['London'], 'description': 'Address line 3.'}, 'notes': {'type': 'string', 'examples': ['Parking on level 2'], 'description': 'Access detail, e.g. parking or passcode.'}, 'postalCode': {'type': 'string', 'examples': ['NW1 6XE'], 'description': 'Postal or ZIP code.'}, 'countryCode': {'type': 'string', 'examples': ['GB'], 'description': 'ISO country code, e.g. GB.'}}, 'description': "Where each instance happens. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes."}, 'timezone': {'type': ['string', 'null'], 'examples': ['Europe/London'], 'description': "IANA zone for startTime, e.g. 'Europe/London'. Occurrences follow its DST."}, 'startDate': {'type': 'string', 'examples': ['2026-08-03'], 'description': 'Date of the first instance, YYYY-MM-DD. Later ones repeat from it.'}, 'startTime': {'type': 'string', 'examples': ['09:00:00'], 'description': 'Local start time, HH:mm:ss. Omit if there is no fixed time.'}, 'description': {'type': 'string', 'examples': ['Sync on sprint progress'], 'description': 'Longer description of each instance.'}, 'cronExpression': {'type': 'string', 'examples': ['1 Week'], 'description': "Interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax."}, 'maxOccurrences': {'type': 'integer', 'examples': [20], 'description': 'Cap on instances generated.'}, 'reminderOffsetMinutes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 40320, 'minimum': 60, 'examples': [1440], 'multipleOf': 60, 'description': 'One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.'}, 'examples': [[1440, 10080]], 'maxItems': 5, 'description': 'Reminder lead times, in minutes before each occurrence starts. Each value is whole hours, 60-1380 (1-23 hours), or whole days, a multiple of 1440 up to 40320 (4 weeks, the most for a repeating item); a week is 10080. Up to 5 values. An all-day event counts from 00:00 on its first day, so 300 (5 hours) is 19:00 the evening before. Day and week reminders arrive at 19:00 on the earlier day; hour reminders arrive that many hours before the start, or up to 15 minutes earlier. Every household member is reminded.', 'uniqueItems': True}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
create_recurring_task
Create a recurring task. It generates task instances on a schedule, each with the reminders set in reminderOffsetMinutes.
입력 스키마
{'type': 'object', 'examples': [{'notes': 'Blue bin only', 'title': 'Take out the recycling', 'endDate': '2026-12-31', 'startDate': '2026-08-01', 'cronExpression': '2 Week', 'maxOccurrences': 26, 'assigneeRotation': ['7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e', 'a1b2c3d4e5f60718293a4b5c6d7e8f90'], 'reminderOffsetMinutes': [1440]}], 'required': ['title', 'cronExpression'], 'properties': {'notes': {'type': 'string', 'examples': ['Blue bin only'], 'description': 'Notes copied to every generated instance.'}, 'title': {'type': 'string', 'examples': ['Take out the recycling'], 'description': 'Title given to every generated instance.'}, 'endDate': {'type': 'string', 'examples': ['2026-12-31'], 'description': 'Inclusive last date, YYYY-MM-DD. Omit for open-ended.'}, 'isUrgent': {'type': 'boolean', 'examples': [True], 'description': 'Mark every task this series generates as urgent.'}, 'startDate': {'type': 'string', 'examples': ['2026-08-01'], 'description': 'First date to generate from, YYYY-MM-DD. Defaults to today.'}, 'cronExpression': {'type': 'string', 'examples': ['2 Week'], 'description': "Interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax."}, 'maxOccurrences': {'type': 'integer', 'examples': [26], 'description': 'Cap on instances generated, applied even if endDate is not reached.'}, 'preparationDays': {'type': 'integer', 'examples': [1], 'description': "Legacy single reminder, days before each occurrence's due date, 0-365 (0 means none); use reminderOffsetMinutes instead. Ignored when reminderOffsetMinutes is sent."}, 'assigneeRotation': {'type': 'array', 'items': {'type': 'string', 'examples': ['7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e'], 'description': 'Member ids round-robined one per instance. Ids that are no longer members are skipped, leaving that instance unassigned.'}, 'description': 'A member id from list_house_members.'}, 'reminderOffsetMinutes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 40320, 'minimum': 60, 'examples': [1440], 'multipleOf': 60, 'description': 'One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.'}, 'examples': [[1440, 10080]], 'maxItems': 5, 'description': "Reminder lead times, in minutes before each generated task's due date. Each value is whole hours, 60-1380 (1-23 hours), or whole days, a multiple of 1440 up to 40320 (4 weeks, the most for a repeating item); a week is 10080. Up to 5 values. A due date counts from 00:00 on that day, so 300 (5 hours) is 19:00 the evening before. Day and week reminders arrive at 19:00 on the earlier day; hour reminders arrive that many hours before, or up to 15 minutes earlier.", 'uniqueItems': True}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
create_subscription
Track a bill such as a streaming service or membership, with an optional fee and cron renewal schedule (no more often than daily). A bill with no renewal schedule is a one-off. Set paymentDate only when the money leaves the account on a different day from the renewal.
입력 스키마
{'type': 'object', 'examples': [{'fee': {'value': 1599, 'currencyCode': 'USD'}, 'name': 'Netflix', 'notes': 'Family plan, shared with parents', 'status': 'Active', 'remindMe': True, 'startDate': '2026-10-01', 'paymentDate': '2026-10-03', 'renewalCronExpression': '0 0 1 * *'}], 'required': ['name', 'status'], 'properties': {'fee': {'type': 'object', 'properties': {'value': {'type': 'integer', 'examples': [1599], 'description': "Amount in the currency's minor units. Most currencies have 2 decimal places (1599 = 15.99 USD), but some have none (1500 = 1500 JPY) and a few have 3 (12345 = 12.345 KWD)."}, 'currencyCode': {'type': 'string', 'pattern': '^[A-Z]{3}$', 'examples': ['USD'], 'description': 'Uppercase ISO 4217 code, e.g. USD, GBP, JPY.'}}, 'description': 'Recurring charge.'}, 'name': {'type': 'string', 'examples': ['Netflix'], 'description': "Name, e.g. 'Netflix' or 'Gym membership'."}, 'notes': {'type': 'string', 'examples': ['Family plan, shared with parents'], 'description': 'Free-text notes.'}, 'status': {'enum': ['Active', 'Paused', 'Cancelled'], 'type': 'string', 'examples': ['Active'], 'description': 'Status at creation.'}, 'remindMe': {'type': 'boolean', 'examples': [True], 'description': 'Whether to remind the household before each renewal.'}, 'startDate': {'type': 'string', 'examples': ['2026-10-01'], 'description': 'Renewal date, YYYY-MM-DD. Optional. For a recurring bill it is the first renewal; for a one-off it is the date it is due.'}, 'paymentDate': {'type': 'string', 'examples': ['2026-10-03'], 'description': 'Date the first payment leaves the account, YYYY-MM-DD, when it differs from the renewal date. Payments repeat on the renewal cadence from this date. Omit when payment happens on renewal.'}, 'renewalCronExpression': {'type': 'string', 'examples': ['0 0 1 * *'], 'description': 'Cron expression for the renewal cadence. No more often than daily. Omit for a one-off bill.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
create_task
Creates a new household task. Only title is required; the task starts unassigned and uncompleted. Set reminders with reminderOffsetMinutes. Use assign_task, update_task, or complete_task to change it afterward.
입력 스키마
{'type': 'object', 'examples': [{'notes': 'Blue bin only', 'title': 'Take out the recycling', 'dueDate': '2026-08-01', 'assignedToMemberId': '7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e', 'reminderOffsetMinutes': [1440, 10080]}], 'required': ['title'], 'properties': {'notes': {'type': 'string', 'examples': ['Blue bin only'], 'description': 'Freeform notes. Not for assignment info.'}, 'title': {'type': 'string', 'examples': ['Take out the recycling'], 'description': "Task title, e.g. 'Take out the recycling'."}, 'dueDate': {'type': 'string', 'examples': ['2026-08-01'], 'description': 'Due date, YYYY-MM-DD.'}, 'isUrgent': {'type': 'boolean', 'examples': [True], 'description': 'Mark the task urgent so it is shown first and highlighted.'}, 'preparationDate': {'type': 'string', 'examples': ['2026-07-30'], 'description': 'Legacy single reminder date, YYYY-MM-DD; use reminderOffsetMinutes instead. Ignored when reminderOffsetMinutes is sent. Must be on or before dueDate, and needs dueDate.'}, 'assignedToMemberId': {'type': 'string', 'examples': ['7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e'], 'description': 'Member id from list_house_members.'}, 'reminderOffsetMinutes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 525600, 'minimum': 60, 'examples': [1440], 'multipleOf': 60, 'description': 'One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.'}, 'examples': [[1440, 10080]], 'maxItems': 5, 'description': 'Reminder lead times, in minutes before the due date. Each value is whole hours, 60-1380 (1-23 hours), or whole days, a multiple of 1440 up to 525600 (365 days); a week is 10080. Up to 5 values. A due date counts from 00:00 on that day, so 300 (5 hours) is 19:00 the evening before. Day and week reminders arrive at 19:00 on the earlier day; hour reminders arrive that many hours before, or up to 15 minutes earlier. Needs dueDate.', 'uniqueItems': True}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
create_vehicle
Create a vehicle record for the household to track its details, registration and VIN, insurance document, and upcoming MOT/tax/service due dates. All fields are optional.
입력 스키마
{'type': 'object', 'examples': [{'vin': '1HGCM82633A004352', 'make': 'Toyota', 'year': 2021, 'model': 'Corolla', 'notes': 'Winter tyres fitted', 'colour': 'Blue', 'motDueDate': '2026-11-15', 'taxDueDate': '2026-09-01', 'registration': 'AB21 CDE', 'serviceDueDate': '2027-01-20'}], 'required': [], 'properties': {'vin': {'type': 'string', 'examples': ['1HGCM82633A004352'], 'description': 'Vehicle Identification Number, 17 alphanumeric characters.'}, 'make': {'type': 'string', 'examples': ['Toyota'], 'description': "Manufacturer, e.g. 'Toyota'."}, 'year': {'type': 'integer', 'examples': [2021], 'description': 'Model year, 1900-2100.'}, 'model': {'type': 'string', 'examples': ['Corolla'], 'description': "Model, e.g. 'Corolla'."}, 'notes': {'type': 'string', 'examples': ['Winter tyres fitted'], 'description': 'Free-text notes.'}, 'colour': {'type': 'string', 'examples': ['Blue'], 'description': 'Colour.'}, 'motDueDate': {'type': 'string', 'examples': ['2026-11-15'], 'description': 'Next MOT (roadworthiness test) due date, YYYY-MM-DD.'}, 'taxDueDate': {'type': 'string', 'examples': ['2026-09-01'], 'description': 'Next road tax due date, YYYY-MM-DD.'}, 'registration': {'type': 'string', 'examples': ['AB21 CDE'], 'description': 'Registration as shown on the plate; format varies by country.'}, 'serviceDueDate': {'type': 'string', 'examples': ['2027-01-20'], 'description': 'Next service due date, YYYY-MM-DD.'}, 'insuranceDocumentId': {'type': 'string', 'examples': ['01928e4a7d3f7b9ac1e3f6d8b2a4c710'], 'description': 'Insurance document id from create_document or list_documents.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
defer_recommendation
Defer a House Review recommendation and raise a task due in seven days, for when the user wants to handle the gap later.
입력 스키마
{'type': 'object', 'examples': [{'recommendationId': '0195e3c1a2b34c5d6e7f8091a2b3c4d5'}], 'required': ['recommendationId'], 'properties': {'recommendationId': {'type': 'string', 'examples': ['0195e3c1a2b34c5d6e7f8091a2b3c4d5'], 'description': 'Recommendation id from get_house_review.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
delete_appliance
Soft-delete an appliance; it is hidden from list_appliances but not permanently erased.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f'], 'description': 'ID of the appliance to delete.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
delete_calendar_event
Soft-deletes a single calendar event by id. Events imported from a calendar subscription cannot be deleted here; unsubscribe from the source calendar instead. Events shared from a member's device calendar can only be removed by that member or the house owner.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '0198f3a1b2c34d5e6f7089ab1c2d3e4f'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0198f3a1b2c34d5e6f7089ab1c2d3e4f'], 'description': 'Id of the calendar event to delete.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
delete_contact
Soft-delete a contact by id; it is marked deleted and no longer appears in list_contacts, but the underlying record is retained rather than permanently erased.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '01928e4a7d3f7b9ac1e3f6d8b2a4c710'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['01928e4a7d3f7b9ac1e3f6d8b2a4c710'], 'description': 'The id of the contact to delete, as returned by create_contact or list_contacts.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
delete_document
Soft-delete a document by id and cascade soft-delete its attachments; none of them appear in listings afterward, but the records are retained rather than permanently erased.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '01928e4a7d3f7b9ac1e3f6d8b2a4c710'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['01928e4a7d3f7b9ac1e3f6d8b2a4c710'], 'description': 'The id of the document to delete, as returned by create_document or list_documents.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
delete_meal_plan
Soft-delete a planned meal. The entry leaves list_meal_plans and frees its date and meal slot again.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f'], 'description': 'Entry id from list_meal_plans.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
delete_pet
Soft-delete a pet; it is hidden from list_pets but not permanently erased.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f'], 'description': 'ID of the pet to delete.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
delete_recipe
Soft-delete a recipe. Meal plan entries linked to it become custom entries holding a snapshot of its name, ingredients and instructions, so none are left with a dangling link.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f'], 'description': 'Recipe id from list_recipes.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
delete_recurring_calendar_event
Delete a recurring calendar event and all its future instances.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '0198f3a1b2c34d5e6f7089ab1c2d3e4f'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0198f3a1b2c34d5e6f7089ab1c2d3e4f'], 'description': 'Id of the recurring calendar event (template) to delete.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
delete_recurring_task
Delete a recurring task and all its uncompleted future instances.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f'], 'description': "The recurring task template's ID, as returned by create_recurring_task."}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
delete_subscription
Soft-delete a subscription so it leaves list_subscriptions; the record is retained. Use it when the user cancels a service.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '0198c1f4b2c07a1b9e4d5f6a7b8c9d0e'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0198c1f4b2c07a1b9e4d5f6a7b8c9d0e'], 'description': 'ID of the subscription to soft-delete.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
delete_task
Soft-delete a task. It leaves list_tasks but the record is retained. Fails if it was already deleted.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a'], 'description': 'Task id from create_task or list_tasks.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
delete_vehicle
Soft-delete a vehicle so it leaves list_vehicles; the record is retained. Use it when the household sells a car.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '0198c1f4b2c07a1b9e4d5f6a7b8c9d0e'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0198c1f4b2c07a1b9e4d5f6a7b8c9d0e'], 'description': 'ID of the vehicle to soft-delete.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
forget_memory
Forget (soft-delete) a memory by id. Use when a memory is superseded or no longer relevant.
입력 스키마
{'type': 'object', 'examples': [{'id': '0195e3c1a2b34c5d6e7f8091a2b3c4d5'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0195e3c1a2b34c5d6e7f8091a2b3c4d5'], 'description': 'Id from a prior recall_memory result.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
get_house
Return the current household in full: name, address, invite code, notes, join settings, members, subscription status and resolved feature flags.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}], 'properties': {}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
get_house_review
Return this week's pending House Review recommendations: data gaps like a missing appliance warranty or vehicle MOT date. Re-validated live, so items already filled in, actioned or covered by an open task are dropped. Pro-gated.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}], 'properties': {}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
get_profile
Return the signed-in user's profile: name, email, AI-consent status and timezone. Also bumps their last-seen activity as a side effect.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}], 'properties': {}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
get_weather_forecast
Return a one-to-five day forecast for the household's location, for planning outdoor tasks or events.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{'forecastDays': 3}], 'properties': {'forecastDays': {'type': 'integer', 'examples': [3], 'description': 'Number of forecast days to return, from 1 to 5. Defaults to 3 if omitted.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_appliances
List the household's appliances with brand, model, serial number, purchase date and warranty expiry. Answers whether something is still under warranty.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}], 'description': "Takes no parameters; returns every non-deleted appliance in the caller's household."}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_calendar_events
List one-off calendar events with their title, times, location and notes. Bound them with startDateFrom and startDateTo, or omit both for everything. An all-day event's end depends on its sourceEntityType. With no source, endDateTime is its LAST day (inclusive), or null for a single day. For 'deviceCalendar' and 'calendarSubscription' it is the day AFTER the last day (exclusive). For 'RecurringCalendarEvent' the event covers endDateTime minus startDateTime in whole days, rounded up (a single day when null). Read a 00:00Z value as its UTC date; read any other all-day value in the event's timezone when it has one.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{'startDateTo': '2026-07-31T23:59:59Z', 'startDateFrom': '2026-07-01T00:00:00Z'}], 'required': [], 'properties': {'startDateTo': {'type': 'string', 'examples': ['2026-07-31T23:59:59Z'], 'description': 'Range end, ISO 8601 UTC. Matches events starting at or before this.'}, 'startDateFrom': {'type': 'string', 'examples': ['2026-07-01T00:00:00Z'], 'description': 'Range start, ISO 8601 UTC. Matches events ending, or starting if undated, at or after this.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_contacts
List all contacts in the household. Takes no parameters; soft-deleted contacts are excluded.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}]}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_documents
List documents in the household, optionally filtered to a single document type. Soft-deleted documents are excluded.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}, {'documentType': 'Passport'}], 'properties': {'documentType': {'enum': ['Passport', 'Insurance', 'Certificate', 'Warranty', 'License', 'Other'], 'type': 'string', 'examples': ['Passport'], 'description': 'Return only this type. Omit for all.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_global_recipes
List the curated Discover recipe catalogue shared by all households. Pass an id from here to create_meal_plan with recipeSource='global'.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}]}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_house_members
List the household's members with id, userId, first and last name, nickname and role. Use a member's id as assignedToMemberId in create_task and assign_task.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}], 'properties': {}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_houses
List the households the current user belongs to (e.g. to tell the user which home you are acting on). The active house is determined server-side from the authenticated session.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}], 'properties': {}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_meal_plans
List planned meals with their date, meal slot, linked recipe or custom name, servings and notes. Narrow with from and to.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{'to': '2026-07-21', 'from': '2026-07-14'}], 'required': [], 'properties': {'to': {'type': 'string', 'examples': ['2026-07-21'], 'description': 'Inclusive date range end (format: YYYY-MM-DD). Omit for an open-ended end.'}, 'from': {'type': 'string', 'examples': ['2026-07-14'], 'description': 'Inclusive date range start (format: YYYY-MM-DD). Omit for an open-ended start.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_pets
List the household's pets with microchip number, date of birth, notes and their linked vet contact and insurance document.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}], 'description': "Takes no parameters; returns every non-deleted pet in the caller's household."}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_recipes
List the household's own saved recipes with ingredients, instructions, source URL and servings. For the shared catalogue use list_global_recipes.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}]}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_shopping_list_items
List outstanding (unbought) shopping list items with their name, quantity, category and shoppingListId. Pass shoppingListId to limit it to one named list.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}, {'shoppingListId': '0189c8d4f2b1712a9e4d6c9a1b2e3f4a'}], 'properties': {'shoppingListId': {'type': 'string', 'examples': ['0189c8d4f2b1712a9e4d6c9a1b2e3f4a'], 'description': 'One named list, an id from list_shopping_lists. Omit for every list.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_shopping_lists
List the household's named shopping lists with their id, name, whether they are the default list, and how many live items each holds. Use this to resolve a shoppingListId for the shopping list item tools.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}], 'properties': {}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_subscriptions
List tracked subscriptions with their fee, renewal schedule, payment date and status. A subscription with no renewal schedule is a one-off. startDate is the renewal date: the first renewal of a recurring bill, or when a one-off is due; paymentDate, when set, is the first day money leaves the account and repeats on the renewal cadence. Pass status to filter to one.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{'status': 'Active'}], 'properties': {'status': {'enum': ['Active', 'Paused', 'Cancelled'], 'type': 'string', 'examples': ['Active'], 'description': 'Only return subscriptions with this status. Omit to return subscriptions of all statuses.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_tasks
List tasks, filterable by assignee, due-date range and completion, with cursor pagination. Excludes completed tasks by default and sorts open urgent tasks first (within the returned page), then due date ascending (undated first).
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{'limit': 20, 'dueDateOnOrAfter': '2026-07-01', 'includeCompleted': False, 'dueDateOnOrBefore': '2026-07-31', 'assignedToMemberId': '7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e'}], 'properties': {'limit': {'type': 'integer', 'examples': [20], 'description': 'Page size, 1-100, default 50.'}, 'cursor': {'type': 'string', 'examples': ['eyJsYXN0IjoiMDE4ZjJjOWEifQ'], 'description': 'nextCursor from a previous response. Omit for the first page.'}, 'dueDateOnOrAfter': {'type': 'string', 'examples': ['2026-07-01'], 'description': 'Earliest due date, YYYY-MM-DD. Undated tasks never match.'}, 'includeCompleted': {'type': 'boolean', 'examples': [False], 'description': 'Include completed tasks. Defaults to false.'}, 'dueDateOnOrBefore': {'type': 'string', 'examples': ['2026-07-31'], 'description': 'Latest due date, YYYY-MM-DD. Undated tasks never match.'}, 'assignedToMemberId': {'type': 'string', 'examples': ['7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e'], 'description': 'Member id to filter by. Omit for all assignees.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
list_vehicles
List the household's vehicles with make, model, year, registration, VIN and MOT, tax and service due dates. Answers questions like when the MOT is due.
읽기 전용
입력 스키마
{'type': 'object', 'examples': [{}]}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
recall_memory
Recall long-term memories stored about the current household. Call this at the start of advisory or open-ended turns. Filter by type when only one author's notes are relevant.
입력 스키마
{'type': 'object', 'examples': [{'type': 'user', 'limit': 20}], 'properties': {'type': {'enum': ['system', 'user'], 'type': 'string', 'examples': ['user'], 'description': 'Filter by author. Omit for both.'}, 'limit': {'type': 'integer', 'examples': [20], 'description': 'Max number of memories to return in this page. 1-100, default 20.'}, 'cursor': {'type': 'string', 'examples': ['eyJQSyI6IkhvdXNlaG9sZCMxMjM0In0='], 'description': 'nextCursor from a previous response. Omit for the first page.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
remove_shopping_list_item
Remove an item from the household's shopping list without marking it as bought. This soft-deletes the item so it no longer appears in list_shopping_list_items.
파괴적 작업
입력 스키마
{'type': 'object', 'examples': [{'id': '0189c8d4f2b1712a9e4d6c9a1b2e3f4a'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0189c8d4f2b1712a9e4d6c9a1b2e3f4a'], 'description': 'Item id from add_shopping_list_item or list_shopping_list_items.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
skip_recommendation
Permanently suppress a House Review recommendation so get_house_review stops returning it. Use it when the suggestion does not apply.
입력 스키마
{'type': 'object', 'examples': [{'recommendationId': '0195e3c1a2b34c5d6e7f8091a2b3c4d5'}], 'required': ['recommendationId'], 'properties': {'recommendationId': {'type': 'string', 'examples': ['0195e3c1a2b34c5d6e7f8091a2b3c4d5'], 'description': 'Recommendation id from get_house_review.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
store_memory
Store a long-term memory about the household. Use sparingly for durable preferences, routines, constraints, or insights worth recalling in a future conversation. Recall first to avoid duplicates.
입력 스키마
{'type': 'object', 'examples': [{'name': 'preferred-cleaning-day', 'type': 'user', 'content': "The user said they'd rather have the house cleaned Saturday mornings instead of Friday evenings, because they work late on Fridays.", 'description': 'User prefers the house cleaned on Saturday mornings'}], 'required': ['type', 'name', 'description', 'content'], 'properties': {'name': {'type': 'string', 'examples': ['preferred-cleaning-day'], 'description': "Short kebab-case slug, e.g. 'preferred-cleaning-day'. Max 80 chars."}, 'type': {'enum': ['system', 'user'], 'type': 'string', 'examples': ['user'], 'description': "'user' for what the user stated, 'system' for insights you derived."}, 'content': {'type': 'string', 'examples': ["The user said on 2026-07-10 they'd rather have the house cleaned Saturday mornings instead of Friday evenings, because they work late on Fridays."], 'description': 'Free-text body. Max 8000 chars.'}, 'description': {'type': 'string', 'examples': ['User prefers the house cleaned on Saturday mornings'], 'description': 'Single-line summary used to decide relevance later. Max 200 chars.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
uncomplete_task
Reopens a completed task, clearing its completion timestamp and completed-by user. Fails with a conflict if the task is not currently completed.
입력 스키마
{'type': 'object', 'examples': [{'id': '018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a'], 'description': 'Task id from create_task or list_tasks.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_appliance
Update an appliance's details; omitted fields keep their current value. Rejects the update if the resulting warranty expiry date would fall before the purchase date.
입력 스키마
{'type': 'object', 'examples': [{'id': '01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f', 'notes': 'Repaired ice maker under warranty, June 2026.', 'warrantyExpiryDate': '2026-11-04'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f'], 'description': 'Appliance id from list_appliances.'}, 'name': {'type': 'string', 'examples': ['Kitchen Refrigerator'], 'description': 'New name.'}, 'brand': {'type': 'string', 'examples': ['Samsung'], 'description': 'New manufacturer or brand.'}, 'model': {'type': 'string', 'examples': ['RF28R7351SG'], 'description': 'New model.'}, 'notes': {'type': 'string', 'examples': ['Extended warranty purchased in-store, receipt in the kitchen drawer.'], 'description': 'Freeform notes.'}, 'purchaseDate': {'type': 'string', 'examples': ['2023-11-04'], 'description': 'Purchase date, YYYY-MM-DD. Must not follow warrantyExpiryDate. Empty string clears it.'}, 'serialNumber': {'type': 'string', 'examples': ['S/N-4471829'], 'description': 'New serial number.'}, 'warrantyDocumentId': {'type': 'string', 'examples': ['doc_8f3a1c2b9e4d'], 'description': 'Warranty document id from create_document.'}, 'warrantyExpiryDate': {'type': 'string', 'examples': ['2025-11-04'], 'description': 'Warranty expiry, YYYY-MM-DD. Must not precede purchaseDate. Empty string clears it.'}, 'insuranceDocumentId': {'type': 'string', 'examples': ['doc_1a2b3c4d5e6f'], 'description': 'Insurance document id from create_document.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_calendar_event
Updates fields on an existing single calendar event; only the fields supplied are changed, all others keep their current value. Imported (subscription-sourced) events cannot be edited.
입력 스키마
{'type': 'object', 'examples': [{'id': '0198f3a1b2c34d5e6f7089ab1c2d3e4f', 'notes': 'Moved to Thursday', 'endDateTime': '2026-08-04T15:30:00Z', 'startDateTime': '2026-08-04T14:30:00Z'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0198f3a1b2c34d5e6f7089ab1c2d3e4f'], 'description': 'Event id from create_calendar_event or list_calendar_events.'}, 'notes': {'type': 'string', 'examples': ['Moved to Thursday'], 'description': 'New notes.'}, 'title': {'type': 'string', 'examples': ['Dentist appointment (rescheduled)'], 'description': 'New event title.'}, 'endDate': {'type': 'string', 'examples': ['2026-08-06'], 'description': "All-day only: new LAST day, inclusive, YYYY-MM-DD. Alone it keeps the current first day. Dates are stored in the event's own end rule (see list_calendar_events)."}, 'isAllDay': {'type': 'boolean', 'examples': [False], 'description': 'True for all-day, false for timed.'}, 'location': {'type': 'object', 'required': ['$type'], 'properties': {'url': {'type': 'string', 'examples': ['https://meet.google.com/abc-defg-hij'], 'description': 'Absolute http/https join link.'}, '$type': {'enum': ['Address', 'OnlineLocation'], 'type': 'string', 'examples': ['Address'], 'description': 'Which location shape this is.'}, 'line1': {'type': 'string', 'examples': ['221B Baker Street'], 'description': 'Address line 1. An Address needs one of line1-3 or postalCode.'}, 'line2': {'type': 'string', 'examples': ['Flat 3'], 'description': 'Address line 2, e.g. flat or suite.'}, 'line3': {'type': 'string', 'examples': ['London'], 'description': 'Address line 3.'}, 'notes': {'type': 'string', 'examples': ['Parking on level 2'], 'description': 'Access detail, e.g. parking or passcode.'}, 'postalCode': {'type': 'string', 'examples': ['NW1 6XE'], 'description': 'Postal or ZIP code.'}, 'countryCode': {'type': 'string', 'examples': ['GB'], 'description': 'ISO country code, e.g. GB.'}}, 'description': "Replaces the location outright. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes."}, 'timezone': {'type': ['string', 'null'], 'examples': ['Europe/London'], 'description': "IANA zone for the wall-clock times, e.g. 'Europe/London'. Null means UTC."}, 'startDate': {'type': 'string', 'examples': ['2026-08-04'], 'description': 'All-day only (preferred for all-day): new first day, YYYY-MM-DD. Without endDate the event becomes a single day.'}, 'description': {'type': 'string', 'examples': ['Annual checkup with Dr. Smith'], 'description': 'New description.'}, 'endDateTime': {'type': 'string', 'examples': ['2026-08-04T15:30:00Z'], 'description': "New end of a timed event, ISO 8601 UTC. Must not precede startDateTime. For all-day events send endDate instead. An all-day endDateTime is stored as given and keeps the event's own end rule (see list_calendar_events): with no source a midnight end names the LAST day, on a device-calendar event the day after it."}, 'startDateTime': {'type': 'string', 'examples': ['2026-08-04T14:30:00Z'], 'description': 'New start of a timed event, ISO 8601 UTC. For an all-day event send startDate instead.'}, 'reminderOffsetMinutes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 525600, 'minimum': 60, 'examples': [1440], 'multipleOf': 60, 'description': 'One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.'}, 'examples': [[1440, 10080]], 'maxItems': 5, 'description': 'New reminder lead times, in minutes before the event starts. Send the full list: it replaces the current one. [] clears all reminders; omit to keep them. Reminders move with the start. Not allowed on imported events (device calendar or subscription). Each value is whole hours, 60-1380 (1-23 hours), or whole days, a multiple of 1440 up to 525600 (365 days); a week is 10080. Up to 5 values. An all-day event counts from 00:00 on its first day, so 300 (5 hours) is 19:00 the evening before. Day and week reminders arrive at 19:00 on the earlier day; hour reminders arrive that many hours before the start, or up to 15 minutes earlier. Every household member is reminded.', 'uniqueItems': True}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_contact
Update a contact by id. Only the fields supplied are changed; omitted fields keep their current value (dateOfBirth is the exception: an empty string explicitly clears it).
입력 스키마
{'type': 'object', 'examples': [{'id': '01928e4a7d3f7b9ac1e3f6d8b2a4c710', 'notes': 'Prefers texts over calls.', 'phone': '+44 7911 123456'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['01928e4a7d3f7b9ac1e3f6d8b2a4c710'], 'description': 'Contact id from create_contact or list_contacts.'}, 'email': {'type': 'string', 'examples': ['sarah.jones@example.com'], 'description': 'Email address.'}, 'notes': {'type': 'string', 'examples': ['Prefers texts over calls.'], 'description': 'Free-text notes.'}, 'phone': {'type': 'string', 'examples': ['+44 7911 123456'], 'description': 'Phone number, any format.'}, 'address': {'type': 'object', 'properties': {'line1': {'type': 'string', 'examples': ['12 Baker Street'], 'description': 'Line 1, typically number and street.'}, 'line2': {'type': 'string', 'examples': ['Flat 3'], 'description': 'Line 2, e.g. apartment or unit.'}, 'line3': {'type': 'string', 'examples': ['London'], 'description': 'Line 3, e.g. town or city.'}, 'postalCode': {'type': 'string', 'examples': ['NW1 6XE'], 'description': 'Postal or ZIP code.'}, 'countryCode': {'type': 'string', 'examples': ['GB'], 'description': 'ISO country code, e.g. GB.'}}, 'description': 'Postal address. Replaces the stored one outright.'}, 'lastName': {'type': 'string', 'examples': ['Jones'], 'description': 'Last (family) name.'}, 'firstName': {'type': 'string', 'examples': ['Sarah'], 'description': 'First name.'}, 'dateOfBirth': {'type': 'string', 'examples': ['1990-05-15'], 'description': 'Date of birth, YYYY-MM-DD. Empty string clears it.'}, 'displayName': {'type': 'string', 'examples': ['Sarah from book club'], 'description': 'Name to show instead of first/last, e.g. a nickname or company.'}, 'prepareBirthdayPresent': {'type': 'boolean', 'examples': [True], 'description': 'Whether to flag a birthday present for them.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_document
Update a stored document's type, title, reference number, issuing authority, fee or notes, returning the updated document. Only the fields you send change. renewalCronExpression is the one exception: it is accepted but not yet stored or acted on, so sending it changes nothing.
입력 스키마
{'type': 'object', 'examples': [{'id': '01928e4a7d3f7b9ac1e3f6d8b2a4c710', 'notes': 'Renewed for another 10 years.', 'issuingAuthority': 'HM Passport Office'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['01928e4a7d3f7b9ac1e3f6d8b2a4c710'], 'description': 'Document id from create_document or list_documents.'}, 'fee': {'type': 'object', 'required': ['value', 'currencyCode'], 'properties': {'value': {'type': 'integer', 'examples': [1599], 'description': "Amount in the currency's minor units. Most currencies have 2 decimal places (1599 = 15.99 USD), but some have none (1500 = 1500 JPY) and a few have 3 (12345 = 12.345 KWD)."}, 'currencyCode': {'type': 'string', 'pattern': '^[A-Z]{3}$', 'examples': ['USD'], 'description': 'Uppercase ISO 4217 code, e.g. USD, GBP, JPY.'}}, 'description': 'Cost. Replaces the stored fee outright.'}, 'notes': {'type': 'string', 'examples': ['Renewed for another 10 years.'], 'description': 'Free-text notes.'}, 'title': {'type': 'string', 'examples': ['UK Passport'], 'description': 'Custom title.'}, 'documentType': {'enum': ['Passport', 'Insurance', 'Certificate', 'Warranty', 'License', 'Other'], 'type': 'string', 'examples': ['Passport'], 'description': 'Kind of document.'}, 'documentNumber': {'type': 'string', 'examples': ['512345678'], 'description': 'Reference or serial number, e.g. a passport or policy number.'}, 'issuingAuthority': {'type': 'string', 'examples': ['HM Passport Office'], 'description': 'Who issued it.'}, 'renewalCronExpression': {'type': 'string', 'examples': ['0 0 1 1 *'], 'description': 'Accepted but not yet stored or acted on; has no effect.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_meal_plan
Update a planned meal. Only the fields you send change. recipeId links a recipe and clears any custom name; name makes it custom and clears the link; recipeId wins if both are sent.
입력 스키마
{'type': 'object', 'examples': [{'id': '8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f', 'servings': 6}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f'], 'description': 'Entry id from list_meal_plans.'}, 'date': {'type': 'string', 'description': "Date, YYYY-MM-DD. Must be today or within the next 28 days, so work it out from today's date."}, 'name': {'type': 'string', 'examples': ['Leftover curry'], 'description': 'Custom meal name when no recipe is linked.'}, 'notes': {'type': 'string', 'examples': ['Double the rice'], 'description': 'Free-text notes.'}, 'mealType': {'enum': ['breakfast', 'lunch', 'dinner', 'snack'], 'type': 'string', 'examples': ['dinner'], 'description': 'Meal slot of the day.'}, 'recipeId': {'type': 'string', 'examples': ['8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f'], 'description': 'Recipe id from list_recipes or list_global_recipes.'}, 'servings': {'type': 'integer', 'examples': [4], 'description': 'Servings, 1-100.'}, 'recipeSource': {'enum': ['household', 'global'], 'type': 'string', 'examples': ['household'], 'description': "Use 'global' when recipeId came from list_global_recipes. Defaults to 'household'."}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_memory
Update an existing memory's name, description, or content. Type is immutable; to reclassify, forget and store again.
입력 스키마
{'type': 'object', 'examples': [{'id': '0195e3c1a2b34c5d6e7f8091a2b3c4d5', 'content': 'Updated 2026-07-14: the user now prefers Sunday mornings instead of Saturday mornings for cleaning.', 'description': 'User now prefers the house cleaned on Sunday mornings'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0195e3c1a2b34c5d6e7f8091a2b3c4d5'], 'description': 'Id from a prior recall_memory result.'}, 'name': {'type': 'string', 'examples': ['preferred-cleaning-day'], 'description': 'New kebab-case slug.'}, 'content': {'type': 'string', 'examples': ['Updated 2026-07-14: the user now prefers Sunday mornings instead of Saturday mornings for cleaning.'], 'description': 'New body.'}, 'description': {'type': 'string', 'examples': ['User now prefers the house cleaned on Sunday mornings'], 'description': 'New single-line summary.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_pet
Update a pet's name, microchip number, date of birth, notes, or its linked vet contact and insurance document. Only the fields you send change.
입력 스키마
{'type': 'object', 'examples': [{'id': '01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f', 'notes': "Started prescription diet on vet's advice."}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f'], 'description': 'Pet id from list_pets.'}, 'name': {'type': 'string', 'examples': ['Bella'], 'description': 'New name.'}, 'notes': {'type': 'string', 'examples': ['Allergic to chicken; on prescription food.'], 'description': 'Freeform notes.'}, 'dateOfBirth': {'type': 'string', 'examples': ['2021-06-15'], 'description': 'Date of birth, YYYY-MM-DD. Empty string clears it.'}, 'vetContactId': {'type': 'string', 'examples': ['contact_5e6f7a8b9c0d'], 'description': 'Vet contact id from create_contact.'}, 'microchipNumber': {'type': 'string', 'examples': ['985141000123456'], 'description': 'New microchip number.'}, 'insuranceDocumentId': {'type': 'string', 'examples': ['doc_1a2b3c4d5e6f'], 'description': 'Insurance document id from create_document.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_recipe
Update a recipe. Only the fields you send change, except ingredients, which replaces the whole existing list rather than merging.
입력 스키마
{'type': 'object', 'examples': [{'id': '8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f', 'servings': 6}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f'], 'description': 'Recipe id from list_recipes.'}, 'url': {'type': 'string', 'examples': ['https://example.com/recipes/chicken-tikka-masala'], 'description': 'Source URL.'}, 'name': {'type': 'string', 'examples': ['Chicken Tikka Masala'], 'description': 'Name.'}, 'servings': {'type': 'integer', 'examples': [4], 'description': 'Servings the recipe yields, minimum 1.'}, 'ingredients': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'quantity'], 'properties': {'name': {'type': 'string', 'examples': ['chicken breast'], 'description': 'Ingredient name.'}, 'quantity': {'type': 'integer', 'examples': [2], 'description': 'Whole-number quantity, minimum 1. No fractions or units.'}}, 'description': 'One ingredient and its quantity.'}, 'description': 'Ingredients. Replaces the whole existing list rather than merging.'}, 'instructions': {'type': 'string', 'examples': ['Marinate the chicken, then simmer in the spiced sauce.'], 'description': 'Cooking method.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_recurring_calendar_event
Update a recurring calendar event. Changes to title/description/notes/reminders patch existing instances. Changes to frequency/dates/time regenerate future instances.
입력 스키마
{'type': 'object', 'examples': [{'id': '0198f3a1b2c34d5e6f7089ab1c2d3e4f', 'endDate': '2027-01-31', 'cronExpression': '2 Week'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0198f3a1b2c34d5e6f7089ab1c2d3e4f'], 'description': 'Template id from create_recurring_calendar_event.'}, 'notes': {'type': 'string', 'examples': ['Bring your laptop'], 'description': 'New notes.'}, 'title': {'type': 'string', 'examples': ['Weekly team standup'], 'description': 'New title, patched onto existing instances.'}, 'endDate': {'type': 'string', 'examples': ['2027-01-31'], 'description': 'New last date, YYYY-MM-DD. Empty string leaves it unbounded.'}, 'duration': {'type': 'string', 'examples': ['PT30M'], 'description': "Length of each instance, ISO 8601 duration e.g. 'PT30M'."}, 'isAllDay': {'type': 'boolean', 'examples': [False], 'description': 'True for all-day instances, false for timed. An all-day instance starts at midnight of its occurrence date in the template timezone (stored in UTC; omit startTime) and ends duration later (no end without a duration), so a duration of one day or more makes each instance span that many whole days.'}, 'location': {'type': 'object', 'required': ['$type'], 'properties': {'url': {'type': 'string', 'examples': ['https://meet.google.com/abc-defg-hij'], 'description': 'Absolute http/https join link.'}, '$type': {'enum': ['Address', 'OnlineLocation'], 'type': 'string', 'examples': ['Address'], 'description': 'Which location shape this is.'}, 'line1': {'type': 'string', 'examples': ['221B Baker Street'], 'description': 'Address line 1. An Address needs one of line1-3 or postalCode.'}, 'line2': {'type': 'string', 'examples': ['Flat 3'], 'description': 'Address line 2, e.g. flat or suite.'}, 'line3': {'type': 'string', 'examples': ['London'], 'description': 'Address line 3.'}, 'notes': {'type': 'string', 'examples': ['Bring your laptop'], 'description': 'Access detail, e.g. parking or passcode.'}, 'postalCode': {'type': 'string', 'examples': ['NW1 6XE'], 'description': 'Postal or ZIP code.'}, 'countryCode': {'type': 'string', 'examples': ['GB'], 'description': 'ISO country code, e.g. GB.'}}, 'description': "Replaces the location outright. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes."}, 'timezone': {'type': ['string', 'null'], 'examples': ['Europe/London'], 'description': "IANA zone for startTime, e.g. 'Europe/London'. Occurrences follow its DST."}, 'startDate': {'type': 'string', 'examples': ['2026-08-03'], 'description': 'New first-instance date, YYYY-MM-DD. Empty string clears it.'}, 'startTime': {'type': 'string', 'examples': ['09:00:00'], 'description': 'New local start time, HH:mm:ss.'}, 'description': {'type': 'string', 'examples': ['Sync on sprint progress'], 'description': 'New description, patched onto existing instances.'}, 'cronExpression': {'type': 'string', 'examples': ['2 Week'], 'description': "New interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax."}, 'maxOccurrences': {'type': 'integer', 'examples': [20], 'description': 'New cap on instances generated.'}, 'reminderOffsetMinutes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 40320, 'minimum': 60, 'examples': [1440], 'multipleOf': 60, 'description': 'One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.'}, 'examples': [[1440, 10080]], 'maxItems': 5, 'description': 'New reminder lead times, in minutes before each occurrence starts. Send the full list: it replaces the current one. [] clears all reminders; omit to keep them. A change also applies to existing instances. Each value is whole hours, 60-1380 (1-23 hours), or whole days, a multiple of 1440 up to 40320 (4 weeks, the most for a repeating item); a week is 10080. Up to 5 values. An all-day event counts from 00:00 on its first day, so 300 (5 hours) is 19:00 the evening before. Day and week reminders arrive at 19:00 on the earlier day; hour reminders arrive that many hours before the start, or up to 15 minutes earlier. Every household member is reminded.', 'uniqueItems': True}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_recurring_task
Update a recurring task. Title, notes, urgency or reminder changes patch existing instances; frequency/date changes regenerate future instances.
입력 스키마
{'type': 'object', 'examples': [{'id': '5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f', 'title': 'Take out the recycling', 'cronExpression': '2 Week', 'assigneeRotation': ['7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e']}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f'], 'description': 'Template id from create_recurring_task.'}, 'notes': {'type': 'string', 'examples': ['Blue bin only'], 'description': 'New notes, copied to uncompleted instances.'}, 'title': {'type': 'string', 'examples': ['Take out the recycling'], 'description': 'New title. Uncompleted instances are updated to match; completed ones keep theirs.'}, 'endDate': {'type': 'string', 'examples': ['2026-12-31'], 'description': 'New inclusive end date, YYYY-MM-DD. Empty string makes it open-ended.'}, 'isUrgent': {'type': 'boolean', 'examples': [True], 'description': "Mark every task this series generates as urgent: true marks urgent, false clears it, omit to leave unchanged. A change also applies to the series' open occurrences."}, 'startDate': {'type': 'string', 'examples': ['2026-08-01'], 'description': 'New start date, YYYY-MM-DD. Empty string clears it.'}, 'cronExpression': {'type': 'string', 'examples': ['2 Week'], 'description': "New interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax."}, 'maxOccurrences': {'type': 'integer', 'examples': [26], 'description': 'New cap on instances generated.'}, 'preparationDays': {'type': 'integer', 'examples': [1], 'description': "Legacy single reminder, days before each occurrence's due date, 0-365 (0 means none); use reminderOffsetMinutes instead. Ignored when reminderOffsetMinutes is sent. On a series without reminderOffsetMinutes it applies to instances generated after this change. On a series with reminderOffsetMinutes the server keeps it in step: a different value replaces every reminder with that one (0 removes them) and also updates the series' open tasks."}, 'assigneeRotation': {'type': 'array', 'items': {'type': 'string', 'examples': ['7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e'], 'description': 'Replacement rotation of member ids, round-robined one per instance. Applies to instances generated after this change.'}, 'description': 'A member id from list_house_members.'}, 'reminderOffsetMinutes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 40320, 'minimum': 60, 'examples': [1440], 'multipleOf': 60, 'description': 'One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.'}, 'examples': [[1440, 10080]], 'maxItems': 5, 'description': "New reminder lead times, in minutes before each generated task's due date. Send the full list: it replaces the current one. [] clears all reminders; omit to keep them. A change also applies to the series' open tasks. Each value is whole hours, 60-1380 (1-23 hours), or whole days, a multiple of 1440 up to 40320 (4 weeks, the most for a repeating item); a week is 10080. Up to 5 values. A due date counts from 00:00 on that day, so 300 (5 hours) is 19:00 the evening before. Day and week reminders arrive at 19:00 on the earlier day; hour reminders arrive that many hours before, or up to 15 minutes earlier.", 'uniqueItems': True}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_shopping_list_item
Update a shopping list item's name, quantity, and/or category. Only the fields provided are changed; any field left out keeps its current value.
입력 스키마
{'type': 'object', 'examples': [{'id': '0189c8d4f2b1712a9e4d6c9a1b2e3f4a', 'category': 'DairyAndEggs', 'quantity': 3}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0189c8d4f2b1712a9e4d6c9a1b2e3f4a'], 'description': 'Item id from add_shopping_list_item or list_shopping_list_items.'}, 'name': {'type': 'string', 'examples': ['Whole milk'], 'description': 'New item name.'}, 'category': {'enum': ['FruitAndVegetables', 'Bakery', 'DeliAndPreparedFoods', 'MeatAndSeafood', 'DairyAndEggs', 'Frozen', 'PantryAndDryGoods', 'SnacksAndConfectionery', 'Beverages', 'HouseholdAndCleaning', 'HealthAndPersonalCare', 'BabyAndKids', 'PetSupplies', 'Online', 'Other'], 'type': 'string', 'examples': ['DairyAndEggs'], 'description': 'New store-aisle category, overriding the auto-assigned one.'}, 'quantity': {'type': 'integer', 'examples': [3], 'description': 'New quantity, 1-9999. Replaces rather than adds to the current one.'}, 'shoppingListId': {'type': 'string', 'examples': ['0189c8d4f2b1712a9e4d6c9a1b2e3f4a'], 'description': 'Move the item to a different list, an id from list_shopping_lists. Omit to leave it where it is; name the default list explicitly to move it back.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_subscription
Update a subscription. Only the fields you send change; for renewalCronExpression, startDate, paymentDate and notes an empty string clears the stored value.
입력 스키마
{'type': 'object', 'examples': [{'id': '0198c1f4b2c07a1b9e4d5f6a7b8c9d0e', 'notes': 'Paused while travelling', 'status': 'Paused'}, {'id': '0198c1f4b2c07a1b9e4d5f6a7b8c9d0e', 'paymentDate': '2026-10-03'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0198c1f4b2c07a1b9e4d5f6a7b8c9d0e'], 'description': 'Subscription id from list_subscriptions.'}, 'fee': {'type': 'object', 'properties': {'value': {'type': 'integer', 'examples': [1599], 'description': "Amount in the currency's minor units. Most currencies have 2 decimal places (1599 = 15.99 USD), but some have none (1500 = 1500 JPY) and a few have 3 (12345 = 12.345 KWD)."}, 'currencyCode': {'type': 'string', 'pattern': '^[A-Z]{3}$', 'examples': ['USD'], 'description': 'Uppercase ISO 4217 code, e.g. USD, GBP, JPY.'}}, 'description': 'Recurring charge.'}, 'name': {'type': 'string', 'examples': ['Netflix'], 'description': 'New name.'}, 'notes': {'type': 'string', 'examples': ['Paused while travelling'], 'description': 'Free-text notes. Empty string clears them.'}, 'status': {'enum': ['Active', 'Paused', 'Cancelled'], 'type': 'string', 'examples': ['Paused'], 'description': 'New status.'}, 'remindMe': {'type': 'boolean', 'examples': [True], 'description': 'Whether to remind the household before each renewal.'}, 'startDate': {'type': 'string', 'examples': ['2026-10-01'], 'description': 'Renewal date, YYYY-MM-DD. Optional. For a recurring bill it is the first renewal; for a one-off it is the date it is due. Empty string clears it.'}, 'paymentDate': {'type': 'string', 'examples': ['2026-10-03'], 'description': 'Date the first payment leaves the account, YYYY-MM-DD, when it differs from the renewal date. Payments repeat on the renewal cadence from this date. Omit when payment happens on renewal. Empty string clears it.'}, 'renewalCronExpression': {'type': 'string', 'examples': ['0 0 1 * *'], 'description': 'Cron expression for the renewal cadence, no more often than daily. Empty string clears it, making the bill a one-off.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_task
Update a task's title, assignee, due date, reminders, notes or urgency. Only the fields you send change.
입력 스키마
{'type': 'object', 'examples': [{'id': '018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a', 'title': 'Take out the recycling', 'dueDate': '2026-08-01'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a'], 'description': 'Task id from create_task or list_tasks.'}, 'notes': {'type': 'string', 'examples': ['Blue bin only'], 'description': 'Freeform notes. Not for assignment info.'}, 'title': {'type': 'string', 'examples': ['Take out the recycling'], 'description': 'New title.'}, 'dueDate': {'type': 'string', 'examples': ['2026-08-01'], 'description': 'New due date, YYYY-MM-DD. Empty string clears it.'}, 'isUrgent': {'type': 'boolean', 'examples': [True], 'description': 'Mark the task urgent so it is shown first and highlighted: true marks urgent, false clears it, omit to leave unchanged.'}, 'preparationDate': {'type': 'string', 'examples': ['2026-07-30'], 'description': 'Legacy single reminder date, YYYY-MM-DD; use reminderOffsetMinutes instead. Ignored when reminderOffsetMinutes is sent. Must be on or before dueDate. Empty string clears it; clearing dueDate clears it. On a task without reminderOffsetMinutes, changing dueDate does not move it. On a task with reminderOffsetMinutes the server keeps it in step with dueDate: a different date replaces every reminder with that one, and an empty string removes them all.'}, 'assignedToMemberId': {'type': 'string', 'examples': ['7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e'], 'description': 'Member id to assign. Empty string unassigns.'}, 'reminderOffsetMinutes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 525600, 'minimum': 60, 'examples': [1440], 'multipleOf': 60, 'description': 'One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.'}, 'examples': [[1440, 10080]], 'maxItems': 5, 'description': 'New reminder lead times, in minutes before the due date. Send the full list: it replaces the current one. [] clears all reminders; omit to keep them. Each value is whole hours, 60-1380 (1-23 hours), or whole days, a multiple of 1440 up to 525600 (365 days); a week is 10080. Up to 5 values. A due date counts from 00:00 on that day, so 300 (5 hours) is 19:00 the evening before. Day and week reminders arrive at 19:00 on the earlier day; hour reminders arrive that many hours before, or up to 15 minutes earlier. Reminders move with dueDate, need a due date, and are cleared when dueDate is cleared.', 'uniqueItems': True}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
update_vehicle
Update a vehicle. Only the fields you send change; for text and due-date fields an empty string clears the stored value.
입력 스키마
{'type': 'object', 'examples': [{'id': '0198c1f4b2c07a1b9e4d5f6a7b8c9d0e', 'notes': 'Renewed tax disc', 'taxDueDate': '2027-09-01'}], 'required': ['id'], 'properties': {'id': {'type': 'string', 'examples': ['0198c1f4b2c07a1b9e4d5f6a7b8c9d0e'], 'description': 'Vehicle id from list_vehicles.'}, 'vin': {'type': 'string', 'examples': ['1HGCM82633A004352'], 'description': 'Vehicle Identification Number, 17 alphanumeric characters.'}, 'make': {'type': 'string', 'examples': ['Toyota'], 'description': "Manufacturer, e.g. 'Toyota'."}, 'year': {'type': 'integer', 'examples': [2021], 'description': 'Model year, 1900-2100.'}, 'model': {'type': 'string', 'examples': ['Corolla'], 'description': "Model, e.g. 'Corolla'."}, 'notes': {'type': 'string', 'examples': ['Renewed tax disc'], 'description': 'Free-text notes.'}, 'colour': {'type': 'string', 'examples': ['Blue'], 'description': 'Colour.'}, 'motDueDate': {'type': 'string', 'examples': ['2026-11-15'], 'description': 'Next MOT (roadworthiness test) due date, YYYY-MM-DD.'}, 'taxDueDate': {'type': 'string', 'examples': ['2026-09-01'], 'description': 'Next road tax due date, YYYY-MM-DD.'}, 'registration': {'type': 'string', 'examples': ['AB21 CDE'], 'description': 'Registration as shown on the plate; format varies by country.'}, 'serviceDueDate': {'type': 'string', 'examples': ['2027-01-20'], 'description': 'Next service due date, YYYY-MM-DD.'}, 'insuranceDocumentId': {'type': 'string', 'examples': ['01928e4a7d3f7b9ac1e3f6d8b2a4c710'], 'description': 'Insurance document id from list_documents.'}}}
출력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'message': {'type': 'string'}, 'variant': {'enum': ['list', 'detail', 'confirmation'], 'type': 'string'}}}
변경됨
update_recurring_task
2026년 9월 27일 2:51 AM
변경됨
create_recurring_task
2026년 9월 27일 2:51 AM
변경됨
update_recurring_calendar_event
2026년 9월 27일 2:51 AM
변경됨
create_recurring_calendar_event
2026년 9월 27일 2:51 AM
변경됨
batch_add_shopping_list_items
2026년 9월 27일 2:51 AM
변경됨
create_meal_plan
2026년 9월 27일 2:51 AM
변경됨
add_shopping_list_item
2026년 9월 27일 2:51 AM
변경됨
list_tasks
2026년 9월 27일 2:51 AM
변경됨
update_task
2026년 9월 27일 2:51 AM
변경됨
create_task
2026년 9월 27일 2:51 AM
변경됨
list_subscriptions
2026년 9월 27일 2:51 AM
변경됨
update_subscription
2026년 9월 27일 2:51 AM
변경됨
create_subscription
2026년 9월 27일 2:51 AM
변경됨
list_calendar_events
2026년 9월 27일 2:51 AM
변경됨
update_calendar_event
2026년 9월 27일 2:51 AM
변경됨
create_calendar_event
2026년 9월 27일 2:51 AM
변경됨
create_meal_plan
2026년 9월 23일 2:52 AM
변경됨
create_meal_plan
2026년 9월 19일 2:49 AM
변경됨
update_subscription
2026년 9월 19일 2:49 AM
변경됨
create_subscription
2026년 9월 19일 2:49 AM
변경됨
update_document
2026년 9월 19일 2:49 AM
변경됨
create_document
2026년 9월 19일 2:49 AM
변경됨
create_meal_plan
2026년 9월 17일 12:57 PM
추가됨
delete_recurring_task
2026년 9월 17일 7:57 AM
추가됨
update_recurring_task
2026년 9월 17일 7:57 AM
추가됨
create_recurring_task
2026년 9월 17일 7:57 AM
추가됨
delete_recurring_calendar_event
2026년 9월 17일 7:57 AM
추가됨
update_recurring_calendar_event
2026년 9월 17일 7:57 AM
추가됨
create_recurring_calendar_event
2026년 9월 17일 7:57 AM
추가됨
remove_shopping_list_item
2026년 9월 17일 7:57 AM