Server definition
- Hash
- sha256:a0d3bf2cda9c2d7c2bb89effdf3fdce693a4011fdb2be87392079f76317659f0
- What it is
- What a remote MCP server returned when asked what it offers: 69 tools
The blob, as servednamed by its sha256
{
"instructions": "Haus household-management tools. They operate on the user's current household, resolved automatically from the authenticated session — you never pass a houseId. Use list_houses only to tell the user which household you are acting on.",
"tools": [
{
"description": "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.",
"inputSchema": {
"examples": [
{
"name": "Milk",
"quantity": 2
}
],
"properties": {
"category": {
"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.",
"enum": [
"FruitAndVegetables",
"Bakery",
"DeliAndPreparedFoods",
"MeatAndSeafood",
"DairyAndEggs",
"Frozen",
"PantryAndDryGoods",
"SnacksAndConfectionery",
"Beverages",
"HouseholdAndCleaning",
"HealthAndPersonalCare",
"BabyAndKids",
"PetSupplies",
"Online",
"Other"
],
"examples": [
"DairyAndEggs"
],
"type": "string"
},
"name": {
"description": "Item name, e.g. 'Milk'. A new item gets a category from its name; a matching unbought item has its quantity increased instead.",
"examples": [
"Milk"
],
"type": "string"
},
"quantity": {
"description": "How many to add, 1-9999, default 1. Added to the existing quantity when merged.",
"examples": [
2
],
"type": "integer"
},
"shoppingListId": {
"description": "Target list, an id from list_shopping_lists. Omit for the default. Merging only happens within one list.",
"examples": [
"0189c8d4f2b1712a9e4d6c9a1b2e3f4a"
],
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "add_shopping_list_item",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Assign or unassign a task to a household member.",
"inputSchema": {
"examples": [
{
"assignedToMemberId": "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e",
"id": "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a"
}
],
"properties": {
"assignedToMemberId": {
"description": "Member id from list_house_members. Empty or null unassigns.",
"examples": [
"7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e"
],
"type": [
"string",
"null"
]
},
"id": {
"description": "Task id from create_task or list_tasks.",
"examples": [
"018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "assign_task",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"items": [
{
"name": "Milk",
"quantity": 2
},
{
"name": "Eggs",
"quantity": 1
}
]
}
],
"properties": {
"items": {
"description": "Items to add, up to 25 per call.",
"examples": [
[
{
"name": "Milk",
"quantity": 2
}
]
],
"items": {
"description": "One item to add, with its quantity.",
"properties": {
"category": {
"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.",
"enum": [
"FruitAndVegetables",
"Bakery",
"DeliAndPreparedFoods",
"MeatAndSeafood",
"DairyAndEggs",
"Frozen",
"PantryAndDryGoods",
"SnacksAndConfectionery",
"Beverages",
"HouseholdAndCleaning",
"HealthAndPersonalCare",
"BabyAndKids",
"PetSupplies",
"Online",
"Other"
],
"examples": [
"DairyAndEggs"
],
"type": "string"
},
"name": {
"description": "Item name, e.g. 'Milk'. Duplicate names are summed within the batch and merged into any matching unbought item.",
"examples": [
"Milk"
],
"type": "string"
},
"quantity": {
"description": "How many to add, 1-9999. Summed quantities are capped at 9999.",
"examples": [
2
],
"minimum": 1,
"type": "integer"
}
},
"required": [
"name",
"quantity"
],
"type": "object"
},
"maxItems": 25,
"type": "array"
},
"shoppingListId": {
"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.",
"examples": [
"0189c8d4f2b1712a9e4d6c9a1b2e3f4a"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
},
"name": "batch_add_shopping_list_items",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Mark units of a shopping list item as bought, reducing its quantity by quantityToBuy and clearing it off the list once nothing is left.",
"inputSchema": {
"examples": [
{
"id": "0189c8d4f2b1712a9e4d6c9a1b2e3f4a",
"quantityToBuy": 1
}
],
"properties": {
"id": {
"description": "Item id from add_shopping_list_item or list_shopping_list_items.",
"examples": [
"0189c8d4f2b1712a9e4d6c9a1b2e3f4a"
],
"type": "string"
},
"quantityToBuy": {
"description": "Units bought, 1-9999, default 1. At or above the remaining quantity the item is fully bought and leaves the list.",
"examples": [
1
],
"type": "integer"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "buy_shopping_list_item",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"id": "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a"
}
],
"properties": {
"id": {
"description": "Task id from create_task or list_tasks.",
"examples": [
"018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "complete_task",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Create an appliance record for the household, tracking purchase date, warranty expiry, and optional references to previously created warranty/insurance documents.",
"inputSchema": {
"examples": [
{
"brand": "Samsung",
"model": "RF28R7351SG",
"name": "Kitchen Refrigerator",
"purchaseDate": "2023-11-04",
"serialNumber": "S/N-4471829",
"warrantyExpiryDate": "2025-11-04"
}
],
"properties": {
"brand": {
"description": "Manufacturer or brand.",
"examples": [
"Samsung"
],
"type": "string"
},
"insuranceDocumentId": {
"description": "Insurance document id from create_document.",
"examples": [
"doc_1a2b3c4d5e6f"
],
"type": "string"
},
"model": {
"description": "Model, as printed on the appliance or manual.",
"examples": [
"RF28R7351SG"
],
"type": "string"
},
"name": {
"description": "Name, e.g. what it is or where it lives.",
"examples": [
"Kitchen Refrigerator"
],
"type": "string"
},
"notes": {
"description": "Freeform notes.",
"examples": [
"Extended warranty purchased in-store, receipt in the kitchen drawer."
],
"type": "string"
},
"purchaseDate": {
"description": "Purchase date, YYYY-MM-DD.",
"examples": [
"2023-11-04"
],
"type": "string"
},
"serialNumber": {
"description": "Serial number, for support or warranty claims.",
"examples": [
"S/N-4471829"
],
"type": "string"
},
"warrantyDocumentId": {
"description": "Warranty document id from create_document.",
"examples": [
"doc_8f3a1c2b9e4d"
],
"type": "string"
},
"warrantyExpiryDate": {
"description": "Warranty expiry, YYYY-MM-DD. Must not precede purchaseDate.",
"examples": [
"2025-11-04"
],
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "create_appliance",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"description": "Annual checkup with Dr. Smith",
"endDateTime": "2026-08-03T15:30:00Z",
"isAllDay": false,
"location": {
"$type": "Address",
"countryCode": "GB",
"line1": "221B Baker Street",
"postalCode": "NW1 6XE"
},
"notes": "Bring insurance card",
"reminderOffsetMinutes": [
60,
1440
],
"startDateTime": "2026-08-03T14:30:00Z",
"timezone": "Europe/London",
"title": "Dentist appointment"
},
{
"endDate": "2026-10-30",
"isAllDay": true,
"startDate": "2026-10-26",
"title": "Half term"
}
],
"properties": {
"description": {
"description": "Longer description.",
"examples": [
"Annual checkup with Dr. Smith"
],
"type": "string"
},
"endDate": {
"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.",
"examples": [
"2026-08-05"
],
"type": "string"
},
"endDateTime": {
"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).",
"examples": [
"2026-08-03T15:30:00Z"
],
"type": "string"
},
"isAllDay": {
"description": "True for all-day, false for timed.",
"examples": [
false
],
"type": "boolean"
},
"location": {
"description": "Where it happens. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes.",
"properties": {
"$type": {
"description": "Which location shape this is.",
"enum": [
"Address",
"OnlineLocation"
],
"examples": [
"Address"
],
"type": "string"
},
"countryCode": {
"description": "ISO country code, e.g. GB.",
"examples": [
"GB"
],
"type": "string"
},
"line1": {
"description": "Address line 1. An Address needs one of line1-3 or postalCode.",
"examples": [
"221B Baker Street"
],
"type": "string"
},
"line2": {
"description": "Address line 2, e.g. flat or suite.",
"examples": [
"Flat 3"
],
"type": "string"
},
"line3": {
"description": "Address line 3.",
"examples": [
"London"
],
"type": "string"
},
"notes": {
"description": "Access detail, e.g. parking or passcode.",
"examples": [
"Parking on level 2"
],
"type": "string"
},
"postalCode": {
"description": "Postal or ZIP code.",
"examples": [
"NW1 6XE"
],
"type": "string"
},
"url": {
"description": "Absolute http/https join link.",
"examples": [
"https://meet.google.com/abc-defg-hij"
],
"type": "string"
}
},
"required": [
"$type"
],
"type": "object"
},
"notes": {
"description": "Freeform notes.",
"examples": [
"Bring insurance card"
],
"type": "string"
},
"reminderOffsetMinutes": {
"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.",
"examples": [
[
1440,
10080
]
],
"items": {
"description": "One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.",
"examples": [
1440
],
"maximum": 525600,
"minimum": 60,
"multipleOf": 60,
"type": "integer"
},
"maxItems": 5,
"type": "array",
"uniqueItems": true
},
"startDate": {
"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).",
"examples": [
"2026-08-03"
],
"type": "string"
},
"startDateTime": {
"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.",
"examples": [
"2026-08-03T14:30:00Z"
],
"type": "string"
},
"timezone": {
"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.",
"examples": [
"Europe/London"
],
"type": [
"string",
"null"
]
},
"title": {
"description": "Title shown in calendar views.",
"examples": [
"Dentist appointment"
],
"type": "string"
}
},
"required": [
"title",
"isAllDay"
],
"type": "object"
},
"name": "create_calendar_event",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"address": {
"countryCode": "GB",
"line1": "12 Baker Street",
"postalCode": "NW1 6XE"
},
"dateOfBirth": "1990-05-15",
"email": "[email protected]",
"firstName": "Sarah",
"lastName": "Jones",
"notes": "Met at the neighbourhood BBQ.",
"phone": "+44 7911 123456",
"prepareBirthdayPresent": true
}
],
"properties": {
"address": {
"description": "Postal address.",
"properties": {
"countryCode": {
"description": "ISO country code, e.g. GB.",
"examples": [
"GB"
],
"type": "string"
},
"line1": {
"description": "Line 1, typically number and street.",
"examples": [
"12 Baker Street"
],
"type": "string"
},
"line2": {
"description": "Line 2, e.g. apartment or unit.",
"examples": [
"Flat 3"
],
"type": "string"
},
"line3": {
"description": "Line 3, e.g. town or city.",
"examples": [
"London"
],
"type": "string"
},
"postalCode": {
"description": "Postal or ZIP code.",
"examples": [
"NW1 6XE"
],
"type": "string"
}
},
"type": "object"
},
"dateOfBirth": {
"description": "Date of birth, YYYY-MM-DD. Drives the birthday reminder.",
"examples": [
"1990-05-15"
],
"type": "string"
},
"displayName": {
"description": "Name to show instead of first/last, e.g. a nickname or company.",
"examples": [
"Sarah from book club"
],
"type": "string"
},
"email": {
"description": "Email address.",
"examples": [
"[email protected]"
],
"type": "string"
},
"firstName": {
"description": "First name. The only required field.",
"examples": [
"Sarah"
],
"type": "string"
},
"lastName": {
"description": "Last (family) name.",
"examples": [
"Jones"
],
"type": "string"
},
"notes": {
"description": "Free-text notes.",
"examples": [
"Met at the neighbourhood BBQ."
],
"type": "string"
},
"phone": {
"description": "Phone number, any format.",
"examples": [
"+44 7911 123456"
],
"type": "string"
},
"prepareBirthdayPresent": {
"description": "Whether to flag a birthday present for them.",
"examples": [
true
],
"type": "boolean"
}
},
"required": [
"firstName"
],
"type": "object"
},
"name": "create_contact",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"documentNumber": "512345678",
"documentType": "Passport",
"fee": {
"currencyCode": "GBP",
"value": 8250
},
"issuingAuthority": "HM Passport Office",
"notes": "Renew before the next family trip.",
"title": "UK Passport"
}
],
"properties": {
"documentNumber": {
"description": "Reference or serial number, e.g. a passport or policy number.",
"examples": [
"512345678"
],
"type": "string"
},
"documentType": {
"description": "Kind of document.",
"enum": [
"Passport",
"Insurance",
"Certificate",
"Warranty",
"License",
"Other"
],
"examples": [
"Passport"
],
"type": "string"
},
"fee": {
"description": "Cost, e.g. a renewal or issuance fee.",
"properties": {
"currencyCode": {
"description": "Uppercase ISO 4217 code, e.g. USD, GBP, JPY.",
"examples": [
"USD"
],
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"value": {
"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).",
"examples": [
1599
],
"type": "integer"
}
},
"required": [
"value",
"currencyCode"
],
"type": "object"
},
"issuingAuthority": {
"description": "Who issued it.",
"examples": [
"HM Passport Office"
],
"type": "string"
},
"notes": {
"description": "Free-text notes.",
"examples": [
"Renew before the next family trip."
],
"type": "string"
},
"renewalCronExpression": {
"description": "Accepted but not yet stored or acted on; has no effect.",
"examples": [
"0 0 1 1 *"
],
"type": "string"
},
"title": {
"description": "Custom title. Defaults to type plus number, e.g. 'Passport - 512345678'.",
"examples": [
"UK Passport"
],
"type": "string"
}
},
"required": [
"documentType"
],
"type": "object"
},
"name": "create_document",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"date": "2026-10-01",
"mealType": "dinner",
"recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f",
"servings": 4
}
],
"properties": {
"date": {
"description": "Date, YYYY-MM-DD. Must be today or within the next 28 days, so work it out from today's date.",
"type": "string"
},
"mealType": {
"description": "Meal slot of the day.",
"enum": [
"breakfast",
"lunch",
"dinner",
"snack"
],
"examples": [
"dinner"
],
"type": "string"
},
"name": {
"description": "Custom meal name when no recipe is linked.",
"examples": [
"Leftover curry"
],
"type": "string"
},
"notes": {
"description": "Free-text notes.",
"examples": [
"Double the rice"
],
"type": "string"
},
"recipeId": {
"description": "Recipe id from list_recipes or list_global_recipes.",
"examples": [
"8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f"
],
"type": "string"
},
"recipeSource": {
"description": "Use 'global' when recipeId came from list_global_recipes. Defaults to 'household'.",
"enum": [
"household",
"global"
],
"examples": [
"household"
],
"type": "string"
},
"servings": {
"description": "Servings, 1-100.",
"examples": [
4
],
"type": "integer"
}
},
"required": [
"date",
"mealType"
],
"type": "object"
},
"name": "create_meal_plan",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"dateOfBirth": "2021-06-15",
"microchipNumber": "985141000123456",
"name": "Bella",
"notes": "Allergic to chicken; on prescription food."
}
],
"properties": {
"dateOfBirth": {
"description": "Date of birth, YYYY-MM-DD.",
"examples": [
"2021-06-15"
],
"type": "string"
},
"insuranceDocumentId": {
"description": "Insurance document id from create_document.",
"examples": [
"doc_1a2b3c4d5e6f"
],
"type": "string"
},
"microchipNumber": {
"description": "Microchip number.",
"examples": [
"985141000123456"
],
"type": "string"
},
"name": {
"description": "Name.",
"examples": [
"Bella"
],
"type": "string"
},
"notes": {
"description": "Freeform notes, e.g. diet or medical history.",
"examples": [
"Allergic to chicken; on prescription food."
],
"type": "string"
},
"vetContactId": {
"description": "Vet contact id from create_contact.",
"examples": [
"contact_5e6f7a8b9c0d"
],
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "create_pet",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Save a recipe with optional ingredients, source URL, instructions and servings. Link it to a date with create_meal_plan.",
"inputSchema": {
"examples": [
{
"ingredients": [
{
"name": "chicken breast",
"quantity": 2
},
{
"name": "tomato",
"quantity": 4
}
],
"instructions": "Marinate the chicken, then simmer in the spiced tomato sauce for 20 minutes.",
"name": "Chicken Tikka Masala",
"servings": 4,
"url": "https://example.com/recipes/chicken-tikka-masala"
}
],
"properties": {
"ingredients": {
"description": "Ingredients.",
"items": {
"description": "One ingredient and its quantity.",
"properties": {
"name": {
"description": "Ingredient name.",
"examples": [
"chicken breast"
],
"type": "string"
},
"quantity": {
"description": "Whole-number quantity, minimum 1. No fractions or units.",
"examples": [
2
],
"type": "integer"
}
},
"required": [
"name",
"quantity"
],
"type": "object"
},
"type": "array"
},
"instructions": {
"description": "Cooking method.",
"examples": [
"Marinate the chicken, then simmer in the spiced tomato sauce for 20 minutes."
],
"type": "string"
},
"name": {
"description": "Recipe name.",
"examples": [
"Chicken Tikka Masala"
],
"type": "string"
},
"servings": {
"description": "Servings the recipe yields, minimum 1.",
"examples": [
4
],
"type": "integer"
},
"url": {
"description": "Source URL.",
"examples": [
"https://example.com/recipes/chicken-tikka-masala"
],
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "create_recipe",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Create a recurring calendar event. It generates event instances on a schedule, each with the reminders set in reminderOffsetMinutes.",
"inputSchema": {
"examples": [
{
"cronExpression": "1 Week",
"description": "Sync on sprint progress",
"duration": "PT30M",
"endDate": "2026-12-31",
"isAllDay": false,
"maxOccurrences": 20,
"notes": "Bring your laptop",
"reminderOffsetMinutes": [
60
],
"startDate": "2026-08-03",
"startTime": "09:00:00",
"timezone": "Europe/London",
"title": "Weekly team standup"
}
],
"properties": {
"cronExpression": {
"description": "Interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax.",
"examples": [
"1 Week"
],
"type": "string"
},
"description": {
"description": "Longer description of each instance.",
"examples": [
"Sync on sprint progress"
],
"type": "string"
},
"duration": {
"description": "Length of each instance, ISO 8601 duration e.g. 'PT30M'.",
"examples": [
"PT30M"
],
"type": "string"
},
"endDate": {
"description": "Last date an instance may fall on, YYYY-MM-DD.",
"examples": [
"2026-12-31"
],
"type": "string"
},
"isAllDay": {
"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.",
"examples": [
false
],
"type": "boolean"
},
"location": {
"description": "Where each instance happens. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes.",
"properties": {
"$type": {
"description": "Which location shape this is.",
"enum": [
"Address",
"OnlineLocation"
],
"examples": [
"Address"
],
"type": "string"
},
"countryCode": {
"description": "ISO country code, e.g. GB.",
"examples": [
"GB"
],
"type": "string"
},
"line1": {
"description": "Address line 1. An Address needs one of line1-3 or postalCode.",
"examples": [
"221B Baker Street"
],
"type": "string"
},
"line2": {
"description": "Address line 2, e.g. flat or suite.",
"examples": [
"Flat 3"
],
"type": "string"
},
"line3": {
"description": "Address line 3.",
"examples": [
"London"
],
"type": "string"
},
"notes": {
"description": "Access detail, e.g. parking or passcode.",
"examples": [
"Parking on level 2"
],
"type": "string"
},
"postalCode": {
"description": "Postal or ZIP code.",
"examples": [
"NW1 6XE"
],
"type": "string"
},
"url": {
"description": "Absolute http/https join link.",
"examples": [
"https://meet.google.com/abc-defg-hij"
],
"type": "string"
}
},
"required": [
"$type"
],
"type": "object"
},
"maxOccurrences": {
"description": "Cap on instances generated.",
"examples": [
20
],
"type": "integer"
},
"notes": {
"description": "Notes on each instance.",
"examples": [
"Bring your laptop"
],
"type": "string"
},
"reminderOffsetMinutes": {
"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.",
"examples": [
[
1440,
10080
]
],
"items": {
"description": "One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.",
"examples": [
1440
],
"maximum": 40320,
"minimum": 60,
"multipleOf": 60,
"type": "integer"
},
"maxItems": 5,
"type": "array",
"uniqueItems": true
},
"startDate": {
"description": "Date of the first instance, YYYY-MM-DD. Later ones repeat from it.",
"examples": [
"2026-08-03"
],
"type": "string"
},
"startTime": {
"description": "Local start time, HH:mm:ss. Omit if there is no fixed time.",
"examples": [
"09:00:00"
],
"type": "string"
},
"timezone": {
"description": "IANA zone for startTime, e.g. 'Europe/London'. Occurrences follow its DST.",
"examples": [
"Europe/London"
],
"type": [
"string",
"null"
]
},
"title": {
"description": "Title of every generated instance.",
"examples": [
"Weekly team standup"
],
"type": "string"
}
},
"required": [
"title",
"cronExpression"
],
"type": "object"
},
"name": "create_recurring_calendar_event",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Create a recurring task. It generates task instances on a schedule, each with the reminders set in reminderOffsetMinutes.",
"inputSchema": {
"examples": [
{
"assigneeRotation": [
"7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e",
"a1b2c3d4e5f60718293a4b5c6d7e8f90"
],
"cronExpression": "2 Week",
"endDate": "2026-12-31",
"maxOccurrences": 26,
"notes": "Blue bin only",
"reminderOffsetMinutes": [
1440
],
"startDate": "2026-08-01",
"title": "Take out the recycling"
}
],
"properties": {
"assigneeRotation": {
"description": "A member id from list_house_members.",
"items": {
"description": "Member ids round-robined one per instance. Ids that are no longer members are skipped, leaving that instance unassigned.",
"examples": [
"7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e"
],
"type": "string"
},
"type": "array"
},
"cronExpression": {
"description": "Interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax.",
"examples": [
"2 Week"
],
"type": "string"
},
"endDate": {
"description": "Inclusive last date, YYYY-MM-DD. Omit for open-ended.",
"examples": [
"2026-12-31"
],
"type": "string"
},
"isUrgent": {
"description": "Mark every task this series generates as urgent.",
"examples": [
true
],
"type": "boolean"
},
"maxOccurrences": {
"description": "Cap on instances generated, applied even if endDate is not reached.",
"examples": [
26
],
"type": "integer"
},
"notes": {
"description": "Notes copied to every generated instance.",
"examples": [
"Blue bin only"
],
"type": "string"
},
"preparationDays": {
"description": "Legacy single reminder, days before each occurrence's due date, 0-365 (0 means none); use reminderOffsetMinutes instead. Ignored when reminderOffsetMinutes is sent.",
"examples": [
1
],
"type": "integer"
},
"reminderOffsetMinutes": {
"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.",
"examples": [
[
1440,
10080
]
],
"items": {
"description": "One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.",
"examples": [
1440
],
"maximum": 40320,
"minimum": 60,
"multipleOf": 60,
"type": "integer"
},
"maxItems": 5,
"type": "array",
"uniqueItems": true
},
"startDate": {
"description": "First date to generate from, YYYY-MM-DD. Defaults to today.",
"examples": [
"2026-08-01"
],
"type": "string"
},
"title": {
"description": "Title given to every generated instance.",
"examples": [
"Take out the recycling"
],
"type": "string"
}
},
"required": [
"title",
"cronExpression"
],
"type": "object"
},
"name": "create_recurring_task",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"fee": {
"currencyCode": "USD",
"value": 1599
},
"name": "Netflix",
"notes": "Family plan, shared with parents",
"paymentDate": "2026-10-03",
"remindMe": true,
"renewalCronExpression": "0 0 1 * *",
"startDate": "2026-10-01",
"status": "Active"
}
],
"properties": {
"fee": {
"description": "Recurring charge.",
"properties": {
"currencyCode": {
"description": "Uppercase ISO 4217 code, e.g. USD, GBP, JPY.",
"examples": [
"USD"
],
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"value": {
"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).",
"examples": [
1599
],
"type": "integer"
}
},
"type": "object"
},
"name": {
"description": "Name, e.g. 'Netflix' or 'Gym membership'.",
"examples": [
"Netflix"
],
"type": "string"
},
"notes": {
"description": "Free-text notes.",
"examples": [
"Family plan, shared with parents"
],
"type": "string"
},
"paymentDate": {
"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.",
"examples": [
"2026-10-03"
],
"type": "string"
},
"remindMe": {
"description": "Whether to remind the household before each renewal.",
"examples": [
true
],
"type": "boolean"
},
"renewalCronExpression": {
"description": "Cron expression for the renewal cadence. No more often than daily. Omit for a one-off bill.",
"examples": [
"0 0 1 * *"
],
"type": "string"
},
"startDate": {
"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.",
"examples": [
"2026-10-01"
],
"type": "string"
},
"status": {
"description": "Status at creation.",
"enum": [
"Active",
"Paused",
"Cancelled"
],
"examples": [
"Active"
],
"type": "string"
}
},
"required": [
"name",
"status"
],
"type": "object"
},
"name": "create_subscription",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"assignedToMemberId": "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e",
"dueDate": "2026-08-01",
"notes": "Blue bin only",
"reminderOffsetMinutes": [
1440,
10080
],
"title": "Take out the recycling"
}
],
"properties": {
"assignedToMemberId": {
"description": "Member id from list_house_members.",
"examples": [
"7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e"
],
"type": "string"
},
"dueDate": {
"description": "Due date, YYYY-MM-DD.",
"examples": [
"2026-08-01"
],
"type": "string"
},
"isUrgent": {
"description": "Mark the task urgent so it is shown first and highlighted.",
"examples": [
true
],
"type": "boolean"
},
"notes": {
"description": "Freeform notes. Not for assignment info.",
"examples": [
"Blue bin only"
],
"type": "string"
},
"preparationDate": {
"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.",
"examples": [
"2026-07-30"
],
"type": "string"
},
"reminderOffsetMinutes": {
"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.",
"examples": [
[
1440,
10080
]
],
"items": {
"description": "One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.",
"examples": [
1440
],
"maximum": 525600,
"minimum": 60,
"multipleOf": 60,
"type": "integer"
},
"maxItems": 5,
"type": "array",
"uniqueItems": true
},
"title": {
"description": "Task title, e.g. 'Take out the recycling'.",
"examples": [
"Take out the recycling"
],
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"name": "create_task",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"colour": "Blue",
"make": "Toyota",
"model": "Corolla",
"motDueDate": "2026-11-15",
"notes": "Winter tyres fitted",
"registration": "AB21 CDE",
"serviceDueDate": "2027-01-20",
"taxDueDate": "2026-09-01",
"vin": "1HGCM82633A004352",
"year": 2021
}
],
"properties": {
"colour": {
"description": "Colour.",
"examples": [
"Blue"
],
"type": "string"
},
"insuranceDocumentId": {
"description": "Insurance document id from create_document or list_documents.",
"examples": [
"01928e4a7d3f7b9ac1e3f6d8b2a4c710"
],
"type": "string"
},
"make": {
"description": "Manufacturer, e.g. 'Toyota'.",
"examples": [
"Toyota"
],
"type": "string"
},
"model": {
"description": "Model, e.g. 'Corolla'.",
"examples": [
"Corolla"
],
"type": "string"
},
"motDueDate": {
"description": "Next MOT (roadworthiness test) due date, YYYY-MM-DD.",
"examples": [
"2026-11-15"
],
"type": "string"
},
"notes": {
"description": "Free-text notes.",
"examples": [
"Winter tyres fitted"
],
"type": "string"
},
"registration": {
"description": "Registration as shown on the plate; format varies by country.",
"examples": [
"AB21 CDE"
],
"type": "string"
},
"serviceDueDate": {
"description": "Next service due date, YYYY-MM-DD.",
"examples": [
"2027-01-20"
],
"type": "string"
},
"taxDueDate": {
"description": "Next road tax due date, YYYY-MM-DD.",
"examples": [
"2026-09-01"
],
"type": "string"
},
"vin": {
"description": "Vehicle Identification Number, 17 alphanumeric characters.",
"examples": [
"1HGCM82633A004352"
],
"type": "string"
},
"year": {
"description": "Model year, 1900-2100.",
"examples": [
2021
],
"type": "integer"
}
},
"required": [],
"type": "object"
},
"name": "create_vehicle",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Defer a House Review recommendation and raise a task due in seven days, for when the user wants to handle the gap later.",
"inputSchema": {
"examples": [
{
"recommendationId": "0195e3c1a2b34c5d6e7f8091a2b3c4d5"
}
],
"properties": {
"recommendationId": {
"description": "Recommendation id from get_house_review.",
"examples": [
"0195e3c1a2b34c5d6e7f8091a2b3c4d5"
],
"type": "string"
}
},
"required": [
"recommendationId"
],
"type": "object"
},
"name": "defer_recommendation",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Soft-delete an appliance; it is hidden from list_appliances but not permanently erased.",
"inputSchema": {
"examples": [
{
"id": "01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f"
}
],
"properties": {
"id": {
"description": "ID of the appliance to delete.",
"examples": [
"01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_appliance",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"id": "0198f3a1b2c34d5e6f7089ab1c2d3e4f"
}
],
"properties": {
"id": {
"description": "Id of the calendar event to delete.",
"examples": [
"0198f3a1b2c34d5e6f7089ab1c2d3e4f"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_calendar_event",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"id": "01928e4a7d3f7b9ac1e3f6d8b2a4c710"
}
],
"properties": {
"id": {
"description": "The id of the contact to delete, as returned by create_contact or list_contacts.",
"examples": [
"01928e4a7d3f7b9ac1e3f6d8b2a4c710"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_contact",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"id": "01928e4a7d3f7b9ac1e3f6d8b2a4c710"
}
],
"properties": {
"id": {
"description": "The id of the document to delete, as returned by create_document or list_documents.",
"examples": [
"01928e4a7d3f7b9ac1e3f6d8b2a4c710"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_document",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Soft-delete a planned meal. The entry leaves list_meal_plans and frees its date and meal slot again.",
"inputSchema": {
"examples": [
{
"id": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f"
}
],
"properties": {
"id": {
"description": "Entry id from list_meal_plans.",
"examples": [
"8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_meal_plan",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Soft-delete a pet; it is hidden from list_pets but not permanently erased.",
"inputSchema": {
"examples": [
{
"id": "01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f"
}
],
"properties": {
"id": {
"description": "ID of the pet to delete.",
"examples": [
"01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_pet",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"id": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f"
}
],
"properties": {
"id": {
"description": "Recipe id from list_recipes.",
"examples": [
"8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_recipe",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Delete a recurring calendar event and all its future instances.",
"inputSchema": {
"examples": [
{
"id": "0198f3a1b2c34d5e6f7089ab1c2d3e4f"
}
],
"properties": {
"id": {
"description": "Id of the recurring calendar event (template) to delete.",
"examples": [
"0198f3a1b2c34d5e6f7089ab1c2d3e4f"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_recurring_calendar_event",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Delete a recurring task and all its uncompleted future instances.",
"inputSchema": {
"examples": [
{
"id": "5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f"
}
],
"properties": {
"id": {
"description": "The recurring task template's ID, as returned by create_recurring_task.",
"examples": [
"5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_recurring_task",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Soft-delete a subscription so it leaves list_subscriptions; the record is retained. Use it when the user cancels a service.",
"inputSchema": {
"examples": [
{
"id": "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e"
}
],
"properties": {
"id": {
"description": "ID of the subscription to soft-delete.",
"examples": [
"0198c1f4b2c07a1b9e4d5f6a7b8c9d0e"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_subscription",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Soft-delete a task. It leaves list_tasks but the record is retained. Fails if it was already deleted.",
"inputSchema": {
"examples": [
{
"id": "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a"
}
],
"properties": {
"id": {
"description": "Task id from create_task or list_tasks.",
"examples": [
"018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_task",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Soft-delete a vehicle so it leaves list_vehicles; the record is retained. Use it when the household sells a car.",
"inputSchema": {
"examples": [
{
"id": "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e"
}
],
"properties": {
"id": {
"description": "ID of the vehicle to soft-delete.",
"examples": [
"0198c1f4b2c07a1b9e4d5f6a7b8c9d0e"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "delete_vehicle",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Forget (soft-delete) a memory by id. Use when a memory is superseded or no longer relevant.",
"inputSchema": {
"examples": [
{
"id": "0195e3c1a2b34c5d6e7f8091a2b3c4d5"
}
],
"properties": {
"id": {
"description": "Id from a prior recall_memory result.",
"examples": [
"0195e3c1a2b34c5d6e7f8091a2b3c4d5"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "forget_memory",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Return the current household in full: name, address, invite code, notes, join settings, members, subscription status and resolved feature flags.",
"inputSchema": {
"examples": [
{}
],
"properties": {},
"type": "object"
},
"name": "get_house",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{}
],
"properties": {},
"type": "object"
},
"name": "get_house_review",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Return the signed-in user's profile: name, email, AI-consent status and timezone. Also bumps their last-seen activity as a side effect.",
"inputSchema": {
"examples": [
{}
],
"properties": {},
"type": "object"
},
"name": "get_profile",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Return a one-to-five day forecast for the household's location, for planning outdoor tasks or events.",
"inputSchema": {
"examples": [
{
"forecastDays": 3
}
],
"properties": {
"forecastDays": {
"description": "Number of forecast days to return, from 1 to 5. Defaults to 3 if omitted.",
"examples": [
3
],
"type": "integer"
}
},
"type": "object"
},
"name": "get_weather_forecast",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "List the household's appliances with brand, model, serial number, purchase date and warranty expiry. Answers whether something is still under warranty.",
"inputSchema": {
"description": "Takes no parameters; returns every non-deleted appliance in the caller's household.",
"examples": [
{}
],
"type": "object"
},
"name": "list_appliances",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"startDateFrom": "2026-07-01T00:00:00Z",
"startDateTo": "2026-07-31T23:59:59Z"
}
],
"properties": {
"startDateFrom": {
"description": "Range start, ISO 8601 UTC. Matches events ending, or starting if undated, at or after this.",
"examples": [
"2026-07-01T00:00:00Z"
],
"type": "string"
},
"startDateTo": {
"description": "Range end, ISO 8601 UTC. Matches events starting at or before this.",
"examples": [
"2026-07-31T23:59:59Z"
],
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "list_calendar_events",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "List all contacts in the household. Takes no parameters; soft-deleted contacts are excluded.",
"inputSchema": {
"examples": [
{}
],
"type": "object"
},
"name": "list_contacts",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "List documents in the household, optionally filtered to a single document type. Soft-deleted documents are excluded.",
"inputSchema": {
"examples": [
{},
{
"documentType": "Passport"
}
],
"properties": {
"documentType": {
"description": "Return only this type. Omit for all.",
"enum": [
"Passport",
"Insurance",
"Certificate",
"Warranty",
"License",
"Other"
],
"examples": [
"Passport"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_documents",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "List the curated Discover recipe catalogue shared by all households. Pass an id from here to create_meal_plan with recipeSource='global'.",
"inputSchema": {
"examples": [
{}
],
"type": "object"
},
"name": "list_global_recipes",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{}
],
"properties": {},
"type": "object"
},
"name": "list_house_members",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{}
],
"properties": {},
"type": "object"
},
"name": "list_houses",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "List planned meals with their date, meal slot, linked recipe or custom name, servings and notes. Narrow with from and to.",
"inputSchema": {
"examples": [
{
"from": "2026-07-14",
"to": "2026-07-21"
}
],
"properties": {
"from": {
"description": "Inclusive date range start (format: YYYY-MM-DD). Omit for an open-ended start.",
"examples": [
"2026-07-14"
],
"type": "string"
},
"to": {
"description": "Inclusive date range end (format: YYYY-MM-DD). Omit for an open-ended end.",
"examples": [
"2026-07-21"
],
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "list_meal_plans",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "List the household's pets with microchip number, date of birth, notes and their linked vet contact and insurance document.",
"inputSchema": {
"description": "Takes no parameters; returns every non-deleted pet in the caller's household.",
"examples": [
{}
],
"type": "object"
},
"name": "list_pets",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "List the household's own saved recipes with ingredients, instructions, source URL and servings. For the shared catalogue use list_global_recipes.",
"inputSchema": {
"examples": [
{}
],
"type": "object"
},
"name": "list_recipes",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "List outstanding (unbought) shopping list items with their name, quantity, category and shoppingListId. Pass shoppingListId to limit it to one named list.",
"inputSchema": {
"examples": [
{},
{
"shoppingListId": "0189c8d4f2b1712a9e4d6c9a1b2e3f4a"
}
],
"properties": {
"shoppingListId": {
"description": "One named list, an id from list_shopping_lists. Omit for every list.",
"examples": [
"0189c8d4f2b1712a9e4d6c9a1b2e3f4a"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_shopping_list_items",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{}
],
"properties": {},
"type": "object"
},
"name": "list_shopping_lists",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"status": "Active"
}
],
"properties": {
"status": {
"description": "Only return subscriptions with this status. Omit to return subscriptions of all statuses.",
"enum": [
"Active",
"Paused",
"Cancelled"
],
"examples": [
"Active"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_subscriptions",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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).",
"inputSchema": {
"examples": [
{
"assignedToMemberId": "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e",
"dueDateOnOrAfter": "2026-07-01",
"dueDateOnOrBefore": "2026-07-31",
"includeCompleted": false,
"limit": 20
}
],
"properties": {
"assignedToMemberId": {
"description": "Member id to filter by. Omit for all assignees.",
"examples": [
"7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e"
],
"type": "string"
},
"cursor": {
"description": "nextCursor from a previous response. Omit for the first page.",
"examples": [
"eyJsYXN0IjoiMDE4ZjJjOWEifQ"
],
"type": "string"
},
"dueDateOnOrAfter": {
"description": "Earliest due date, YYYY-MM-DD. Undated tasks never match.",
"examples": [
"2026-07-01"
],
"type": "string"
},
"dueDateOnOrBefore": {
"description": "Latest due date, YYYY-MM-DD. Undated tasks never match.",
"examples": [
"2026-07-31"
],
"type": "string"
},
"includeCompleted": {
"description": "Include completed tasks. Defaults to false.",
"examples": [
false
],
"type": "boolean"
},
"limit": {
"description": "Page size, 1-100, default 50.",
"examples": [
20
],
"type": "integer"
}
},
"type": "object"
},
"name": "list_tasks",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{}
],
"type": "object"
},
"name": "list_vehicles",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"limit": 20,
"type": "user"
}
],
"properties": {
"cursor": {
"description": "nextCursor from a previous response. Omit for the first page.",
"examples": [
"eyJQSyI6IkhvdXNlaG9sZCMxMjM0In0="
],
"type": "string"
},
"limit": {
"description": "Max number of memories to return in this page. 1-100, default 20.",
"examples": [
20
],
"type": "integer"
},
"type": {
"description": "Filter by author. Omit for both.",
"enum": [
"system",
"user"
],
"examples": [
"user"
],
"type": "string"
}
},
"type": "object"
},
"name": "recall_memory",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"id": "0189c8d4f2b1712a9e4d6c9a1b2e3f4a"
}
],
"properties": {
"id": {
"description": "Item id from add_shopping_list_item or list_shopping_list_items.",
"examples": [
"0189c8d4f2b1712a9e4d6c9a1b2e3f4a"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "remove_shopping_list_item",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Permanently suppress a House Review recommendation so get_house_review stops returning it. Use it when the suggestion does not apply.",
"inputSchema": {
"examples": [
{
"recommendationId": "0195e3c1a2b34c5d6e7f8091a2b3c4d5"
}
],
"properties": {
"recommendationId": {
"description": "Recommendation id from get_house_review.",
"examples": [
"0195e3c1a2b34c5d6e7f8091a2b3c4d5"
],
"type": "string"
}
},
"required": [
"recommendationId"
],
"type": "object"
},
"name": "skip_recommendation",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"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",
"name": "preferred-cleaning-day",
"type": "user"
}
],
"properties": {
"content": {
"description": "Free-text body. Max 8000 chars.",
"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."
],
"type": "string"
},
"description": {
"description": "Single-line summary used to decide relevance later. Max 200 chars.",
"examples": [
"User prefers the house cleaned on Saturday mornings"
],
"type": "string"
},
"name": {
"description": "Short kebab-case slug, e.g. 'preferred-cleaning-day'. Max 80 chars.",
"examples": [
"preferred-cleaning-day"
],
"type": "string"
},
"type": {
"description": "'user' for what the user stated, 'system' for insights you derived.",
"enum": [
"system",
"user"
],
"examples": [
"user"
],
"type": "string"
}
},
"required": [
"type",
"name",
"description",
"content"
],
"type": "object"
},
"name": "store_memory",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Reopens a completed task, clearing its completion timestamp and completed-by user. Fails with a conflict if the task is not currently completed.",
"inputSchema": {
"examples": [
{
"id": "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a"
}
],
"properties": {
"id": {
"description": "Task id from create_task or list_tasks.",
"examples": [
"018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "uncomplete_task",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"id": "01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f",
"notes": "Repaired ice maker under warranty, June 2026.",
"warrantyExpiryDate": "2026-11-04"
}
],
"properties": {
"brand": {
"description": "New manufacturer or brand.",
"examples": [
"Samsung"
],
"type": "string"
},
"id": {
"description": "Appliance id from list_appliances.",
"examples": [
"01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f"
],
"type": "string"
},
"insuranceDocumentId": {
"description": "Insurance document id from create_document.",
"examples": [
"doc_1a2b3c4d5e6f"
],
"type": "string"
},
"model": {
"description": "New model.",
"examples": [
"RF28R7351SG"
],
"type": "string"
},
"name": {
"description": "New name.",
"examples": [
"Kitchen Refrigerator"
],
"type": "string"
},
"notes": {
"description": "Freeform notes.",
"examples": [
"Extended warranty purchased in-store, receipt in the kitchen drawer."
],
"type": "string"
},
"purchaseDate": {
"description": "Purchase date, YYYY-MM-DD. Must not follow warrantyExpiryDate. Empty string clears it.",
"examples": [
"2023-11-04"
],
"type": "string"
},
"serialNumber": {
"description": "New serial number.",
"examples": [
"S/N-4471829"
],
"type": "string"
},
"warrantyDocumentId": {
"description": "Warranty document id from create_document.",
"examples": [
"doc_8f3a1c2b9e4d"
],
"type": "string"
},
"warrantyExpiryDate": {
"description": "Warranty expiry, YYYY-MM-DD. Must not precede purchaseDate. Empty string clears it.",
"examples": [
"2025-11-04"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_appliance",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"endDateTime": "2026-08-04T15:30:00Z",
"id": "0198f3a1b2c34d5e6f7089ab1c2d3e4f",
"notes": "Moved to Thursday",
"startDateTime": "2026-08-04T14:30:00Z"
}
],
"properties": {
"description": {
"description": "New description.",
"examples": [
"Annual checkup with Dr. Smith"
],
"type": "string"
},
"endDate": {
"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).",
"examples": [
"2026-08-06"
],
"type": "string"
},
"endDateTime": {
"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.",
"examples": [
"2026-08-04T15:30:00Z"
],
"type": "string"
},
"id": {
"description": "Event id from create_calendar_event or list_calendar_events.",
"examples": [
"0198f3a1b2c34d5e6f7089ab1c2d3e4f"
],
"type": "string"
},
"isAllDay": {
"description": "True for all-day, false for timed.",
"examples": [
false
],
"type": "boolean"
},
"location": {
"description": "Replaces the location outright. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes.",
"properties": {
"$type": {
"description": "Which location shape this is.",
"enum": [
"Address",
"OnlineLocation"
],
"examples": [
"Address"
],
"type": "string"
},
"countryCode": {
"description": "ISO country code, e.g. GB.",
"examples": [
"GB"
],
"type": "string"
},
"line1": {
"description": "Address line 1. An Address needs one of line1-3 or postalCode.",
"examples": [
"221B Baker Street"
],
"type": "string"
},
"line2": {
"description": "Address line 2, e.g. flat or suite.",
"examples": [
"Flat 3"
],
"type": "string"
},
"line3": {
"description": "Address line 3.",
"examples": [
"London"
],
"type": "string"
},
"notes": {
"description": "Access detail, e.g. parking or passcode.",
"examples": [
"Parking on level 2"
],
"type": "string"
},
"postalCode": {
"description": "Postal or ZIP code.",
"examples": [
"NW1 6XE"
],
"type": "string"
},
"url": {
"description": "Absolute http/https join link.",
"examples": [
"https://meet.google.com/abc-defg-hij"
],
"type": "string"
}
},
"required": [
"$type"
],
"type": "object"
},
"notes": {
"description": "New notes.",
"examples": [
"Moved to Thursday"
],
"type": "string"
},
"reminderOffsetMinutes": {
"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.",
"examples": [
[
1440,
10080
]
],
"items": {
"description": "One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.",
"examples": [
1440
],
"maximum": 525600,
"minimum": 60,
"multipleOf": 60,
"type": "integer"
},
"maxItems": 5,
"type": "array",
"uniqueItems": true
},
"startDate": {
"description": "All-day only (preferred for all-day): new first day, YYYY-MM-DD. Without endDate the event becomes a single day.",
"examples": [
"2026-08-04"
],
"type": "string"
},
"startDateTime": {
"description": "New start of a timed event, ISO 8601 UTC. For an all-day event send startDate instead.",
"examples": [
"2026-08-04T14:30:00Z"
],
"type": "string"
},
"timezone": {
"description": "IANA zone for the wall-clock times, e.g. 'Europe/London'. Null means UTC.",
"examples": [
"Europe/London"
],
"type": [
"string",
"null"
]
},
"title": {
"description": "New event title.",
"examples": [
"Dentist appointment (rescheduled)"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_calendar_event",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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).",
"inputSchema": {
"examples": [
{
"id": "01928e4a7d3f7b9ac1e3f6d8b2a4c710",
"notes": "Prefers texts over calls.",
"phone": "+44 7911 123456"
}
],
"properties": {
"address": {
"description": "Postal address. Replaces the stored one outright.",
"properties": {
"countryCode": {
"description": "ISO country code, e.g. GB.",
"examples": [
"GB"
],
"type": "string"
},
"line1": {
"description": "Line 1, typically number and street.",
"examples": [
"12 Baker Street"
],
"type": "string"
},
"line2": {
"description": "Line 2, e.g. apartment or unit.",
"examples": [
"Flat 3"
],
"type": "string"
},
"line3": {
"description": "Line 3, e.g. town or city.",
"examples": [
"London"
],
"type": "string"
},
"postalCode": {
"description": "Postal or ZIP code.",
"examples": [
"NW1 6XE"
],
"type": "string"
}
},
"type": "object"
},
"dateOfBirth": {
"description": "Date of birth, YYYY-MM-DD. Empty string clears it.",
"examples": [
"1990-05-15"
],
"type": "string"
},
"displayName": {
"description": "Name to show instead of first/last, e.g. a nickname or company.",
"examples": [
"Sarah from book club"
],
"type": "string"
},
"email": {
"description": "Email address.",
"examples": [
"[email protected]"
],
"type": "string"
},
"firstName": {
"description": "First name.",
"examples": [
"Sarah"
],
"type": "string"
},
"id": {
"description": "Contact id from create_contact or list_contacts.",
"examples": [
"01928e4a7d3f7b9ac1e3f6d8b2a4c710"
],
"type": "string"
},
"lastName": {
"description": "Last (family) name.",
"examples": [
"Jones"
],
"type": "string"
},
"notes": {
"description": "Free-text notes.",
"examples": [
"Prefers texts over calls."
],
"type": "string"
},
"phone": {
"description": "Phone number, any format.",
"examples": [
"+44 7911 123456"
],
"type": "string"
},
"prepareBirthdayPresent": {
"description": "Whether to flag a birthday present for them.",
"examples": [
true
],
"type": "boolean"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_contact",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"id": "01928e4a7d3f7b9ac1e3f6d8b2a4c710",
"issuingAuthority": "HM Passport Office",
"notes": "Renewed for another 10 years."
}
],
"properties": {
"documentNumber": {
"description": "Reference or serial number, e.g. a passport or policy number.",
"examples": [
"512345678"
],
"type": "string"
},
"documentType": {
"description": "Kind of document.",
"enum": [
"Passport",
"Insurance",
"Certificate",
"Warranty",
"License",
"Other"
],
"examples": [
"Passport"
],
"type": "string"
},
"fee": {
"description": "Cost. Replaces the stored fee outright.",
"properties": {
"currencyCode": {
"description": "Uppercase ISO 4217 code, e.g. USD, GBP, JPY.",
"examples": [
"USD"
],
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"value": {
"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).",
"examples": [
1599
],
"type": "integer"
}
},
"required": [
"value",
"currencyCode"
],
"type": "object"
},
"id": {
"description": "Document id from create_document or list_documents.",
"examples": [
"01928e4a7d3f7b9ac1e3f6d8b2a4c710"
],
"type": "string"
},
"issuingAuthority": {
"description": "Who issued it.",
"examples": [
"HM Passport Office"
],
"type": "string"
},
"notes": {
"description": "Free-text notes.",
"examples": [
"Renewed for another 10 years."
],
"type": "string"
},
"renewalCronExpression": {
"description": "Accepted but not yet stored or acted on; has no effect.",
"examples": [
"0 0 1 1 *"
],
"type": "string"
},
"title": {
"description": "Custom title.",
"examples": [
"UK Passport"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_document",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"id": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f",
"servings": 6
}
],
"properties": {
"date": {
"description": "Date, YYYY-MM-DD. Must be today or within the next 28 days, so work it out from today's date.",
"type": "string"
},
"id": {
"description": "Entry id from list_meal_plans.",
"examples": [
"8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f"
],
"type": "string"
},
"mealType": {
"description": "Meal slot of the day.",
"enum": [
"breakfast",
"lunch",
"dinner",
"snack"
],
"examples": [
"dinner"
],
"type": "string"
},
"name": {
"description": "Custom meal name when no recipe is linked.",
"examples": [
"Leftover curry"
],
"type": "string"
},
"notes": {
"description": "Free-text notes.",
"examples": [
"Double the rice"
],
"type": "string"
},
"recipeId": {
"description": "Recipe id from list_recipes or list_global_recipes.",
"examples": [
"8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f"
],
"type": "string"
},
"recipeSource": {
"description": "Use 'global' when recipeId came from list_global_recipes. Defaults to 'household'.",
"enum": [
"household",
"global"
],
"examples": [
"household"
],
"type": "string"
},
"servings": {
"description": "Servings, 1-100.",
"examples": [
4
],
"type": "integer"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_meal_plan",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Update an existing memory's name, description, or content. Type is immutable; to reclassify, forget and store again.",
"inputSchema": {
"examples": [
{
"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",
"id": "0195e3c1a2b34c5d6e7f8091a2b3c4d5"
}
],
"properties": {
"content": {
"description": "New body.",
"examples": [
"Updated 2026-07-14: the user now prefers Sunday mornings instead of Saturday mornings for cleaning."
],
"type": "string"
},
"description": {
"description": "New single-line summary.",
"examples": [
"User now prefers the house cleaned on Sunday mornings"
],
"type": "string"
},
"id": {
"description": "Id from a prior recall_memory result.",
"examples": [
"0195e3c1a2b34c5d6e7f8091a2b3c4d5"
],
"type": "string"
},
"name": {
"description": "New kebab-case slug.",
"examples": [
"preferred-cleaning-day"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_memory",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"id": "01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f",
"notes": "Started prescription diet on vet's advice."
}
],
"properties": {
"dateOfBirth": {
"description": "Date of birth, YYYY-MM-DD. Empty string clears it.",
"examples": [
"2021-06-15"
],
"type": "string"
},
"id": {
"description": "Pet id from list_pets.",
"examples": [
"01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f"
],
"type": "string"
},
"insuranceDocumentId": {
"description": "Insurance document id from create_document.",
"examples": [
"doc_1a2b3c4d5e6f"
],
"type": "string"
},
"microchipNumber": {
"description": "New microchip number.",
"examples": [
"985141000123456"
],
"type": "string"
},
"name": {
"description": "New name.",
"examples": [
"Bella"
],
"type": "string"
},
"notes": {
"description": "Freeform notes.",
"examples": [
"Allergic to chicken; on prescription food."
],
"type": "string"
},
"vetContactId": {
"description": "Vet contact id from create_contact.",
"examples": [
"contact_5e6f7a8b9c0d"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_pet",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Update a recipe. Only the fields you send change, except ingredients, which replaces the whole existing list rather than merging.",
"inputSchema": {
"examples": [
{
"id": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f",
"servings": 6
}
],
"properties": {
"id": {
"description": "Recipe id from list_recipes.",
"examples": [
"8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f"
],
"type": "string"
},
"ingredients": {
"description": "Ingredients. Replaces the whole existing list rather than merging.",
"items": {
"description": "One ingredient and its quantity.",
"properties": {
"name": {
"description": "Ingredient name.",
"examples": [
"chicken breast"
],
"type": "string"
},
"quantity": {
"description": "Whole-number quantity, minimum 1. No fractions or units.",
"examples": [
2
],
"type": "integer"
}
},
"required": [
"name",
"quantity"
],
"type": "object"
},
"type": "array"
},
"instructions": {
"description": "Cooking method.",
"examples": [
"Marinate the chicken, then simmer in the spiced sauce."
],
"type": "string"
},
"name": {
"description": "Name.",
"examples": [
"Chicken Tikka Masala"
],
"type": "string"
},
"servings": {
"description": "Servings the recipe yields, minimum 1.",
"examples": [
4
],
"type": "integer"
},
"url": {
"description": "Source URL.",
"examples": [
"https://example.com/recipes/chicken-tikka-masala"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_recipe",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Update a recurring calendar event. Changes to title/description/notes/reminders patch existing instances. Changes to frequency/dates/time regenerate future instances.",
"inputSchema": {
"examples": [
{
"cronExpression": "2 Week",
"endDate": "2027-01-31",
"id": "0198f3a1b2c34d5e6f7089ab1c2d3e4f"
}
],
"properties": {
"cronExpression": {
"description": "New interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax.",
"examples": [
"2 Week"
],
"type": "string"
},
"description": {
"description": "New description, patched onto existing instances.",
"examples": [
"Sync on sprint progress"
],
"type": "string"
},
"duration": {
"description": "Length of each instance, ISO 8601 duration e.g. 'PT30M'.",
"examples": [
"PT30M"
],
"type": "string"
},
"endDate": {
"description": "New last date, YYYY-MM-DD. Empty string leaves it unbounded.",
"examples": [
"2027-01-31"
],
"type": "string"
},
"id": {
"description": "Template id from create_recurring_calendar_event.",
"examples": [
"0198f3a1b2c34d5e6f7089ab1c2d3e4f"
],
"type": "string"
},
"isAllDay": {
"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.",
"examples": [
false
],
"type": "boolean"
},
"location": {
"description": "Replaces the location outright. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes.",
"properties": {
"$type": {
"description": "Which location shape this is.",
"enum": [
"Address",
"OnlineLocation"
],
"examples": [
"Address"
],
"type": "string"
},
"countryCode": {
"description": "ISO country code, e.g. GB.",
"examples": [
"GB"
],
"type": "string"
},
"line1": {
"description": "Address line 1. An Address needs one of line1-3 or postalCode.",
"examples": [
"221B Baker Street"
],
"type": "string"
},
"line2": {
"description": "Address line 2, e.g. flat or suite.",
"examples": [
"Flat 3"
],
"type": "string"
},
"line3": {
"description": "Address line 3.",
"examples": [
"London"
],
"type": "string"
},
"notes": {
"description": "Access detail, e.g. parking or passcode.",
"examples": [
"Bring your laptop"
],
"type": "string"
},
"postalCode": {
"description": "Postal or ZIP code.",
"examples": [
"NW1 6XE"
],
"type": "string"
},
"url": {
"description": "Absolute http/https join link.",
"examples": [
"https://meet.google.com/abc-defg-hij"
],
"type": "string"
}
},
"required": [
"$type"
],
"type": "object"
},
"maxOccurrences": {
"description": "New cap on instances generated.",
"examples": [
20
],
"type": "integer"
},
"notes": {
"description": "New notes.",
"examples": [
"Bring your laptop"
],
"type": "string"
},
"reminderOffsetMinutes": {
"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.",
"examples": [
[
1440,
10080
]
],
"items": {
"description": "One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.",
"examples": [
1440
],
"maximum": 40320,
"minimum": 60,
"multipleOf": 60,
"type": "integer"
},
"maxItems": 5,
"type": "array",
"uniqueItems": true
},
"startDate": {
"description": "New first-instance date, YYYY-MM-DD. Empty string clears it.",
"examples": [
"2026-08-03"
],
"type": "string"
},
"startTime": {
"description": "New local start time, HH:mm:ss.",
"examples": [
"09:00:00"
],
"type": "string"
},
"timezone": {
"description": "IANA zone for startTime, e.g. 'Europe/London'. Occurrences follow its DST.",
"examples": [
"Europe/London"
],
"type": [
"string",
"null"
]
},
"title": {
"description": "New title, patched onto existing instances.",
"examples": [
"Weekly team standup"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_recurring_calendar_event",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Update a recurring task. Title, notes, urgency or reminder changes patch existing instances; frequency/date changes regenerate future instances.",
"inputSchema": {
"examples": [
{
"assigneeRotation": [
"7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e"
],
"cronExpression": "2 Week",
"id": "5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f",
"title": "Take out the recycling"
}
],
"properties": {
"assigneeRotation": {
"description": "A member id from list_house_members.",
"items": {
"description": "Replacement rotation of member ids, round-robined one per instance. Applies to instances generated after this change.",
"examples": [
"7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e"
],
"type": "string"
},
"type": "array"
},
"cronExpression": {
"description": "New interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax.",
"examples": [
"2 Week"
],
"type": "string"
},
"endDate": {
"description": "New inclusive end date, YYYY-MM-DD. Empty string makes it open-ended.",
"examples": [
"2026-12-31"
],
"type": "string"
},
"id": {
"description": "Template id from create_recurring_task.",
"examples": [
"5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f"
],
"type": "string"
},
"isUrgent": {
"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.",
"examples": [
true
],
"type": "boolean"
},
"maxOccurrences": {
"description": "New cap on instances generated.",
"examples": [
26
],
"type": "integer"
},
"notes": {
"description": "New notes, copied to uncompleted instances.",
"examples": [
"Blue bin only"
],
"type": "string"
},
"preparationDays": {
"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.",
"examples": [
1
],
"type": "integer"
},
"reminderOffsetMinutes": {
"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.",
"examples": [
[
1440,
10080
]
],
"items": {
"description": "One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.",
"examples": [
1440
],
"maximum": 40320,
"minimum": 60,
"multipleOf": 60,
"type": "integer"
},
"maxItems": 5,
"type": "array",
"uniqueItems": true
},
"startDate": {
"description": "New start date, YYYY-MM-DD. Empty string clears it.",
"examples": [
"2026-08-01"
],
"type": "string"
},
"title": {
"description": "New title. Uncompleted instances are updated to match; completed ones keep theirs.",
"examples": [
"Take out the recycling"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_recurring_task",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"examples": [
{
"category": "DairyAndEggs",
"id": "0189c8d4f2b1712a9e4d6c9a1b2e3f4a",
"quantity": 3
}
],
"properties": {
"category": {
"description": "New store-aisle category, overriding the auto-assigned one.",
"enum": [
"FruitAndVegetables",
"Bakery",
"DeliAndPreparedFoods",
"MeatAndSeafood",
"DairyAndEggs",
"Frozen",
"PantryAndDryGoods",
"SnacksAndConfectionery",
"Beverages",
"HouseholdAndCleaning",
"HealthAndPersonalCare",
"BabyAndKids",
"PetSupplies",
"Online",
"Other"
],
"examples": [
"DairyAndEggs"
],
"type": "string"
},
"id": {
"description": "Item id from add_shopping_list_item or list_shopping_list_items.",
"examples": [
"0189c8d4f2b1712a9e4d6c9a1b2e3f4a"
],
"type": "string"
},
"name": {
"description": "New item name.",
"examples": [
"Whole milk"
],
"type": "string"
},
"quantity": {
"description": "New quantity, 1-9999. Replaces rather than adds to the current one.",
"examples": [
3
],
"type": "integer"
},
"shoppingListId": {
"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.",
"examples": [
"0189c8d4f2b1712a9e4d6c9a1b2e3f4a"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_shopping_list_item",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Update a subscription. Only the fields you send change; for renewalCronExpression, startDate, paymentDate and notes an empty string clears the stored value.",
"inputSchema": {
"examples": [
{
"id": "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e",
"notes": "Paused while travelling",
"status": "Paused"
},
{
"id": "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e",
"paymentDate": "2026-10-03"
}
],
"properties": {
"fee": {
"description": "Recurring charge.",
"properties": {
"currencyCode": {
"description": "Uppercase ISO 4217 code, e.g. USD, GBP, JPY.",
"examples": [
"USD"
],
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"value": {
"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).",
"examples": [
1599
],
"type": "integer"
}
},
"type": "object"
},
"id": {
"description": "Subscription id from list_subscriptions.",
"examples": [
"0198c1f4b2c07a1b9e4d5f6a7b8c9d0e"
],
"type": "string"
},
"name": {
"description": "New name.",
"examples": [
"Netflix"
],
"type": "string"
},
"notes": {
"description": "Free-text notes. Empty string clears them.",
"examples": [
"Paused while travelling"
],
"type": "string"
},
"paymentDate": {
"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.",
"examples": [
"2026-10-03"
],
"type": "string"
},
"remindMe": {
"description": "Whether to remind the household before each renewal.",
"examples": [
true
],
"type": "boolean"
},
"renewalCronExpression": {
"description": "Cron expression for the renewal cadence, no more often than daily. Empty string clears it, making the bill a one-off.",
"examples": [
"0 0 1 * *"
],
"type": "string"
},
"startDate": {
"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.",
"examples": [
"2026-10-01"
],
"type": "string"
},
"status": {
"description": "New status.",
"enum": [
"Active",
"Paused",
"Cancelled"
],
"examples": [
"Paused"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_subscription",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Update a task's title, assignee, due date, reminders, notes or urgency. Only the fields you send change.",
"inputSchema": {
"examples": [
{
"dueDate": "2026-08-01",
"id": "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a",
"title": "Take out the recycling"
}
],
"properties": {
"assignedToMemberId": {
"description": "Member id to assign. Empty string unassigns.",
"examples": [
"7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e"
],
"type": "string"
},
"dueDate": {
"description": "New due date, YYYY-MM-DD. Empty string clears it.",
"examples": [
"2026-08-01"
],
"type": "string"
},
"id": {
"description": "Task id from create_task or list_tasks.",
"examples": [
"018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a"
],
"type": "string"
},
"isUrgent": {
"description": "Mark the task urgent so it is shown first and highlighted: true marks urgent, false clears it, omit to leave unchanged.",
"examples": [
true
],
"type": "boolean"
},
"notes": {
"description": "Freeform notes. Not for assignment info.",
"examples": [
"Blue bin only"
],
"type": "string"
},
"preparationDate": {
"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.",
"examples": [
"2026-07-30"
],
"type": "string"
},
"reminderOffsetMinutes": {
"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.",
"examples": [
[
1440,
10080
]
],
"items": {
"description": "One lead time in minutes: whole hours 60-1380, or a multiple of 1440 for days.",
"examples": [
1440
],
"maximum": 525600,
"minimum": 60,
"multipleOf": 60,
"type": "integer"
},
"maxItems": 5,
"type": "array",
"uniqueItems": true
},
"title": {
"description": "New title.",
"examples": [
"Take out the recycling"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_task",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
},
{
"description": "Update a vehicle. Only the fields you send change; for text and due-date fields an empty string clears the stored value.",
"inputSchema": {
"examples": [
{
"id": "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e",
"notes": "Renewed tax disc",
"taxDueDate": "2027-09-01"
}
],
"properties": {
"colour": {
"description": "Colour.",
"examples": [
"Blue"
],
"type": "string"
},
"id": {
"description": "Vehicle id from list_vehicles.",
"examples": [
"0198c1f4b2c07a1b9e4d5f6a7b8c9d0e"
],
"type": "string"
},
"insuranceDocumentId": {
"description": "Insurance document id from list_documents.",
"examples": [
"01928e4a7d3f7b9ac1e3f6d8b2a4c710"
],
"type": "string"
},
"make": {
"description": "Manufacturer, e.g. 'Toyota'.",
"examples": [
"Toyota"
],
"type": "string"
},
"model": {
"description": "Model, e.g. 'Corolla'.",
"examples": [
"Corolla"
],
"type": "string"
},
"motDueDate": {
"description": "Next MOT (roadworthiness test) due date, YYYY-MM-DD.",
"examples": [
"2026-11-15"
],
"type": "string"
},
"notes": {
"description": "Free-text notes.",
"examples": [
"Renewed tax disc"
],
"type": "string"
},
"registration": {
"description": "Registration as shown on the plate; format varies by country.",
"examples": [
"AB21 CDE"
],
"type": "string"
},
"serviceDueDate": {
"description": "Next service due date, YYYY-MM-DD.",
"examples": [
"2027-01-20"
],
"type": "string"
},
"taxDueDate": {
"description": "Next road tax due date, YYYY-MM-DD.",
"examples": [
"2026-09-01"
],
"type": "string"
},
"vin": {
"description": "Vehicle Identification Number, 17 alphanumeric characters.",
"examples": [
"1HGCM82633A004352"
],
"type": "string"
},
"year": {
"description": "Model year, 1900-2100.",
"examples": [
2021
],
"type": "integer"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "update_vehicle",
"outputSchema": {
"properties": {
"items": {
"items": {
"type": "object"
},
"type": "array"
},
"message": {
"type": "string"
},
"title": {
"type": "string"
},
"variant": {
"enum": [
"list",
"detail",
"confirmation"
],
"type": "string"
}
},
"required": [
"items"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:a0d3bf2cda9c2d7c2bb89effdf3fdce693a4011fdb2be87392079f76317659f0 | sha256sum