haus
Server Details
OneHaus household tools: tasks, calendar, contacts, pets, vehicles, documents and more.
- Status
- Healthy
- Uptime
- 100.0% over 51 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 69 tools
Each tool targets a distinct action on a specific entity (e.g., create_task vs. update_task vs. complete_task), with clear boundaries between similar operations like one-off vs. recurring calendar events. The descriptions explicitly cross-reference related tools to avoid confusion.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_tasks, create_recipe, update_vehicle), with predictable verbs for CRUD and domain-specific actions like buy_shopping_list_item. No mixed conventions or ambiguous verbs observed.
With 69 tools, the server is significantly over-scoped for a typical MCP server. Even though it covers multiple household domains, the sheer number is unwieldy and likely to confuse agents, exceeding the recommended range and matching the 'too many' descriptor.
The tool surface is highly comprehensive across domains like shopping, tasks, calendar, contacts, documents, pets, recipes, vehicles, and subscriptions. Minor gaps exist, such as the lack of explicit create/delete for named shopping lists and no get-single operations, but these are workable through existing list and add tools.
Available Tools
69 toolsadd_shopping_list_itemAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Item name, e.g. 'Milk'. A new item gets a category from its name; a matching unbought item has its quantity increased instead. | |
| category | No | Store-aisle category to use instead of auto-assigning one; the name is then kept exactly as given. Omit to auto-categorise. Ignored when merged into an existing item. | |
| quantity | No | How many to add, 1-9999, default 1. Added to the existing quantity when merged. | |
| shoppingListId | No | Target list, an id from list_shopping_lists. Omit for the default. Merging only happens within one list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false and destructiveHint=false, so the description carries the transparency burden. It discloses two non-obvious behaviors beyond those hints: a new item gets its category from the name, and an unbought item of the same name has its quantity increased instead of being duplicated. This is exactly the kind of behavioral context an agent needs and that the annotations do not supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The core action is front-loaded ('Add one item'), and the second sentence packs the important behavioral details without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with an output schema and detailed property descriptions, the definition plus schema fully cover the inputs and the key merge/categorization rules. The only notable omission is an explicit pointer to the batch sibling for multi-item additions, which is more a usage-guideline gap than a completeness one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds cross-parameter semantics that the property-level schema does not fully convey: quantity is added to an existing item when merged, category is ignored on merge, and name determines both auto-categorization and duplicate matching. This meaningfully supplements the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Add one item to the shopping list.' It also clarifies the two key behaviors (auto-categorization from name, quantity increase on duplicate) that distinguish it from siblings like batch_add_shopping_list_items, buy_shopping_list_item, and update_shopping_list_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Add one item' implies a single-item operation, which hints at contrast with the sibling batch_add_shopping_list_items, but there is no explicit instruction like 'use batch for multiple items' or 'use update_shopping_list_item to change an existing item.' Usage context is present but is implied rather than stated, and no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_taskAInspect
Assign or unassign a task to a household member.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id from create_task or list_tasks. | |
| assignedToMemberId | No | Member id from list_house_members. Empty or null unassigns. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-destructive operation. The description adds the useful detail that unassignment is also part of the tool's behavior, beyond what the name suggests. However, no further behavioral context (e.g., immediate effect, idempotency, or side effects) is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and avoids any filler or redundant detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, a 100%-covered schema, existing annotations, and an output schema, the description is sufficient for an agent to call the tool correctly. The schema clarifies where ids come from and how unassignment works, so no critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters, including that an empty or null assignedToMemberId unassigns. The description itself adds no additional parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb phrase ('Assign or unassign') plus the resource ('a task') and the target ('a household member'). It clearly distinguishes this tool from sibling tools like complete_task, update_task, or delete_task, which address different task operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites such as the task and member existing. The intended use is only implied by the verb, but there is no exclusionary or comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_add_shopping_list_itemsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Items to add, up to 25 per call. | |
| shoppingListId | No | Target list for every item in this call, an id from list_shopping_lists. Omit for the default. Merging only happens within one list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint=false, destructiveHint=false), so the description carries the behavioral burden. It discloses meaningful side effects: deduplication within the batch and merging into existing unbought items. This goes beyond the annotation hints, although some overlap with the input schema exists. It does not describe failure modes or partial-batch behavior, but the core merge behavior is front and center.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. The most important constraints (25-item limit, batch scope, dedup/merge behavior) are front-loaded, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is largely complete for a batch-add tool, especially with a rich input schema and an output schema present. It covers the behavioral nuances that matter most (dedup/merge), though it could be slightly clearer about when to prefer this over the singular add_shopping_list_item or how failures are handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both items and shoppingListId thoroughly. The description adds only a little beyond that, such as the batch limit and the idea of a 'whole shop', but it does not meaningfully expand on the parameter semantics already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Add'), a clear resource ('shopping list items'), and a precise scope ('up to 25... at once, for a whole shop'). It also reveals batch semantics and deduplication/merging behavior, which distinguishes it from the singular sibling add_shopping_list_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this tool is for batch operations and names the capacity limit, giving agents an obvious context for choosing it over the singular variant. It does not explicitly name add_shopping_list_item as an alternative or state when not to use this tool, but the context is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buy_shopping_list_itemAInspect
Mark units of a shopping list item as bought, reducing its quantity by quantityToBuy and clearing it off the list once nothing is left.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Item id from add_shopping_list_item or list_shopping_list_items. | |
| quantityToBuy | No | Units bought, 1-9999, default 1. At or above the remaining quantity the item is fully bought and leaves the list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation Contradiction: annotations declare destructiveHint=false, but the description states the item is 'clearing it off the list once nothing is left', which is a destructive/removal side effect. readOnlyHint=false is consistent with mutation, but the contradiction on destructiveness is material and forces a score of 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence front-loads the verb and resource, then explains the quantity effect and the termination condition. No filler or redundant clauses; every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a two-parameter schema, 100% parameter descriptions, and an output schema, the description covers the full lifecycle of a purchase: partial decrement and eventual removal. It doesn't discuss permissions or failure cases, but these are not necessary for this simple mutation; the only material issue is the contradictory destructive hint, which is captured under behavioral transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% parameter coverage and fully explains id provenance and quantityToBuy range/default/end condition. The description reinforces the semantic (reduces by quantityToBuy) but adds little beyond what the schema already states, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Mark units as bought') and resource ('shopping list item'), and states the core outcome: quantity reduction and removal once depleted. This clearly differentiates it from closely related siblings like remove_shopping_list_item and update_shopping_list_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the intended use obvious: after purchasing units of a shopping list item, call this to record the purchase and reduce remaining quantity. It does not explicitly name alternatives or when-not conditions, so it falls short of a 5, but the context is clear and not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_taskAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id from create_task or list_tasks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate this is not read-only and not destructive, and the description builds on that by disclosing the side effect of recording momentum stats and the conflict failure mode for already-completed tasks. This adds useful behavioral detail beyond the structured annotations, though it does not describe output details or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. The primary purpose is front-loaded, and the error condition is stated separately and clearly. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with a full output schema and clear annotations, the description covers purpose, side effects, and failure behavior. Nothing essential is missing for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single 'id' parameter with a clear description ('Task id from create_task or list_tasks'), so the parameter burden is mostly carried by the schema. The description reinforces that the parameter refers to a task but adds no new parameter-level meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Marks a task as completed') and the resource affected (a task), and adds meaningful context about recording completion for household momentum stats. It also distinguishes this tool from siblings like uncomplete_task by describing the completion state change explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: to complete an open task. The conflict note also tells the agent not to call it on already-completed tasks, which is useful usage guidance. However, it does not explicitly name alternatives such as uncomplete_task or update_task, so the guidance is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_applianceAInspect
Create an appliance record for the household, tracking purchase date, warranty expiry, and optional references to previously created warranty/insurance documents.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name, e.g. what it is or where it lives. | |
| brand | No | Manufacturer or brand. | |
| model | No | Model, as printed on the appliance or manual. | |
| notes | No | Freeform notes. | |
| purchaseDate | No | Purchase date, YYYY-MM-DD. | |
| serialNumber | No | Serial number, for support or warranty claims. | |
| warrantyDocumentId | No | Warranty document id from create_document. | |
| warrantyExpiryDate | No | Warranty expiry, YYYY-MM-DD. Must not precede purchaseDate. | |
| insuranceDocumentId | No | Insurance document id from create_document. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only and not destructive. The description adds a valuable precondition: warranty and insurance document IDs must refer to previously created documents. It also clarifies that the record tracks purchase date and warranty expiry, giving context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-structured sentence places the core action first and then lists the tracked data and optional references. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full parameter schema and an output schema present, the description covers the essential purpose and ordering prerequisite. It could be more explicit about when to use this instead of update_appliance, but nothing critical is missing for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds a high-level grouping (purchase date, warranty expiry, document references) but does not provide new format or constraint details beyond what schema properties already state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Create an appliance record for the household'. This clearly distinguishes it from sibling tools like create_contact or create_vehicle, and the mention of warranty/insurance documents differentiates it from create_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: this is for adding a new appliance record to the household, not for modifying or deleting. It doesn't explicitly name alternatives such as update_appliance, but the creation context is unambiguous enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_calendar_eventAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Freeform notes. | |
| title | Yes | Title shown in calendar views. | |
| endDate | No | All-day only: LAST day, inclusive, YYYY-MM-DD. Omit for a single day. The event may cover at most 366 days, between 1900 and 2200. | |
| isAllDay | Yes | True for all-day, false for timed. | |
| location | No | Where it happens. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes. | |
| timezone | No | IANA zone for the wall-clock times, e.g. 'Europe/London'. Null means UTC. Not stored when an all-day event is sent with startDate. | |
| startDate | No | All-day only (preferred for all-day): first day, YYYY-MM-DD. Takes precedence over startDateTime. Stored as startDateTime 00:00Z on this day, with endDateTime 00:00Z on the last day (null for a single day). | |
| description | No | Longer description. | |
| endDateTime | No | End of a timed event, ISO 8601 UTC. Must not precede startDateTime. For all-day events send endDate instead. An all-day event sent with endDateTime and no startDate stores it as given, and a midnight endDateTime then names the LAST day (inclusive). | |
| startDateTime | No | Start of a timed event, ISO 8601 UTC with a Z suffix. For an all-day event send startDate instead; when startDate is present this is ignored. | |
| reminderOffsetMinutes | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate non-destructive and non-read-only, which is minimal. The description adds context about field precedence (startDate takes precedence over startDateTime) and how reminders work for all-day events, which goes beyond the annotation. It doesn't mention side effects like reminders sent to all members, but that is in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, around 50 words, and immediately states the core purpose. It front-loads the key distinction and points to the alternative. It could be more detailed on when to use but is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 params, nested objects, output schema exists), the description provides essential guidance for the most common decision (timed vs all-day) and points to the sibling for recurring. There is an output schema, so return values are not needed. It is sufficient for an agent to select and invoke correctly, though more examples could help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and highly descriptive, but the description still adds value by summarizing the key distinction between timed and all-day events and the precedence rule, which helps agents pick correct parameters without reading the entire schema. It doesn't duplicate the schema fully, so it adds clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a single, one-off calendar event on the household calendar, with specific action and resource. It also distinguishes from create_recurring_calendar_event, which is a sibling, making it clear what this tool does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implicitly gives usage guidelines by differentiating from the recurring event alternative, and explicitly states when to use which fields for timed vs all-day events. However, it doesn't explicitly say 'use this for one-off events' but the phrasing 'single, one-off' and 'instead' for recurring implies it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contactAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Email address. | ||
| notes | No | Free-text notes. | |
| phone | No | Phone number, any format. | |
| address | No | Postal address. | |
| lastName | No | Last (family) name. | |
| firstName | Yes | First name. The only required field. | |
| dateOfBirth | No | Date of birth, YYYY-MM-DD. Drives the birthday reminder. | |
| displayName | No | Name to show instead of first/last, e.g. a nickname or company. | |
| prepareBirthdayPresent | No | Whether to flag a birthday present for them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a useful behavioral note beyond the annotations: the create operation can be minimal, and optional fields can be supplied later via update_contact. However, it does not disclose side effects, duplicate behavior, or validation outcomes; the annotations only indicate a mutating but non-destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise, front-loaded sentences with no filler. The main purpose comes first, followed by the key requirement and update path, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema, output schema, and sibling context, the description is largely sufficient. It correctly highlights the single required field and the update route for optional fields, though the enumerated optional-fields list is a subset and could have clarified that all other fields are also optional at creation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all 9 parameters with descriptions, so the baseline is 3. The description reinforces that firstName is the only required field and names a few optional fields, but it does not add meaningful semantic detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a contact to the address book') and identifies the resource as a contact, distinguishing it from the many other create_* sibling tools. It also points to update_contact, reinforcing what this specific tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: only firstName is required for creation, and optional fields can be added later via update_contact. It names the relevant alternative tool, though it does not explicitly cover when not to use create_contact beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_documentAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fee | No | Cost, e.g. a renewal or issuance fee. | |
| notes | No | Free-text notes. | |
| title | No | Custom title. Defaults to type plus number, e.g. 'Passport - 512345678'. | |
| documentType | Yes | Kind of document. | |
| documentNumber | No | Reference or serial number, e.g. a passport or policy number. | |
| issuingAuthority | No | Who issued it. | |
| renewalCronExpression | No | Accepted but not yet stored or acted on; has no effect. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already show this is a mutating but non-destructive operation, and the description's 'Store' wording is consistent with that. It adds the useful fact that a new id is returned and can be linked, but it does not disclose side effects or quirks beyond that; the schema carries the rest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one compact sentence with no filler. It front-loads the core action, lists accepted document types and key fields, and states the important return-value behavior efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema and the presence of an output schema, the description does not need to re-explain parameter or return details. It contributes the key contextual detail that the returned id can be linked to an appliance, vehicle, or pet, and the schema covers the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters, including the nested fee object, are already documented. The description's list of 'reference number, issuing authority, fee and notes' partially mirrors the schema but omits title and documentType, so it does not materially add meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action as storing a document with specific fields and returning a new id, which matches the create_document name. It lists document types and stored fields, but it does not explicitly distinguish itself from sibling update_document or delete_document, so it misses full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives implied usage context by noting the new id can be linked to an appliance, vehicle, or pet, which hints at when the tool is useful. However, it provides no explicit when-to-use/when-not-to-use guidance and does not name any alternative tools among the many create/update siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_meal_planAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date, YYYY-MM-DD. Must be today or within the next 28 days, so work it out from today's date. | |
| name | No | Custom meal name when no recipe is linked. | |
| notes | No | Free-text notes. | |
| mealType | Yes | Meal slot of the day. | |
| recipeId | No | Recipe id from list_recipes or list_global_recipes. | |
| servings | No | Servings, 1-100. | |
| recipeSource | No | Use 'global' when recipeId came from list_global_recipes. Defaults to 'household'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the non-obvious behavior that a provided name is ignored and stored as null when recipeId is present, which goes beyond the annotations. Since readOnlyHint=false already signals a write, and no destructive behavior is relevant, the description adds meaningful context without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The purpose is front-loaded, and the behavioral nuance is tucked into the second sentence without added verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main decision path (recipe vs custom) but omits the global recipe branch: it only mentions list_recipes, whereas the schema allows recipeId from list_global_recipes and requires recipeSource='global' in that case. With a rich output schema and 100% parameter coverage this is a minor gap, but still a real omission for an agent navigating the sibling list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with helpful descriptions, so the baseline is 3. The description adds semantic value by clarifying the mutual exclusivity and precedence between name and recipeId, and by pointing to list_recipes as the source of valid IDs. However, it does not add meaning to date, mealType, servings, or recipeSource beyond what the schema gives.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action, 'Plan a meal', with a concrete resource (a meal for a date and meal type) and immediately explains the two input modes. It is distinguishable from update_meal_plan and delete_meal_plan via create semantics, and from list_recipes by referencing it as a source rather than the target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance for the two modes: recipeId for an existing recipe from list_recipes, name for a custom meal, and defines precedence (recipeId wins). It does not explicitly name update_meal_plan as the alternative for modifying an existing plan, but the create context and the recipe-vs-name guidance are sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_petAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name. | |
| notes | No | Freeform notes, e.g. diet or medical history. | |
| dateOfBirth | No | Date of birth, YYYY-MM-DD. | |
| vetContactId | No | Vet contact id from create_contact. | |
| microchipNumber | No | Microchip number. | |
| insuranceDocumentId | No | Insurance document id from create_document. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses relevant behavioral details beyond the annotations: it creates a new pet, optionally associates existing contact/document resources as vet and insurance, and returns the new pet's id. This adds useful context about relationships and return value, even though error conditions are not discussed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that communicates the action, optional parameters, relationship semantics, and return value without wasted words. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with one required parameter, full schema coverage, and an output schema, the description plus schema provide enough to invoke the tool correctly. It could mention explicit constraints like unique microchip handling, but that is not essential for basic correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description paraphrases optionality and the vet/insurance link roles, but it does not add substantive meaning beyond the schema's existing field descriptions and the required field list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Add a pet') and goes on to summarize the optional fields and links to contact/document, making the tool's purpose immediately clear. It is also distinguishable from sibling tools because it is the only one about creating a pet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for creating new pets, but it does not explicitly state when to use it versus alternatives like update_pet or delete_pet. No when-not or alternative-routing guidance is provided, though the creation context is reasonably inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_recipeAInspect
Save a recipe with optional ingredients, source URL, instructions and servings. Link it to a date with create_meal_plan.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Source URL. | |
| name | Yes | Recipe name. | |
| servings | No | Servings the recipe yields, minimum 1. | |
| ingredients | No | Ingredients. | |
| instructions | No | Cooking method. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only nor destructive; the description adds that a recipe is persisted and that ingredients, source URL, instructions, and servings are optional while name is required. It also reveals that linking to a date happens through a separate tool, which is useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and optional fields, then a useful pointer to the sibling. No filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with complete schema coverage and an output schema, the description covers the essentials: what is created, what is optional, and that meal-plan linking is handled elsewhere. It doesn't mention duplicate handling or constraints, but those are adequately handled by the rich schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter. The description only restates that the listed fields are optional, adding no new semantics beyond the structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb-resource pair ('Save a recipe') and enumerates the optional fields, so an agent knows exactly what resource this tool creates. It points to create_meal_plan for linking, which helps differentiate scope, though it doesn't contrast with update_recipe or delete_recipe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
By instructing 'Link it to a date with create_meal_plan,' the description gives clear context on where this tool fits in the workflow and implies this tool does not perform scheduling. It lacks explicit when-not-to-use guidance, but provides enough context for an agent to choose the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_recurring_calendar_eventAInspect
Create a recurring calendar event. It generates event instances on a schedule, each with the reminders set in reminderOffsetMinutes.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes on each instance. | |
| title | Yes | Title of every generated instance. | |
| endDate | No | Last date an instance may fall on, YYYY-MM-DD. | |
| duration | No | Length of each instance, ISO 8601 duration e.g. 'PT30M'. | |
| isAllDay | No | True for all-day instances, false for timed. An all-day instance starts at midnight of its occurrence date in the template timezone (stored in UTC; omit startTime) and ends duration later (no end without a duration), so a duration of one day or more makes each instance span that many whole days. | |
| location | No | Where each instance happens. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes. | |
| timezone | No | IANA zone for startTime, e.g. 'Europe/London'. Occurrences follow its DST. | |
| startDate | No | Date of the first instance, YYYY-MM-DD. Later ones repeat from it. | |
| startTime | No | Local start time, HH:mm:ss. Omit if there is no fixed time. | |
| description | No | Longer description of each instance. | |
| cronExpression | Yes | Interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax. | |
| maxOccurrences | No | Cap on instances generated. | |
| reminderOffsetMinutes | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only say readOnlyHint=false and destructiveHint=false, providing no behavioral detail. The description adds the non-obvious behavior that one call expands into multiple scheduled event instances, each carrying the reminder offsets from reminderOffsetMinutes. This is meaningful context beyond what the annotations express, though it stops short of describing side effects or validation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The main purpose is front-loaded in the first sentence, and the second sentence adds the key behavioral detail about recurrence and reminders without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 13 parameters, nested objects, and an output schema, but every parameter is documented in the schema, so the description mainly needs to orient the agent. It does so by stating recurrence and reminder behavior. The only real gap is not mentioning when to choose this over create_calendar_event, which is more a usage-guidance issue than a completeness issue.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all 13 parameters thoroughly. The main description only reiterates reminderOffsetMinutes and does not explain cronExpression or cross-field constraints beyond what the schema provides. Baseline 3 is appropriate because the description adds little over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Create') and resource ('recurring calendar event'), and adds that it 'generates event instances on a schedule,' which clearly distinguishes it from one-off tools like create_calendar_event and from recurring tasks like create_recurring_task. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use of the word 'recurring' and the phrase 'generates event instances on a schedule' implies when to use this tool. However, the description never explicitly contrasts it with create_calendar_event or states when not to use it, leaving sibling selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_recurring_taskBInspect
Create a recurring task. It generates task instances on a schedule, each with the reminders set in reminderOffsetMinutes.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Notes copied to every generated instance. | |
| title | Yes | Title given to every generated instance. | |
| endDate | No | Inclusive last date, YYYY-MM-DD. Omit for open-ended. | |
| isUrgent | No | Mark every task this series generates as urgent. | |
| startDate | No | First date to generate from, YYYY-MM-DD. Defaults to today. | |
| cronExpression | Yes | Interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax. | |
| maxOccurrences | No | Cap on instances generated, applied even if endDate is not reached. | |
| preparationDays | No | Legacy single reminder, days before each occurrence's due date, 0-365 (0 means none); use reminderOffsetMinutes instead. Ignored when reminderOffsetMinutes is sent. | |
| assigneeRotation | No | A member id from list_house_members. | |
| reminderOffsetMinutes | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false and destructiveHint=false. The description adds useful behavioral context by stating that the tool generates task instances on a schedule and applies reminderOffsetMinutes to each. However, it does not disclose side effects like immediate instance creation, series editability, or unassigned instances from assigneeRotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core action is stated first, followed by the key behavioral detail about schedule and reminders. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate at a high level, and the rich schema plus output schema cover parameter and return details. However, for a 10-parameter tool with nuanced behaviors like assigneeRotation and legacy preparationDays, the description could add more context about series lifecycle or when to prefer this over create_task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions reminderOffsetMinutes specifically, but the schema already documents its meaning and constraints in detail. No additional parameter semantics are provided beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a recurring task') and adds the key behavior of generating task instances on a schedule. It is clearly distinct from create_task and create_recurring_calendar_event by resource type, though it does not explicitly name a sibling for differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as create_task for one-off tasks or create_recurring_calendar_event for recurring calendar events. The description implies its use for recurring tasks but provides no explicit when/when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_subscriptionAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fee | No | Recurring charge. | |
| name | Yes | Name, e.g. 'Netflix' or 'Gym membership'. | |
| notes | No | Free-text notes. | |
| status | Yes | Status at creation. | |
| remindMe | No | Whether to remind the household before each renewal. | |
| startDate | No | Renewal date, YYYY-MM-DD. Optional. For a recurring bill it is the first renewal; for a one-off it is the date it is due. | |
| paymentDate | No | Date the first payment leaves the account, YYYY-MM-DD, when it differs from the renewal date. Payments repeat on the renewal cadence from this date. Omit when payment happens on renewal. | |
| renewalCronExpression | No | Cron expression for the renewal cadence. No more often than daily. Omit for a one-off bill. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive mutation. The description adds useful domain constraints about recurring vs one-off bills and paymentDate, but it does not disclose broader behavioral effects such as record visibility, duplicate handling, or validation outcomes. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, and every sentence carries distinct information. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the fully documented 8-parameter schema and the presence of an output schema, the description covers the essential semantics well. The only notable gap is the lack of an explicit when-to-use vs alternatives statement, but the purpose and parameter rules are adequately scoped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description largely restates the cron frequency and paymentDate guidance already present in the schema, adding little meaning beyond what the structured property descriptions provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names a specific resource ('a bill such as a streaming service or membership') and a verb ('Track'), so an agent understands it creates a subscription-tracking record. It does not explicitly contrast with update_subscription, list_subscriptions, or delete_subscription, leaving sibling differentiation mostly to the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete usage rules: renewal schedules cannot be more frequent than daily, a bill without a renewal schedule is a one-off, and paymentDate should only be set when money leaves the account on a different day. It does not explicitly say when to prefer a sibling tool, but the parameter-selection guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Freeform notes. Not for assignment info. | |
| title | Yes | Task title, e.g. 'Take out the recycling'. | |
| dueDate | No | Due date, YYYY-MM-DD. | |
| isUrgent | No | Mark the task urgent so it is shown first and highlighted. | |
| preparationDate | No | Legacy single reminder date, YYYY-MM-DD; use reminderOffsetMinutes instead. Ignored when reminderOffsetMinutes is sent. Must be on or before dueDate, and needs dueDate. | |
| assignedToMemberId | No | Member id from list_house_members. | |
| reminderOffsetMinutes | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only rule out read-only and destructive semantics, so the description carries the behavioral load. It discloses the default creation state (unassigned, uncompleted), the minimum input needed, and how reminders are supplied via reminderOffsetMinutes—meaningful behavior beyond schema constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with the most decision-relevant facts front-loaded. Every clause earns its place: what it creates, what is required, the default state, reminder mechanism, and post-creation alternatives.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema coverage, an output schema, and annotations, the description supplies what structured data cannot: initial state and post-creation routing. Nothing essential for invoking the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline applies. The description usefully highlights title as the only required field and reminderOffsetMinutes as the reminder mechanism, but it adds no detail that the rich property descriptions do not already provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the operation precisely: 'Creates a new household task' and adds the core initial-state facts (unassigned, uncompleted). This makes the resource and action unambiguous and distinguishes it from follow-up mutation tools like assign_task and complete_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit lifecycle guidance: 'Only title is required' and 'Use assign_task, update_task, or complete_task to change it afterward' tells an agent when this tool is the right choice versus those later mutations. It does not explicitly contrast with create_recurring_task, but the guidance is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_vehicleAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | Vehicle Identification Number, 17 alphanumeric characters. | |
| make | No | Manufacturer, e.g. 'Toyota'. | |
| year | No | Model year, 1900-2100. | |
| model | No | Model, e.g. 'Corolla'. | |
| notes | No | Free-text notes. | |
| colour | No | Colour. | |
| motDueDate | No | Next MOT (roadworthiness test) due date, YYYY-MM-DD. | |
| taxDueDate | No | Next road tax due date, YYYY-MM-DD. | |
| registration | No | Registration as shown on the plate; format varies by country. | |
| serviceDueDate | No | Next service due date, YYYY-MM-DD. | |
| insuranceDocumentId | No | Insurance document id from create_document or list_documents. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the write intent is consistent. The description adds useful behavioral context by stating all fields are optional and listing the categories of information tracked. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and resource. The second sentence adds the key constraint that all fields are optional. No filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for an agent to understand the tool's purpose and optionality. With a fully described schema, output schema present, and annotations aligned, no critical information is missing. It could be slightly more complete by naming alternatives, but that is already covered in the usage dimension.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema with type, example, and description. The tool description only groups parameters conceptually (details, VIN, insurance, due dates) without adding new semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a vehicle record for the household'. It also enumerates what the record tracks, making the intent clear. While it doesn't explicitly contrast with sibling tools like update_vehicle or list_vehicles, the create verb is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this when you need to create a new vehicle record for the household. It notes that all fields are optional, which helps set expectations. However, it doesn't explicitly mention when not to use it or point to alternatives like update_vehicle or delete_vehicle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
defer_recommendationAInspect
Defer a House Review recommendation and raise a task due in seven days, for when the user wants to handle the gap later.
| Name | Required | Description | Default |
|---|---|---|---|
| recommendationId | Yes | Recommendation id from get_house_review. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only and not destructive; the description adds meaningful behavior on top: it defers the recommendation and creates a task with a seven-day due date. This aligns with the annotations and gives an agent useful operational expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with no filler. The core action is front-loaded, followed by the key timing detail and the user intent. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema and clear annotations, the description is nearly complete. It could be slightly stronger by pointing explicitly to skip_recommendation as the alternative when the user does not want to handle the gap later, but this is a minor gap given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter described as 'Recommendation id from get_house_review.' The description does not add much beyond the schema, but it does reinforce that the ID comes from a House Review context. Baseline 3 is appropriate because the schema carries the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Defer a House Review recommendation') and a concrete side effect ('raise a task due in seven days'). It also conveys the intended scope, distinguishing this from sibling tools like skip_recommendation without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for when the user wants to handle the gap later' provides clear usage context. It does not explicitly mention when to avoid this tool or name the alternative, such as skip_recommendation, but the purpose itself makes the primary use case evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_applianceADestructiveInspect
Soft-delete an appliance; it is hidden from list_appliances but not permanently erased.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the appliance to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds valuable context by specifying it is a soft-delete and that the appliance is hidden from list_appliances without being permanently erased. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action and its key consequence. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description adequately covers purpose, behavior, and expected side effects. It explains what happens (hidden from list, not erased) without needing to describe return values or complex edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers the only parameter 'id' with a clear description ('ID of the appliance to delete.') and example. Since schema_description_coverage is 100%, the description need not add parameter details, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('soft-delete') and resource ('appliance') and clearly distinguishes the operation from a permanent deletion by explaining that it is hidden from list_appliances but not permanently erased. This provides clear purpose and differentiates it from any other delete semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when a soft-delete is desired) but provides no explicit alternatives or exclusions. It mentions the effect on list_appliances, giving some context, but lacks direct guidance on when to choose this vs. update_appliance or other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_calendar_eventADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the calendar event to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The term 'soft-deletes' adds behavioral nuance beyond the destructiveHint=true annotation, indicating the deletion is not a hard/permanent removal. The description also discloses important behavioral constraints based on event provenance and ownership, which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each providing necessary value: the first defines the operation, the second gives an alternative for filtered events, and the third states access restrictions. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with annotations and an output schema present, the description fully covers what the tool does, its edge cases, and permission requirements. Nothing essential is missing for an agent to decide whether and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'id' parameter is already well documented as 'Id of the calendar event to delete.' The description adds 'by id' and 'single event' context, but does not need to elaborate further given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('soft-deletes') and resource ('a single calendar event by id'), immediately clarifying scope and distinguishing it from sibling delete_recurring_calendar_event. The description also names what cannot be deleted here, reinforcing the tool's precise purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when not to use this tool: events from calendar subscriptions cannot be deleted here, with the alternative 'unsubscribe from the source calendar instead.' It also states permission constraints for shared device calendar events, giving clear usage conditions and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_contactADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The id of the contact to delete, as returned by create_contact or list_contacts. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, and the description adds crucial behavioral detail: the deletion is soft, the record is retained, and the contact disappears from list_contacts. This goes beyond the annotation's generic destructive flag and clarifies the actual side effect, which is useful for the agent. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource, then explains the soft-delete behavior and retention. Every clause adds value, with no filler or repetition. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, good annotations, and an output schema, the description covers the essential behavioral context: it is a soft delete, the record remains, and the contact is hidden from list_contacts. This is sufficient for an agent to select and invoke the tool correctly without needing further details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the id parameter is already described as 'The id of the contact to delete, as returned by create_contact or list_contacts.' The description simply says 'by id' without adding further parameter-specific meaning. With full schema coverage, the baseline of 3 is appropriate; the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Soft-delete a contact by id'. It specifies the resource (contact) and the mechanism (soft-delete), and distinguishes from hard deletion by noting the record is 'retained rather than permanently erased'. It also mentions the observable effect on list_contacts, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need to remove a contact from list_contacts but preserve the underlying record. However, it does not explicitly name alternative tools (e.g., update_contact or permanent delete) or state when not to use it. The context is clear but lacks explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_documentADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The id of the document to delete, as returned by create_document or list_documents. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint), the description discloses that deletion is soft, records are retained, attachments are also soft-deleted, and none appear in listings. This is substantial behavioral context not inferable from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the verb and object, and communicates the core behavior, cascade, retention, and listing impact without any filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema exists, annotations provided), the description covers all essential aspects: what happens to the document, attachments, listing visibility, and data retention. No significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the id parameter, including its origin ('as returned by create_document or list_documents'). The description's 'by id' adds no new parameter-level semantics, but with 100% schema coverage, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Soft-delete a document by id and cascade soft-delete its attachments,' which explicitly names the action, resource, and scope. It distinguishes from other delete_* tools by specifying soft-delete behavior and the cascade to attachments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, but the resource-specific scope is clear. It lacks guidance on exclusions or alternative tools (e.g., hard delete or undo), so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_meal_planADestructiveInspect
Soft-delete a planned meal. The entry leaves list_meal_plans and frees its date and meal slot again.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Entry id from list_meal_plans. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds meaningful behavioral nuance beyond the destructiveHint=true annotation: the operation is a soft-delete, meaning the entry disappears from list_meal_plans and the date/meal slot becomes free. This clarifies exactly what the destructive effect is rather than relying on the annotation flag alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the action, the second states the practical consequence. Information is front-loaded and every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter soft-delete with an output schema present, the description covers what happens to the list and the slot. It is slightly terse on reversibility, but the annotations already signal the destructive nature, so nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single id parameter is already documented as 'Entry id from list_meal_plans.' The tool description adds no further parameter-level detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Soft-delete a planned meal' – a precise verb, resource, and mode (soft) in one phrase. It then names the concrete outcome (leaves list_meal_plans, frees the date/slot), distinguishing it from the create/update meal plan tools and other delete_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this is a soft delete that removes the entry from list_meal_plans and makes the slot available again. It doesn't explicitly compare against alternatives, but the tool name plus consequence leave little ambiguity about when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_petADestructiveInspect
Soft-delete a pet; it is hidden from list_pets but not permanently erased.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the pet to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, but the description goes further by explaining that the deletion is reversible (not permanently erased) and specifically hides the pet from list_pets. This adds valuable behavioral detail without contradicting the annotation—it clarifies the nature of the destructiveness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence. It conveys the essential behavior with no fluff, front-loading 'Soft-delete' and then the key effects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one clearly documented parameter, a well-described effect, and an existing output schema, the description is fully sufficient for an agent to understand when and how to invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single 'id' parameter with a description and example. The tool description doesn't need to add parameter semantics, as the schema coverage is 100%. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it soft-deletes a pet and specifies the behavioral consequence (hidden from list_pets but not permanently erased). This distinguishes it from a permanent deletion tool and clearly identifies the operation and target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context that this is a soft-delete operation, implying it should be used when the goal is to remove a pet from active listing without permanent data loss. It doesn't explicitly compare to alternatives, but the clarity of the soft-delete behavior serves as adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_recipeADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Recipe id from list_recipes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, but the description goes further by explaining the soft-delete behavior and the snapshot mechanism for linked meal plan entries. This adds substantial context beyond the annotations, clarifying the exact consequence of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. The primary action is front-loaded, and the second sentence explains an important consequence without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema and annotations already covering safety, the description provides all necessary context: what happens to the recipe, what happens to linked meal plan entries, and the guarantee against dangling links. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the only parameter 'id' documented as 'Recipe id from list_recipes.' The description adds no additional parameter details, but the schema is already sufficient, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Soft-delete a recipe.' This clearly differentiates from sibling tools like create_recipe, update_recipe, and list_recipes by specifying the deletion action and its soft-delete nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys when to use this tool: when a recipe should be removed but meal plan entries should remain intact as snapshots. It does not explicitly name alternatives or exclusions, but the intended usage is unambiguous given the tool name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_recurring_calendar_eventADestructiveInspect
Delete a recurring calendar event and all its future instances.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the recurring calendar event (template) to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior; the description adds the key nuance that all future instances are deleted, which is important for an agent to know before invoking. It does not describe past instances or permissions, but the additional scope context is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, direct sentence with no redundant words, front-loading the action and critical scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete tool with an output schema and annotations, the description fully covers the action and its most important side effect (future instances), making it sufficient for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides a clear description of the id parameter as the template's id, and the tool description reinforces the recurring-event context. With 100% schema coverage, the description adds no additional parameter-level detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Delete), the resource (recurring calendar event), and the scope (all future instances), distinguishing it from sibling tools like delete_calendar_event and delete_recurring_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for deleting the entire recurring series (template and future instances), but it does not explicitly name alternatives or state when not to use it, leaving usage guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_recurring_taskADestructiveInspect
Delete a recurring task and all its uncompleted future instances.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The recurring task template's ID, as returned by create_recurring_task. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior, and the description adds meaningful context by specifying that uncompleted future instances are also deleted. This clarifies the scope beyond a simple 'delete' and helps set expectations about the side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence that front-loads the action and includes the most important behavioral nuance. There is no redundant wording or extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter destructive operation, the description covers the essential behavior, the schema covers the parameter fully, annotations cover the destructive nature, and an output schema exists. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the single 'id' parameter, including its type, example, and origin ('as returned by create_recurring_task'). The tool description adds no additional parameter-level meaning, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete') with a clear resource ('recurring task') and precisely scopes the action to 'all its uncompleted future instances.' This makes it easy to distinguish from delete_task, delete_recurring_calendar_event, and other deletion tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly identifies when to use this tool: when deleting a recurring task and its future uncompleted instances. It does not explicitly name alternatives like delete_task for non-recurring tasks, but the recurring-task context is clear enough for an agent to select appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_subscriptionADestructiveInspect
Soft-delete a subscription so it leaves list_subscriptions; the record is retained. Use it when the user cancels a service.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the subscription to soft-delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate destructiveHint=true, but the description adds crucial nuance: the operation is a soft delete, the record is retained, and it disappears from list_subscriptions. This goes beyond annotations and helps the agent understand the actual side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core behavior is front-loaded, and the usage context is included in a compact second sentence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single documented parameter, an output schema, and annotations covering read-only/destructive behavior, the description fully covers the essential details: what the tool does, what happens to the record, and when to invoke it. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter 'id' is already described as 'ID of the subscription to soft-delete.' The tool description adds no additional parameter-level meaning beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('soft-delete'), a clear resource ('subscription'), and a distinct behavioral outcome ('leaves list_subscriptions; the record is retained'). This clearly differentiates it from a hard-delete tool and from update_subscription, so the agent knows exactly what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it: 'Use it when the user cancels a service.' It does not mention alternatives or exclusions, but the use case is clear enough for an agent to select it correctly. This is more than implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_taskADestructiveInspect
Soft-delete a task. It leaves list_tasks but the record is retained. Fails if it was already deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id from create_task or list_tasks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations declaring readOnlyHint=false and destructiveHint=true, the description adds crucial behavioral nuance: it is destructive in terms of visibility but not permanent, because 'the record is retained.' It also explicitly states a failure condition ('Fails if it was already deleted'), which the annotations do not convey. This adds value beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying essential information: the operation, the side effect, and the failure mode. No filler or repetition. The description is front-loaded with the core behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete operation with a rich output schema and clear annotations, this description is nearly complete. It covers the operation, the soft-delete nuance, and a failure condition. It doesn't mention whether the delete is reversible or how to restore, but that is beyond what is needed to invoke the tool correctly. The output schema presumably covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents 'id' well. The description's phrase 'Soft-delete a task' confirms the parameter is the task identifier, and the failure condition clarifies the id must reference an existing, non-deleted task. This adds meaningful context beyond the schema's terse 'Task id from create_task or list_tasks.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb + resource ('Soft-delete a task') and immediately distinguishes it from a hard delete by noting the record is retained. This differentiates it well from sibling tools like delete_recurring_task or delete_document, which operate on different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you want a task to disappear from list_tasks but still be recoverable. It doesn't explicitly name alternatives or exclusions, but 'Soft-delete' and the contrast with leaving list_tasks provide a clear usage context. A sibling tool like complete_task exists, but the distinction is inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_vehicleADestructiveInspect
Soft-delete a vehicle so it leaves list_vehicles; the record is retained. Use it when the household sells a car.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the vehicle to soft-delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a crucial behavioral nuance beyond the annotations: this is a soft-delete, not a permanent destruction. 'The record is retained' clarifies that despite destructiveHint=true, data is not erased, only removed from list_vehicles. This gives the agent a precise understanding of the operation's side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The core behavioral information is front-loaded, and the usage guideline follows immediately. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool, the description covers the essential behavior (soft-delete, visibility effect, retention) and usage context. An output schema exists, so return values need not be explained. Annotations cover safety profile. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the 'id' property already described as 'ID of the vehicle to soft-delete.' The tool description adds no additional meaning about parameters, so the baseline of 3 applies. It is not deficient, but it does not go beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Soft-delete a vehicle so it leaves list_vehicles; the record is retained.' This identifies the specific verb (soft-delete), resource (vehicle), and distinguishes it from hard-delete or update operations. It also differentiates from list_vehicles by explicitly noting the effect on listing visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage scenario: 'Use it when the household sells a car.' This gives the agent a contextual trigger for invoking the tool. It does not explicitly state when not to use it or name alternatives, but the condition is specific enough to guide tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forget_memoryAInspect
Forget (soft-delete) a memory by id. Use when a memory is superseded or no longer relevant.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id from a prior recall_memory result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses 'soft-delete,' which adds clarity beyond the annotations (readOnlyHint=false, destructiveHint=false). However, the annotation already indicates it's not destructive, so the added value is marginal. No significant behavioral traits like recoverability or hard-delete alternatives are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action and purpose without any filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with a rich schema and explicit annotations, the description is sufficiently complete. It covers purpose and usage, while the schema handles parameter details and the output schema (if any) would cover return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully covers the parameter with a description ('Id from a prior recall_memory result'), and the tool description only repeats 'by id' without adding new meaning. With 100% schema coverage, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Forget (soft-delete)') and the resource ('a memory') with a specific method ('by id'). This distinguishes it from sibling tools like 'update_memory' or 'recall_memory'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear usage condition: 'Use when a memory is superseded or no longer relevant.' However, it does not explicitly mention when not to use it or alternatives, so it stops short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_houseARead-onlyInspect
Return the current household in full: name, address, invite code, notes, join settings, members, subscription status and resolved feature flags.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds value by disclosing the full set of returned household data, including resolved feature flags, making the read behavior explicit. It does not discuss errors or authentication, but these are less critical for a simple read with no parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight, front-loaded sentence that states the action and resource before enumerating the returned fields. Every element earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only getter with annotations covering safety and an output schema existing, the description fully covers the relevant context. It tells the agent what it will get and the scope of the resource, so nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly adds no parameter guidance because none is needed. Schema coverage is trivially 100% with an empty properties object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and clearly identifies the resource ('the current household'), then enumerates exactly what is included. This distinguishes it from list_houses (all households) and get_house_review (a review, not full household details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: whenever the full current household object is needed. However, it does not explicitly state when not to use it or mention alternatives like list_houses or get_house_review, leaving some routing inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_house_reviewARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, the description reveals important live behavior: results are re-validated in real time, and items already filled in, actioned, or covered by an open task are automatically dropped. It also discloses the 'Pro-gated' access restriction, adding meaningful context an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences deliver purpose, examples, dynamic filtering behavior, and access control without any filler. The most important information is front-loaded, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no parameters, no nested objects, read-only) and an output schema exists, so the description does not need to detail return shapes. It covers what the tool returns, what is excluded, and the access requirement, making it complete for an agent to decide whether to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so there are no parameter semantics to explain. Per the baseline for zero-parameter tools, a score of 4 is appropriate; the description does not need to document inputs that do not exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and identifies a precise resource: this week's pending House Review recommendations, with concrete examples like missing appliance warranty or vehicle MOT date. It clearly differentiates this from generic getters (get_house, get_profile) and action tools (defer_recommendation, skip_recommendation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: it returns pending House Review recommendations for the current week, which implies it should be used when checking what data gaps remain. It does not explicitly name alternatives or state when not to use it, but the scope ('this week's pending...') and the read-only nature make the primary usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profileARead-onlyInspect
Return the signed-in user's profile: name, email, AI-consent status and timezone. Also bumps their last-seen activity as a side effect.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a write side effect ('Also bumps their last-seen activity'), but the annotations mark readOnlyHint=true. The description therefore directly contradicts the annotations, which is a serious inconsistency that could mislead an agent into treating the call as side-effect-free. Per the rubric, this is scored 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences: the first states the primary purpose and return fields, the second flags the side effect. There is no filler or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with an output schema, the description is nearly complete: it names the returned fields and discloses the side effect. It loses a point only because the side-effect disclosure conflicts with the readOnlyHint annotation, so the overall calling context is inconsistent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema covers 100% of them, so there is nothing for the description to add. The implicit notion of the 'signed-in user' is the only contextual information needed, and it is present in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Return the signed-in user's profile', and enumerates exactly what is included (name, email, AI-consent status, timezone). This distinguishes it from sibling get/list tools and makes the operation unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates the tool is for retrieving the current signed-in user's profile, so an agent can infer when to call it. It does not explicitly discuss exclusions or alternatives, but no sibling tool handles this same resource, so the lack of an explicit when-not-to-use is not a meaningful gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_weather_forecastARead-onlyInspect
Return a one-to-five day forecast for the household's location, for planning outdoor tasks or events.
| Name | Required | Description | Default |
|---|---|---|---|
| forecastDays | No | Number of forecast days to return, from 1 to 5. Defaults to 3 if omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only and non-destructive, so the safety profile is covered. The description adds that the forecast is tied to the household's location and limits the range to one-to-five days, but does not go into additional behavioral details such as return structure or error cases. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the verb and resource, then adds location and intended use. Every phrase earns its place; there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one optional parameter, an output schema present, and read-only annotations, the description provides all necessary operational context: purpose, location scope, and forecast duration. An agent has enough information to invoke the tool correctly without further disambiguation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; the schema fully documents forecastDays, including range and default. The description's 'one-to-five day' phrasing mirrors the schema but adds no new parameter meaning beyond what is already structured.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return'), a clear resource ('forecast'), and a defined scope ('one-to-five day forecast for the household's location'). This unambiguously differentiates it from the sibling tools, none of which relate to weather or forecasting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('for planning outdoor tasks or events'), which signals when an agent should consider this tool. It does not explicitly mention exclusions or alternatives, but there are no competing weather-related sibling tools, so the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_appliancesARead-onlyInspect
List the household's appliances with brand, model, serial number, purchase date and warranty expiry. Answers whether something is still under warranty.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnly and non-destructive. Description adds the specific data fields returned and promises warranty-status answers. The non-deleted filter appears in the schema description rather than the tool description, so no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences; first front-loads verb/resource with an attribute list, second adds the practical use case. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with an output schema and clear read-only annotations, the description covers what data is returned and a common question it answers. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, and schema description coverage is 100%. Baseline 4 applies; no parameter elaboration is needed or provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States explicit verb 'List', resource 'household's appliances', enumerates specific fields (brand, model, serial number, purchase date, warranty expiry), and gives a use case (warranty check). Distinct from create/delete/update_appliance siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear that this is the read/query tool for appliances, with the warranty question as an intended use case. Does not explicitly state exclusions or alternatives, but no other sibling lists appliances, so context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_calendar_eventsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| startDateTo | No | Range end, ISO 8601 UTC. Matches events starting at or before this. | |
| startDateFrom | No | Range start, ISO 8601 UTC. Matches events ending, or starting if undated, at or after this. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though readOnlyHint=true and destructiveHint=false already establish the safety profile, the description goes well beyond that by disclosing the nuanced all-day event endDateTime semantics per sourceEntityType and the timezone-dependent reading of all-day values. This is precisely the kind of behavioral detail an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose, then moves into necessary edge cases. Every sentence conveys a distinct and useful fact; nothing feels padded or redundant. The complexity justifies its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema already covers return structure, the description fills the remaining gaps: range semantics, all-day boundary handling, source-specific behavior, and timezone interpretation. An agent has enough to call the tool correctly even for edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the schema already documents their ISO 8601 UTC format and matching behavior. The description adds the useful 'omit both for everything' rule and references the parameter names, but does not significantly deepen parameter-level semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair ('List one-off calendar events') and the fields returned (title, times, location, notes). It distinguishes itself from create/update/delete calendar tools and explicitly scopes to one-off events rather than recurring ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear operational guidance on using startDateFrom and startDateTo or omitting both, but does not explicitly state when to choose this tool over another sibling or when not to use it. The usage context is implied rather than stated as a decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contactsARead-onlyInspect
List all contacts in the household. Takes no parameters; soft-deleted contacts are excluded.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds valuable behavioral context that soft-deleted contacts are excluded, which goes beyond the annotations. This is useful behavioral transparency for a read-only list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. Every piece of information is meaningful and front-loaded. 'List all contacts in the household' immediately conveys the core function, and the note about soft-deleted contacts is concise and relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters, an output schema, and strong annotations, the description is fully complete. It states the resource, scope, and filtering behavior. The presence of an output schema means return values need not be described. No additional context is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema already fully describes it (100% coverage). The description redundantly states 'Takes no parameters,' but since there are no parameters to explain, the baseline of 4 applies. The description adds no further parameter semantics needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List all contacts in the household.' The verb 'list' and the resource 'contacts' are specific, and the scope ('in the household') distinguishes it from other list tools like list_house_members or list_appliances. The addition about soft-deleted contacts further clarifies its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies clear usage context: use this tool to retrieve all non-soft-deleted contacts for the household. It does not explicitly name alternatives or exclusions, but given the straightforward nature of the tool and the sibling list, the context is sufficiently clear. A score of 4 reflects clear context without explicit alternative mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsARead-onlyInspect
List documents in the household, optionally filtered to a single document type. Soft-deleted documents are excluded.
| Name | Required | Description | Default |
|---|---|---|---|
| documentType | No | Return only this type. Omit for all. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context beyond annotations by stating that soft-deleted documents are excluded, which is valuable for an agent deciding whether to call this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two succinct sentences with no filler. The main action and scope are front-loaded, followed by the optional filter and a behavioral note. Every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list operation with one optional parameter and an output schema present, the description covers all necessary context: scope, filtering behavior, and soft-delete exclusion. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter documentType is fully documented in the schema. The description's mention of filtering by document type adds no new semantic detail beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List documents'), a resource ('documents in the household'), and an optional filter ('filtered to a single document type'). It is easy to distinguish from sibling list_* tools because of the 'household' scope and document-specific resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: to list documents in the household, and the optional filter parameter is explained. It does not explicitly name alternatives, but no other list-documents tool exists among siblings, so the usage context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_global_recipesARead-onlyInspect
List the curated Discover recipe catalogue shared by all households. Pass an id from here to create_meal_plan with recipeSource='global'.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds behavioral context beyond that: the catalogue is curated, shared across households, and only contains global recipes, plus it documents the expected recipeSource value for downstream use. No annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the core purpose front-loaded and the downstream usage in the second sentence. There is no filler, and both sentences earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, an output schema available, and read-only annotations, the description supplies everything else an agent needs: what the list contains, its scope, and how to use its ids correctly. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to explain beyond confirming the call takes no input. The schema already covers this fully with 100% coverage, matching the baseline for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('List') and a distinct resource: the curated Discover recipe catalogue shared by all households. The 'global' qualifier and shared-all-households scope differentiate it from sibling list_recipes without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit downstream usage: pass a returned id to create_meal_plan with recipeSource='global'. It does not explicitly name list_recipes as the alternative for non-global recipes, so it misses the full when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_house_membersARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds which fields are returned and the relationship to task assignment, but does not disclose additional behaviors such as whether all households or only the current household is included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first states the tool's purpose and output fields, the second gives actionable downstream usage. Every word earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only list tool with an output schema and safety annotations, this description is complete. It tells the agent what the tool returns and how to use that result, leaving no critical gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema description coverage is 100%; the baseline of 4 applies. The description additionally explains how the returned id should be used, which adds meaningful context beyond the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List'), specifies the resource ('the household's members'), and enumerates the returned fields (id, userId, first and last name, nickname, role). This clearly distinguishes the tool from siblings like list_contacts or get_house.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit downstream guidance: use a member's id as assignedToMemberId in create_task and assign_task. It does not explicitly contrast with alternatives or state when not to use it, but the intended use case is clear and practical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_housesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive. The description adds useful context about the active house being determined server-side from the authenticated session, which clarifies how the tool behaves beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the action and resource. The parenthetical example adds practical value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool, the presence of an output schema, and annotation coverage, the description is complete. It explains the core behavior and the server-side session context without unnecessary details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to explain parameter meanings. The baseline for zero-param tools is 4, and the description adequately covers the tool's purpose without param details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists households the current user belongs to, with a specific verb and resource. It differentiates from siblings like get_house and list_house_members by focusing on the user's household memberships.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear usage context: to tell the user which home the assistant is acting on. It explains that the active house is server-side, but does not explicitly mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_meal_plansARead-onlyInspect
List planned meals with their date, meal slot, linked recipe or custom name, servings and notes. Narrow with from and to.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Inclusive date range end (format: YYYY-MM-DD). Omit for an open-ended end. | |
| from | No | Inclusive date range start (format: YYYY-MM-DD). Omit for an open-ended start. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context about the data returned and optional date filtering, but it does not disclose potential behaviors like ordering, pagination, or how omissions of from/to are handled beyond what the schema states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. It front-loads the primary purpose and follows with the optional narrowing capability, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with an output schema, complete parameter documentation, and safety annotations, the description is fully adequate. It covers what is listed, the key filter options, and leaves nothing essential missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters are fully documented with format, inclusivity, and omission behavior. The description's 'Narrow with from and to' adds little beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List planned meals') and identifies the resource and returned fields (date, meal slot, linked recipe or custom name, servings, notes). It is unambiguous even though it does not explicitly differentiate from sibling list tools by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool's use case by explaining what it lists and how to narrow results with from and to. It does not explicitly mention alternatives or when not to use this tool, but the purpose is clear enough for an agent to select it appropriately among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_petsARead-onlyInspect
List the household's pets with microchip number, date of birth, notes and their linked vet contact and insurance document.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the household scope and linked entities, but does not go deeper into filtering, pagination, authorization, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One efficient sentence front-loads the action and resource, then lists the key returned fields. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with an output schema and clear annotations, the definition is complete. The household scope is stated, the read-only/destructive hints are present, and return value details are adequately covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and schema description coverage is 100%, so the description has no parameter burden. The baseline of 4 for zero-parameter tools applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('the household's pets'), and enumerates the returned data: microchip number, date of birth, notes, linked vet contact, and insurance document. This distinguishes it from sibling pet tools like create_pet, update_pet, and delete_pet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended usage is implied by the verb and resource, but the description does not explicitly say when to use this tool versus alternatives. There is no mention of exclusions or comparisons, such as using list_house_members for people rather than pets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recipesARead-onlyInspect
List the household's own saved recipes with ingredients, instructions, source URL and servings. For the shared catalogue use list_global_recipes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'household's own' scope and lists returned fields, but does not disclose additional behavioral details such as pagination or permissions. This is sufficient but not rich, matching the baseline for annotation-covered read tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The core action and scope come first, and the sibling distinction is delivered in a short follow-up. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple parameterless read tool with annotations covering safety and an output schema covering return values. The description completes the picture by clarifying the data source and differentiating it from the global catalogue. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema description coverage is 100%, so there are no parameter semantics the description must explain. It correctly receives the baseline score for parameterless tools and avoids adding unnecessary parameter noise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('the household's own saved recipes') and enumerates the content returned. It also distinguishes itself from list_global_recipes by explicitly naming the sibling, so an agent can disambiguate immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence explicitly directs agents to use list_global_recipes when they need the shared catalogue instead. This provides clear when-to-use and when-not-to-use guidance with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shopping_list_itemsARead-onlyInspect
List outstanding (unbought) shopping list items with their name, quantity, category and shoppingListId. Pass shoppingListId to limit it to one named list.
| Name | Required | Description | Default |
|---|---|---|---|
| shoppingListId | No | One named list, an id from list_shopping_lists. Omit for every list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe-read nature is covered. The description adds behavioral context beyond annotations by specifying that only outstanding/unbought items are returned, which fields are included, and the optional list-scoping behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence front-loads the tool's core purpose and output, and the second provides the optional parameter behavior. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a single optional parameter fully described in the schema, an output schema, and annotations covering read-only/destructive hints. The description adds the key unbought-items semantics and the optional filter, making it complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the single optional shoppingListId parameter. The description's 'Pass shoppingListId to limit it to one named list' largely restates the schema's 'Omit for every list' rather than adding new meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List outstanding (unbought) shopping list items'. It clearly distinguishes from sibling tools like list_shopping_lists (lists vs items) and add/buy/remove/update shopping list item operations. The mention of returned fields (name, quantity, category, shoppingListId) adds useful precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage guidance: pass shoppingListId to limit to one named list, and the schema explicitly says omit it for every list. This is sufficient for the tool's simple optional-filter behavior, though it does not explicitly name alternative tools or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shopping_listsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a read-only, non-destructive operation. The description adds useful context by specifying that the count is 'live items,' implying that inactive or deleted items may exist and are excluded from the count. This goes beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence front-loads the action and output fields, and the second gives immediate guidance on how to use the result. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has zero parameters, read-only annotations, and an output schema, the description is fully sufficient for an agent to know when to call it and what it will receive. It also ties the result to downstream item tools, closing the loop on practical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, there is little for the description to add. The absence of parameter documentation is appropriate, and the description correctly implies a parameterless call that lists all named lists without filters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as listing named shopping lists and enumerates the exact fields returned (id, name, default flag, live item count). It also differentiates itself from sibling tools like list_shopping_list_items by framing this as resolving shoppingListId for the item tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use this to resolve a shoppingListId for the shopping list item tools' explicitly tells the agent when and why to invoke this tool. It lacks a formal when-not-to-use statement, but the purpose is unambiguous and strongly positions it against its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subscriptionsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Only return subscriptions with this status. Omit to return subscriptions of all statuses. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds useful domain semantics: one-off vs recurring subscriptions, startDate as the renewal/due date, and paymentDate as the first money-leaves date that repeats on cadence. This is meaningful context beyond the structured fields, though it doesn't cover pagination or ordering – minor for a simple read-only list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose, one-off clarification, and date semantics. Each sentence earns its place, and the main verb+resource is front-loaded. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list with one optional parameter, full schema coverage, and an output schema present, the description covers purpose, filtering, and output semantics. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the status parameter is fully documented in the schema, including the omission behavior. The description only repeats 'Pass status to filter to one,' adding no new parameter-level meaning beyond the schema. The baseline of 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List tracked subscriptions' – a specific verb, resource, and the returned fields (fee, renewal schedule, payment date, status). This clearly distinguishes it from subscription mutation tools like create_subscription and update_subscription. There is no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent how to filter with 'Pass status to filter to one,' and the schema reinforces that omitting it returns all statuses. It doesn't explicitly name alternatives, but the sibling list_* tools make resource distinctions obvious. No misleading guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1-100, default 50. | |
| cursor | No | nextCursor from a previous response. Omit for the first page. | |
| dueDateOnOrAfter | No | Earliest due date, YYYY-MM-DD. Undated tasks never match. | |
| includeCompleted | No | Include completed tasks. Defaults to false. | |
| dueDateOnOrBefore | No | Latest due date, YYYY-MM-DD. Undated tasks never match. | |
| assignedToMemberId | No | Member id to filter by. Omit for all assignees. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/destructiveHint annotations, the description discloses key behavioral details: completed tasks are excluded by default, sorting is urgent-first then due-date ascending, and undated tasks sort first. This is exactly the kind of non-obvious behavior an agent needs to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and filters, then the important default and ordering behavior. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with six fully documented parameters and an output schema, the description covers defaults, sorting, filtering, and pagination. The read-only safety profile is already declared by annotations, so nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% parameter coverage with clear descriptions for every parameter. The description adds a useful summary of the filter categories but does not significantly extend the schema's parameter-level semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List tasks') and immediately details the filtering dimensions (assignee, due-date range, completion) and pagination. It clearly distinguishes this from sibling task mutation tools like create_task, update_task, and complete_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this is the tool for retrieving/filtering tasks, and the filtering options give context on when it applies. However, it does not explicitly state when to prefer an alternative or mention any exclusions, though no direct task-listing sibling exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vehiclesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds value by disclosing the specific content returned (registration, VIN, due dates), which helps the agent set expectations. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with zero waste. The main action and resource are front-loaded, followed by the field list, and the second sentence provides a concrete real-world use case. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, an output schema available, annotations covering safety, and sibling tools clearly differentiated, the description is fully adequate. It states the object, the fields, and a representative question it answers, leaving no critical gaps for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and 100% schema description coverage, so the baseline is 4. The description correctly implies no inputs are needed and focuses entirely on output content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'List the household's vehicles' and enumerates the exact data fields returned (make, model, year, registration, VIN, MOT/tax/service due dates). This distinguishes it from sibling tools like create_vehicle, update_vehicle, and delete_vehicle, and from other list_* tools for different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: to retrieve vehicle information and specifically to answer questions like when the MOT is due. It does not explicitly name alternatives or exclusions, but the read-only list purpose is evident and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recall_memoryAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by author. Omit for both. | |
| limit | No | Max number of memories to return in this page. 1-100, default 20. | |
| cursor | No | nextCursor from a previous response. Omit for the first page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=false and destructiveHint=false, the annotations provide no positive safety guarantee, so the description must carry the behavioral burden. It adds useful scoping/filter behavior, but does not clarify whether recall has side effects on memory state; there is no direct contradiction, only ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and scope, and the second sentence packs both timing and filter guidance without redundancy. Every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a low-complexity retrieval tool with a rich schema and output schema, covering when and how to scope the call. It could be slightly more complete by naming the sibling write tools as alternatives, but nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes all three parameters with 100% coverage, so the baseline applies. The description adds a small decision rule for the type parameter, but does not add meaning beyond what the schema already provides for limit and cursor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ("Recall"), a specific resource (long-term memories), and a scope (the current household), which distinguishes it from sibling memory tools like store_memory, update_memory, and forget_memory. The behavior is immediately identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit timing cue (start of advisory or open-ended turns) and a filtering condition (when only one author's notes are relevant). It does not spell out exclusions or alternatives, but the context is clear enough for an agent to know when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_shopping_list_itemADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Item id from add_shopping_list_item or list_shopping_list_items. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior, and the description adds valuable context by explaining this is a soft delete and that the item will no longer appear in list_shopping_list_items. This goes beyond the annotation by clarifying the observable effect while not contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff. The core action is front-loaded, the key distinction from buying is stated, and the consequence is clarified in the second sentence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter tool, and the description covers the action, the distinction from similar operations, and the resulting behavior. The output schema exists, so return values are already structured. Nothing essential is missing for an agent to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single id parameter at 100% coverage, including its source from add_shopping_list_item or list_shopping_list_items. The main description adds little parameter-specific meaning, but with full schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Remove'), the resource ('an item from the household's shopping list'), and explicitly distinguishes itself from marking an item as bought. It clearly differentiates from sibling tools like buy_shopping_list_item and list_shopping_list_items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies when to use it: when an item should be removed rather than marked as bought. It implies the alternative is buy_shopping_list_item and that this tool produces a soft delete. It does not explicitly enumerate all alternatives, but the contrast is clear and sufficient for this simple tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skip_recommendationAInspect
Permanently suppress a House Review recommendation so get_house_review stops returning it. Use it when the suggestion does not apply.
| Name | Required | Description | Default |
|---|---|---|---|
| recommendationId | Yes | Recommendation id from get_house_review. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the permanent nature of the suppression and its cross-tool effect on get_house_review, which goes beyond the annotations. The annotations (not read-only, not destructive) are not contradicted by the description, as 'suppress' is not described as data destruction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the action, the effect, and the usage condition with zero wasted words. The key behavioral distinction is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple single-parameter tool with an output schema, annotations, and a clear usage condition. The description covers the operation, its effect, and when to use it, leaving no significant gap for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the parameter description already explains where the recommendationId comes from ('from get_house_review'). The tool description adds no new parameter semantics beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('suppress'), a precise resource ('House Review recommendation'), and the observable outcome ('get_house_review stops returning it'). It clearly differentiates from the sibling defer_recommendation by emphasizing permanence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: 'Use it when the suggestion does not apply.' It does not name alternatives or exclusions, but the context is unambiguous enough for an agent to select it over related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
store_memoryAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Short kebab-case slug, e.g. 'preferred-cleaning-day'. Max 80 chars. | |
| type | Yes | 'user' for what the user stated, 'system' for insights you derived. | |
| content | Yes | Free-text body. Max 8000 chars. | |
| description | Yes | Single-line summary used to decide relevance later. Max 200 chars. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/destructive safety profile (readOnlyHint=false, destructiveHint=false). The description adds useful context that memories are long-term and that use should be selective, but it does not disclose what happens if a memory with the same name already exists, which is a relevant behavioral gap for a store operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no filler. The core action is front-loaded, followed by targeted usage guidance and a duplicate-avoidance instruction. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema and output schema cover parameter structure and return values, so the description can focus on usage. It provides the core context: household scope, selective use, and recall-first behavior. The only notable omission is explicit guidance to route existing memories to update_memory, which is a minor gap given the sibling toolset.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: all four parameters (name, type, content, description) have detailed descriptions, examples, and constraints. The description adds no parameter-specific guidance beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a clear verb ('Store') and resource ('long-term memory about the household'), and enumerates the kinds of content (durable preferences, routines, constraints, insights) that qualify. It doesn't explicitly contrast with the sibling update_memory or recall_memory tools, but the core purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use the tool ('Use sparingly', and only for durable preferences/routines/constraints/insights) and tells the agent to 'Recall first to avoid duplicates.' It stops short of naming update_memory as the alternative for modifying an existing memory, so alternative routing is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uncomplete_taskAInspect
Reopens a completed task, clearing its completion timestamp and completed-by user. Fails with a conflict if the task is not currently completed.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id from create_task or list_tasks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the specific fields that are modified and the conflict failure mode when the precondition is not met. This gives an agent concrete expectations about side effects and error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the action, the specific state changes, and the failure condition are all included. The most important behavioral detail is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with an output schema and annotations indicating it is neither read-only nor destructive, the description fully covers what the tool does, what it changes, and when it fails. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full coverage of the id parameter with a clear source reference. The description adds the meaningful precondition that the id must refer to a currently completed task, which is valuable semantic context for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Reopens') and a clear resource ('a completed task'), and states exactly what happens (clearing completion timestamp and completed-by user). This distinguishes it from the sibling complete_task without any ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is only for tasks that are currently completed, and explicitly notes that it fails with a conflict otherwise. It does not name sibling alternatives directly, but the context makes the appropriate use case obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_applianceAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Appliance id from list_appliances. | |
| name | No | New name. | |
| brand | No | New manufacturer or brand. | |
| model | No | New model. | |
| notes | No | Freeform notes. | |
| purchaseDate | No | Purchase date, YYYY-MM-DD. Must not follow warrantyExpiryDate. Empty string clears it. | |
| serialNumber | No | New serial number. | |
| warrantyDocumentId | No | Warranty document id from create_document. | |
| warrantyExpiryDate | No | Warranty expiry, YYYY-MM-DD. Must not precede purchaseDate. Empty string clears it. | |
| insuranceDocumentId | No | Insurance document id from create_document. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral detail beyond the annotations: omitted fields retain their current value, and the update is rejected if the resulting warranty expiry date precedes the purchase date. The annotations only indicate the tool is read-write and non-destructive, so this extra validation and merge behavior is valuable context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The core action and update behavior are front-loaded, and the validation caveat follows without redundancy. Every word contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with ten parameters, a full output schema, and detailed property descriptions in the input schema, the description covers the essential behavioral context: partial updates and the warranty/date validation rule. Nothing critical for invoking the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds important parameter-level semantics not present in the schema: omitted fields are not reset and continue to hold their current value. It also clarifies the interaction between warrantyExpiryDate and purchaseDate, which directly impacts valid parameter combinations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Update an appliance's details.' It identifies the verb (update) and resource (appliance details) without ambiguity. It does not explicitly distinguish from sibling tools like create_appliance or delete_appliance, though the verb itself largely accomplishes that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the word 'Update' and the partial-update semantics ('omitted fields keep their current value'). It does not explicitly state when to prefer this over create or delete counterparts, nor does it mention exclusions. The partial-update guidance is useful but not full when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_calendar_eventAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Event id from create_calendar_event or list_calendar_events. | |
| notes | No | New notes. | |
| title | No | New event title. | |
| endDate | No | All-day only: new LAST day, inclusive, YYYY-MM-DD. Alone it keeps the current first day. Dates are stored in the event's own end rule (see list_calendar_events). | |
| isAllDay | No | True for all-day, false for timed. | |
| location | No | Replaces the location outright. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes. | |
| timezone | No | IANA zone for the wall-clock times, e.g. 'Europe/London'. Null means UTC. | |
| startDate | No | All-day only (preferred for all-day): new first day, YYYY-MM-DD. Without endDate the event becomes a single day. | |
| description | No | New description. | |
| endDateTime | No | New end of a timed event, ISO 8601 UTC. Must not precede startDateTime. For all-day events send endDate instead. An all-day endDateTime is stored as given and keeps the event's own end rule (see list_calendar_events): with no source a midnight end names the LAST day, on a device-calendar event the day after it. | |
| startDateTime | No | New start of a timed event, ISO 8601 UTC. For an all-day event send startDate instead. | |
| reminderOffsetMinutes | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false. The description adds meaningful behavioral context: partial update preserves unspecified fields, and imported (subscription-sourced) events reject edits. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry the essential purpose and restriction, front-loaded with the main action. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters, a rich schema, and an output schema, the description provides the necessary high-level orientation: what it updates, how partial updates behave, and the key constraint. It is not exhaustive, but the schema and annotations carry the remaining detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented. The description adds the overarching rule that only supplied fields change, which is not explicit in any one parameter, but it does not detail individual parameter behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Updates fields on an existing single calendar event' and scopes it to single events, distinguishing it from update_recurring_calendar_event. The added restriction on imported events further clarifies its domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says to use it for existing single events and warns that imported events cannot be edited. It also explains partial-update semantics ('only the fields supplied are changed'). However, it does not explicitly name alternatives like update_recurring_calendar_event, leaving that contrast implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contactAInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Contact id from create_contact or list_contacts. | |
| No | Email address. | ||
| notes | No | Free-text notes. | |
| phone | No | Phone number, any format. | |
| address | No | Postal address. Replaces the stored one outright. | |
| lastName | No | Last (family) name. | |
| firstName | No | First name. | |
| dateOfBirth | No | Date of birth, YYYY-MM-DD. Empty string clears it. | |
| displayName | No | Name to show instead of first/last, e.g. a nickname or company. | |
| prepareBirthdayPresent | No | Whether to flag a birthday present for them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only convey that this is a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds essential behavior beyond that: supplied fields are changed, omitted fields retain their values, and dateOfBirth has a clear-if-empty exception. This is exactly the kind of nuance an agent needs to avoid destructive mistakes. It doesn't cover error cases, but the main behavioral traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero wasted words. The core action is front-loaded, the partial-update rule follows immediately, and the single exception is in a parenthetical aside. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is well-covered overall: an output schema exists so return values need no explanation, annotations cover the safety profile, and the description covers the critical merge semantics. Minor gaps remain — no mention of what happens when the id doesn't exist or whether updates are immediately persisted — but these are modest given the surrounding structured context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description nevertheless adds meaning beyond the schema: the universal rule that omitted fields keep their current value is a parameter-level semantic applying to all optional fields. The dateOfBirth-empty-string nuance is duplicated in the schema, but the global patch behavior is a genuine addition that shapes how every parameter should be interpreted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update'), a clear resource ('a contact'), and the targeting mechanism ('by id'). This cleanly distinguishes it from the sibling tools create_contact, delete_contact, and list_contacts — an agent can tell them apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operational context: it's a partial/patch-style update rather than a full replace, which directly tells the agent how to construct the call (send only the fields to change). It doesn't explicitly name alternatives or state 'use create_contact for new contacts,' but the update-by-id phrasing plus the sibling set makes the main usage boundary clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_documentAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Document id from create_document or list_documents. | |
| fee | No | Cost. Replaces the stored fee outright. | |
| notes | No | Free-text notes. | |
| title | No | Custom title. | |
| documentType | No | Kind of document. | |
| documentNumber | No | Reference or serial number, e.g. a passport or policy number. | |
| issuingAuthority | No | Who issued it. | |
| renewalCronExpression | No | Accepted but not yet stored or acted on; has no effect. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses important update semantics: only provided fields change, and renewalCronExpression is accepted but not stored or acted on. This 'no-op field' warning is exactly the kind of behavioral detail that prevents incorrect assumptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first states the action, fields, and return value; the second clarifies partial-update behavior and the one notable exception. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter update tool with nested fee object and output schema, the description covers the essential operational context: what can be updated, that it's a partial update, what gets returned, and the no-op parameter. The schema and output schema cover the remaining details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter. The description adds the key semantic that updates are partial ('Only the fields you send change') and explicitly flags renewalCronExpression as inert, which complements the schema's field-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb ('Update') and resource ('a stored document'), then enumerates the exact mutable fields: type, title, reference number, issuing authority, fee, or notes. It also states the return value ('returning the updated document'), clearly distinguishing it from create, delete, and list siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Update a stored document' implies an existing document id, which separates it from create_document. 'Only the fields you send change' gives clear partial-update context, but it does not explicitly state when to prefer this over alternatives or name exclusions beyond the renewalCronExpression caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_meal_planAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Entry id from list_meal_plans. | |
| date | No | Date, YYYY-MM-DD. Must be today or within the next 28 days, so work it out from today's date. | |
| name | No | Custom meal name when no recipe is linked. | |
| notes | No | Free-text notes. | |
| mealType | No | Meal slot of the day. | |
| recipeId | No | Recipe id from list_recipes or list_global_recipes. | |
| servings | No | Servings, 1-100. | |
| recipeSource | No | Use 'global' when recipeId came from list_global_recipes. Defaults to 'household'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by explaining the partial-update behavior ('Only the fields you send change'), the interplay between recipeId and name, and the precedence rule when both are sent. This is valuable behavioral context that annotations do not provide and is not contradicted by readOnlyHint=false or destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences carry significant information with no filler. The first sentence states the core action, the second explains the update model and field precedence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 100% schema coverage, output schema presence, and annotations, the description covers the critical interaction semantics that are not discoverable from schema alone. Nothing essential is missing for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema by specifying that recipeId clears a custom name, name clears the recipe link, and recipeId wins if both are present. This extra guidance justifies a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Update a planned meal') that clearly identifies the operation and distinguishes it from create_meal_plan, delete_meal_plan, and list_meal_plans. The partial-update detail further sharpens what the tool does without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than explicit: the description indicates this is for updating an existing planned meal, but it does not name alternatives or state when not to use this tool versus create_meal_plan or delete_meal_plan. The field-behavior rules are helpful for how to call it, but not for when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_memoryAInspect
Update an existing memory's name, description, or content. Type is immutable; to reclassify, forget and store again.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id from a prior recall_memory result. | |
| name | No | New kebab-case slug. | |
| content | No | New body. | |
| description | No | New single-line summary. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the operation is read-write (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds the important behavioral constraint that type is immutable and suggests a workaround. It doesn't disclose whether unspecified fields are preserved or overwritten, but the minimal annotations keep the bar low.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the action and targets, the second explains an immutable property and its workaround. Every sentence contributes essential information, and the key constraint is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition is compact but sufficient for a straightforward update operation. The schema covers parameter meanings, the output schema covers return values, and the description covers the one non-obvious rule (type immutability). The only minor gap is not explicitly stating that partial updates preserve omitted fields, but this is not critical given the other structured information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already documented (id from prior recall_memory result, name kebab-case slug, content body, description summary). The description's reference to 'name, description, or content' restates the schema without adding further semantic nuance, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'existing memory', and lists the mutable fields (name, description, content). It also explicitly notes that type is immutable, which distinguishes it from reclassifying operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly defines when to use this tool (updating an existing memory) and explicitly provides an exclusion: if you need to change the type, 'forget and store again'. It doesn't explicitly name store_memory as the alternative for new memories, but the phrase 'existing memory' makes that clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_petAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Pet id from list_pets. | |
| name | No | New name. | |
| notes | No | Freeform notes. | |
| dateOfBirth | No | Date of birth, YYYY-MM-DD. Empty string clears it. | |
| vetContactId | No | Vet contact id from create_contact. | |
| microchipNumber | No | New microchip number. | |
| insuranceDocumentId | No | Insurance document id from create_document. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The statement 'Only the fields you send change' clearly discloses partial-update behavior, adding value beyond the annotations (readOnlyHint=false, destructiveHint=false). It also clarifies that linked vet contact and insurance document references are updatable. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two brief sentences with no filler. The first sentence is front-loaded with the verb and resource, and the second adds essential behavioral nuance without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All updatable categories are covered, including linked vet contact and insurance document, and the partial-update behavior is stated. The id source is handled in the schema, and an output schema exists, so the description is sufficiently complete for a 7-parameter update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds important meaning by specifying that omitted fields remain unchanged and grouping vetContactId and insuranceDocumentId as linked references, which is not explicit in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (Update), a resource (pet), and enumerates the exact fields that can be changed, making the tool's function unambiguous. It also distinguishes itself from create_pet and delete_pet by focusing on modification of existing pets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The update semantics imply use on an existing pet, but the description does not explicitly contrast with create_pet or delete_pet, nor does it state when not to use the tool. The context is sufficient, but exclusions and alternatives are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_recipeAInspect
Update a recipe. Only the fields you send change, except ingredients, which replaces the whole existing list rather than merging.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Recipe id from list_recipes. | |
| url | No | Source URL. | |
| name | No | Name. | |
| servings | No | Servings the recipe yields, minimum 1. | |
| ingredients | No | Ingredients. Replaces the whole existing list rather than merging. | |
| instructions | No | Cooking method. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses an important behavioral nuance: partial updates are supported, and the ingredients field replaces the entire list rather than merging. This goes beyond the annotations and helps prevent accidental data loss, even though it does not describe error handling or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences with no filler. The main update behavior is front-loaded, and the exception about ingredients is placed immediately after, making the description easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the critical semantics needed to call the tool correctly: partial updates and ingredient replacement. With a complete input schema and an output schema available, the lack of error details or alternative-tool routing is acceptable, though slightly more context about prerequisites would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the baseline is 3. The description adds tool-level patch semantics ('Only the fields you send change') that are not captured by any individual parameter schema, clarifying that omitted optional fields are left unchanged.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Update') and resource ('a recipe'), making the tool's purpose immediately clear. It is naturally distinguished from sibling tools like create_recipe, delete_recipe, and list_recipes by the verb and resource combination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance about when to use this tool versus alternatives. It does not mention that create_recipe should be used for new recipes, or that list_recipes is the source for valid IDs, leaving the agent to infer selection from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_recurring_calendar_eventAInspect
Update a recurring calendar event. Changes to title/description/notes/reminders patch existing instances. Changes to frequency/dates/time regenerate future instances.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Template id from create_recurring_calendar_event. | |
| notes | No | New notes. | |
| title | No | New title, patched onto existing instances. | |
| endDate | No | New last date, YYYY-MM-DD. Empty string leaves it unbounded. | |
| duration | No | Length of each instance, ISO 8601 duration e.g. 'PT30M'. | |
| isAllDay | No | True for all-day instances, false for timed. An all-day instance starts at midnight of its occurrence date in the template timezone (stored in UTC; omit startTime) and ends duration later (no end without a duration), so a duration of one day or more makes each instance span that many whole days. | |
| location | No | Replaces the location outright. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes. | |
| timezone | No | IANA zone for startTime, e.g. 'Europe/London'. Occurrences follow its DST. | |
| startDate | No | New first-instance date, YYYY-MM-DD. Empty string clears it. | |
| startTime | No | New local start time, HH:mm:ss. | |
| description | No | New description, patched onto existing instances. | |
| cronExpression | No | New interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax. | |
| maxOccurrences | No | New cap on instances generated. | |
| reminderOffsetMinutes | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate not read-only and not destructive, providing no behavioral detail. The description goes beyond annotations by disclosing that certain changes modify existing instances while others regenerate future ones. This is a critical behavioral trait that impacts how the agent should set expectations about the effect on existing data, adding significant value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The purpose is front-loaded, and the behavioral distinction is stated concisely. It is an efficient and well-structured description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (14 parameters, nested objects, output schema), the description captures the essential behavioral distinction but does not explicitly address when to use this tool vs the non-recurring update_calendar_event. The schema handles parameter details and the output schema covers return values. A brief note about the recurring vs non-recurring distinction would make it fully complete, but the name and context likely suffice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented with detailed explanations and examples. The description adds a high-level semantic layer by categorizing which parameters patch vs regenerate, which is not captured in the schema. This helps the agent understand the impact of changing different fields, going beyond the schema's individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it updates a recurring calendar event and immediately distinguishes between changes that patch existing instances (title/description/notes/reminders) and changes that regenerate future instances (frequency/dates/time). This is specific and differentiates it from create_recurring_calendar_event and update_calendar_event by the recurring aspect and the behavioral nuance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides valuable guidance on the two distinct behaviors (patch vs regenerate) which informs the agent what to expect for each field. However, it does not explicitly mention when to use this tool over update_calendar_event for non-recurring events, nor does it state any exclusions or alternatives. The name implies the use case, but explicit alternative routing is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_recurring_taskAInspect
Update a recurring task. Title, notes, urgency or reminder changes patch existing instances; frequency/date changes regenerate future instances.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Template id from create_recurring_task. | |
| notes | No | New notes, copied to uncompleted instances. | |
| title | No | New title. Uncompleted instances are updated to match; completed ones keep theirs. | |
| endDate | No | New inclusive end date, YYYY-MM-DD. Empty string makes it open-ended. | |
| isUrgent | No | Mark every task this series generates as urgent: true marks urgent, false clears it, omit to leave unchanged. A change also applies to the series' open occurrences. | |
| startDate | No | New start date, YYYY-MM-DD. Empty string clears it. | |
| cronExpression | No | New interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax. | |
| maxOccurrences | No | New cap on instances generated. | |
| preparationDays | No | Legacy single reminder, days before each occurrence's due date, 0-365 (0 means none); use reminderOffsetMinutes instead. Ignored when reminderOffsetMinutes is sent. On a series without reminderOffsetMinutes it applies to instances generated after this change. On a series with reminderOffsetMinutes the server keeps it in step: a different value replaces every reminder with that one (0 removes them) and also updates the series' open tasks. | |
| assigneeRotation | No | A member id from list_house_members. | |
| reminderOffsetMinutes | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false and destructiveHint=false, so the description carries the burden of explaining side effects. It does this well by stating that title/notes/urgency/reminder changes patch existing instances while frequency/date changes regenerate future instances. It does not cover every behavioral nuance, such as assigneeRotation applying only to future instances, but it adds real value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence carries the core purpose and the most important behavioral distinction, with no filler or redundant restatement. The most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an 11-parameter mutation with 100% schema coverage, annotations, and an output schema, the description only needs to provide cross-cutting semantics, which it does. The main omission is that assigneeRotation's future-only behavior is not included in the summary, but the schema states it clearly, so the tool remains fully invokable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by grouping parameters into behavioral categories (patch existing vs regenerate future), which helps the agent predict effects across multiple fields. It does not enumerate every parameter, but the schema already documents each one thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Update a recurring task') and then differentiates behavior from one-off task updates by distinguishing patches to existing instances from regeneration of future instances. This makes the tool's scope unmistakable even among many update_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource name and by the patch-vs-regenerate semantics, but there is no explicit guidance about when to prefer this tool over update_task, update_recurring_calendar_event, or create_recurring_task. No exclusions or alternative-routing conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_shopping_list_itemAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Item id from add_shopping_list_item or list_shopping_list_items. | |
| name | No | New item name. | |
| category | No | New store-aisle category, overriding the auto-assigned one. | |
| quantity | No | New quantity, 1-9999. Replaces rather than adds to the current one. | |
| shoppingListId | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, non-destructive mutation, and the description adds a useful behavioral trait: omitted fields retain their current values. This partial-update guarantee is not visible in the annotations. It does not mention move-to-another-list behavior, but that is covered by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb/resource and ending with a precise semantic guarantee. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that all five parameters are fully described in the schema and an output schema exists, the description provides enough context for correct invocation. The missing usage alternatives and the unmentioned shoppingListId move capability are the only real gaps, but neither blocks an agent that reads the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds global partial-update semantics ('only the fields provided are changed') that the individual parameter descriptions do not fully convey, helping an agent understand how name, quantity, category, and shoppingListId interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Update') and resource ('shopping list item') and lists the main mutable fields, which is enough to distinguish it from add/remove/list/buy siblings. However, it omits the shoppingListId behavior (moving the item to a different list), so it under-describes the full scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The partial-update sentence implies this is the tool to use when changing selected fields without replacing the whole item. However, there is no explicit statement of when to use it versus add_shopping_list_item, buy_shopping_list_item, or remove_shopping_list_item, and no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_subscriptionAInspect
Update a subscription. Only the fields you send change; for renewalCronExpression, startDate, paymentDate and notes an empty string clears the stored value.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Subscription id from list_subscriptions. | |
| fee | No | Recurring charge. | |
| name | No | New name. | |
| notes | No | Free-text notes. Empty string clears them. | |
| status | No | New status. | |
| remindMe | No | Whether to remind the household before each renewal. | |
| startDate | No | Renewal date, YYYY-MM-DD. Optional. For a recurring bill it is the first renewal; for a one-off it is the date it is due. Empty string clears it. | |
| paymentDate | No | Date the first payment leaves the account, YYYY-MM-DD, when it differs from the renewal date. Payments repeat on the renewal cadence from this date. Omit when payment happens on renewal. Empty string clears it. | |
| renewalCronExpression | No | Cron expression for the renewal cadence, no more often than daily. Empty string clears it, making the bill a one-off. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say the tool is not read-only and not destructive; the description adds the non-obvious partial-update behavior and the empty-string-clears rule for four fields. It doesn't detail response or error behavior, but the output schema covers the return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core operation and then the one non-obvious semantic. No filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter partial-update tool with full schema coverage and an output schema, the description covers the only behavior an agent might miss (partial updates and clearing). It could mention prerequisites such as the subscription id source, but that is already in the schema's id description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description earns a 4 by adding the global 'only fields you send change' rule, which the schema's per-field descriptions don't make explicit; the empty-string clearing detail is also called out upfront, even if partly duplicated in property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a subscription') and immediately clarifies that updates are partial. It does not explicitly contrast with create_subscription or delete_subscription, but the verb and resource are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or alternatives are given. The partial-update rule is useful, but the description never says when to choose this over create_subscription or delete_subscription.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskAInspect
Update a task's title, assignee, due date, reminders, notes or urgency. Only the fields you send change.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task id from create_task or list_tasks. | |
| notes | No | Freeform notes. Not for assignment info. | |
| title | No | New title. | |
| dueDate | No | New due date, YYYY-MM-DD. Empty string clears it. | |
| isUrgent | No | Mark the task urgent so it is shown first and highlighted: true marks urgent, false clears it, omit to leave unchanged. | |
| preparationDate | No | Legacy single reminder date, YYYY-MM-DD; use reminderOffsetMinutes instead. Ignored when reminderOffsetMinutes is sent. Must be on or before dueDate. Empty string clears it; clearing dueDate clears it. On a task without reminderOffsetMinutes, changing dueDate does not move it. On a task with reminderOffsetMinutes the server keeps it in step with dueDate: a different date replaces every reminder with that one, and an empty string removes them all. | |
| assignedToMemberId | No | Member id to assign. Empty string unassigns. | |
| reminderOffsetMinutes | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds an important behavioral guarantee beyond annotations: 'Only the fields you send change,' clearly signaling partial-update semantics. Annotations only say the operation is neither read-only nor destructive, so this extra context is valuable and non-contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the essential action and immediately communicates the key partial-update behavior. There is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema and presence of an output schema, the description covers the critical caller-facing behavior: only sent fields change. It lacks sibling routing and some operational warnings, but for this tool's complexity it is generally sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already provides detailed meaning for every parameter. The description's field list roughly maps to the parameters but adds no new detail beyond what the schema supplies, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource ('Update a task') and enumerates the fields involved, making the tool's purpose immediately obvious. It does not explicitly contrast itself with siblings like assign_task or update_recurring_task, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as assign_task, complete_task, or create_task. It implies use on an existing task, but it does not state exclusions or preferred alternatives for overlapping operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_vehicleAInspect
Update a vehicle. Only the fields you send change; for text and due-date fields an empty string clears the stored value.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Vehicle id from list_vehicles. | |
| vin | No | Vehicle Identification Number, 17 alphanumeric characters. | |
| make | No | Manufacturer, e.g. 'Toyota'. | |
| year | No | Model year, 1900-2100. | |
| model | No | Model, e.g. 'Corolla'. | |
| notes | No | Free-text notes. | |
| colour | No | Colour. | |
| motDueDate | No | Next MOT (roadworthiness test) due date, YYYY-MM-DD. | |
| taxDueDate | No | Next road tax due date, YYYY-MM-DD. | |
| registration | No | Registration as shown on the plate; format varies by country. | |
| serviceDueDate | No | Next service due date, YYYY-MM-DD. | |
| insuranceDocumentId | No | Insurance document id from list_documents. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| title | No | |
| message | No | |
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=false, so the description carries the responsibility of explaining actual behavior. It adds valuable transparency: only sent fields change, and empty strings clear text/due-date fields. This goes beyond what the annotations alone reveal about the update semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core purpose leads, followed immediately by the most important behavioral nuance. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full parameter documentation, an output schema, and annotations, the description provides the essential missing glue: partial-update behavior and clearing semantics. It could mention that the id must come from list_vehicles, but the schema already states that, so no critical gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds cross-parameter meaning not present in any individual parameter description: empty strings clear text and due-date fields. This is a significant extra semantic rule that helps the agent use parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('Update a vehicle') and adds a clarifying behavioral scope: 'Only the fields you send change.' This distinguishes it clearly from sibling tools like create_vehicle, delete_vehicle, and list_vehicles without needing to consult their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context by explaining partial-update semantics and the empty-string clearing rule, which tell the agent how to approach an update. It does not explicitly name alternatives or state when not to use the tool, but the 'update' framing and sibling names make the decision obvious enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
- Changed
add_shopping_list_item1 field changed- added
Input schema / properties / categoryAdded value: +{ + "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" +}
- Changed
batch_add_shopping_list_items1 field changed- added
Input schema / properties / items / items / properties / categoryAdded value: +{ + "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" +}
- Changed
create_calendar_event8 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "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", - "startDateTime": "2026-08-03T14:30:00Z", - "timezone": "Europe/London", - "title": "Dentist appointment" - } -]New value: +[ + { + "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" + } +] - added
Input schema / properties / endDateAdded value: +{ + "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" +} - changed
Input schema / properties / endDateTime / descriptionPrevious value: -"End, ISO 8601 UTC. Must not precede startDateTime."New value: +"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)." - added
Input schema / properties / reminderOffsetMinutesAdded value: +{ + "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 +} - added
Input schema / properties / startDateAdded value: +{ + "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" +} - changed
Input schema / properties / startDateTime / descriptionPrevious value: -"Start, ISO 8601 UTC with a Z suffix."New value: +"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." - changed
Input schema / properties / timezone / descriptionPrevious value: -"IANA zone for the wall-clock times, e.g. 'Europe/London'. Null means UTC."New value: +"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." - changed
Input schema / requiredPrevious value: -[ - "title", - "startDateTime", - "isAllDay" -]New value: +[ + "title", + "isAllDay" +]
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-29", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-10-01", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
- Changed
create_recurring_calendar_event3 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "cronExpression": "1 Week", - "description": "Sync on sprint progress", - "duration": "PT30M", - "endDate": "2026-12-31", - "isAllDay": false, - "maxOccurrences": 20, - "notes": "Bring your laptop", - "startDate": "2026-08-03", - "startTime": "09:00:00", - "timezone": "Europe/London", - "title": "Weekly team standup" - } -]New value: +[ + { + "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" + } +] - changed
Input schema / properties / isAllDay / descriptionPrevious value: -"True for all-day instances, false for timed."New value: +"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." - added
Input schema / properties / reminderOffsetMinutesAdded value: +{ + "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 +}
- Changed
create_recurring_task4 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "assigneeRotation": [ - "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e", - "a1b2c3d4e5f60718293a4b5c6d7e8f90" - ], - "cronExpression": "2 Week", - "endDate": "2026-12-31", - "maxOccurrences": 26, - "notes": "Blue bin only", - "preparationDays": 1, - "startDate": "2026-08-01", - "title": "Take out the recycling" - } -]New value: +[ + { + "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" + } +] - added
Input schema / properties / isUrgentAdded value: +{ + "description": "Mark every task this series generates as urgent.", + "examples": [ + true + ], + "type": "boolean" +} - changed
Input schema / properties / preparationDays / descriptionPrevious value: -"Days before each due date to set that instance's preparation date. Clamped to today if it would be past."New value: +"Legacy single reminder, days before each occurrence's due date, 0-365 (0 means none); use reminderOffsetMinutes instead. Ignored when reminderOffsetMinutes is sent." - added
Input schema / properties / reminderOffsetMinutesAdded value: +{ + "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 +}
- Changed
create_subscription4 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "fee": { - "currencyCode": "USD", - "value": 1599 - }, - "name": "Netflix", - "notes": "Family plan, shared with parents", - "remindMe": true, - "renewalCronExpression": "0 0 1 * *", - "status": "Active" - } -]New value: +[ + { + "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" + } +] - added
Input schema / properties / paymentDateAdded value: +{ + "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" +} - changed
Input schema / properties / renewalCronExpression / descriptionPrevious value: -"Cron expression for the renewal cadence. No more often than daily."New value: +"Cron expression for the renewal cadence. No more often than daily. Omit for a one-off bill." - added
Input schema / properties / startDateAdded value: +{ + "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" +}
- Changed
create_task4 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "assignedToMemberId": "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e", - "dueDate": "2026-08-01", - "notes": "Blue bin only", - "preparationDate": "2026-07-30", - "title": "Take out the recycling" - } -]New value: +[ + { + "assignedToMemberId": "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e", + "dueDate": "2026-08-01", + "notes": "Blue bin only", + "reminderOffsetMinutes": [ + 1440, + 10080 + ], + "title": "Take out the recycling" + } +] - added
Input schema / properties / isUrgentAdded value: +{ + "description": "Mark the task urgent so it is shown first and highlighted.", + "examples": [ + true + ], + "type": "boolean" +} - changed
Input schema / properties / preparationDate / descriptionPrevious value: -"Preparation date, YYYY-MM-DD. Must not follow dueDate."New value: +"Legacy single reminder date, YYYY-MM-DD; use reminderOffsetMinutes instead. Ignored when reminderOffsetMinutes is sent. Must be on or before dueDate, and needs dueDate." - added
Input schema / properties / reminderOffsetMinutesAdded value: +{ + "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 +}
- Changed
update_calendar_event5 fields changed- added
Input schema / properties / endDateAdded value: +{ + "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" +} - changed
Input schema / properties / endDateTime / descriptionPrevious value: -"New end, ISO 8601 UTC. Must not precede startDateTime."New value: +"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." - added
Input schema / properties / reminderOffsetMinutesAdded value: +{ + "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 +} - added
Input schema / properties / startDateAdded value: +{ + "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" +} - changed
Input schema / properties / startDateTime / descriptionPrevious value: -"New start, ISO 8601 UTC."New value: +"New start of a timed event, ISO 8601 UTC. For an all-day event send startDate instead."
- Changed
update_recurring_calendar_event2 fields changed- changed
Input schema / properties / isAllDay / descriptionPrevious value: -"True for all-day instances, false for timed."New value: +"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." - added
Input schema / properties / reminderOffsetMinutesAdded value: +{ + "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 +}
- Changed
update_recurring_task3 fields changed- added
Input schema / properties / isUrgentAdded value: +{ + "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" +} - changed
Input schema / properties / preparationDays / descriptionPrevious value: -"Days before each due date to set that instance's preparation date. Applies to instances generated after this change."New value: +"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." - added
Input schema / properties / reminderOffsetMinutesAdded value: +{ + "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 +}
- Changed
update_subscription4 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "id": "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e", - "notes": "Paused while travelling", - "status": "Paused" - } -]New value: +[ + { + "id": "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e", + "notes": "Paused while travelling", + "status": "Paused" + }, + { + "id": "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e", + "paymentDate": "2026-10-03" + } +] - added
Input schema / properties / paymentDateAdded value: +{ + "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" +} - changed
Input schema / properties / renewalCronExpression / descriptionPrevious value: -"Cron expression for the renewal cadence, no more often than daily. Empty string clears it."New value: +"Cron expression for the renewal cadence, no more often than daily. Empty string clears it, making the bill a one-off." - added
Input schema / properties / startDateAdded value: +{ + "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" +}
- Changed
update_task3 fields changed- added
Input schema / properties / isUrgentAdded value: +{ + "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" +} - changed
Input schema / properties / preparationDate / descriptionPrevious value: -"New preparation date, YYYY-MM-DD. Must not follow dueDate. Empty string clears it."New value: +"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." - added
Input schema / properties / reminderOffsetMinutesAdded value: +{ + "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 +}
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-25", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-29", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
4 tool updates
- Changed
create_document5 fields changed- changed
Input schema / properties / fee / properties / currencyCode / descriptionPrevious value: -"ISO 4217 code, three letters."New value: +"Uppercase ISO 4217 code, e.g. USD, GBP, JPY." - changed
Input schema / properties / fee / properties / currencyCode / examplesPrevious value: -[ - "GBP" -]New value: +[ + "USD" +] - added
Input schema / properties / fee / properties / currencyCode / patternAdded value: +"^[A-Z]{3}$" - changed
Input schema / properties / fee / properties / value / descriptionPrevious value: -"Amount in minor units, e.g. pence."New value: +"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)." - changed
Input schema / properties / fee / properties / value / examplesPrevious value: -[ - 8250 -]New value: +[ + 1599 +]
- Changed
create_subscription3 fields changed- changed
Input schema / properties / fee / properties / currencyCode / descriptionPrevious value: -"ISO 4217 code, three letters."New value: +"Uppercase ISO 4217 code, e.g. USD, GBP, JPY." - added
Input schema / properties / fee / properties / currencyCode / patternAdded value: +"^[A-Z]{3}$" - changed
Input schema / properties / fee / properties / value / descriptionPrevious value: -"Amount in minor units, e.g. cents."New value: +"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)."
- Changed
update_document5 fields changed- changed
Input schema / properties / fee / properties / currencyCode / descriptionPrevious value: -"ISO 4217 code, three letters."New value: +"Uppercase ISO 4217 code, e.g. USD, GBP, JPY." - changed
Input schema / properties / fee / properties / currencyCode / examplesPrevious value: -[ - "GBP" -]New value: +[ + "USD" +] - added
Input schema / properties / fee / properties / currencyCode / patternAdded value: +"^[A-Z]{3}$" - changed
Input schema / properties / fee / properties / value / descriptionPrevious value: -"Amount in minor units, e.g. pence."New value: +"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)." - changed
Input schema / properties / fee / properties / value / examplesPrevious value: -[ - 8250 -]New value: +[ + 1599 +]
- Changed
update_subscription3 fields changed- changed
Input schema / properties / fee / properties / currencyCode / descriptionPrevious value: -"ISO 4217 code, three letters."New value: +"Uppercase ISO 4217 code, e.g. USD, GBP, JPY." - added
Input schema / properties / fee / properties / currencyCode / patternAdded value: +"^[A-Z]{3}$" - changed
Input schema / properties / fee / properties / value / descriptionPrevious value: -"Amount in minor units, e.g. cents."New value: +"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)."
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-24", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-25", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-23", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-24", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-22", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-23", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-21", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-22", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-20", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-21", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-19", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-20", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-20", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-19", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-19", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-20", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-18", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-19", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-17", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-18", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-16", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-17", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
1 tool update
- Changed
create_meal_plan1 field changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-09-15", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-16", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +]
47 tool updates
- Changed
add_shopping_list_item3 fields changed- changed
Input schema / properties / name / descriptionPrevious value: -"The name of the item to add, e.g. 'Milk' or 'Paper towels'. Maximum 200 characters. For a brand-new item, a category is auto-assigned from the name. If an unbought item with a matching name is already on the list, its quantity is increased instead of creating a duplicate entry, and the existing item keeps its current category unchanged."New value: +"Item name, e.g. 'Milk'. A new item gets a category from its name; a matching unbought item has its quantity increased instead." - changed
Input schema / properties / quantity / descriptionPrevious value: -"How many of the item to add. Defaults to 1 if omitted. Minimum 1, maximum 9999. When merged into an existing unbought item, this is added to the existing quantity (capped at 9999)."New value: +"How many to add, 1-9999, default 1. Added to the existing quantity when merged." - added
Input schema / properties / shoppingListIdAdded value: +{ + "description": "Target list, an id from list_shopping_lists. Omit for the default. Merging only happens within one list.", + "examples": [ + "0189c8d4f2b1712a9e4d6c9a1b2e3f4a" + ], + "type": "string" +}
- Changed
assign_task3 fields changed- changed
Input schema / properties / assignedToMemberId / descriptionPrevious value: -"The member ID of the household member. Get this from list_house_members. Pass null or empty string to unassign."New value: +"Member id from list_house_members. Empty or null unassigns." - changed
Input schema / properties / assignedToMemberId / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Input schema / properties / id / descriptionPrevious value: -"The task's ID, as returned by create_task or list_tasks."New value: +"Task id from create_task or list_tasks."
- Changed
batch_add_shopping_list_items6 fields changed- changed
Input schema / properties / items / descriptionPrevious value: -"List of items to add to the shopping list in a single call. Up to 25 items per call."New value: +"Items to add, up to 25 per call." - added
Input schema / properties / items / examplesAdded value: +[ + [ + { + "name": "Milk", + "quantity": 2 + } + ] +] - added
Input schema / properties / items / items / descriptionAdded value: +"One item to add, with its quantity." - changed
Input schema / properties / items / items / properties / name / descriptionPrevious value: -"The name of the item to add, e.g. 'Milk' or 'Paper towels'. Maximum 200 characters. Items are deduplicated within the batch by name (summing quantities) and merged into any matching unbought item already on the list."New value: +"Item name, e.g. 'Milk'. Duplicate names are summed within the batch and merged into any matching unbought item." - changed
Input schema / properties / items / items / properties / quantity / descriptionPrevious value: -"How many of the item to add. Minimum 1, maximum 9999 (summed quantities are capped at 9999 when deduplicated or merged with an existing item)."New value: +"How many to add, 1-9999. Summed quantities are capped at 9999." - added
Input schema / properties / shoppingListIdAdded value: +{ + "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" +}
- Changed
buy_shopping_list_item2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"The ID of the shopping list item to buy, as returned by add_shopping_list_item, batch_add_shopping_list_items, or list_shopping_list_items."New value: +"Item id from add_shopping_list_item or list_shopping_list_items." - changed
Input schema / properties / quantityToBuy / descriptionPrevious value: -"How many units to mark as bought. Defaults to 1. Minimum: 1, maximum 9999. If this meets or exceeds the item's remaining quantity, the item is fully bought and removed from the active list; otherwise its quantity is reduced by this amount."New value: +"Units bought, 1-9999, default 1. At or above the remaining quantity the item is fully bought and leaves the list."
- Changed
complete_task1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"The task's ID, as returned by create_task or list_tasks."New value: +"Task id from create_task or list_tasks."
- Changed
create_appliance9 fields changed- changed
Input schema / properties / brand / descriptionPrevious value: -"Manufacturer or brand name."New value: +"Manufacturer or brand." - changed
Input schema / properties / insuranceDocumentId / descriptionPrevious value: -"ID of a previously created document containing the insurance policy."New value: +"Insurance document id from create_document." - changed
Input schema / properties / model / descriptionPrevious value: -"Model name or number, as printed on the appliance or its manual."New value: +"Model, as printed on the appliance or manual." - changed
Input schema / properties / name / descriptionPrevious value: -"Name of the appliance, e.g. what it is or where it's located."New value: +"Name, e.g. what it is or where it lives." - changed
Input schema / properties / notes / descriptionPrevious value: -"Freeform notes about the appliance."New value: +"Freeform notes." - changed
Input schema / properties / purchaseDate / descriptionPrevious value: -"Date the appliance was purchased, in YYYY-MM-DD format."New value: +"Purchase date, YYYY-MM-DD." - changed
Input schema / properties / serialNumber / descriptionPrevious value: -"Manufacturer serial number, used when contacting support or filing a warranty claim."New value: +"Serial number, for support or warranty claims." - changed
Input schema / properties / warrantyDocumentId / descriptionPrevious value: -"ID of a previously created document containing the warranty paperwork."New value: +"Warranty document id from create_document." - changed
Input schema / properties / warrantyExpiryDate / descriptionPrevious value: -"Date the manufacturer warranty expires, in YYYY-MM-DD format. Must not be before purchaseDate."New value: +"Warranty expiry, YYYY-MM-DD. Must not precede purchaseDate."
- Changed
create_calendar_event19 fields changed- changed
Input schema / properties / description / descriptionPrevious value: -"Longer free-text description of the event. Up to 2000 characters."New value: +"Longer description." - changed
Input schema / properties / endDateTime / descriptionPrevious value: -"ISO 8601 date-time in UTC (Z-suffix). Must not be before startDateTime."New value: +"End, ISO 8601 UTC. Must not precede startDateTime." - changed
Input schema / properties / isAllDay / descriptionPrevious value: -"True for an all-day event with no specific start/end time; false for a timed event."New value: +"True for all-day, false for timed." - changed
Input schema / properties / location / descriptionPrevious value: -"Location. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)."New value: +"Where it happens. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes." - changed
Input schema / properties / location / properties / $type / descriptionPrevious value: -"Location type discriminator"New value: +"Which location shape this is." - added
Input schema / properties / location / properties / $type / examplesAdded value: +[ + "Address" +] - changed
Input schema / properties / location / properties / countryCode / descriptionPrevious value: -"Country code for the address (Address type)."New value: +"ISO country code, e.g. GB." - changed
Input schema / properties / location / properties / line1 / descriptionPrevious value: -"First line of the street address (Address type). At least one of line1-3/postalCode is required when $type is 'Address'."New value: +"Address line 1. An Address needs one of line1-3 or postalCode." - changed
Input schema / properties / location / properties / line2 / descriptionPrevious value: -"Second line of the street address (Address type), e.g. building or suite."New value: +"Address line 2, e.g. flat or suite." - changed
Input schema / properties / location / properties / line3 / descriptionPrevious value: -"Third line of the street address (Address type)."New value: +"Address line 3." - added
Input schema / properties / location / properties / line3 / examplesAdded value: +[ + "London" +] - changed
Input schema / properties / location / properties / notes / descriptionPrevious value: -"Notes about the location, e.g. parking instructions or a meeting passcode. Up to 500 characters for OnlineLocation."New value: +"Access detail, e.g. parking or passcode." - added
Input schema / properties / location / properties / notes / examplesAdded value: +[ + "Parking on level 2" +] - changed
Input schema / properties / location / properties / postalCode / descriptionPrevious value: -"Postal or ZIP code (Address type). Up to 20 characters."New value: +"Postal or ZIP code." - changed
Input schema / properties / location / properties / url / descriptionPrevious value: -"URL for online locations (OnlineLocation type). Must be an absolute http/https URL."New value: +"Absolute http/https join link." - changed
Input schema / properties / notes / descriptionPrevious value: -"Freeform notes attached to the event. Up to 5000 characters."New value: +"Freeform notes." - changed
Input schema / properties / startDateTime / descriptionPrevious value: -"ISO 8601 date-time in UTC (Z-suffix). The wall clock is interpreted against the supplied timezone if any."New value: +"Start, ISO 8601 UTC with a Z suffix." - changed
Input schema / properties / timezone / descriptionPrevious value: -"IANA timezone id (e.g. 'Europe/London') describing the wall-clock zone of startDateTime/endDateTime; null = UTC."New value: +"IANA zone for the wall-clock times, e.g. 'Europe/London'. Null means UTC." - changed
Input schema / properties / title / descriptionPrevious value: -"Event title/summary shown in calendar views. Required, up to 200 characters."New value: +"Title shown in calendar views."
- Changed
create_contact20 fields changed- changed
Input schema / properties / address / descriptionPrevious value: -"The contact's postal address."New value: +"Postal address." - changed
Input schema / properties / address / properties / countryCode / descriptionPrevious value: -"Country code (e.g., GB, US)"New value: +"ISO country code, e.g. GB." - changed
Input schema / properties / address / properties / line1 / descriptionPrevious value: -"First line of the address, typically house number and street."New value: +"Line 1, typically number and street." - added
Input schema / properties / address / properties / line1 / examplesAdded value: +[ + "12 Baker Street" +] - changed
Input schema / properties / address / properties / line2 / descriptionPrevious value: -"Second line of the address, e.g. apartment, suite, or unit."New value: +"Line 2, e.g. apartment or unit." - added
Input schema / properties / address / properties / line2 / examplesAdded value: +[ + "Flat 3" +] - changed
Input schema / properties / address / properties / line3 / descriptionPrevious value: -"Third line of the address, e.g. town or city."New value: +"Line 3, e.g. town or city." - added
Input schema / properties / address / properties / line3 / examplesAdded value: +[ + "London" +] - changed
Input schema / properties / dateOfBirth / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Date of birth, YYYY-MM-DD. Drives the birthday reminder." - changed
Input schema / properties / displayName / descriptionPrevious value: -"An alternate name to show for the contact instead of first/last, e.g. a nickname, company name, or role."New value: +"Name to show instead of first/last, e.g. a nickname or company." - added
Input schema / properties / displayName / examplesAdded value: +[ + "Sarah from book club" +] - changed
Input schema / properties / email / descriptionPrevious value: -"The contact's email address."New value: +"Email address." - changed
Input schema / properties / firstName / descriptionPrevious value: -"The contact's first name. The only required field."New value: +"First name. The only required field." - changed
Input schema / properties / lastName / descriptionPrevious value: -"The contact's last (family) name."New value: +"Last (family) name." - added
Input schema / properties / lastName / examplesAdded value: +[ + "Jones" +] - changed
Input schema / properties / notes / descriptionPrevious value: -"Free-text notes about the contact."New value: +"Free-text notes." - added
Input schema / properties / notes / examplesAdded value: +[ + "Met at the neighbourhood BBQ." +] - changed
Input schema / properties / phone / descriptionPrevious value: -"The contact's phone number, in any format."New value: +"Phone number, any format." - changed
Input schema / properties / prepareBirthdayPresent / descriptionPrevious value: -"Whether to prepare a birthday present for this contact"New value: +"Whether to flag a birthday present for them." - added
Input schema / properties / prepareBirthdayPresent / examplesAdded value: +[ + true +]
- Changed
create_document11 fields changed- changed
Input schema / properties / documentNumber / descriptionPrevious value: -"The document's reference or serial number, e.g. a passport number or insurance policy number."New value: +"Reference or serial number, e.g. a passport or policy number." - changed
Input schema / properties / documentType / descriptionPrevious value: -"The kind of document being stored."New value: +"Kind of document." - changed
Input schema / properties / fee / descriptionPrevious value: -"The cost associated with the document, e.g. a renewal or issuance fee."New value: +"Cost, e.g. a renewal or issuance fee." - changed
Input schema / properties / fee / properties / currencyCode / descriptionPrevious value: -"ISO 4217 code"New value: +"ISO 4217 code, three letters." - changed
Input schema / properties / fee / properties / value / descriptionPrevious value: -"Amount in smallest currency unit"New value: +"Amount in minor units, e.g. pence." - changed
Input schema / properties / issuingAuthority / descriptionPrevious value: -"The organization or authority that issued the document."New value: +"Who issued it." - changed
Input schema / properties / notes / descriptionPrevious value: -"Free-text notes about the document."New value: +"Free-text notes." - added
Input schema / properties / notes / examplesAdded value: +[ + "Renew before the next family trip." +] - changed
Input schema / properties / renewalCronExpression / descriptionPrevious value: -"Reserved for a future renewal-reminder schedule. Currently accepted but not persisted or acted on by document creation — has no effect yet."New value: +"Accepted but not yet stored or acted on; has no effect." - added
Input schema / properties / renewalCronExpression / examplesAdded value: +[ + "0 0 1 1 *" +] - changed
Input schema / properties / title / descriptionPrevious value: -"A custom title for the document. If omitted, one is derived from the document type and number, e.g. 'Passport - 512345678'."New value: +"Custom title. Defaults to type plus number, e.g. 'Passport - 512345678'."
- Changed
create_meal_plan11 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2026-07-16", - "mealType": "dinner", - "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", - "servings": 4 - } -]New value: +[ + { + "date": "2026-09-15", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +] - changed
Input schema / properties / date / descriptionPrevious value: -"Date of the planned meal (format: YYYY-MM-DD). Must be from today up to four weeks ahead."New value: +"Date, YYYY-MM-DD. Must be today or within the next 28 days, so work it out from today's date." - removed
Input schema / properties / date / examplesRemoved value: -[ - "2026-07-16" -] - changed
Input schema / properties / mealType / descriptionPrevious value: -"Which meal slot of the day this entry occupies"New value: +"Meal slot of the day." - changed
Input schema / properties / name / descriptionPrevious value: -"Custom meal name when no recipe is linked"New value: +"Custom meal name when no recipe is linked." - added
Input schema / properties / name / examplesAdded value: +[ + "Leftover curry" +] - changed
Input schema / properties / notes / descriptionPrevious value: -"Optional free-text notes about the planned meal"New value: +"Free-text notes." - added
Input schema / properties / notes / examplesAdded value: +[ + "Double the rice" +] - changed
Input schema / properties / recipeId / descriptionPrevious value: -"ID of an existing recipe (from list_recipes or list_global_recipes)"New value: +"Recipe id from list_recipes or list_global_recipes." - changed
Input schema / properties / recipeSource / descriptionPrevious value: -"Set 'global' when recipeId refers to a Discover/global recipe (from list_global_recipes); defaults to 'household'"New value: +"Use 'global' when recipeId came from list_global_recipes. Defaults to 'household'." - changed
Input schema / properties / servings / descriptionPrevious value: -"Number of servings for the planned meal. Between 1 and 100"New value: +"Servings, 1-100."
- Changed
create_pet6 fields changed- changed
Input schema / properties / dateOfBirth / descriptionPrevious value: -"The pet's date of birth, in YYYY-MM-DD format."New value: +"Date of birth, YYYY-MM-DD." - changed
Input schema / properties / insuranceDocumentId / descriptionPrevious value: -"ID of a previously created document containing the pet's insurance policy."New value: +"Insurance document id from create_document." - changed
Input schema / properties / microchipNumber / descriptionPrevious value: -"Microchip identification number, used to reunite a lost pet with its household."New value: +"Microchip number." - changed
Input schema / properties / name / descriptionPrevious value: -"The pet's name."New value: +"Name." - changed
Input schema / properties / notes / descriptionPrevious value: -"Freeform notes about the pet, e.g. dietary needs or medical history."New value: +"Freeform notes, e.g. diet or medical history." - changed
Input schema / properties / vetContactId / descriptionPrevious value: -"ID of a previously created contact for the pet's vet."New value: +"Vet contact id from create_contact."
- Changed
create_recipe9 fields changed- changed
Input schema / properties / ingredients / descriptionPrevious value: -"Optional list of ingredients required for the recipe"New value: +"Ingredients." - added
Input schema / properties / ingredients / items / descriptionAdded value: +"One ingredient and its quantity." - changed
Input schema / properties / ingredients / items / properties / name / descriptionPrevious value: -"Ingredient name"New value: +"Ingredient name." - changed
Input schema / properties / ingredients / items / properties / quantity / descriptionPrevious value: -"Whole-number quantity of the ingredient (no fractional/unit support). Minimum: 1"New value: +"Whole-number quantity, minimum 1. No fractions or units." - changed
Input schema / properties / instructions / descriptionPrevious value: -"Optional free-text cooking instructions/method"New value: +"Cooking method." - added
Input schema / properties / instructions / examplesAdded value: +[ + "Marinate the chicken, then simmer in the spiced tomato sauce for 20 minutes." +] - changed
Input schema / properties / name / descriptionPrevious value: -"Recipe name/title"New value: +"Recipe name." - changed
Input schema / properties / servings / descriptionPrevious value: -"Number of servings the recipe yields. Minimum: 1"New value: +"Servings the recipe yields, minimum 1." - changed
Input schema / properties / url / descriptionPrevious value: -"Optional source URL the recipe was found at (e.g. a link to a blog or recipe site)"New value: +"Source URL."
- Changed
create_recurring_calendar_event26 fields changed- changed
Input schema / properties / cronExpression / descriptionPrevious value: -"Recurrence interval, NOT a cron expression despite the field name. Format is 'N Unit' where N is a positive integer and Unit is one of Day, Week, Month, Year (case-sensitive), e.g. '1 Day', '2 Week', '1 Month', '1 Year'. Instances recur every N of the given unit starting from startDate."New value: +"Interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax." - changed
Input schema / properties / description / descriptionPrevious value: -"Longer free-text description applied to every generated instance. Up to 2000 characters."New value: +"Longer description of each instance." - added
Input schema / properties / description / examplesAdded value: +[ + "Sync on sprint progress" +] - changed
Input schema / properties / duration / descriptionPrevious value: -"Length of each instance, in ISO 8601 duration format."New value: +"Length of each instance, ISO 8601 duration e.g. 'PT30M'." - changed
Input schema / properties / endDate / descriptionPrevious value: -"Last date on which instances may occur, YYYY-MM-DD format. Omit for no end date (bounded only by maxOccurrences, if set)."New value: +"Last date an instance may fall on, YYYY-MM-DD." - changed
Input schema / properties / isAllDay / descriptionPrevious value: -"True if generated instances are all-day events with no specific start/end time; false for timed instances."New value: +"True for all-day instances, false for timed." - changed
Input schema / properties / location / descriptionPrevious value: -"Location applied to every generated instance. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)."New value: +"Where each instance happens. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes." - changed
Input schema / properties / location / properties / $type / descriptionPrevious value: -"Location type discriminator"New value: +"Which location shape this is." - added
Input schema / properties / location / properties / $type / examplesAdded value: +[ + "Address" +] - changed
Input schema / properties / location / properties / countryCode / descriptionPrevious value: -"Country code for the address (Address type)."New value: +"ISO country code, e.g. GB." - changed
Input schema / properties / location / properties / line1 / descriptionPrevious value: -"First line of the street address (Address type). At least one of line1-3/postalCode is required when $type is 'Address'."New value: +"Address line 1. An Address needs one of line1-3 or postalCode." - changed
Input schema / properties / location / properties / line2 / descriptionPrevious value: -"Second line of the street address (Address type), e.g. building or suite."New value: +"Address line 2, e.g. flat or suite." - added
Input schema / properties / location / properties / line2 / examplesAdded value: +[ + "Flat 3" +] - changed
Input schema / properties / location / properties / line3 / descriptionPrevious value: -"Third line of the street address (Address type)."New value: +"Address line 3." - added
Input schema / properties / location / properties / line3 / examplesAdded value: +[ + "London" +] - changed
Input schema / properties / location / properties / notes / descriptionPrevious value: -"Notes about the location, e.g. parking instructions or a meeting passcode. Up to 500 characters for OnlineLocation."New value: +"Access detail, e.g. parking or passcode." - added
Input schema / properties / location / properties / notes / examplesAdded value: +[ + "Parking on level 2" +] - changed
Input schema / properties / location / properties / postalCode / descriptionPrevious value: -"Postal or ZIP code (Address type). Up to 20 characters."New value: +"Postal or ZIP code." - changed
Input schema / properties / location / properties / url / descriptionPrevious value: -"URL for online locations (OnlineLocation type). Must be an absolute http/https URL."New value: +"Absolute http/https join link." - changed
Input schema / properties / maxOccurrences / descriptionPrevious value: -"Maximum number of instances to generate before recurrence stops. Omit for unlimited (bounded only by endDate, if set)."New value: +"Cap on instances generated." - changed
Input schema / properties / notes / descriptionPrevious value: -"Freeform notes applied to every generated instance. Up to 5000 characters."New value: +"Notes on each instance." - added
Input schema / properties / notes / examplesAdded value: +[ + "Bring your laptop" +] - changed
Input schema / properties / startDate / descriptionPrevious value: -"Anchor date the recurrence is calculated from, YYYY-MM-DD format. The first instance falls on this date (subject to startTime/timezone); later instances are startDate plus multiples of the cronExpression interval."New value: +"Date of the first instance, YYYY-MM-DD. Later ones repeat from it." - changed
Input schema / properties / startTime / descriptionPrevious value: -"Time of day each instance starts, in HH:mm:ss format (local to timezone). Omit for an event with no fixed time."New value: +"Local start time, HH:mm:ss. Omit if there is no fixed time." - changed
Input schema / properties / timezone / descriptionPrevious value: -"IANA timezone id (e.g. 'Europe/London') that startTime is in. Each generated occurrence's UTC instant respects this zone's DST."New value: +"IANA zone for startTime, e.g. 'Europe/London'. Occurrences follow its DST." - changed
Input schema / properties / title / descriptionPrevious value: -"Event title/summary applied to every generated instance. Required, up to 200 characters."New value: +"Title of every generated instance."
- Changed
create_recurring_task10 fields changed- changed
Input schema / properties / assigneeRotation / descriptionPrevious value: -"Ordered list of household member IDs to round-robin through, one per generated instance. Entries that are no longer valid house members are skipped and that instance is left unassigned."New value: +"A member id from list_house_members." - changed
Input schema / properties / assigneeRotation / items / descriptionPrevious value: -"A household member ID (from list_house_members) taking a turn in the rotation."New value: +"Member ids round-robined one per instance. Ids that are no longer members are skipped, leaving that instance unassigned." - changed
Input schema / properties / cronExpression / descriptionPrevious value: -"Recurrence frequency expression in the format 'N Unit', e.g. '2 Week' for every two weeks. Unit must be exactly Day, Week, Month, or Year (case-sensitive). Despite the parameter name, this is not cron syntax."New value: +"Interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax." - changed
Input schema / properties / endDate / descriptionPrevious value: -"The last date instances are generated through (inclusive), in YYYY-MM-DD format. Omit for an open-ended schedule."New value: +"Inclusive last date, YYYY-MM-DD. Omit for open-ended." - changed
Input schema / properties / maxOccurrences / descriptionPrevious value: -"Maximum number of task instances to generate in total. Generation stops once this many instances have been created, even if endDate has not been reached."New value: +"Cap on instances generated, applied even if endDate is not reached." - changed
Input schema / properties / notes / descriptionPrevious value: -"Freeform notes copied to every generated task instance."New value: +"Notes copied to every generated instance." - added
Input schema / properties / notes / examplesAdded value: +[ + "Blue bin only" +] - changed
Input schema / properties / preparationDays / descriptionPrevious value: -"Number of days before each occurrence's due date to set that instance's preparation date. Clamped to today if the computed date would be in the past."New value: +"Days before each due date to set that instance's preparation date. Clamped to today if it would be past." - changed
Input schema / properties / startDate / descriptionPrevious value: -"The date the schedule starts generating instances from, in YYYY-MM-DD format. Defaults to today if omitted."New value: +"First date to generate from, YYYY-MM-DD. Defaults to today." - changed
Input schema / properties / title / descriptionPrevious value: -"The recurring task's title. Used as the title for every generated task instance."New value: +"Title given to every generated instance."
- Changed
create_subscription12 fields changed- changed
Input schema / properties / fee / descriptionPrevious value: -"The recurring charge for this subscription."New value: +"Recurring charge." - changed
Input schema / properties / fee / properties / currencyCode / descriptionPrevious value: -"ISO 4217 currency code (3 letters)."New value: +"ISO 4217 code, three letters." - changed
Input schema / properties / fee / properties / value / descriptionPrevious value: -"Amount in the smallest currency unit (e.g. cents for USD)."New value: +"Amount in minor units, e.g. cents." - changed
Input schema / properties / name / descriptionPrevious value: -"Display name of the subscription, e.g. 'Netflix' or 'Gym membership'."New value: +"Name, e.g. 'Netflix' or 'Gym membership'." - added
Input schema / properties / name / examplesAdded value: +[ + "Netflix" +] - changed
Input schema / properties / notes / descriptionPrevious value: -"Free-text notes about the subscription."New value: +"Free-text notes." - added
Input schema / properties / notes / examplesAdded value: +[ + "Family plan, shared with parents" +] - changed
Input schema / properties / remindMe / descriptionPrevious value: -"Whether to send renewal reminders for this subscription"New value: +"Whether to remind the household before each renewal." - added
Input schema / properties / remindMe / examplesAdded value: +[ + true +] - changed
Input schema / properties / renewalCronExpression / descriptionPrevious value: -"Cron expression describing how often the subscription renews. Must not repeat more frequently than once a day."New value: +"Cron expression for the renewal cadence. No more often than daily." - changed
Input schema / properties / status / descriptionPrevious value: -"Lifecycle status of the subscription at creation time."New value: +"Status at creation." - added
Input schema / properties / status / examplesAdded value: +[ + "Active" +]
- Changed
create_task6 fields changed- changed
Input schema / properties / assignedToMemberId / descriptionPrevious value: -"The member ID of the household member. Get this from list_house_members."New value: +"Member id from list_house_members." - changed
Input schema / properties / dueDate / descriptionPrevious value: -"The date the task is due, in YYYY-MM-DD format."New value: +"Due date, YYYY-MM-DD." - changed
Input schema / properties / notes / descriptionPrevious value: -"Freeform notes about the task. Not for assignment info."New value: +"Freeform notes. Not for assignment info." - added
Input schema / properties / notes / examplesAdded value: +[ + "Blue bin only" +] - changed
Input schema / properties / preparationDate / descriptionPrevious value: -"The date to start preparing for the task, in YYYY-MM-DD format. Must be on or before the due date if both are set."New value: +"Preparation date, YYYY-MM-DD. Must not follow dueDate." - changed
Input schema / properties / title / descriptionPrevious value: -"The task's title, e.g. 'Take out the recycling'. Required; max 200 characters."New value: +"Task title, e.g. 'Take out the recycling'."
- Changed
create_vehicle13 fields changed- changed
Input schema / properties / colour / descriptionPrevious value: -"Colour of the vehicle."New value: +"Colour." - changed
Input schema / properties / insuranceDocumentId / descriptionPrevious value: -"Document ID of insurance policy"New value: +"Insurance document id from create_document or list_documents." - added
Input schema / properties / insuranceDocumentId / examplesAdded value: +[ + "01928e4a7d3f7b9ac1e3f6d8b2a4c710" +] - changed
Input schema / properties / make / descriptionPrevious value: -"Manufacturer of the vehicle, e.g. 'Toyota'."New value: +"Manufacturer, e.g. 'Toyota'." - changed
Input schema / properties / model / descriptionPrevious value: -"Model name of the vehicle, e.g. 'Corolla'."New value: +"Model, e.g. 'Corolla'." - changed
Input schema / properties / motDueDate / descriptionPrevious value: -"Date the next MOT (roadworthiness test) is due, in YYYY-MM-DD format."New value: +"Next MOT (roadworthiness test) due date, YYYY-MM-DD." - changed
Input schema / properties / notes / descriptionPrevious value: -"Free-text notes about the vehicle."New value: +"Free-text notes." - added
Input schema / properties / notes / examplesAdded value: +[ + "Winter tyres fitted" +] - changed
Input schema / properties / registration / descriptionPrevious value: -"The vehicle's registration/licence plate as shown on the plate. Free-text; format varies by country."New value: +"Registration as shown on the plate; format varies by country." - changed
Input schema / properties / serviceDueDate / descriptionPrevious value: -"Date the vehicle's next scheduled service is due, in YYYY-MM-DD format."New value: +"Next service due date, YYYY-MM-DD." - changed
Input schema / properties / taxDueDate / descriptionPrevious value: -"Date the vehicle's road tax is next due, in YYYY-MM-DD format."New value: +"Next road tax due date, YYYY-MM-DD." - changed
Input schema / properties / vin / descriptionPrevious value: -"Vehicle Identification Number: a 17-character alphanumeric code unique to the vehicle."New value: +"Vehicle Identification Number, 17 alphanumeric characters." - changed
Input schema / properties / year / descriptionPrevious value: -"Model year of the vehicle. Must be between 1900 and 2100."New value: +"Model year, 1900-2100."
- Changed
defer_recommendation1 field changed- changed
Input schema / properties / recommendationId / descriptionPrevious value: -"Id of a pending recommendation, taken from the id field of an item returned by get_house_review."New value: +"Recommendation id from get_house_review."
- Changed
delete_meal_plan1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID of the meal plan entry to delete (from list_meal_plans)"New value: +"Entry id from list_meal_plans."
- Changed
delete_recipe1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID of the recipe to delete (from list_recipes)"New value: +"Recipe id from list_recipes."
- Changed
delete_recurring_task1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"The recurring task's ID, as returned by create_recurring_task or list_recurring_tasks."New value: +"The recurring task template's ID, as returned by create_recurring_task."
- Changed
delete_task1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"The task's ID, as returned by create_task or list_tasks."New value: +"Task id from create_task or list_tasks."
- Changed
list_calendar_events2 fields changed- changed
Input schema / properties / startDateFrom / descriptionPrevious value: -"Inclusive lower bound of the date range, ISO 8601 date-time in UTC. An event matches if it ends (or, when it has no end, starts) on or after this instant. Omit for no lower bound."New value: +"Range start, ISO 8601 UTC. Matches events ending, or starting if undated, at or after this." - changed
Input schema / properties / startDateTo / descriptionPrevious value: -"Inclusive upper bound of the date range, ISO 8601 date-time in UTC. An event matches if it starts on or before this instant. Omit for no upper bound."New value: +"Range end, ISO 8601 UTC. Matches events starting at or before this."
- Changed
list_documents1 field changed- changed
Input schema / properties / documentType / descriptionPrevious value: -"Optional filter to only return documents of this type. Omit to return documents of all types."New value: +"Return only this type. Omit for all."
- Changed
list_shopping_list_items3 fields changed- removed
Input schema / descriptionRemoved value: -"No parameters. Returns the active (not yet bought) items on the current household's shopping list." - changed
Input schema / examplesPrevious value: -[ - {} -]New value: +[ + {}, + { + "shoppingListId": "0189c8d4f2b1712a9e4d6c9a1b2e3f4a" + } +] - added
Input schema / propertiesAdded value: +{ + "shoppingListId": { + "description": "One named list, an id from list_shopping_lists. Omit for every list.", + "examples": [ + "0189c8d4f2b1712a9e4d6c9a1b2e3f4a" + ], + "type": "string" + } +}
- Added
list_shopping_lists - Changed
list_subscriptions1 field changed- added
Input schema / properties / status / examplesAdded value: +[ + "Active" +]
- Changed
list_tasks9 fields changed- changed
Input schema / properties / assignedToMemberId / descriptionPrevious value: -"Filter to tasks assigned to this household member ID. Omit to include tasks for all assignees."New value: +"Member id to filter by. Omit for all assignees." - changed
Input schema / properties / cursor / descriptionPrevious value: -"Opaque pagination cursor from a previous list_tasks response's nextCursor. Omit to fetch the first page."New value: +"nextCursor from a previous response. Omit for the first page." - added
Input schema / properties / cursor / examplesAdded value: +[ + "eyJsYXN0IjoiMDE4ZjJjOWEifQ" +] - changed
Input schema / properties / dueDateOnOrAfter / descriptionPrevious value: -"Only include tasks with a due date on or after this date (YYYY-MM-DD). Tasks with no due date never match."New value: +"Earliest due date, YYYY-MM-DD. Undated tasks never match." - changed
Input schema / properties / dueDateOnOrBefore / descriptionPrevious value: -"Only include tasks with a due date on or before this date (YYYY-MM-DD). Tasks with no due date never match."New value: +"Latest due date, YYYY-MM-DD. Undated tasks never match." - changed
Input schema / properties / includeCompleted / descriptionPrevious value: -"Whether to include completed tasks in the results. Default: false"New value: +"Include completed tasks. Defaults to false." - added
Input schema / properties / includeCompleted / examplesAdded value: +[ + false +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of tasks to return per page. 1-100, default 50."New value: +"Page size, 1-100, default 50." - added
Input schema / properties / limit / examplesAdded value: +[ + 20 +]
- Changed
recall_memory2 fields changed- changed
Input schema / properties / cursor / descriptionPrevious value: -"Pagination cursor: pass back the nextCursor value from a prior recall_memory response to fetch the next page. Omit to start from the first page."New value: +"nextCursor from a previous response. Omit for the first page." - changed
Input schema / properties / type / descriptionPrevious value: -"Optional filter: 'system' for memories you (the agent) wrote, 'user' for memories the user stated. Omit to return both."New value: +"Filter by author. Omit for both."
- Changed
remove_shopping_list_item1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"The ID of the shopping list item to remove, as returned by add_shopping_list_item, batch_add_shopping_list_items, or list_shopping_list_items."New value: +"Item id from add_shopping_list_item or list_shopping_list_items."
- Changed
skip_recommendation1 field changed- changed
Input schema / properties / recommendationId / descriptionPrevious value: -"Id of a pending recommendation, taken from the id field of an item returned by get_house_review."New value: +"Recommendation id from get_house_review."
- Changed
store_memory1 field changed- changed
Input schema / properties / type / descriptionPrevious value: -"Author of the memory. 'user' for things the user has stated; 'system' for stable insights you derived yourself."New value: +"'user' for what the user stated, 'system' for insights you derived."
- Changed
uncomplete_task1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"The task's ID, as returned by create_task or list_tasks."New value: +"Task id from create_task or list_tasks."
- Changed
update_appliance10 fields changed- changed
Input schema / properties / brand / descriptionPrevious value: -"New manufacturer or brand name. Omit to leave unchanged."New value: +"New manufacturer or brand." - changed
Input schema / properties / id / descriptionPrevious value: -"ID of the appliance to update."New value: +"Appliance id from list_appliances." - changed
Input schema / properties / insuranceDocumentId / descriptionPrevious value: -"ID of a previously created document containing the insurance policy. Omit to leave unchanged."New value: +"Insurance document id from create_document." - changed
Input schema / properties / model / descriptionPrevious value: -"New model name or number. Omit to leave unchanged."New value: +"New model." - changed
Input schema / properties / name / descriptionPrevious value: -"New name for the appliance. Omit to leave unchanged."New value: +"New name." - changed
Input schema / properties / notes / descriptionPrevious value: -"Freeform notes about the appliance. Omit to leave unchanged."New value: +"Freeform notes." - changed
Input schema / properties / purchaseDate / descriptionPrevious value: -"Date the appliance was purchased, in YYYY-MM-DD format. Omit or send null to leave unchanged, send an empty string to clear it. Must not be after warrantyExpiryDate."New value: +"Purchase date, YYYY-MM-DD. Must not follow warrantyExpiryDate. Empty string clears it." - changed
Input schema / properties / serialNumber / descriptionPrevious value: -"New manufacturer serial number. Omit to leave unchanged."New value: +"New serial number." - changed
Input schema / properties / warrantyDocumentId / descriptionPrevious value: -"ID of a previously created document containing the warranty paperwork. Omit to leave unchanged."New value: +"Warranty document id from create_document." - changed
Input schema / properties / warrantyExpiryDate / descriptionPrevious value: -"Date the manufacturer warranty expires, in YYYY-MM-DD format. Omit or send null to leave unchanged, send an empty string to clear it. Must not be before purchaseDate."New value: +"Warranty expiry, YYYY-MM-DD. Must not precede purchaseDate. Empty string clears it."
- Changed
update_calendar_event25 fields changed- changed
Input schema / properties / description / descriptionPrevious value: -"New longer free-text description of the event. Omit to leave unchanged. Up to 2000 characters."New value: +"New description." - added
Input schema / properties / description / examplesAdded value: +[ + "Annual checkup with Dr. Smith" +] - changed
Input schema / properties / endDateTime / descriptionPrevious value: -"New end date-time, ISO 8601 in UTC (Z-suffix). Must not be before startDateTime. Omit to leave unchanged."New value: +"New end, ISO 8601 UTC. Must not precede startDateTime." - changed
Input schema / properties / id / descriptionPrevious value: -"Id of the calendar event to update."New value: +"Event id from create_calendar_event or list_calendar_events." - changed
Input schema / properties / isAllDay / descriptionPrevious value: -"True for an all-day event with no specific start/end time; false for a timed event. Omit to leave unchanged."New value: +"True for all-day, false for timed." - added
Input schema / properties / isAllDay / examplesAdded value: +[ + false +] - changed
Input schema / properties / location / descriptionPrevious value: -"New location, replacing the existing one entirely. Omit to leave unchanged. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)."New value: +"Replaces the location outright. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes." - changed
Input schema / properties / location / properties / $type / descriptionPrevious value: -"Location type discriminator"New value: +"Which location shape this is." - added
Input schema / properties / location / properties / $type / examplesAdded value: +[ + "Address" +] - changed
Input schema / properties / location / properties / countryCode / descriptionPrevious value: -"Country code for the address (Address type)."New value: +"ISO country code, e.g. GB." - changed
Input schema / properties / location / properties / line1 / descriptionPrevious value: -"First line of the street address (Address type). At least one of line1-3/postalCode is required when $type is 'Address'."New value: +"Address line 1. An Address needs one of line1-3 or postalCode." - changed
Input schema / properties / location / properties / line2 / descriptionPrevious value: -"Second line of the street address (Address type), e.g. building or suite."New value: +"Address line 2, e.g. flat or suite." - added
Input schema / properties / location / properties / line2 / examplesAdded value: +[ + "Flat 3" +] - changed
Input schema / properties / location / properties / line3 / descriptionPrevious value: -"Third line of the street address (Address type)."New value: +"Address line 3." - added
Input schema / properties / location / properties / line3 / examplesAdded value: +[ + "London" +] - changed
Input schema / properties / location / properties / notes / descriptionPrevious value: -"Notes about the location, e.g. parking instructions or a meeting passcode. Up to 500 characters for OnlineLocation."New value: +"Access detail, e.g. parking or passcode." - added
Input schema / properties / location / properties / notes / examplesAdded value: +[ + "Parking on level 2" +] - changed
Input schema / properties / location / properties / postalCode / descriptionPrevious value: -"Postal or ZIP code (Address type). Up to 20 characters."New value: +"Postal or ZIP code." - changed
Input schema / properties / location / properties / url / descriptionPrevious value: -"URL for online locations (OnlineLocation type). Must be an absolute http/https URL."New value: +"Absolute http/https join link." - added
Input schema / properties / location / properties / url / examplesAdded value: +[ + "https://meet.google.com/abc-defg-hij" +] - changed
Input schema / properties / notes / descriptionPrevious value: -"New freeform notes attached to the event. Omit to leave unchanged. Up to 5000 characters."New value: +"New notes." - added
Input schema / properties / notes / examplesAdded value: +[ + "Moved to Thursday" +] - changed
Input schema / properties / startDateTime / descriptionPrevious value: -"New start date-time, ISO 8601 in UTC (Z-suffix). Wall clock is interpreted against the supplied timezone if any. Omit to leave unchanged."New value: +"New start, ISO 8601 UTC." - changed
Input schema / properties / timezone / descriptionPrevious value: -"IANA timezone id (e.g. 'Europe/London') describing the wall-clock zone of startDateTime/endDateTime; null = UTC. Omit to leave unchanged."New value: +"IANA zone for the wall-clock times, e.g. 'Europe/London'. Null means UTC." - changed
Input schema / properties / title / descriptionPrevious value: -"New event title/summary. Omit to leave unchanged. Up to 200 characters."New value: +"New event title."
- Changed
update_contact22 fields changed- changed
Input schema / properties / address / descriptionPrevious value: -"The contact's postal address. Omit to leave unchanged; when supplied, replaces the whole address."New value: +"Postal address. Replaces the stored one outright." - changed
Input schema / properties / address / properties / countryCode / descriptionPrevious value: -"Country code (e.g., GB, US)"New value: +"ISO country code, e.g. GB." - changed
Input schema / properties / address / properties / line1 / descriptionPrevious value: -"First line of the address, typically house number and street."New value: +"Line 1, typically number and street." - added
Input schema / properties / address / properties / line1 / examplesAdded value: +[ + "12 Baker Street" +] - changed
Input schema / properties / address / properties / line2 / descriptionPrevious value: -"Second line of the address, e.g. apartment, suite, or unit."New value: +"Line 2, e.g. apartment or unit." - added
Input schema / properties / address / properties / line2 / examplesAdded value: +[ + "Flat 3" +] - changed
Input schema / properties / address / properties / line3 / descriptionPrevious value: -"Third line of the address, e.g. town or city."New value: +"Line 3, e.g. town or city." - added
Input schema / properties / address / properties / line3 / examplesAdded value: +[ + "London" +] - changed
Input schema / properties / dateOfBirth / descriptionPrevious value: -"YYYY-MM-DD format. Omit or pass null to leave unchanged; pass an empty string to clear it."New value: +"Date of birth, YYYY-MM-DD. Empty string clears it." - changed
Input schema / properties / displayName / descriptionPrevious value: -"An alternate name to show for the contact instead of first/last, e.g. a nickname, company name, or role. Omit to leave unchanged."New value: +"Name to show instead of first/last, e.g. a nickname or company." - added
Input schema / properties / displayName / examplesAdded value: +[ + "Sarah from book club" +] - changed
Input schema / properties / email / descriptionPrevious value: -"The contact's email address. Omit to leave unchanged."New value: +"Email address." - changed
Input schema / properties / firstName / descriptionPrevious value: -"The contact's first name. Omit to leave unchanged."New value: +"First name." - added
Input schema / properties / firstName / examplesAdded value: +[ + "Sarah" +] - changed
Input schema / properties / id / descriptionPrevious value: -"The id of the contact to update, as returned by create_contact or list_contacts."New value: +"Contact id from create_contact or list_contacts." - changed
Input schema / properties / lastName / descriptionPrevious value: -"The contact's last (family) name. Omit to leave unchanged."New value: +"Last (family) name." - added
Input schema / properties / lastName / examplesAdded value: +[ + "Jones" +] - changed
Input schema / properties / notes / descriptionPrevious value: -"Free-text notes about the contact. Omit to leave unchanged."New value: +"Free-text notes." - added
Input schema / properties / notes / examplesAdded value: +[ + "Prefers texts over calls." +] - changed
Input schema / properties / phone / descriptionPrevious value: -"The contact's phone number, in any format. Omit to leave unchanged."New value: +"Phone number, any format." - changed
Input schema / properties / prepareBirthdayPresent / descriptionPrevious value: -"Whether to prepare a birthday present for this contact. Omit to leave unchanged."New value: +"Whether to flag a birthday present for them." - added
Input schema / properties / prepareBirthdayPresent / examplesAdded value: +[ + true +]
- Changed
update_document12 fields changed- changed
Input schema / properties / documentNumber / descriptionPrevious value: -"The document's reference or serial number, e.g. a passport number or insurance policy number. Omit to leave unchanged."New value: +"Reference or serial number, e.g. a passport or policy number." - changed
Input schema / properties / documentType / descriptionPrevious value: -"The kind of document being stored. Omit to leave unchanged."New value: +"Kind of document." - changed
Input schema / properties / fee / descriptionPrevious value: -"The cost associated with the document, e.g. a renewal or issuance fee. Omit to leave unchanged; when supplied, replaces the whole fee."New value: +"Cost. Replaces the stored fee outright." - changed
Input schema / properties / fee / properties / currencyCode / descriptionPrevious value: -"ISO 4217 code"New value: +"ISO 4217 code, three letters." - changed
Input schema / properties / fee / properties / value / descriptionPrevious value: -"Amount in smallest currency unit"New value: +"Amount in minor units, e.g. pence." - changed
Input schema / properties / id / descriptionPrevious value: -"The id of the document to update, as returned by create_document or list_documents."New value: +"Document id from create_document or list_documents." - changed
Input schema / properties / issuingAuthority / descriptionPrevious value: -"The organization or authority that issued the document. Omit to leave unchanged."New value: +"Who issued it." - changed
Input schema / properties / notes / descriptionPrevious value: -"Free-text notes about the document. Omit to leave unchanged."New value: +"Free-text notes." - added
Input schema / properties / notes / examplesAdded value: +[ + "Renewed for another 10 years." +] - changed
Input schema / properties / renewalCronExpression / descriptionPrevious value: -"Reserved for a future renewal-reminder schedule. Currently accepted but not persisted or acted on by document updates — has no effect yet."New value: +"Accepted but not yet stored or acted on; has no effect." - added
Input schema / properties / renewalCronExpression / examplesAdded value: +[ + "0 0 1 1 *" +] - changed
Input schema / properties / title / descriptionPrevious value: -"A custom title for the document. Omit to leave unchanged."New value: +"Custom title."
- Changed
update_meal_plan11 fields changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date of the planned meal (format: YYYY-MM-DD). Must be from today up to four weeks ahead. Omit to leave unchanged."New value: +"Date, YYYY-MM-DD. Must be today or within the next 28 days, so work it out from today's date." - removed
Input schema / properties / date / examplesRemoved value: -[ - "2026-07-16" -] - changed
Input schema / properties / id / descriptionPrevious value: -"ID of the meal plan entry to update (from list_meal_plans)"New value: +"Entry id from list_meal_plans." - changed
Input schema / properties / mealType / descriptionPrevious value: -"Which meal slot of the day this entry occupies. Omit to leave unchanged."New value: +"Meal slot of the day." - changed
Input schema / properties / name / descriptionPrevious value: -"Custom meal name when no recipe is linked"New value: +"Custom meal name when no recipe is linked." - added
Input schema / properties / name / examplesAdded value: +[ + "Leftover curry" +] - changed
Input schema / properties / notes / descriptionPrevious value: -"Optional free-text notes about the planned meal. Omit to leave unchanged."New value: +"Free-text notes." - added
Input schema / properties / notes / examplesAdded value: +[ + "Double the rice" +] - changed
Input schema / properties / recipeId / descriptionPrevious value: -"ID of an existing recipe (from list_recipes or list_global_recipes)"New value: +"Recipe id from list_recipes or list_global_recipes." - changed
Input schema / properties / recipeSource / descriptionPrevious value: -"Set 'global' when recipeId refers to a Discover/global recipe (from list_global_recipes); defaults to 'household'"New value: +"Use 'global' when recipeId came from list_global_recipes. Defaults to 'household'." - changed
Input schema / properties / servings / descriptionPrevious value: -"Number of servings for the planned meal. Between 1 and 100. Omit to leave unchanged."New value: +"Servings, 1-100."
- Changed
update_memory3 fields changed- changed
Input schema / properties / content / descriptionPrevious value: -"Replacement body. Omit to leave unchanged."New value: +"New body." - changed
Input schema / properties / description / descriptionPrevious value: -"Replacement single-line summary. Omit to leave unchanged."New value: +"New single-line summary." - changed
Input schema / properties / name / descriptionPrevious value: -"Replacement kebab-case slug. Omit to leave unchanged."New value: +"New kebab-case slug."
- Changed
update_pet7 fields changed- changed
Input schema / properties / dateOfBirth / descriptionPrevious value: -"The pet's date of birth, in YYYY-MM-DD format. Omit or send null to leave unchanged, send an empty string to clear it."New value: +"Date of birth, YYYY-MM-DD. Empty string clears it." - changed
Input schema / properties / id / descriptionPrevious value: -"ID of the pet to update."New value: +"Pet id from list_pets." - changed
Input schema / properties / insuranceDocumentId / descriptionPrevious value: -"ID of a previously created document containing the pet's insurance policy. Omit to leave unchanged."New value: +"Insurance document id from create_document." - changed
Input schema / properties / microchipNumber / descriptionPrevious value: -"New microchip identification number. Omit to leave unchanged."New value: +"New microchip number." - changed
Input schema / properties / name / descriptionPrevious value: -"New name for the pet. Omit to leave unchanged."New value: +"New name." - changed
Input schema / properties / notes / descriptionPrevious value: -"Freeform notes about the pet. Omit to leave unchanged."New value: +"Freeform notes." - changed
Input schema / properties / vetContactId / descriptionPrevious value: -"ID of a previously created contact for the pet's vet. Omit to leave unchanged."New value: +"Vet contact id from create_contact."
- Changed
update_recipe10 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID of the recipe to update (from list_recipes)"New value: +"Recipe id from list_recipes." - changed
Input schema / properties / ingredients / descriptionPrevious value: -"List of ingredients required for the recipe. Providing this replaces the entire existing ingredient list rather than merging with it. Omit to leave the ingredients unchanged."New value: +"Ingredients. Replaces the whole existing list rather than merging." - added
Input schema / properties / ingredients / items / descriptionAdded value: +"One ingredient and its quantity." - changed
Input schema / properties / ingredients / items / properties / name / descriptionPrevious value: -"Ingredient name"New value: +"Ingredient name." - changed
Input schema / properties / ingredients / items / properties / quantity / descriptionPrevious value: -"Whole-number quantity of the ingredient (no fractional/unit support). Minimum: 1"New value: +"Whole-number quantity, minimum 1. No fractions or units." - changed
Input schema / properties / instructions / descriptionPrevious value: -"Free-text cooking instructions/method. Omit to leave unchanged."New value: +"Cooking method." - added
Input schema / properties / instructions / examplesAdded value: +[ + "Marinate the chicken, then simmer in the spiced sauce." +] - changed
Input schema / properties / name / descriptionPrevious value: -"Recipe name/title. Omit to leave unchanged."New value: +"Name." - changed
Input schema / properties / servings / descriptionPrevious value: -"Number of servings the recipe yields. Minimum: 1. Omit to leave unchanged."New value: +"Servings the recipe yields, minimum 1." - changed
Input schema / properties / url / descriptionPrevious value: -"Source URL the recipe was found at. Omit to leave unchanged."New value: +"Source URL."
- Changed
update_recurring_calendar_event30 fields changed- changed
Input schema / properties / cronExpression / descriptionPrevious value: -"New recurrence interval, NOT a cron expression despite the field name. Format is 'N Unit' where N is a positive integer and Unit is one of Day, Week, Month, Year (case-sensitive), e.g. '1 Day', '2 Week', '1 Month', '1 Year'. Omit to leave unchanged. Changing this deletes and regenerates future instances."New value: +"New interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax." - changed
Input schema / properties / description / descriptionPrevious value: -"New longer free-text description. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 2000 characters."New value: +"New description, patched onto existing instances." - added
Input schema / properties / description / examplesAdded value: +[ + "Sync on sprint progress" +] - changed
Input schema / properties / duration / descriptionPrevious value: -"New length of each instance, in ISO 8601 duration format. Omit to leave unchanged. Changing this deletes and regenerates future instances."New value: +"Length of each instance, ISO 8601 duration e.g. 'PT30M'." - changed
Input schema / properties / endDate / descriptionPrevious value: -"PATCH-style date field: omit or send null to leave the stored end date unchanged, send an empty string to clear it (recurrence becomes unbounded by date), or send 'YYYY-MM-DD' to set a new last occurrence date. Changing this deletes and regenerates future instances."New value: +"New last date, YYYY-MM-DD. Empty string leaves it unbounded." - changed
Input schema / properties / id / descriptionPrevious value: -"Id of the recurring calendar event (template) to update."New value: +"Template id from create_recurring_calendar_event." - changed
Input schema / properties / isAllDay / descriptionPrevious value: -"True if generated instances are all-day events; false for timed instances. Omit to leave unchanged. Changing this deletes and regenerates future instances."New value: +"True for all-day instances, false for timed." - added
Input schema / properties / isAllDay / examplesAdded value: +[ + false +] - changed
Input schema / properties / location / descriptionPrevious value: -"New location, replacing the existing one entirely. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)."New value: +"Replaces the location outright. $type 'Address' takes line1-3/postalCode/countryCode; 'OnlineLocation' takes url/notes." - changed
Input schema / properties / location / properties / $type / descriptionPrevious value: -"Location type discriminator"New value: +"Which location shape this is." - added
Input schema / properties / location / properties / $type / examplesAdded value: +[ + "Address" +] - changed
Input schema / properties / location / properties / countryCode / descriptionPrevious value: -"Country code for the address (Address type)."New value: +"ISO country code, e.g. GB." - changed
Input schema / properties / location / properties / line1 / descriptionPrevious value: -"First line of the street address (Address type). At least one of line1-3/postalCode is required when $type is 'Address'."New value: +"Address line 1. An Address needs one of line1-3 or postalCode." - changed
Input schema / properties / location / properties / line2 / descriptionPrevious value: -"Second line of the street address (Address type), e.g. building or suite."New value: +"Address line 2, e.g. flat or suite." - added
Input schema / properties / location / properties / line2 / examplesAdded value: +[ + "Flat 3" +] - changed
Input schema / properties / location / properties / line3 / descriptionPrevious value: -"Third line of the street address (Address type)."New value: +"Address line 3." - added
Input schema / properties / location / properties / line3 / examplesAdded value: +[ + "London" +] - changed
Input schema / properties / location / properties / notes / descriptionPrevious value: -"Notes about the location, e.g. parking instructions or a meeting passcode. Up to 500 characters for OnlineLocation."New value: +"Access detail, e.g. parking or passcode." - added
Input schema / properties / location / properties / notes / examplesAdded value: +[ + "Bring your laptop" +] - changed
Input schema / properties / location / properties / postalCode / descriptionPrevious value: -"Postal or ZIP code (Address type). Up to 20 characters."New value: +"Postal or ZIP code." - changed
Input schema / properties / location / properties / url / descriptionPrevious value: -"URL for online locations (OnlineLocation type). Must be an absolute http/https URL."New value: +"Absolute http/https join link." - added
Input schema / properties / location / properties / url / examplesAdded value: +[ + "https://meet.google.com/abc-defg-hij" +] - changed
Input schema / properties / maxOccurrences / descriptionPrevious value: -"New maximum number of instances to generate. Omit to leave unchanged. Changing this deletes and regenerates future instances."New value: +"New cap on instances generated." - changed
Input schema / properties / notes / descriptionPrevious value: -"New freeform notes. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 5000 characters."New value: +"New notes." - added
Input schema / properties / notes / examplesAdded value: +[ + "Bring your laptop" +] - changed
Input schema / properties / startDate / descriptionPrevious value: -"PATCH-style date field: omit or send null to leave the stored start date unchanged, send an empty string to clear it, or send 'YYYY-MM-DD' to set a new anchor date. Changing this deletes and regenerates future instances."New value: +"New first-instance date, YYYY-MM-DD. Empty string clears it." - changed
Input schema / properties / startTime / descriptionPrevious value: -"New time of day each instance starts, in HH:mm:ss format (local to timezone). Omit to leave unchanged. Changing this deletes and regenerates future instances."New value: +"New local start time, HH:mm:ss." - changed
Input schema / properties / timezone / descriptionPrevious value: -"IANA timezone id (e.g. 'Europe/London') that startTime is in. Omit to leave unchanged; null resets to UTC. Changing this regenerates instances."New value: +"IANA zone for startTime, e.g. 'Europe/London'. Occurrences follow its DST." - changed
Input schema / properties / title / descriptionPrevious value: -"New event title/summary. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 200 characters."New value: +"New title, patched onto existing instances." - added
Input schema / properties / title / examplesAdded value: +[ + "Weekly team standup" +]
- Changed
update_recurring_task12 fields changed- changed
Input schema / properties / assigneeRotation / descriptionPrevious value: -"New ordered list of household member IDs to round-robin through, replacing the existing rotation entirely. Applies to instances generated after this change; already-created instances are unaffected. Omit to leave the rotation unchanged."New value: +"A member id from list_house_members." - changed
Input schema / properties / assigneeRotation / items / descriptionPrevious value: -"A household member ID (from list_house_members) taking a turn in the rotation."New value: +"Replacement rotation of member ids, round-robined one per instance. Applies to instances generated after this change." - changed
Input schema / properties / cronExpression / descriptionPrevious value: -"New recurrence frequency expression in the format 'N Unit', e.g. '2 Week' for every two weeks. Unit must be exactly Day, Week, Month, or Year (case-sensitive). Despite the parameter name, this is not cron syntax. Changing this deletes uncompleted future instances and regenerates them from the new schedule."New value: +"New interval as 'N Unit', Unit one of Day, Week, Month, Year, e.g. '2 Week'. Not cron syntax." - changed
Input schema / properties / endDate / descriptionPrevious value: -"New end date for the schedule (inclusive), in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string for an open-ended schedule. Changing this regenerates future uncompleted instances."New value: +"New inclusive end date, YYYY-MM-DD. Empty string makes it open-ended." - changed
Input schema / properties / id / descriptionPrevious value: -"The recurring task's ID, as returned by create_recurring_task or list_recurring_tasks."New value: +"Template id from create_recurring_task." - changed
Input schema / properties / maxOccurrences / descriptionPrevious value: -"New maximum total number of instances to generate. Changing this regenerates future uncompleted instances."New value: +"New cap on instances generated." - changed
Input schema / properties / notes / descriptionPrevious value: -"New notes for the template, copied to existing uncompleted generated instances. Omit to leave unchanged."New value: +"New notes, copied to uncompleted instances." - added
Input schema / properties / notes / examplesAdded value: +[ + "Blue bin only" +] - changed
Input schema / properties / preparationDays / descriptionPrevious value: -"Number of days before each occurrence's due date to set that instance's preparation date. Only affects instances generated after this change; existing uncompleted instances keep their original preparation date unless a frequency, start date, end date, or max-occurrences change also triggers regeneration."New value: +"Days before each due date to set that instance's preparation date. Applies to instances generated after this change." - changed
Input schema / properties / startDate / descriptionPrevious value: -"New start date for the schedule, in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string to clear it. Changing this regenerates future uncompleted instances."New value: +"New start date, YYYY-MM-DD. Empty string clears it." - changed
Input schema / properties / title / descriptionPrevious value: -"New title for the template. Existing uncompleted generated instances are updated to match; completed ones keep their original title. Omit to leave unchanged."New value: +"New title. Uncompleted instances are updated to match; completed ones keep theirs." - added
Input schema / properties / title / examplesAdded value: +[ + "Take out the recycling" +]
- Changed
update_shopping_list_item5 fields changed- changed
Input schema / properties / category / descriptionPrevious value: -"New store-aisle category for the item, overriding any auto-assigned category. Omit to leave the current category unchanged."New value: +"New store-aisle category, overriding the auto-assigned one." - changed
Input schema / properties / id / descriptionPrevious value: -"The ID of the shopping list item to update, as returned by add_shopping_list_item, batch_add_shopping_list_items, or list_shopping_list_items."New value: +"Item id from add_shopping_list_item or list_shopping_list_items." - changed
Input schema / properties / name / descriptionPrevious value: -"New name for the item. Maximum 200 characters. Omit to leave the current name unchanged."New value: +"New item name." - changed
Input schema / properties / quantity / descriptionPrevious value: -"New quantity for the item, replacing (not adding to) the current quantity. Minimum 1, maximum 9999. Omit to leave the current quantity unchanged."New value: +"New quantity, 1-9999. Replaces rather than adds to the current one." - added
Input schema / properties / shoppingListIdAdded value: +{ + "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" +}
- Changed
update_subscription13 fields changed- changed
Input schema / properties / fee / descriptionPrevious value: -"The recurring charge for this subscription. Omit to leave unchanged."New value: +"Recurring charge." - changed
Input schema / properties / fee / properties / currencyCode / descriptionPrevious value: -"ISO 4217 currency code (3 letters)."New value: +"ISO 4217 code, three letters." - changed
Input schema / properties / fee / properties / value / descriptionPrevious value: -"Amount in the smallest currency unit (e.g. cents for USD)."New value: +"Amount in minor units, e.g. cents." - changed
Input schema / properties / id / descriptionPrevious value: -"ID of the subscription to update."New value: +"Subscription id from list_subscriptions." - changed
Input schema / properties / name / descriptionPrevious value: -"Display name of the subscription. Omit to leave unchanged."New value: +"New name." - added
Input schema / properties / name / examplesAdded value: +[ + "Netflix" +] - changed
Input schema / properties / notes / descriptionPrevious value: -"Free-text notes about the subscription. Omit to leave unchanged, or send an empty string to clear the notes."New value: +"Free-text notes. Empty string clears them." - added
Input schema / properties / notes / examplesAdded value: +[ + "Paused while travelling" +] - changed
Input schema / properties / remindMe / descriptionPrevious value: -"Whether to send renewal reminders for this subscription"New value: +"Whether to remind the household before each renewal." - added
Input schema / properties / remindMe / examplesAdded value: +[ + true +] - changed
Input schema / properties / renewalCronExpression / descriptionPrevious value: -"Cron expression describing how often the subscription renews. Must not repeat more frequently than once a day. Omit to leave unchanged, or send an empty string to clear the renewal schedule."New value: +"Cron expression for the renewal cadence, no more often than daily. Empty string clears it." - changed
Input schema / properties / status / descriptionPrevious value: -"New lifecycle status for the subscription. Omit to leave unchanged."New value: +"New status." - added
Input schema / properties / status / examplesAdded value: +[ + "Paused" +]
- Changed
update_task8 fields changed- changed
Input schema / properties / assignedToMemberId / descriptionPrevious value: -"Member ID to assign, or empty string to unassign. Omit to leave the current assignment unchanged."New value: +"Member id to assign. Empty string unassigns." - changed
Input schema / properties / dueDate / descriptionPrevious value: -"YYYY-MM-DD format, or empty string to clear. Omit to leave unchanged."New value: +"New due date, YYYY-MM-DD. Empty string clears it." - changed
Input schema / properties / id / descriptionPrevious value: -"The task's ID, as returned by create_task or list_tasks."New value: +"Task id from create_task or list_tasks." - changed
Input schema / properties / notes / descriptionPrevious value: -"Freeform notes about the task. Not for assignment info. Omit to leave unchanged."New value: +"Freeform notes. Not for assignment info." - added
Input schema / properties / notes / examplesAdded value: +[ + "Blue bin only" +] - changed
Input schema / properties / preparationDate / descriptionPrevious value: -"YYYY-MM-DD format, or empty string to clear. Omit to leave unchanged."New value: +"New preparation date, YYYY-MM-DD. Must not follow dueDate. Empty string clears it." - changed
Input schema / properties / title / descriptionPrevious value: -"New title for the task. Omit to leave unchanged; max 200 characters."New value: +"New title." - added
Input schema / properties / title / examplesAdded value: +[ + "Take out the recycling" +]
- Changed
update_vehicle14 fields changed- changed
Input schema / properties / colour / descriptionPrevious value: -"Colour of the vehicle. Omit to leave unchanged, or send an empty string to clear it."New value: +"Colour." - changed
Input schema / properties / id / descriptionPrevious value: -"ID of the vehicle to update."New value: +"Vehicle id from list_vehicles." - changed
Input schema / properties / insuranceDocumentId / descriptionPrevious value: -"Document ID of the associated insurance policy document. Omit to leave unchanged, or send an empty string to clear it."New value: +"Insurance document id from list_documents." - added
Input schema / properties / insuranceDocumentId / examplesAdded value: +[ + "01928e4a7d3f7b9ac1e3f6d8b2a4c710" +] - changed
Input schema / properties / make / descriptionPrevious value: -"Manufacturer of the vehicle, e.g. 'Toyota'. Omit to leave unchanged, or send an empty string to clear it."New value: +"Manufacturer, e.g. 'Toyota'." - changed
Input schema / properties / model / descriptionPrevious value: -"Model name of the vehicle, e.g. 'Corolla'. Omit to leave unchanged, or send an empty string to clear it."New value: +"Model, e.g. 'Corolla'." - changed
Input schema / properties / motDueDate / descriptionPrevious value: -"Date the next MOT (roadworthiness test) is due, in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string to clear it."New value: +"Next MOT (roadworthiness test) due date, YYYY-MM-DD." - changed
Input schema / properties / notes / descriptionPrevious value: -"Free-text notes about the vehicle. Omit to leave unchanged, or send an empty string to clear it."New value: +"Free-text notes." - added
Input schema / properties / notes / examplesAdded value: +[ + "Renewed tax disc" +] - changed
Input schema / properties / registration / descriptionPrevious value: -"The vehicle's registration/licence plate as shown on the plate. Free-text; format varies by country. Omit to leave unchanged, or send an empty string to clear it."New value: +"Registration as shown on the plate; format varies by country." - changed
Input schema / properties / serviceDueDate / descriptionPrevious value: -"Date the vehicle's next scheduled service is due, in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string to clear it."New value: +"Next service due date, YYYY-MM-DD." - changed
Input schema / properties / taxDueDate / descriptionPrevious value: -"Date the vehicle's road tax is next due, in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string to clear it."New value: +"Next road tax due date, YYYY-MM-DD." - changed
Input schema / properties / vin / descriptionPrevious value: -"Vehicle Identification Number: a 17-character alphanumeric code unique to the vehicle. Omit to leave unchanged, or send an empty string to clear it."New value: +"Vehicle Identification Number, 17 alphanumeric characters." - changed
Input schema / properties / year / descriptionPrevious value: -"Model year of the vehicle. Must be between 1900 and 2100. Omit to leave unchanged."New value: +"Model year, 1900-2100."
68 tool updates
- Changed
add_shopping_list_item5 fields changed- added
Input schema / examplesAdded value: +[ + { + "name": "Milk", + "quantity": 2 + } +] - added
Input schema / properties / name / descriptionAdded value: +"The name of the item to add, e.g. 'Milk' or 'Paper towels'. Maximum 200 characters. For a brand-new item, a category is auto-assigned from the name. If an unbought item with a matching name is already on the list, its quantity is increased instead of creating a duplicate entry, and the existing item keeps its current category unchanged." - added
Input schema / properties / name / examplesAdded value: +[ + "Milk" +] - changed
Input schema / properties / quantity / descriptionPrevious value: -"Minimum: 1"New value: +"How many of the item to add. Defaults to 1 if omitted. Minimum 1, maximum 9999. When merged into an existing unbought item, this is added to the existing quantity (capped at 9999)." - added
Input schema / properties / quantity / examplesAdded value: +[ + 2 +]
- Changed
assign_task4 fields changed- added
Input schema / examplesAdded value: +[ + { + "assignedToMemberId": "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e", + "id": "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a" + } +] - added
Input schema / properties / assignedToMemberId / examplesAdded value: +[ + "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e" +] - added
Input schema / properties / id / descriptionAdded value: +"The task's ID, as returned by create_task or list_tasks." - added
Input schema / properties / id / examplesAdded value: +[ + "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a" +]
- Changed
batch_add_shopping_list_items6 fields changed- added
Input schema / examplesAdded value: +[ + { + "items": [ + { + "name": "Milk", + "quantity": 2 + }, + { + "name": "Eggs", + "quantity": 1 + } + ] + } +] - changed
Input schema / properties / items / descriptionPrevious value: -"List of items to add to the shopping list"New value: +"List of items to add to the shopping list in a single call. Up to 25 items per call." - added
Input schema / properties / items / items / properties / name / descriptionAdded value: +"The name of the item to add, e.g. 'Milk' or 'Paper towels'. Maximum 200 characters. Items are deduplicated within the batch by name (summing quantities) and merged into any matching unbought item already on the list." - added
Input schema / properties / items / items / properties / name / examplesAdded value: +[ + "Milk" +] - added
Input schema / properties / items / items / properties / quantity / descriptionAdded value: +"How many of the item to add. Minimum 1, maximum 9999 (summed quantities are capped at 9999 when deduplicated or merged with an existing item)." - added
Input schema / properties / items / items / properties / quantity / examplesAdded value: +[ + 2 +]
- Changed
buy_shopping_list_item5 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "0189c8d4f2b1712a9e4d6c9a1b2e3f4a", + "quantityToBuy": 1 + } +] - added
Input schema / properties / id / descriptionAdded value: +"The ID of the shopping list item to buy, as returned by add_shopping_list_item, batch_add_shopping_list_items, or list_shopping_list_items." - added
Input schema / properties / id / examplesAdded value: +[ + "0189c8d4f2b1712a9e4d6c9a1b2e3f4a" +] - changed
Input schema / properties / quantityToBuy / descriptionPrevious value: -"Defaults to 1. Minimum: 1"New value: +"How many units to mark as bought. Defaults to 1. Minimum: 1, maximum 9999. If this meets or exceeds the item's remaining quantity, the item is fully bought and removed from the active list; otherwise its quantity is reduced by this amount." - added
Input schema / properties / quantityToBuy / examplesAdded value: +[ + 1 +]
- Changed
complete_task3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a" + } +] - added
Input schema / properties / id / descriptionAdded value: +"The task's ID, as returned by create_task or list_tasks." - added
Input schema / properties / id / examplesAdded value: +[ + "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a" +]
- Changed
create_appliance19 fields changed- added
Input schema / examplesAdded value: +[ + { + "brand": "Samsung", + "model": "RF28R7351SG", + "name": "Kitchen Refrigerator", + "purchaseDate": "2023-11-04", + "serialNumber": "S/N-4471829", + "warrantyExpiryDate": "2025-11-04" + } +] - added
Input schema / properties / brand / descriptionAdded value: +"Manufacturer or brand name." - added
Input schema / properties / brand / examplesAdded value: +[ + "Samsung" +] - changed
Input schema / properties / insuranceDocumentId / descriptionPrevious value: -"Document ID of insurance policy"New value: +"ID of a previously created document containing the insurance policy." - added
Input schema / properties / insuranceDocumentId / examplesAdded value: +[ + "doc_1a2b3c4d5e6f" +] - added
Input schema / properties / model / descriptionAdded value: +"Model name or number, as printed on the appliance or its manual." - added
Input schema / properties / model / examplesAdded value: +[ + "RF28R7351SG" +] - added
Input schema / properties / name / descriptionAdded value: +"Name of the appliance, e.g. what it is or where it's located." - added
Input schema / properties / name / examplesAdded value: +[ + "Kitchen Refrigerator" +] - added
Input schema / properties / notes / descriptionAdded value: +"Freeform notes about the appliance." - added
Input schema / properties / notes / examplesAdded value: +[ + "Extended warranty purchased in-store, receipt in the kitchen drawer." +] - changed
Input schema / properties / purchaseDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Date the appliance was purchased, in YYYY-MM-DD format." - added
Input schema / properties / purchaseDate / examplesAdded value: +[ + "2023-11-04" +] - added
Input schema / properties / serialNumber / descriptionAdded value: +"Manufacturer serial number, used when contacting support or filing a warranty claim." - added
Input schema / properties / serialNumber / examplesAdded value: +[ + "S/N-4471829" +] - changed
Input schema / properties / warrantyDocumentId / descriptionPrevious value: -"Document ID of warranty"New value: +"ID of a previously created document containing the warranty paperwork." - added
Input schema / properties / warrantyDocumentId / examplesAdded value: +[ + "doc_8f3a1c2b9e4d" +] - changed
Input schema / properties / warrantyExpiryDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Date the manufacturer warranty expires, in YYYY-MM-DD format. Must not be before purchaseDate." - added
Input schema / properties / warrantyExpiryDate / examplesAdded value: +[ + "2025-11-04" +]
- Changed
create_calendar_event25 fields changed- added
Input schema / examplesAdded value: +[ + { + "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", + "startDateTime": "2026-08-03T14:30:00Z", + "timezone": "Europe/London", + "title": "Dentist appointment" + } +] - added
Input schema / properties / description / descriptionAdded value: +"Longer free-text description of the event. Up to 2000 characters." - added
Input schema / properties / description / examplesAdded value: +[ + "Annual checkup with Dr. Smith" +] - changed
Input schema / properties / endDateTime / descriptionPrevious value: -"ISO 8601 date-time in UTC (Z-suffix)"New value: +"ISO 8601 date-time in UTC (Z-suffix). Must not be before startDateTime." - added
Input schema / properties / endDateTime / examplesAdded value: +[ + "2026-08-03T15:30:00Z" +] - added
Input schema / properties / isAllDay / descriptionAdded value: +"True for an all-day event with no specific start/end time; false for a timed event." - added
Input schema / properties / isAllDay / examplesAdded value: +[ + false +] - added
Input schema / properties / location / properties / countryCode / descriptionAdded value: +"Country code for the address (Address type)." - added
Input schema / properties / location / properties / countryCode / examplesAdded value: +[ + "GB" +] - added
Input schema / properties / location / properties / line1 / descriptionAdded value: +"First line of the street address (Address type). At least one of line1-3/postalCode is required when $type is 'Address'." - added
Input schema / properties / location / properties / line1 / examplesAdded value: +[ + "221B Baker Street" +] - added
Input schema / properties / location / properties / line2 / descriptionAdded value: +"Second line of the street address (Address type), e.g. building or suite." - added
Input schema / properties / location / properties / line2 / examplesAdded value: +[ + "Flat 3" +] - added
Input schema / properties / location / properties / line3 / descriptionAdded value: +"Third line of the street address (Address type)." - added
Input schema / properties / location / properties / notes / descriptionAdded value: +"Notes about the location, e.g. parking instructions or a meeting passcode. Up to 500 characters for OnlineLocation." - added
Input schema / properties / location / properties / postalCode / descriptionAdded value: +"Postal or ZIP code (Address type). Up to 20 characters." - added
Input schema / properties / location / properties / postalCode / examplesAdded value: +[ + "NW1 6XE" +] - changed
Input schema / properties / location / properties / url / descriptionPrevious value: -"URL for online locations"New value: +"URL for online locations (OnlineLocation type). Must be an absolute http/https URL." - added
Input schema / properties / location / properties / url / examplesAdded value: +[ + "https://meet.google.com/abc-defg-hij" +] - added
Input schema / properties / notes / descriptionAdded value: +"Freeform notes attached to the event. Up to 5000 characters." - added
Input schema / properties / notes / examplesAdded value: +[ + "Bring insurance card" +] - added
Input schema / properties / startDateTime / examplesAdded value: +[ + "2026-08-03T14:30:00Z" +] - added
Input schema / properties / timezone / examplesAdded value: +[ + "Europe/London" +] - added
Input schema / properties / title / descriptionAdded value: +"Event title/summary shown in calendar views. Required, up to 200 characters." - added
Input schema / properties / title / examplesAdded value: +[ + "Dentist appointment" +]
- Changed
create_contact18 fields changed- added
Input schema / examplesAdded value: +[ + { + "address": { + "countryCode": "GB", + "line1": "12 Baker Street", + "postalCode": "NW1 6XE" + }, + "dateOfBirth": "1990-05-15", + "email": "sarah.jones@example.com", + "firstName": "Sarah", + "lastName": "Jones", + "notes": "Met at the neighbourhood BBQ.", + "phone": "+44 7911 123456", + "prepareBirthdayPresent": true + } +] - added
Input schema / properties / address / descriptionAdded value: +"The contact's postal address." - added
Input schema / properties / address / properties / countryCode / examplesAdded value: +[ + "GB" +] - added
Input schema / properties / address / properties / line1 / descriptionAdded value: +"First line of the address, typically house number and street." - added
Input schema / properties / address / properties / line2 / descriptionAdded value: +"Second line of the address, e.g. apartment, suite, or unit." - added
Input schema / properties / address / properties / line3 / descriptionAdded value: +"Third line of the address, e.g. town or city." - added
Input schema / properties / address / properties / postalCode / descriptionAdded value: +"Postal or ZIP code." - added
Input schema / properties / address / properties / postalCode / examplesAdded value: +[ + "NW1 6XE" +] - added
Input schema / properties / dateOfBirth / examplesAdded value: +[ + "1990-05-15" +] - added
Input schema / properties / displayName / descriptionAdded value: +"An alternate name to show for the contact instead of first/last, e.g. a nickname, company name, or role." - added
Input schema / properties / email / descriptionAdded value: +"The contact's email address." - added
Input schema / properties / email / examplesAdded value: +[ + "sarah.jones@example.com" +] - added
Input schema / properties / firstName / descriptionAdded value: +"The contact's first name. The only required field." - added
Input schema / properties / firstName / examplesAdded value: +[ + "Sarah" +] - added
Input schema / properties / lastName / descriptionAdded value: +"The contact's last (family) name." - added
Input schema / properties / notes / descriptionAdded value: +"Free-text notes about the contact." - added
Input schema / properties / phone / descriptionAdded value: +"The contact's phone number, in any format." - added
Input schema / properties / phone / examplesAdded value: +[ + "+44 7911 123456" +]
- Changed
create_document14 fields changed- added
Input schema / examplesAdded value: +[ + { + "documentNumber": "512345678", + "documentType": "Passport", + "fee": { + "currencyCode": "GBP", + "value": 8250 + }, + "issuingAuthority": "HM Passport Office", + "notes": "Renew before the next family trip.", + "title": "UK Passport" + } +] - added
Input schema / properties / documentNumber / descriptionAdded value: +"The document's reference or serial number, e.g. a passport number or insurance policy number." - added
Input schema / properties / documentNumber / examplesAdded value: +[ + "512345678" +] - added
Input schema / properties / documentType / descriptionAdded value: +"The kind of document being stored." - added
Input schema / properties / documentType / examplesAdded value: +[ + "Passport" +] - added
Input schema / properties / fee / descriptionAdded value: +"The cost associated with the document, e.g. a renewal or issuance fee." - added
Input schema / properties / fee / properties / currencyCode / examplesAdded value: +[ + "GBP" +] - added
Input schema / properties / fee / properties / value / examplesAdded value: +[ + 8250 +] - added
Input schema / properties / issuingAuthority / descriptionAdded value: +"The organization or authority that issued the document." - added
Input schema / properties / issuingAuthority / examplesAdded value: +[ + "HM Passport Office" +] - added
Input schema / properties / notes / descriptionAdded value: +"Free-text notes about the document." - changed
Input schema / properties / renewalCronExpression / descriptionPrevious value: -"Cron expression for renewal"New value: +"Reserved for a future renewal-reminder schedule. Currently accepted but not persisted or acted on by document creation — has no effect yet." - added
Input schema / properties / title / descriptionAdded value: +"A custom title for the document. If omitted, one is derived from the document type and number, e.g. 'Passport - 512345678'." - added
Input schema / properties / title / examplesAdded value: +[ + "UK Passport" +]
- Changed
create_meal_plan10 fields changed- added
Input schema / examplesAdded value: +[ + { + "date": "2026-07-16", + "mealType": "dinner", + "recipeId": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 4 + } +] - changed
Input schema / properties / date / descriptionPrevious value: -"Date of the planned meal (format: YYYY-MM-DD)"New value: +"Date of the planned meal (format: YYYY-MM-DD). Must be from today up to four weeks ahead." - added
Input schema / properties / date / examplesAdded value: +[ + "2026-07-16" +] - added
Input schema / properties / mealType / descriptionAdded value: +"Which meal slot of the day this entry occupies" - added
Input schema / properties / mealType / examplesAdded value: +[ + "dinner" +] - added
Input schema / properties / notes / descriptionAdded value: +"Optional free-text notes about the planned meal" - added
Input schema / properties / recipeId / examplesAdded value: +[ + "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f" +] - added
Input schema / properties / recipeSource / examplesAdded value: +[ + "household" +] - changed
Input schema / properties / servings / descriptionPrevious value: -"Between 1 and 100"New value: +"Number of servings for the planned meal. Between 1 and 100" - added
Input schema / properties / servings / examplesAdded value: +[ + 4 +]
- Changed
create_pet13 fields changed- added
Input schema / examplesAdded value: +[ + { + "dateOfBirth": "2021-06-15", + "microchipNumber": "985141000123456", + "name": "Bella", + "notes": "Allergic to chicken; on prescription food." + } +] - changed
Input schema / properties / dateOfBirth / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"The pet's date of birth, in YYYY-MM-DD format." - added
Input schema / properties / dateOfBirth / examplesAdded value: +[ + "2021-06-15" +] - changed
Input schema / properties / insuranceDocumentId / descriptionPrevious value: -"Document ID of insurance policy"New value: +"ID of a previously created document containing the pet's insurance policy." - added
Input schema / properties / insuranceDocumentId / examplesAdded value: +[ + "doc_1a2b3c4d5e6f" +] - added
Input schema / properties / microchipNumber / descriptionAdded value: +"Microchip identification number, used to reunite a lost pet with its household." - added
Input schema / properties / microchipNumber / examplesAdded value: +[ + "985141000123456" +] - added
Input schema / properties / name / descriptionAdded value: +"The pet's name." - added
Input schema / properties / name / examplesAdded value: +[ + "Bella" +] - added
Input schema / properties / notes / descriptionAdded value: +"Freeform notes about the pet, e.g. dietary needs or medical history." - added
Input schema / properties / notes / examplesAdded value: +[ + "Allergic to chicken; on prescription food." +] - changed
Input schema / properties / vetContactId / descriptionPrevious value: -"Contact ID of the vet"New value: +"ID of a previously created contact for the pet's vet." - added
Input schema / properties / vetContactId / examplesAdded value: +[ + "contact_5e6f7a8b9c0d" +]
- Changed
create_recipe13 fields changed- added
Input schema / examplesAdded value: +[ + { + "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" + } +] - added
Input schema / properties / ingredients / descriptionAdded value: +"Optional list of ingredients required for the recipe" - added
Input schema / properties / ingredients / items / properties / name / descriptionAdded value: +"Ingredient name" - added
Input schema / properties / ingredients / items / properties / name / examplesAdded value: +[ + "chicken breast" +] - changed
Input schema / properties / ingredients / items / properties / quantity / descriptionPrevious value: -"Minimum: 1"New value: +"Whole-number quantity of the ingredient (no fractional/unit support). Minimum: 1" - added
Input schema / properties / ingredients / items / properties / quantity / examplesAdded value: +[ + 2 +] - added
Input schema / properties / instructions / descriptionAdded value: +"Optional free-text cooking instructions/method" - added
Input schema / properties / name / descriptionAdded value: +"Recipe name/title" - added
Input schema / properties / name / examplesAdded value: +[ + "Chicken Tikka Masala" +] - changed
Input schema / properties / servings / descriptionPrevious value: -"Minimum: 1"New value: +"Number of servings the recipe yields. Minimum: 1" - added
Input schema / properties / servings / examplesAdded value: +[ + 4 +] - added
Input schema / properties / url / descriptionAdded value: +"Optional source URL the recipe was found at (e.g. a link to a blog or recipe site)" - added
Input schema / properties / url / examplesAdded value: +[ + "https://example.com/recipes/chicken-tikka-masala" +]
- Changed
create_recurring_calendar_event32 fields changed- added
Input schema / examplesAdded value: +[ + { + "cronExpression": "1 Week", + "description": "Sync on sprint progress", + "duration": "PT30M", + "endDate": "2026-12-31", + "isAllDay": false, + "maxOccurrences": 20, + "notes": "Bring your laptop", + "startDate": "2026-08-03", + "startTime": "09:00:00", + "timezone": "Europe/London", + "title": "Weekly team standup" + } +] - changed
Input schema / properties / cronExpression / descriptionPrevious value: -"Cron expression for recurrence. Format: minute hour dayOfMonth month dayOfWeek"New value: +"Recurrence interval, NOT a cron expression despite the field name. Format is 'N Unit' where N is a positive integer and Unit is one of Day, Week, Month, Year (case-sensitive), e.g. '1 Day', '2 Week', '1 Month', '1 Year'. Instances recur every N of the given unit starting from startDate." - added
Input schema / properties / cronExpression / examplesAdded value: +[ + "1 Week" +] - added
Input schema / properties / description / descriptionAdded value: +"Longer free-text description applied to every generated instance. Up to 2000 characters." - changed
Input schema / properties / duration / descriptionPrevious value: -"Duration in ISO 8601 format, e.g. PT1H30M"New value: +"Length of each instance, in ISO 8601 duration format." - added
Input schema / properties / duration / examplesAdded value: +[ + "PT30M" +] - changed
Input schema / properties / endDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Last date on which instances may occur, YYYY-MM-DD format. Omit for no end date (bounded only by maxOccurrences, if set)." - added
Input schema / properties / endDate / examplesAdded value: +[ + "2026-12-31" +] - added
Input schema / properties / isAllDay / descriptionAdded value: +"True if generated instances are all-day events with no specific start/end time; false for timed instances." - added
Input schema / properties / isAllDay / examplesAdded value: +[ + false +] - changed
Input schema / properties / location / descriptionPrevious value: -"Location. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)."New value: +"Location applied to every generated instance. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)." - added
Input schema / properties / location / properties / countryCode / descriptionAdded value: +"Country code for the address (Address type)." - added
Input schema / properties / location / properties / countryCode / examplesAdded value: +[ + "GB" +] - added
Input schema / properties / location / properties / line1 / descriptionAdded value: +"First line of the street address (Address type). At least one of line1-3/postalCode is required when $type is 'Address'." - added
Input schema / properties / location / properties / line1 / examplesAdded value: +[ + "221B Baker Street" +] - added
Input schema / properties / location / properties / line2 / descriptionAdded value: +"Second line of the street address (Address type), e.g. building or suite." - added
Input schema / properties / location / properties / line3 / descriptionAdded value: +"Third line of the street address (Address type)." - added
Input schema / properties / location / properties / notes / descriptionAdded value: +"Notes about the location, e.g. parking instructions or a meeting passcode. Up to 500 characters for OnlineLocation." - added
Input schema / properties / location / properties / postalCode / descriptionAdded value: +"Postal or ZIP code (Address type). Up to 20 characters." - added
Input schema / properties / location / properties / postalCode / examplesAdded value: +[ + "NW1 6XE" +] - changed
Input schema / properties / location / properties / url / descriptionPrevious value: -"URL for online locations"New value: +"URL for online locations (OnlineLocation type). Must be an absolute http/https URL." - added
Input schema / properties / location / properties / url / examplesAdded value: +[ + "https://meet.google.com/abc-defg-hij" +] - added
Input schema / properties / maxOccurrences / descriptionAdded value: +"Maximum number of instances to generate before recurrence stops. Omit for unlimited (bounded only by endDate, if set)." - added
Input schema / properties / maxOccurrences / examplesAdded value: +[ + 20 +] - added
Input schema / properties / notes / descriptionAdded value: +"Freeform notes applied to every generated instance. Up to 5000 characters." - changed
Input schema / properties / startDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Anchor date the recurrence is calculated from, YYYY-MM-DD format. The first instance falls on this date (subject to startTime/timezone); later instances are startDate plus multiples of the cronExpression interval." - added
Input schema / properties / startDate / examplesAdded value: +[ + "2026-08-03" +] - changed
Input schema / properties / startTime / descriptionPrevious value: -"Time of day in HH:mm:ss format"New value: +"Time of day each instance starts, in HH:mm:ss format (local to timezone). Omit for an event with no fixed time." - added
Input schema / properties / startTime / examplesAdded value: +[ + "09:00:00" +] - added
Input schema / properties / timezone / examplesAdded value: +[ + "Europe/London" +] - added
Input schema / properties / title / descriptionAdded value: +"Event title/summary applied to every generated instance. Required, up to 200 characters." - added
Input schema / properties / title / examplesAdded value: +[ + "Weekly team standup" +]
- Changed
create_recurring_task17 fields changed- added
Input schema / examplesAdded value: +[ + { + "assigneeRotation": [ + "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e", + "a1b2c3d4e5f60718293a4b5c6d7e8f90" + ], + "cronExpression": "2 Week", + "endDate": "2026-12-31", + "maxOccurrences": 26, + "notes": "Blue bin only", + "preparationDays": 1, + "startDate": "2026-08-01", + "title": "Take out the recycling" + } +] - changed
Input schema / properties / assigneeRotation / descriptionPrevious value: -"List of userIds for round-robin assignment"New value: +"Ordered list of household member IDs to round-robin through, one per generated instance. Entries that are no longer valid house members are skipped and that instance is left unassigned." - added
Input schema / properties / assigneeRotation / items / descriptionAdded value: +"A household member ID (from list_house_members) taking a turn in the rotation." - added
Input schema / properties / assigneeRotation / items / examplesAdded value: +[ + "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e" +] - changed
Input schema / properties / cronExpression / descriptionPrevious value: -"Cron expression for recurrence. Format: minute hour dayOfMonth month dayOfWeek"New value: +"Recurrence frequency expression in the format 'N Unit', e.g. '2 Week' for every two weeks. Unit must be exactly Day, Week, Month, or Year (case-sensitive). Despite the parameter name, this is not cron syntax." - added
Input schema / properties / cronExpression / examplesAdded value: +[ + "2 Week" +] - changed
Input schema / properties / endDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"The last date instances are generated through (inclusive), in YYYY-MM-DD format. Omit for an open-ended schedule." - added
Input schema / properties / endDate / examplesAdded value: +[ + "2026-12-31" +] - added
Input schema / properties / maxOccurrences / descriptionAdded value: +"Maximum number of task instances to generate in total. Generation stops once this many instances have been created, even if endDate has not been reached." - added
Input schema / properties / maxOccurrences / examplesAdded value: +[ + 26 +] - added
Input schema / properties / notes / descriptionAdded value: +"Freeform notes copied to every generated task instance." - added
Input schema / properties / preparationDays / descriptionAdded value: +"Number of days before each occurrence's due date to set that instance's preparation date. Clamped to today if the computed date would be in the past." - added
Input schema / properties / preparationDays / examplesAdded value: +[ + 1 +] - changed
Input schema / properties / startDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"The date the schedule starts generating instances from, in YYYY-MM-DD format. Defaults to today if omitted." - added
Input schema / properties / startDate / examplesAdded value: +[ + "2026-08-01" +] - added
Input schema / properties / title / descriptionAdded value: +"The recurring task's title. Used as the title for every generated task instance." - added
Input schema / properties / title / examplesAdded value: +[ + "Take out the recycling" +]
- Changed
create_subscription11 fields changed- added
Input schema / examplesAdded value: +[ + { + "fee": { + "currencyCode": "USD", + "value": 1599 + }, + "name": "Netflix", + "notes": "Family plan, shared with parents", + "remindMe": true, + "renewalCronExpression": "0 0 1 * *", + "status": "Active" + } +] - added
Input schema / properties / fee / descriptionAdded value: +"The recurring charge for this subscription." - changed
Input schema / properties / fee / properties / currencyCode / descriptionPrevious value: -"ISO currency code"New value: +"ISO 4217 currency code (3 letters)." - added
Input schema / properties / fee / properties / currencyCode / examplesAdded value: +[ + "USD" +] - changed
Input schema / properties / fee / properties / value / descriptionPrevious value: -"Amount in smallest currency unit"New value: +"Amount in the smallest currency unit (e.g. cents for USD)." - added
Input schema / properties / fee / properties / value / examplesAdded value: +[ + 1599 +] - added
Input schema / properties / name / descriptionAdded value: +"Display name of the subscription, e.g. 'Netflix' or 'Gym membership'." - added
Input schema / properties / notes / descriptionAdded value: +"Free-text notes about the subscription." - changed
Input schema / properties / renewalCronExpression / descriptionPrevious value: -"Cron expression for renewal"New value: +"Cron expression describing how often the subscription renews. Must not repeat more frequently than once a day." - added
Input schema / properties / renewalCronExpression / examplesAdded value: +[ + "0 0 1 * *" +] - added
Input schema / properties / status / descriptionAdded value: +"Lifecycle status of the subscription at creation time."
- Changed
create_task9 fields changed- added
Input schema / examplesAdded value: +[ + { + "assignedToMemberId": "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e", + "dueDate": "2026-08-01", + "notes": "Blue bin only", + "preparationDate": "2026-07-30", + "title": "Take out the recycling" + } +] - added
Input schema / properties / assignedToMemberId / examplesAdded value: +[ + "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e" +] - changed
Input schema / properties / dueDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"The date the task is due, in YYYY-MM-DD format." - added
Input schema / properties / dueDate / examplesAdded value: +[ + "2026-08-01" +] - added
Input schema / properties / notes / descriptionAdded value: +"Freeform notes about the task. Not for assignment info." - changed
Input schema / properties / preparationDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"The date to start preparing for the task, in YYYY-MM-DD format. Must be on or before the due date if both are set." - added
Input schema / properties / preparationDate / examplesAdded value: +[ + "2026-07-30" +] - added
Input schema / properties / title / descriptionAdded value: +"The task's title, e.g. 'Take out the recycling'. Required; max 200 characters." - added
Input schema / properties / title / examplesAdded value: +[ + "Take out the recycling" +]
- Changed
create_vehicle20 fields changed- added
Input schema / examplesAdded value: +[ + { + "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 + } +] - added
Input schema / properties / colour / descriptionAdded value: +"Colour of the vehicle." - added
Input schema / properties / colour / examplesAdded value: +[ + "Blue" +] - added
Input schema / properties / make / descriptionAdded value: +"Manufacturer of the vehicle, e.g. 'Toyota'." - added
Input schema / properties / make / examplesAdded value: +[ + "Toyota" +] - added
Input schema / properties / model / descriptionAdded value: +"Model name of the vehicle, e.g. 'Corolla'." - added
Input schema / properties / model / examplesAdded value: +[ + "Corolla" +] - changed
Input schema / properties / motDueDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Date the next MOT (roadworthiness test) is due, in YYYY-MM-DD format." - added
Input schema / properties / motDueDate / examplesAdded value: +[ + "2026-11-15" +] - added
Input schema / properties / notes / descriptionAdded value: +"Free-text notes about the vehicle." - added
Input schema / properties / registration / descriptionAdded value: +"The vehicle's registration/licence plate as shown on the plate. Free-text; format varies by country." - added
Input schema / properties / registration / examplesAdded value: +[ + "AB21 CDE" +] - changed
Input schema / properties / serviceDueDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Date the vehicle's next scheduled service is due, in YYYY-MM-DD format." - added
Input schema / properties / serviceDueDate / examplesAdded value: +[ + "2027-01-20" +] - changed
Input schema / properties / taxDueDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Date the vehicle's road tax is next due, in YYYY-MM-DD format." - added
Input schema / properties / taxDueDate / examplesAdded value: +[ + "2026-09-01" +] - added
Input schema / properties / vin / descriptionAdded value: +"Vehicle Identification Number: a 17-character alphanumeric code unique to the vehicle." - added
Input schema / properties / vin / examplesAdded value: +[ + "1HGCM82633A004352" +] - added
Input schema / properties / year / descriptionAdded value: +"Model year of the vehicle. Must be between 1900 and 2100." - added
Input schema / properties / year / examplesAdded value: +[ + 2021 +]
- Changed
defer_recommendation3 fields changed- added
Input schema / examplesAdded value: +[ + { + "recommendationId": "0195e3c1a2b34c5d6e7f8091a2b3c4d5" + } +] - added
Input schema / properties / recommendationId / descriptionAdded value: +"Id of a pending recommendation, taken from the id field of an item returned by get_house_review." - added
Input schema / properties / recommendationId / examplesAdded value: +[ + "0195e3c1a2b34c5d6e7f8091a2b3c4d5" +]
- Changed
delete_appliance3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f" + } +] - added
Input schema / properties / id / descriptionAdded value: +"ID of the appliance to delete." - added
Input schema / properties / id / examplesAdded value: +[ + "01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f" +]
- Changed
delete_calendar_event3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "0198f3a1b2c34d5e6f7089ab1c2d3e4f" + } +] - added
Input schema / properties / id / descriptionAdded value: +"Id of the calendar event to delete." - added
Input schema / properties / id / examplesAdded value: +[ + "0198f3a1b2c34d5e6f7089ab1c2d3e4f" +]
- Changed
delete_contact3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "01928e4a7d3f7b9ac1e3f6d8b2a4c710" + } +] - added
Input schema / properties / id / descriptionAdded value: +"The id of the contact to delete, as returned by create_contact or list_contacts." - added
Input schema / properties / id / examplesAdded value: +[ + "01928e4a7d3f7b9ac1e3f6d8b2a4c710" +]
- Changed
delete_document3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "01928e4a7d3f7b9ac1e3f6d8b2a4c710" + } +] - added
Input schema / properties / id / descriptionAdded value: +"The id of the document to delete, as returned by create_document or list_documents." - added
Input schema / properties / id / examplesAdded value: +[ + "01928e4a7d3f7b9ac1e3f6d8b2a4c710" +]
- Changed
delete_meal_plan3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f" + } +] - added
Input schema / properties / id / descriptionAdded value: +"ID of the meal plan entry to delete (from list_meal_plans)" - added
Input schema / properties / id / examplesAdded value: +[ + "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f" +]
- Changed
delete_pet3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f" + } +] - added
Input schema / properties / id / descriptionAdded value: +"ID of the pet to delete." - added
Input schema / properties / id / examplesAdded value: +[ + "01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f" +]
- Changed
delete_recipe3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f" + } +] - added
Input schema / properties / id / descriptionAdded value: +"ID of the recipe to delete (from list_recipes)" - added
Input schema / properties / id / examplesAdded value: +[ + "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f" +]
- Changed
delete_recurring_calendar_event3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "0198f3a1b2c34d5e6f7089ab1c2d3e4f" + } +] - added
Input schema / properties / id / descriptionAdded value: +"Id of the recurring calendar event (template) to delete." - added
Input schema / properties / id / examplesAdded value: +[ + "0198f3a1b2c34d5e6f7089ab1c2d3e4f" +]
- Changed
delete_recurring_task3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f" + } +] - added
Input schema / properties / id / descriptionAdded value: +"The recurring task's ID, as returned by create_recurring_task or list_recurring_tasks." - added
Input schema / properties / id / examplesAdded value: +[ + "5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f" +]
- Changed
delete_subscription3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e" + } +] - added
Input schema / properties / id / descriptionAdded value: +"ID of the subscription to soft-delete." - added
Input schema / properties / id / examplesAdded value: +[ + "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e" +]
- Changed
delete_task3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a" + } +] - added
Input schema / properties / id / descriptionAdded value: +"The task's ID, as returned by create_task or list_tasks." - added
Input schema / properties / id / examplesAdded value: +[ + "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a" +]
- Changed
delete_vehicle3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e" + } +] - added
Input schema / properties / id / descriptionAdded value: +"ID of the vehicle to soft-delete." - added
Input schema / properties / id / examplesAdded value: +[ + "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e" +]
- Changed
forget_memory2 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "0195e3c1a2b34c5d6e7f8091a2b3c4d5" + } +] - added
Input schema / properties / id / examplesAdded value: +[ + "0195e3c1a2b34c5d6e7f8091a2b3c4d5" +]
- Changed
get_house1 field changed- added
Input schema / examplesAdded value: +[ + {} +]
- Changed
get_house_review1 field changed- added
Input schema / examplesAdded value: +[ + {} +]
- Changed
get_profile1 field changed- added
Input schema / examplesAdded value: +[ + {} +]
- Changed
get_weather_forecast3 fields changed- added
Input schema / examplesAdded value: +[ + { + "forecastDays": 3 + } +] - changed
Input schema / properties / forecastDays / descriptionPrevious value: -"Number of forecast days (1-5, default 3)"New value: +"Number of forecast days to return, from 1 to 5. Defaults to 3 if omitted." - added
Input schema / properties / forecastDays / examplesAdded value: +[ + 3 +]
- Changed
list_appliances2 fields changed- added
Input schema / descriptionAdded value: +"Takes no parameters; returns every non-deleted appliance in the caller's household." - added
Input schema / examplesAdded value: +[ + {} +]
- Changed
list_calendar_events5 fields changed- added
Input schema / examplesAdded value: +[ + { + "startDateFrom": "2026-07-01T00:00:00Z", + "startDateTo": "2026-07-31T23:59:59Z" + } +] - changed
Input schema / properties / startDateFrom / descriptionPrevious value: -"UTC date range bound (ISO 8601 date-time)"New value: +"Inclusive lower bound of the date range, ISO 8601 date-time in UTC. An event matches if it ends (or, when it has no end, starts) on or after this instant. Omit for no lower bound." - added
Input schema / properties / startDateFrom / examplesAdded value: +[ + "2026-07-01T00:00:00Z" +] - changed
Input schema / properties / startDateTo / descriptionPrevious value: -"UTC date range bound (ISO 8601 date-time)"New value: +"Inclusive upper bound of the date range, ISO 8601 date-time in UTC. An event matches if it starts on or before this instant. Omit for no upper bound." - added
Input schema / properties / startDateTo / examplesAdded value: +[ + "2026-07-31T23:59:59Z" +]
- Changed
list_contacts1 field changed- added
Input schema / examplesAdded value: +[ + {} +]
- Changed
list_documents3 fields changed- added
Input schema / examplesAdded value: +[ + {}, + { + "documentType": "Passport" + } +] - added
Input schema / properties / documentType / descriptionAdded value: +"Optional filter to only return documents of this type. Omit to return documents of all types." - added
Input schema / properties / documentType / examplesAdded value: +[ + "Passport" +]
- Changed
list_global_recipes1 field changed- added
Input schema / examplesAdded value: +[ + {} +]
- Changed
list_house_members1 field changed- added
Input schema / examplesAdded value: +[ + {} +]
- Changed
list_houses1 field changed- added
Input schema / examplesAdded value: +[ + {} +]
- Changed
list_meal_plans5 fields changed- added
Input schema / examplesAdded value: +[ + { + "from": "2026-07-14", + "to": "2026-07-21" + } +] - changed
Input schema / properties / from / descriptionPrevious value: -"Inclusive date range start (format: YYYY-MM-DD)"New value: +"Inclusive date range start (format: YYYY-MM-DD). Omit for an open-ended start." - added
Input schema / properties / from / examplesAdded value: +[ + "2026-07-14" +] - changed
Input schema / properties / to / descriptionPrevious value: -"Inclusive date range end (format: YYYY-MM-DD)"New value: +"Inclusive date range end (format: YYYY-MM-DD). Omit for an open-ended end." - added
Input schema / properties / to / examplesAdded value: +[ + "2026-07-21" +]
- Changed
list_pets2 fields changed- added
Input schema / descriptionAdded value: +"Takes no parameters; returns every non-deleted pet in the caller's household." - added
Input schema / examplesAdded value: +[ + {} +]
- Changed
list_recipes1 field changed- added
Input schema / examplesAdded value: +[ + {} +]
- Changed
list_shopping_list_items2 fields changed- added
Input schema / descriptionAdded value: +"No parameters. Returns the active (not yet bought) items on the current household's shopping list." - added
Input schema / examplesAdded value: +[ + {} +]
- Changed
list_subscriptions2 fields changed- added
Input schema / examplesAdded value: +[ + { + "status": "Active" + } +] - added
Input schema / properties / status / descriptionAdded value: +"Only return subscriptions with this status. Omit to return subscriptions of all statuses."
- Changed
list_tasks10 fields changed- added
Input schema / examplesAdded value: +[ + { + "assignedToMemberId": "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e", + "dueDateOnOrAfter": "2026-07-01", + "dueDateOnOrBefore": "2026-07-31", + "includeCompleted": false, + "limit": 20 + } +] - added
Input schema / properties / assignedToMemberId / descriptionAdded value: +"Filter to tasks assigned to this household member ID. Omit to include tasks for all assignees." - added
Input schema / properties / assignedToMemberId / examplesAdded value: +[ + "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e" +] - changed
Input schema / properties / cursor / descriptionPrevious value: -"Pagination cursor"New value: +"Opaque pagination cursor from a previous list_tasks response's nextCursor. Omit to fetch the first page." - changed
Input schema / properties / dueDateOnOrAfter / descriptionPrevious value: -"Tasks with due date on or after (YYYY-MM-DD)"New value: +"Only include tasks with a due date on or after this date (YYYY-MM-DD). Tasks with no due date never match." - added
Input schema / properties / dueDateOnOrAfter / examplesAdded value: +[ + "2026-07-01" +] - changed
Input schema / properties / dueDateOnOrBefore / descriptionPrevious value: -"Tasks with due date on or before (YYYY-MM-DD)"New value: +"Only include tasks with a due date on or before this date (YYYY-MM-DD). Tasks with no due date never match." - added
Input schema / properties / dueDateOnOrBefore / examplesAdded value: +[ + "2026-07-31" +] - changed
Input schema / properties / includeCompleted / descriptionPrevious value: -"Default: false"New value: +"Whether to include completed tasks in the results. Default: false" - changed
Input schema / properties / limit / descriptionPrevious value: -"1-100, default 50"New value: +"Maximum number of tasks to return per page. 1-100, default 50."
- Changed
list_vehicles1 field changed- added
Input schema / examplesAdded value: +[ + {} +]
- Changed
recall_memory6 fields changed- added
Input schema / examplesAdded value: +[ + { + "limit": 20, + "type": "user" + } +] - changed
Input schema / properties / cursor / descriptionPrevious value: -"Pagination cursor from a prior call"New value: +"Pagination cursor: pass back the nextCursor value from a prior recall_memory response to fetch the next page. Omit to start from the first page." - added
Input schema / properties / cursor / examplesAdded value: +[ + "eyJQSyI6IkhvdXNlaG9sZCMxMjM0In0=" +] - changed
Input schema / properties / limit / descriptionPrevious value: -"1-100, default 20"New value: +"Max number of memories to return in this page. 1-100, default 20." - added
Input schema / properties / limit / examplesAdded value: +[ + 20 +] - added
Input schema / properties / type / examplesAdded value: +[ + "user" +]
- Changed
remove_shopping_list_item3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "0189c8d4f2b1712a9e4d6c9a1b2e3f4a" + } +] - added
Input schema / properties / id / descriptionAdded value: +"The ID of the shopping list item to remove, as returned by add_shopping_list_item, batch_add_shopping_list_items, or list_shopping_list_items." - added
Input schema / properties / id / examplesAdded value: +[ + "0189c8d4f2b1712a9e4d6c9a1b2e3f4a" +]
- Changed
skip_recommendation3 fields changed- added
Input schema / examplesAdded value: +[ + { + "recommendationId": "0195e3c1a2b34c5d6e7f8091a2b3c4d5" + } +] - added
Input schema / properties / recommendationId / descriptionAdded value: +"Id of a pending recommendation, taken from the id field of an item returned by get_house_review." - added
Input schema / properties / recommendationId / examplesAdded value: +[ + "0195e3c1a2b34c5d6e7f8091a2b3c4d5" +]
- Changed
store_memory5 fields changed- added
Input schema / examplesAdded value: +[ + { + "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" + } +] - added
Input schema / properties / content / examplesAdded value: +[ + "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." +] - added
Input schema / properties / description / examplesAdded value: +[ + "User prefers the house cleaned on Saturday mornings" +] - added
Input schema / properties / name / examplesAdded value: +[ + "preferred-cleaning-day" +] - added
Input schema / properties / type / examplesAdded value: +[ + "user" +]
- Changed
uncomplete_task3 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a" + } +] - added
Input schema / properties / id / descriptionAdded value: +"The task's ID, as returned by create_task or list_tasks." - added
Input schema / properties / id / examplesAdded value: +[ + "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a" +]
- Changed
update_appliance21 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f", + "notes": "Repaired ice maker under warranty, June 2026.", + "warrantyExpiryDate": "2026-11-04" + } +] - added
Input schema / properties / brand / descriptionAdded value: +"New manufacturer or brand name. Omit to leave unchanged." - added
Input schema / properties / brand / examplesAdded value: +[ + "Samsung" +] - added
Input schema / properties / id / descriptionAdded value: +"ID of the appliance to update." - added
Input schema / properties / id / examplesAdded value: +[ + "01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f" +] - changed
Input schema / properties / insuranceDocumentId / descriptionPrevious value: -"Document ID of insurance policy"New value: +"ID of a previously created document containing the insurance policy. Omit to leave unchanged." - added
Input schema / properties / insuranceDocumentId / examplesAdded value: +[ + "doc_1a2b3c4d5e6f" +] - added
Input schema / properties / model / descriptionAdded value: +"New model name or number. Omit to leave unchanged." - added
Input schema / properties / model / examplesAdded value: +[ + "RF28R7351SG" +] - added
Input schema / properties / name / descriptionAdded value: +"New name for the appliance. Omit to leave unchanged." - added
Input schema / properties / name / examplesAdded value: +[ + "Kitchen Refrigerator" +] - added
Input schema / properties / notes / descriptionAdded value: +"Freeform notes about the appliance. Omit to leave unchanged." - added
Input schema / properties / notes / examplesAdded value: +[ + "Extended warranty purchased in-store, receipt in the kitchen drawer." +] - changed
Input schema / properties / purchaseDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Date the appliance was purchased, in YYYY-MM-DD format. Omit or send null to leave unchanged, send an empty string to clear it. Must not be after warrantyExpiryDate." - added
Input schema / properties / purchaseDate / examplesAdded value: +[ + "2023-11-04" +] - added
Input schema / properties / serialNumber / descriptionAdded value: +"New manufacturer serial number. Omit to leave unchanged." - added
Input schema / properties / serialNumber / examplesAdded value: +[ + "S/N-4471829" +] - changed
Input schema / properties / warrantyDocumentId / descriptionPrevious value: -"Document ID of warranty"New value: +"ID of a previously created document containing the warranty paperwork. Omit to leave unchanged." - added
Input schema / properties / warrantyDocumentId / examplesAdded value: +[ + "doc_8f3a1c2b9e4d" +] - changed
Input schema / properties / warrantyExpiryDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Date the manufacturer warranty expires, in YYYY-MM-DD format. Omit or send null to leave unchanged, send an empty string to clear it. Must not be before purchaseDate." - added
Input schema / properties / warrantyExpiryDate / examplesAdded value: +[ + "2025-11-04" +]
- Changed
update_calendar_event25 fields changed- added
Input schema / examplesAdded value: +[ + { + "endDateTime": "2026-08-04T15:30:00Z", + "id": "0198f3a1b2c34d5e6f7089ab1c2d3e4f", + "notes": "Moved to Thursday", + "startDateTime": "2026-08-04T14:30:00Z" + } +] - added
Input schema / properties / description / descriptionAdded value: +"New longer free-text description of the event. Omit to leave unchanged. Up to 2000 characters." - changed
Input schema / properties / endDateTime / descriptionPrevious value: -"ISO 8601 date-time in UTC (Z-suffix)"New value: +"New end date-time, ISO 8601 in UTC (Z-suffix). Must not be before startDateTime. Omit to leave unchanged." - added
Input schema / properties / endDateTime / examplesAdded value: +[ + "2026-08-04T15:30:00Z" +] - added
Input schema / properties / id / descriptionAdded value: +"Id of the calendar event to update." - added
Input schema / properties / id / examplesAdded value: +[ + "0198f3a1b2c34d5e6f7089ab1c2d3e4f" +] - added
Input schema / properties / isAllDay / descriptionAdded value: +"True for an all-day event with no specific start/end time; false for a timed event. Omit to leave unchanged." - changed
Input schema / properties / location / descriptionPrevious value: -"Location. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)."New value: +"New location, replacing the existing one entirely. Omit to leave unchanged. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)." - added
Input schema / properties / location / properties / countryCode / descriptionAdded value: +"Country code for the address (Address type)." - added
Input schema / properties / location / properties / countryCode / examplesAdded value: +[ + "GB" +] - added
Input schema / properties / location / properties / line1 / descriptionAdded value: +"First line of the street address (Address type). At least one of line1-3/postalCode is required when $type is 'Address'." - added
Input schema / properties / location / properties / line1 / examplesAdded value: +[ + "221B Baker Street" +] - added
Input schema / properties / location / properties / line2 / descriptionAdded value: +"Second line of the street address (Address type), e.g. building or suite." - added
Input schema / properties / location / properties / line3 / descriptionAdded value: +"Third line of the street address (Address type)." - added
Input schema / properties / location / properties / notes / descriptionAdded value: +"Notes about the location, e.g. parking instructions or a meeting passcode. Up to 500 characters for OnlineLocation." - added
Input schema / properties / location / properties / postalCode / descriptionAdded value: +"Postal or ZIP code (Address type). Up to 20 characters." - added
Input schema / properties / location / properties / postalCode / examplesAdded value: +[ + "NW1 6XE" +] - changed
Input schema / properties / location / properties / url / descriptionPrevious value: -"URL for online locations"New value: +"URL for online locations (OnlineLocation type). Must be an absolute http/https URL." - added
Input schema / properties / notes / descriptionAdded value: +"New freeform notes attached to the event. Omit to leave unchanged. Up to 5000 characters." - changed
Input schema / properties / startDateTime / descriptionPrevious value: -"ISO 8601 date-time in UTC (Z-suffix). Wall clock is interpreted against the supplied timezone if any."New value: +"New start date-time, ISO 8601 in UTC (Z-suffix). Wall clock is interpreted against the supplied timezone if any. Omit to leave unchanged." - added
Input schema / properties / startDateTime / examplesAdded value: +[ + "2026-08-04T14:30:00Z" +] - changed
Input schema / properties / timezone / descriptionPrevious value: -"IANA timezone id (e.g. 'Europe/London') describing the wall-clock zone of startDateTime/endDateTime; null = UTC."New value: +"IANA timezone id (e.g. 'Europe/London') describing the wall-clock zone of startDateTime/endDateTime; null = UTC. Omit to leave unchanged." - added
Input schema / properties / timezone / examplesAdded value: +[ + "Europe/London" +] - added
Input schema / properties / title / descriptionAdded value: +"New event title/summary. Omit to leave unchanged. Up to 200 characters." - added
Input schema / properties / title / examplesAdded value: +[ + "Dentist appointment (rescheduled)" +]
- Changed
update_contact21 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "01928e4a7d3f7b9ac1e3f6d8b2a4c710", + "notes": "Prefers texts over calls.", + "phone": "+44 7911 123456" + } +] - added
Input schema / properties / address / descriptionAdded value: +"The contact's postal address. Omit to leave unchanged; when supplied, replaces the whole address." - added
Input schema / properties / address / properties / countryCode / examplesAdded value: +[ + "GB" +] - added
Input schema / properties / address / properties / line1 / descriptionAdded value: +"First line of the address, typically house number and street." - added
Input schema / properties / address / properties / line2 / descriptionAdded value: +"Second line of the address, e.g. apartment, suite, or unit." - added
Input schema / properties / address / properties / line3 / descriptionAdded value: +"Third line of the address, e.g. town or city." - added
Input schema / properties / address / properties / postalCode / descriptionAdded value: +"Postal or ZIP code." - added
Input schema / properties / address / properties / postalCode / examplesAdded value: +[ + "NW1 6XE" +] - changed
Input schema / properties / dateOfBirth / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"YYYY-MM-DD format. Omit or pass null to leave unchanged; pass an empty string to clear it." - added
Input schema / properties / dateOfBirth / examplesAdded value: +[ + "1990-05-15" +] - added
Input schema / properties / displayName / descriptionAdded value: +"An alternate name to show for the contact instead of first/last, e.g. a nickname, company name, or role. Omit to leave unchanged." - added
Input schema / properties / email / descriptionAdded value: +"The contact's email address. Omit to leave unchanged." - added
Input schema / properties / email / examplesAdded value: +[ + "sarah.jones@example.com" +] - added
Input schema / properties / firstName / descriptionAdded value: +"The contact's first name. Omit to leave unchanged." - added
Input schema / properties / id / descriptionAdded value: +"The id of the contact to update, as returned by create_contact or list_contacts." - added
Input schema / properties / id / examplesAdded value: +[ + "01928e4a7d3f7b9ac1e3f6d8b2a4c710" +] - added
Input schema / properties / lastName / descriptionAdded value: +"The contact's last (family) name. Omit to leave unchanged." - added
Input schema / properties / notes / descriptionAdded value: +"Free-text notes about the contact. Omit to leave unchanged." - added
Input schema / properties / phone / descriptionAdded value: +"The contact's phone number, in any format. Omit to leave unchanged." - added
Input schema / properties / phone / examplesAdded value: +[ + "+44 7911 123456" +] - changed
Input schema / properties / prepareBirthdayPresent / descriptionPrevious value: -"Whether to prepare a birthday present for this contact"New value: +"Whether to prepare a birthday present for this contact. Omit to leave unchanged."
- Changed
update_document16 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "01928e4a7d3f7b9ac1e3f6d8b2a4c710", + "issuingAuthority": "HM Passport Office", + "notes": "Renewed for another 10 years." + } +] - added
Input schema / properties / documentNumber / descriptionAdded value: +"The document's reference or serial number, e.g. a passport number or insurance policy number. Omit to leave unchanged." - added
Input schema / properties / documentNumber / examplesAdded value: +[ + "512345678" +] - added
Input schema / properties / documentType / descriptionAdded value: +"The kind of document being stored. Omit to leave unchanged." - added
Input schema / properties / documentType / examplesAdded value: +[ + "Passport" +] - added
Input schema / properties / fee / descriptionAdded value: +"The cost associated with the document, e.g. a renewal or issuance fee. Omit to leave unchanged; when supplied, replaces the whole fee." - added
Input schema / properties / fee / properties / currencyCode / examplesAdded value: +[ + "GBP" +] - added
Input schema / properties / fee / properties / value / examplesAdded value: +[ + 8250 +] - added
Input schema / properties / id / descriptionAdded value: +"The id of the document to update, as returned by create_document or list_documents." - added
Input schema / properties / id / examplesAdded value: +[ + "01928e4a7d3f7b9ac1e3f6d8b2a4c710" +] - added
Input schema / properties / issuingAuthority / descriptionAdded value: +"The organization or authority that issued the document. Omit to leave unchanged." - added
Input schema / properties / issuingAuthority / examplesAdded value: +[ + "HM Passport Office" +] - added
Input schema / properties / notes / descriptionAdded value: +"Free-text notes about the document. Omit to leave unchanged." - changed
Input schema / properties / renewalCronExpression / descriptionPrevious value: -"Cron expression for renewal"New value: +"Reserved for a future renewal-reminder schedule. Currently accepted but not persisted or acted on by document updates — has no effect yet." - added
Input schema / properties / title / descriptionAdded value: +"A custom title for the document. Omit to leave unchanged." - added
Input schema / properties / title / examplesAdded value: +[ + "UK Passport" +]
- Changed
update_meal_plan12 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 6 + } +] - changed
Input schema / properties / date / descriptionPrevious value: -"Date of the planned meal (format: YYYY-MM-DD)"New value: +"Date of the planned meal (format: YYYY-MM-DD). Must be from today up to four weeks ahead. Omit to leave unchanged." - added
Input schema / properties / date / examplesAdded value: +[ + "2026-07-16" +] - added
Input schema / properties / id / descriptionAdded value: +"ID of the meal plan entry to update (from list_meal_plans)" - added
Input schema / properties / id / examplesAdded value: +[ + "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f" +] - added
Input schema / properties / mealType / descriptionAdded value: +"Which meal slot of the day this entry occupies. Omit to leave unchanged." - added
Input schema / properties / mealType / examplesAdded value: +[ + "dinner" +] - added
Input schema / properties / notes / descriptionAdded value: +"Optional free-text notes about the planned meal. Omit to leave unchanged." - added
Input schema / properties / recipeId / examplesAdded value: +[ + "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f" +] - added
Input schema / properties / recipeSource / examplesAdded value: +[ + "household" +] - changed
Input schema / properties / servings / descriptionPrevious value: -"Between 1 and 100"New value: +"Number of servings for the planned meal. Between 1 and 100. Omit to leave unchanged." - added
Input schema / properties / servings / examplesAdded value: +[ + 4 +]
- Changed
update_memory6 fields changed- added
Input schema / examplesAdded value: +[ + { + "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" + } +] - added
Input schema / properties / content / examplesAdded value: +[ + "Updated 2026-07-14: the user now prefers Sunday mornings instead of Saturday mornings for cleaning." +] - added
Input schema / properties / description / examplesAdded value: +[ + "User now prefers the house cleaned on Sunday mornings" +] - added
Input schema / properties / id / examplesAdded value: +[ + "0195e3c1a2b34c5d6e7f8091a2b3c4d5" +] - changed
Input schema / properties / name / descriptionPrevious value: -"Replacement slug. Omit to leave unchanged."New value: +"Replacement kebab-case slug. Omit to leave unchanged." - added
Input schema / properties / name / examplesAdded value: +[ + "preferred-cleaning-day" +]
- Changed
update_pet15 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f", + "notes": "Started prescription diet on vet's advice." + } +] - changed
Input schema / properties / dateOfBirth / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"The pet's date of birth, in YYYY-MM-DD format. Omit or send null to leave unchanged, send an empty string to clear it." - added
Input schema / properties / dateOfBirth / examplesAdded value: +[ + "2021-06-15" +] - added
Input schema / properties / id / descriptionAdded value: +"ID of the pet to update." - added
Input schema / properties / id / examplesAdded value: +[ + "01933f9c-7a2b-7c3d-8e4f-1a2b3c4d5e6f" +] - changed
Input schema / properties / insuranceDocumentId / descriptionPrevious value: -"Document ID of insurance policy"New value: +"ID of a previously created document containing the pet's insurance policy. Omit to leave unchanged." - added
Input schema / properties / insuranceDocumentId / examplesAdded value: +[ + "doc_1a2b3c4d5e6f" +] - added
Input schema / properties / microchipNumber / descriptionAdded value: +"New microchip identification number. Omit to leave unchanged." - added
Input schema / properties / microchipNumber / examplesAdded value: +[ + "985141000123456" +] - added
Input schema / properties / name / descriptionAdded value: +"New name for the pet. Omit to leave unchanged." - added
Input schema / properties / name / examplesAdded value: +[ + "Bella" +] - added
Input schema / properties / notes / descriptionAdded value: +"Freeform notes about the pet. Omit to leave unchanged." - added
Input schema / properties / notes / examplesAdded value: +[ + "Allergic to chicken; on prescription food." +] - changed
Input schema / properties / vetContactId / descriptionPrevious value: -"Contact ID of the vet"New value: +"ID of a previously created contact for the pet's vet. Omit to leave unchanged." - added
Input schema / properties / vetContactId / examplesAdded value: +[ + "contact_5e6f7a8b9c0d" +]
- Changed
update_recipe15 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f", + "servings": 6 + } +] - added
Input schema / properties / id / descriptionAdded value: +"ID of the recipe to update (from list_recipes)" - added
Input schema / properties / id / examplesAdded value: +[ + "8f14e45f-ceea-467e-8a2f-1a2b3c4d5e6f" +] - added
Input schema / properties / ingredients / descriptionAdded value: +"List of ingredients required for the recipe. Providing this replaces the entire existing ingredient list rather than merging with it. Omit to leave the ingredients unchanged." - added
Input schema / properties / ingredients / items / properties / name / descriptionAdded value: +"Ingredient name" - added
Input schema / properties / ingredients / items / properties / name / examplesAdded value: +[ + "chicken breast" +] - changed
Input schema / properties / ingredients / items / properties / quantity / descriptionPrevious value: -"Minimum: 1"New value: +"Whole-number quantity of the ingredient (no fractional/unit support). Minimum: 1" - added
Input schema / properties / ingredients / items / properties / quantity / examplesAdded value: +[ + 2 +] - added
Input schema / properties / instructions / descriptionAdded value: +"Free-text cooking instructions/method. Omit to leave unchanged." - added
Input schema / properties / name / descriptionAdded value: +"Recipe name/title. Omit to leave unchanged." - added
Input schema / properties / name / examplesAdded value: +[ + "Chicken Tikka Masala" +] - changed
Input schema / properties / servings / descriptionPrevious value: -"Minimum: 1"New value: +"Number of servings the recipe yields. Minimum: 1. Omit to leave unchanged." - added
Input schema / properties / servings / examplesAdded value: +[ + 4 +] - added
Input schema / properties / url / descriptionAdded value: +"Source URL the recipe was found at. Omit to leave unchanged." - added
Input schema / properties / url / examplesAdded value: +[ + "https://example.com/recipes/chicken-tikka-masala" +]
- Changed
update_recurring_calendar_event32 fields changed- added
Input schema / examplesAdded value: +[ + { + "cronExpression": "2 Week", + "endDate": "2027-01-31", + "id": "0198f3a1b2c34d5e6f7089ab1c2d3e4f" + } +] - changed
Input schema / properties / cronExpression / descriptionPrevious value: -"Cron expression for recurrence"New value: +"New recurrence interval, NOT a cron expression despite the field name. Format is 'N Unit' where N is a positive integer and Unit is one of Day, Week, Month, Year (case-sensitive), e.g. '1 Day', '2 Week', '1 Month', '1 Year'. Omit to leave unchanged. Changing this deletes and regenerates future instances." - added
Input schema / properties / cronExpression / examplesAdded value: +[ + "2 Week" +] - added
Input schema / properties / description / descriptionAdded value: +"New longer free-text description. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 2000 characters." - changed
Input schema / properties / duration / descriptionPrevious value: -"Duration in ISO 8601 format, e.g. PT1H30M"New value: +"New length of each instance, in ISO 8601 duration format. Omit to leave unchanged. Changing this deletes and regenerates future instances." - added
Input schema / properties / duration / examplesAdded value: +[ + "PT30M" +] - changed
Input schema / properties / endDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"PATCH-style date field: omit or send null to leave the stored end date unchanged, send an empty string to clear it (recurrence becomes unbounded by date), or send 'YYYY-MM-DD' to set a new last occurrence date. Changing this deletes and regenerates future instances." - added
Input schema / properties / endDate / examplesAdded value: +[ + "2027-01-31" +] - added
Input schema / properties / id / descriptionAdded value: +"Id of the recurring calendar event (template) to update." - added
Input schema / properties / id / examplesAdded value: +[ + "0198f3a1b2c34d5e6f7089ab1c2d3e4f" +] - added
Input schema / properties / isAllDay / descriptionAdded value: +"True if generated instances are all-day events; false for timed instances. Omit to leave unchanged. Changing this deletes and regenerates future instances." - changed
Input schema / properties / location / descriptionPrevious value: -"Location. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)."New value: +"New location, replacing the existing one entirely. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Set $type to 'Address' for physical (with line1-3, postalCode, countryCode) or 'OnlineLocation' for virtual (with url, notes)." - added
Input schema / properties / location / properties / countryCode / descriptionAdded value: +"Country code for the address (Address type)." - added
Input schema / properties / location / properties / countryCode / examplesAdded value: +[ + "GB" +] - added
Input schema / properties / location / properties / line1 / descriptionAdded value: +"First line of the street address (Address type). At least one of line1-3/postalCode is required when $type is 'Address'." - added
Input schema / properties / location / properties / line1 / examplesAdded value: +[ + "221B Baker Street" +] - added
Input schema / properties / location / properties / line2 / descriptionAdded value: +"Second line of the street address (Address type), e.g. building or suite." - added
Input schema / properties / location / properties / line3 / descriptionAdded value: +"Third line of the street address (Address type)." - added
Input schema / properties / location / properties / notes / descriptionAdded value: +"Notes about the location, e.g. parking instructions or a meeting passcode. Up to 500 characters for OnlineLocation." - added
Input schema / properties / location / properties / postalCode / descriptionAdded value: +"Postal or ZIP code (Address type). Up to 20 characters." - added
Input schema / properties / location / properties / postalCode / examplesAdded value: +[ + "NW1 6XE" +] - changed
Input schema / properties / location / properties / url / descriptionPrevious value: -"URL for online locations"New value: +"URL for online locations (OnlineLocation type). Must be an absolute http/https URL." - added
Input schema / properties / maxOccurrences / descriptionAdded value: +"New maximum number of instances to generate. Omit to leave unchanged. Changing this deletes and regenerates future instances." - added
Input schema / properties / maxOccurrences / examplesAdded value: +[ + 20 +] - added
Input schema / properties / notes / descriptionAdded value: +"New freeform notes. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 5000 characters." - changed
Input schema / properties / startDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"PATCH-style date field: omit or send null to leave the stored start date unchanged, send an empty string to clear it, or send 'YYYY-MM-DD' to set a new anchor date. Changing this deletes and regenerates future instances." - added
Input schema / properties / startDate / examplesAdded value: +[ + "2026-08-03" +] - changed
Input schema / properties / startTime / descriptionPrevious value: -"Time of day in HH:mm:ss format"New value: +"New time of day each instance starts, in HH:mm:ss format (local to timezone). Omit to leave unchanged. Changing this deletes and regenerates future instances." - added
Input schema / properties / startTime / examplesAdded value: +[ + "09:00:00" +] - changed
Input schema / properties / timezone / descriptionPrevious value: -"IANA timezone id (e.g. 'Europe/London') that startTime is in. Changing this regenerates instances."New value: +"IANA timezone id (e.g. 'Europe/London') that startTime is in. Omit to leave unchanged; null resets to UTC. Changing this regenerates instances." - added
Input schema / properties / timezone / examplesAdded value: +[ + "Europe/London" +] - added
Input schema / properties / title / descriptionAdded value: +"New event title/summary. Omit to leave unchanged. Patching this alone updates existing generated instances in place rather than regenerating them. Up to 200 characters."
- Changed
update_recurring_task18 fields changed- added
Input schema / examplesAdded value: +[ + { + "assigneeRotation": [ + "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e" + ], + "cronExpression": "2 Week", + "id": "5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f", + "title": "Take out the recycling" + } +] - added
Input schema / properties / assigneeRotation / descriptionAdded value: +"New ordered list of household member IDs to round-robin through, replacing the existing rotation entirely. Applies to instances generated after this change; already-created instances are unaffected. Omit to leave the rotation unchanged." - added
Input schema / properties / assigneeRotation / items / descriptionAdded value: +"A household member ID (from list_house_members) taking a turn in the rotation." - added
Input schema / properties / assigneeRotation / items / examplesAdded value: +[ + "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e" +] - changed
Input schema / properties / cronExpression / descriptionPrevious value: -"Cron expression for recurrence. Format: minute hour dayOfMonth month dayOfWeek"New value: +"New recurrence frequency expression in the format 'N Unit', e.g. '2 Week' for every two weeks. Unit must be exactly Day, Week, Month, or Year (case-sensitive). Despite the parameter name, this is not cron syntax. Changing this deletes uncompleted future instances and regenerates them from the new schedule." - added
Input schema / properties / cronExpression / examplesAdded value: +[ + "2 Week" +] - changed
Input schema / properties / endDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"New end date for the schedule (inclusive), in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string for an open-ended schedule. Changing this regenerates future uncompleted instances." - added
Input schema / properties / endDate / examplesAdded value: +[ + "2026-12-31" +] - added
Input schema / properties / id / descriptionAdded value: +"The recurring task's ID, as returned by create_recurring_task or list_recurring_tasks." - added
Input schema / properties / id / examplesAdded value: +[ + "5c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f" +] - added
Input schema / properties / maxOccurrences / descriptionAdded value: +"New maximum total number of instances to generate. Changing this regenerates future uncompleted instances." - added
Input schema / properties / maxOccurrences / examplesAdded value: +[ + 26 +] - added
Input schema / properties / notes / descriptionAdded value: +"New notes for the template, copied to existing uncompleted generated instances. Omit to leave unchanged." - added
Input schema / properties / preparationDays / descriptionAdded value: +"Number of days before each occurrence's due date to set that instance's preparation date. Only affects instances generated after this change; existing uncompleted instances keep their original preparation date unless a frequency, start date, end date, or max-occurrences change also triggers regeneration." - added
Input schema / properties / preparationDays / examplesAdded value: +[ + 1 +] - changed
Input schema / properties / startDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"New start date for the schedule, in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string to clear it. Changing this regenerates future uncompleted instances." - added
Input schema / properties / startDate / examplesAdded value: +[ + "2026-08-01" +] - added
Input schema / properties / title / descriptionAdded value: +"New title for the template. Existing uncompleted generated instances are updated to match; completed ones keep their original title. Omit to leave unchanged."
- Changed
update_shopping_list_item9 fields changed- added
Input schema / examplesAdded value: +[ + { + "category": "DairyAndEggs", + "id": "0189c8d4f2b1712a9e4d6c9a1b2e3f4a", + "quantity": 3 + } +] - added
Input schema / properties / category / descriptionAdded value: +"New store-aisle category for the item, overriding any auto-assigned category. Omit to leave the current category unchanged." - added
Input schema / properties / category / examplesAdded value: +[ + "DairyAndEggs" +] - added
Input schema / properties / id / descriptionAdded value: +"The ID of the shopping list item to update, as returned by add_shopping_list_item, batch_add_shopping_list_items, or list_shopping_list_items." - added
Input schema / properties / id / examplesAdded value: +[ + "0189c8d4f2b1712a9e4d6c9a1b2e3f4a" +] - added
Input schema / properties / name / descriptionAdded value: +"New name for the item. Maximum 200 characters. Omit to leave the current name unchanged." - added
Input schema / properties / name / examplesAdded value: +[ + "Whole milk" +] - changed
Input schema / properties / quantity / descriptionPrevious value: -"Minimum: 1"New value: +"New quantity for the item, replacing (not adding to) the current quantity. Minimum 1, maximum 9999. Omit to leave the current quantity unchanged." - added
Input schema / properties / quantity / examplesAdded value: +[ + 3 +]
- Changed
update_subscription13 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e", + "notes": "Paused while travelling", + "status": "Paused" + } +] - added
Input schema / properties / fee / descriptionAdded value: +"The recurring charge for this subscription. Omit to leave unchanged." - changed
Input schema / properties / fee / properties / currencyCode / descriptionPrevious value: -"ISO currency code"New value: +"ISO 4217 currency code (3 letters)." - added
Input schema / properties / fee / properties / currencyCode / examplesAdded value: +[ + "USD" +] - changed
Input schema / properties / fee / properties / value / descriptionPrevious value: -"Amount in smallest currency unit"New value: +"Amount in the smallest currency unit (e.g. cents for USD)." - added
Input schema / properties / fee / properties / value / examplesAdded value: +[ + 1599 +] - added
Input schema / properties / id / descriptionAdded value: +"ID of the subscription to update." - added
Input schema / properties / id / examplesAdded value: +[ + "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e" +] - added
Input schema / properties / name / descriptionAdded value: +"Display name of the subscription. Omit to leave unchanged." - added
Input schema / properties / notes / descriptionAdded value: +"Free-text notes about the subscription. Omit to leave unchanged, or send an empty string to clear the notes." - changed
Input schema / properties / renewalCronExpression / descriptionPrevious value: -"Cron expression for renewal"New value: +"Cron expression describing how often the subscription renews. Must not repeat more frequently than once a day. Omit to leave unchanged, or send an empty string to clear the renewal schedule." - added
Input schema / properties / renewalCronExpression / examplesAdded value: +[ + "0 0 1 * *" +] - added
Input schema / properties / status / descriptionAdded value: +"New lifecycle status for the subscription. Omit to leave unchanged."
- Changed
update_task11 fields changed- added
Input schema / examplesAdded value: +[ + { + "dueDate": "2026-08-01", + "id": "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a", + "title": "Take out the recycling" + } +] - changed
Input schema / properties / assignedToMemberId / descriptionPrevious value: -"Member ID to assign, or empty string to unassign"New value: +"Member ID to assign, or empty string to unassign. Omit to leave the current assignment unchanged." - added
Input schema / properties / assignedToMemberId / examplesAdded value: +[ + "7f3a9c2e1b4d8f6a0c5e3b7d9a1f4c6e" +] - changed
Input schema / properties / dueDate / descriptionPrevious value: -"YYYY-MM-DD format, or empty string to clear"New value: +"YYYY-MM-DD format, or empty string to clear. Omit to leave unchanged." - added
Input schema / properties / dueDate / examplesAdded value: +[ + "2026-08-01" +] - added
Input schema / properties / id / descriptionAdded value: +"The task's ID, as returned by create_task or list_tasks." - added
Input schema / properties / id / examplesAdded value: +[ + "018f2c9a1b2c7d3e9a4f5b6c7d8e9f0a" +] - changed
Input schema / properties / notes / descriptionPrevious value: -"Freeform notes about the task. Not for assignment info."New value: +"Freeform notes about the task. Not for assignment info. Omit to leave unchanged." - changed
Input schema / properties / preparationDate / descriptionPrevious value: -"YYYY-MM-DD format, or empty string to clear"New value: +"YYYY-MM-DD format, or empty string to clear. Omit to leave unchanged." - added
Input schema / properties / preparationDate / examplesAdded value: +[ + "2026-07-30" +] - added
Input schema / properties / title / descriptionAdded value: +"New title for the task. Omit to leave unchanged; max 200 characters."
- Changed
update_vehicle23 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e", + "notes": "Renewed tax disc", + "taxDueDate": "2027-09-01" + } +] - added
Input schema / properties / colour / descriptionAdded value: +"Colour of the vehicle. Omit to leave unchanged, or send an empty string to clear it." - added
Input schema / properties / colour / examplesAdded value: +[ + "Blue" +] - added
Input schema / properties / id / descriptionAdded value: +"ID of the vehicle to update." - added
Input schema / properties / id / examplesAdded value: +[ + "0198c1f4b2c07a1b9e4d5f6a7b8c9d0e" +] - changed
Input schema / properties / insuranceDocumentId / descriptionPrevious value: -"Document ID of insurance policy"New value: +"Document ID of the associated insurance policy document. Omit to leave unchanged, or send an empty string to clear it." - added
Input schema / properties / make / descriptionAdded value: +"Manufacturer of the vehicle, e.g. 'Toyota'. Omit to leave unchanged, or send an empty string to clear it." - added
Input schema / properties / make / examplesAdded value: +[ + "Toyota" +] - added
Input schema / properties / model / descriptionAdded value: +"Model name of the vehicle, e.g. 'Corolla'. Omit to leave unchanged, or send an empty string to clear it." - added
Input schema / properties / model / examplesAdded value: +[ + "Corolla" +] - changed
Input schema / properties / motDueDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Date the next MOT (roadworthiness test) is due, in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string to clear it." - added
Input schema / properties / motDueDate / examplesAdded value: +[ + "2026-11-15" +] - added
Input schema / properties / notes / descriptionAdded value: +"Free-text notes about the vehicle. Omit to leave unchanged, or send an empty string to clear it." - added
Input schema / properties / registration / descriptionAdded value: +"The vehicle's registration/licence plate as shown on the plate. Free-text; format varies by country. Omit to leave unchanged, or send an empty string to clear it." - added
Input schema / properties / registration / examplesAdded value: +[ + "AB21 CDE" +] - changed
Input schema / properties / serviceDueDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Date the vehicle's next scheduled service is due, in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string to clear it." - added
Input schema / properties / serviceDueDate / examplesAdded value: +[ + "2027-01-20" +] - changed
Input schema / properties / taxDueDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"Date the vehicle's road tax is next due, in YYYY-MM-DD format. Omit to leave unchanged, or send an empty string to clear it." - added
Input schema / properties / taxDueDate / examplesAdded value: +[ + "2026-09-01" +] - added
Input schema / properties / vin / descriptionAdded value: +"Vehicle Identification Number: a 17-character alphanumeric code unique to the vehicle. Omit to leave unchanged, or send an empty string to clear it." - added
Input schema / properties / vin / examplesAdded value: +[ + "1HGCM82633A004352" +] - added
Input schema / properties / year / descriptionAdded value: +"Model year of the vehicle. Must be between 1900 and 2100. Omit to leave unchanged." - added
Input schema / properties / year / examplesAdded value: +[ + 2021 +]
Related MCP Connectors
- DomusOAuthapp.getdomus
Homeowner's AI: view & update appliances, warranties, documents & maintenance for your home.
Family schedules and household tools with OAuth. External calendars remain read-only.
Private family planner for schedules, tasks, checklists, attachments, and availability.
AI life manager: tasks, home, health, wealth, childcare, pets & more — on your own data.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables household management through natural language, covering bills, chores, shopping, reminders, budget, and smart-home devices, with every mutating action dry-run, confirmed, and audited.31MIT
- FlicenseNot gradedqualityDmaintenanceEnables couples to manage recipes, meal plans, calendar events, and grocery lists together.-
- AlicenseNot gradedqualityBmaintenanceEnables voice-first household maintenance tracking, turning spoken updates into durable records, service history, and due-date reminders for a concise maintenance brief.MIT
- AlicenseNot gradedqualityCmaintenanceEnables Alexa+ to manage a shared household task list through natural conversation, including checking status, finding overdue or occasion-tagged tasks, adding items, marking them done, and reassigning owners.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.