haus
Server Details
OneHaus household tools: tasks, calendar, contacts, pets, vehicles, documents and more.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 69 tools
The tools are well-separated by entity and action, with clear descriptions distinguishing similar pairs (e.g., create_task vs create_recurring_task, list_shopping_lists vs list_shopping_list_items). While there are many tools, each has a unique purpose and the descriptions resolve potential confusion.
All tool names follow a consistent verb_noun pattern using lowercase with underscores. Verbs are clear (create, list, update, delete, get) and nouns are appropriately singular or plural. No mixing of camelCase or inconsistent styles.
With 69 tools, the server far exceeds the typical well-scoped range of 3-15 and even the heavy range of 25+. While the domain is broad (covering many household entities), the sheer number creates a large selection surface for an agent, making it unwieldy.
The tool surface covers CRUD and lifecycle operations for all major entities: appliances, contacts, documents, pets, recipes, subscriptions, tasks, vehicles, calendar events, shopping lists, meal plans, and memories. It also includes house review, weather, and member management, leaving no obvious dead ends.
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. | |
| 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?
The description adds meaningful behavior beyond the annotations: it explains that a new item gets a category from its name and that an existing unbought item with the same name will have its quantity increased instead of being duplicated. This is helpful context for a mutating tool. It stops short of explaining edge cases like what happens with an already-bought item of the same name, but the core behavior is clear.
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, then the two important behavioral rules. No filler or repetition of schema fields. 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?
Given that the schema covers all three parameters at 100%, output schema exists, and annotations indicate a non-read-only but non-destructive operation, the description provides the key behavioral nuance needed for correct invocation. 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%, so the schema already documents name, quantity, and shoppingListId well. The description reinforces the merge behavior and category inference, but it does not add significant parameter-level meaning beyond what the schema already provides. Baseline 3 is appropriate here.
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 one item to the shopping list') and clearly distinguishes itself from batch_add_shopping_list_items by emphasizing 'one item'. It also states the key behavioral rule about merging rather than duplicating, which makes its purpose 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 phrase 'Add one item' provides clear context that this is for single-item additions, implicitly contrasting with batch_add_shopping_list_items. The merge rule also tells the agent when quantity will be increased rather than creating a new entry. However, it does not explicitly mention alternatives or exclusions such as 'use batch_add for multiple items'.
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?
The description goes beyond the annotations by disclosing important batch behavior: names are deduplicated within the batch and merged into matching unbought items already on the list. This surfaces a nuanced side effect that an agent would not otherwise know. It does not contradict the readOnlyHint/bdestructiveHint 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 the action and limit front-loaded and the key behavioral detail in the second sentence. The phrase 'for a whole shop' is slightly ambiguous, but the overall description is compact and focused 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?
Together with the rich input schema and existing output schema, the description covers the essential calling details: batch size limit, deduplication, merge behavior, and per-item quantity. It does not mention the singular alternative, but that is a minor gap given the tool's straightforward batch-add purpose.
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 explains duplicate summing, quantity cap, maxItems, and the optional shoppingListId. The tool-level description repeats some of this behavior but does not add meaning 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 identifies a specific action ('Add'), a precise resource ('shopping list items'), and a distinguishing scope ('up to 25 at once'). 'For a whole shop' and the batch framing clearly differentiate it from the singular sibling add_shopping_list_item, even though that sibling is not named.
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 batch usage through 'up to 25 at once' and the merge semantics, but it never explicitly states when to use this tool versus the singular add_shopping_list_item or any other alternative. The usage context is inferable rather than directly guided.
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. 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. | |
| 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. | |
| description | No | Longer description. | |
| endDateTime | No | End, ISO 8601 UTC. Must not precede startDateTime. | |
| startDateTime | Yes | Start, ISO 8601 UTC with a Z suffix. |
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 nature is clear from structured data. The description adds useful behavioral context by specifying this creates a one-off event on the household calendar rather than modifying anything else. This is sufficient and adds value 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, each earning its place: the first states the core action and scope, the second routes to the correct sibling tool for recurring events. It is front-loaded with the most important information and contains no 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?
The description is complete for this tool's complexity. It clarifies the calendar scope, establishes the one-off nature, and directs to the recurring alternative. The input schema richly documents all parameters, and an output schema exists, so the description does not need to cover those 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 all eight parameters are already well documented in the input schema. The tool description adds no parameter-level information, which is acceptable because the schema carries the full burden. Baseline 3 applies here.
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 ('Creates'), a specific resource ('a single, one-off calendar event'), and a clear scope ('on the household calendar'). It also explicitly differentiates this tool from its recurring counterpart, so an agent can immediately understand what this 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 gives explicit when-to-use guidance by stating this is for single, one-off events. It also names the alternative create_recurring_calendar_event and the exact condition that should route an agent to it ('For a repeating schedule'), leaving no ambiguity.
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 declare a non-read-only, non-destructive operation, and the description reinforces this with 'Store' while adding the key behavioral outcome: a new id is returned and can be linked as a foreign key to appliances, vehicles, or pets. No hidden side effects, overwrite behavior, or destructive consequences are suggested, and the description 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?
Two sentences with zero waste: the action ('Store a document') is front-loaded, the first sentence inventories the fields, and the second adds the return value and downstream linking use case. 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 tool with seven parameters, a nested fee object, and an output schema, the description plus the fully annotated and 100%-covered schema cover purpose, the required field, return value, and the cross-entity linking use case. The main quirk (renewalCronExpression being accepted but not stored) is disclosed in the schema rather than the description, which is acceptable for this moderate 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%, so every parameter—including the nested fee object's minor-units format and the inert renewalCronExpression quirk—is already documented in the schema, setting a baseline of 3. The description only summarizes a subset of fields ('reference number, issuing authority, fee and notes') without adding format or constraint detail. One minor risk: the description lowercases the document types while the schema enum is capitalized ('Passport', 'Insurance'), which could mislead an agent that follows the description literally.
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 ('Store a document'), enumerates the allowed document types, and names the stored fields (reference number, issuing authority, fee, notes). The closing sentence about returning a new id clearly signals creation semantics, distinguishing this tool from the document-management siblings such as update_document, delete_document, and list_documents.
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 the creation path for document records, and the returned id is the integration point that sibling create_appliance, create_vehicle, and create_pet tools can reference. It does not explicitly name exclusions or alternatives (e.g., 'to modify an existing document, use update_document'), so it falls just short of fully explicit routing.
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?
Annotations only say this is not read-only and not destructive, so the description carries the burden of explaining write behavior. It discloses the important precedence rule: when recipeId is provided, any name is ignored and persisted as null. This is genuinely useful behavioral context beyond the schema, though it does not mention other side effects like household visibility or overwrite 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 dense sentences with no filler. The primary purpose is front-loaded, and the important recipeId/name precedence rule is delivered immediately after. 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?
Given the output schema exists and the input schema covers all 7 parameters at 100%, the description only needs to cover cross-parameter relationships and usage intent, which it does. The main omission is acknowledging the global recipe path alongside household recipes, but the schema's recipeSource parameter fills that gap. It is complete enough 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?
With 100% schema description coverage, the baseline is 3. The description adds real semantic value by explaining the mutual-exclusion relationship between recipeId and name, which the schema alone does not make explicit. It also clarifies the persistence effect of supplying both fields. Minor gap: it only mentions list_recipes for recipeId while the schema also allows list_global_recipes.
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 ('Plan a meal') with the two key dimensions (date and meal type) and the core recipe-vs-name choice. It clearly distinguishes this from siblings like create_recipe and update_meal_plan by framing it as placing a meal into a meal plan slot rather than creating or editing a 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?
The description gives clear selection guidance between the two input modes: use recipeId for an existing recipe or name for a custom meal. It also points to list_recipes as the provenance for recipeId. It does not explicitly discuss when to prefer update_meal_plan or avoid duplicates, but the primary decision an agent faces is well covered.
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_eventBInspect
Create a recurring calendar event. It generates event instances on a schedule.
| 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. | |
| 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. |
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, so the main safety profile is covered. The description adds that the tool generates multiple event instances on a schedule, but it does not disclose side effects such as how instances are stored, whether they are generated immediately, or how cancellation/update semantics work.
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 very short and front-loaded, with no filler. Both sentences contribute meaning, though the second sentence is somewhat redundant with the word 'recurring' already in the first.
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 complexity (12 parameters, nested location object, output schema), the description is minimal but the schema covers parameter details. It lacks usage context relative to siblings and does not describe recurrence limits or behavior beyond generation, making it adequate but not fully complete.
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 12 parameters thoroughly. The description does not add additional parameter meaning, but it does not need to because the schema carries the full burden.
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 recurring calendar event and generates instances on a schedule, which is specific and distinct from a one-off event creation. However, it does not explicitly contrast itself with sibling tools like create_calendar_event or create_recurring_task, leaving differentiation mostly implicit.
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 guidance on when to choose this tool over a single-event creator or a recurring task creator. It implies recurring use but provides no exclusion criteria, prerequisites, or explicit alternatives.
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.
| 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. | |
| 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 | Days before each due date to set that instance's preparation date. Clamped to today if it would be past. | |
| assigneeRotation | No | A member id from list_house_members. |
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 signal that this is neither read-only nor destructive. The description adds the useful behavioral detail that the tool generates task instances on a schedule, which clarifies the actual side effect beyond just creating a parent record. It does not discuss other side effects such as immediate instance generation or idempotency, but the schema covers related 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 short sentences with no filler. The core action is stated first, and the behavioral clarification is delivered immediately 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?
For an 8-parameter tool with a fully described schema and an output schema, the description only needs to orient the agent, which it does. It is slightly thin on when-to-use guidance and broader behavioral consequences, but the structured information compensates for most of what is absent.
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 each parameter already has a solid description in the schema, such as 'Interval as N Unit' and 'Notes copied to every generated instance.' The tool description itself adds no additional parameter-level meaning, 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 identifies a specific verb and resource ('Create a recurring task') and adds the behavioral distinction that it generates task instances on a schedule. However, it does not explicitly distinguish this from similar sibling tools like create_recurring_calendar_event or create_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 provides no guidance on when to choose this tool over alternatives, and it does not mention any exclusions, prerequisites, or trade-offs. The agent must infer suitability from the name and the sibling list.
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 recurring cost such as a streaming service or membership, with an optional fee and cron renewal schedule (no more often than daily).
| 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. | |
| renewalCronExpression | No | Cron expression for the renewal cadence. No more often than daily. |
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 (readOnlyHint: false, destructiveHint: false) already indicate this is a non-read-only mutation, and the description adds a meaningful behavioral constraint: the renewal schedule is "no more often than daily". It does not disclose side effects like whether a reminder is triggered on creation, whether duplicate names are rejected, or any household-ownership behavior, leaving the description to carry only minimal behavioral 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?
A single sentence with zero filler: it states the purpose, gives concrete domain examples, and front-loads the key optional fields and the frequency constraint. 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 an output schema present and full parameter-level schema documentation, the description doesn't need to explain return values or each field. It adequately covers core semantics but omits useful context such as household scoping (hinted only by remindMe's "remind the household") and where this fits in the subscription lifecycle (e.g., manage later via update_subscription).
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, giving a baseline of 3. The description reinforces the fee and renewalCronExpression parameters and restates the daily-frequency cap, but adds no new parameter-level meaning 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 communicates the resource as a "recurring cost such as a streaming service or membership" with a specific verb "Track", and the tool name supplies the create semantics. However, the verb "Track" is softer than "create"/"add" and it doesn't explicitly name or differentiate from sibling create_recurring_* tools, though the cost-domain framing clearly distinguishes it from create_recurring_calendar_event and create_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?
Usage context is implied through the examples "streaming service or membership" and the mention of fee plus renewal schedule, which tells an agent this is for monetarily recurring items. It does not state when not to use it, nor name alternatives such as update_subscription or create_recurring_calendar_event, so an agent must infer the boundary.
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. 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. | |
| preparationDate | No | Preparation date, YYYY-MM-DD. Must not follow dueDate. | |
| assignedToMemberId | No | Member id from list_house_members. |
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-read-only and non-destructive, so the description carries the behavioral burden. It usefully discloses that a new task starts unassigned and uncompleted, which is valuable beyond what annotations state.
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, front-loaded sentences with no filler. The first sentence states the action and resource; the second adds essential behavioral context and routes to relevant siblings.
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 exists, return values need no description. The description covers creation defaults and follow-up tools, though it could briefly distinguish recurring task creation for full completeness.
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 five parameters. The description adds little parameter-level meaning beyond the schema's required field and default 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 ('Creates') and resource ('household task'), and clarifies the default state of the new task. This clearly distinguishes create_task from create_recurring_task and other creation 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?
It explicitly states that only title is required and points to assign_task, update_task, or complete_task for later changes. However, it does not explicitly contrast create_task with create_recurring_task or other creation tools.
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.
| 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?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral context beyond annotations: it explicitly scopes to one-off events and explains that omitting both bounds returns everything, which clarifies the tool's behavior in a way annotations do not.
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 states the tool's purpose and returned fields, the second conveys the parameter usage rule. Every sentence contributes and the most critical 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 simple read-only list tool with a full output schema and 100% schema coverage, the description covers the core behavior and boundary condition. A minor gap is that it doesn't explicitly state what happens if only one date bound is provided, but the schema descriptions and examples largely fill that gap.
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 the pairing rule that startDateFrom and startDateTo should be used together or both omitted, which clarifies the relationship between the optional parameters beyond their individual schema descriptions and examples.
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 the specific verb 'List', the resource 'one-off calendar events', and the fields returned (title, times, location, notes). The qualifier 'one-off' clearly distinguishes it from recurring calendar event operations among siblings, making the tool's scope 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 provides clear context that this tool lists one-off events and instructs to bound with both date parameters or omit both for everything. However, it names no alternative tools and does not explicitly state when not to use it, relying on the 'one-off' qualifier rather than direct exclusion.
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 and status. 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, so the safety profile is covered. The description adds that the resource is 'tracked subscriptions' and which fields are returned, but it does not disclose additional behavioral traits such as ordering, pagination, or any implicit scoping. This meets the baseline without going beyond.
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 function is front-loaded, and the optional filtering instruction is placed exactly where it is needed. 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, optional-parameter read-only list tool with a fully described input schema and an output schema available, the description is sufficient. It names the resource, the key output fields, and the filtering mechanism; 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 coverage is 100% and the status parameter already has a clear enum and description. The description's 'Pass status to filter to one' restates what the schema says, adding no new semantic detail. 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 uses a specific verb ('List') and a concrete resource ('tracked subscriptions'), and enumerates the returned attributes: fee, renewal schedule, and status. This clearly distinguishes it from the other list_* siblings by resource and makes its function immediately understandable.
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 guidance on when to choose this tool over alternatives or what prerequisites apply. It only says to pass status for filtering, which is parameter-level guidance rather than tool-selection guidance. Unlike a description that names an alternative, it leaves the agent to infer its place.
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 by 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?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context: default exclusion of completed tasks, sort order (due date ascending, undated first), and cursor pagination. It doesn't mention response format, but since an output schema exists, that's covered. Small gaps like rate limits or whether filters are inclusive are not critical.
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, dense sentence that front-loads the core action and resource, then packs filters, pagination, and default behaviors without waste. 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?
The description covers the essentials: what the tool lists, how it can be filtered, default exclusions, sort order, and pagination. With 100% parameter schema coverage and annotations declaring read-only safety, the only minor gap is not explicitly describing the response shape, but the output schema covers that.
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 six parameters thoroughly. The description adds no parameter-specific details beyond what the schema provides, but it does give context for how parameters relate to default behavior. Baseline 3 is appropriate when schema carries 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 uses a specific verb ('List tasks'), names the resource ('tasks'), and adds filter dimensions (assignee, due-date range, completion) plus cursor pagination. It clearly distinguishes this from sibling list tools like list_calendar_events or 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 explicitly states default behaviors: 'Excludes completed tasks by default and sorts by due date ascending, undated first.' It also names the filtering options and pagination mechanism. While it doesn't name specific alternative tools, it provides enough context for an agent to choose it over other list_* siblings.
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. | |
| 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. | |
| description | No | New description. | |
| endDateTime | No | New end, ISO 8601 UTC. Must not precede startDateTime. | |
| startDateTime | No | New start, ISO 8601 UTC. |
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 tell the agent the tool is not read-only and not destructive. The description adds important behavioral context: it performs a partial update where only supplied fields change and others retain their current value. It also discloses the import restriction, which is a meaningful behavioral constraint beyond what 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?
Two sentences with no filler. The action and the key partial-update behavior are front-loaded, and the import restriction is stated succinctly. 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?
Given a 9-parameter schema with 100% coverage and an output schema, the description doesn't need to restate field details. It covers the two critical non-obvious behaviors: partial updates and the restriction on imported events. It could be slightly more complete by explicitly pointing to update_recurring_calendar_event for series edits, but overall it's sufficient for safe 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 each parameter is already documented. The description adds value by explaining that all fields are optional and only supplied ones are changed, which clarifies how the semi-optional parameters behave as a group. This is more than the schema alone provides, though individual parameter details are left to 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 uses a specific verb ('Updates') and resource ('existing single calendar event'), and clarifies it modifies an existing event rather than creating or deleting one. The phrase 'single' distinguishes it from recurring-event operations, and the partial-update semantics further pin down its purpose. This is a clear, specific definition.
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 the tool is for updating an existing single calendar event, which distinguishes it from creation and from recurring-event updates. It also provides a concrete exclusion: imported (subscription-sourced) events cannot be edited. However, it doesn't explicitly name alternative tools like update_recurring_calendar_event or create_calendar_event, so the routing guidance is implied rather than explicit.
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?
The description adds substantial context beyond the annotations: partial-update semantics, the return value, and the renewalCronExpression no-op quirk ('accepted but not yet stored or acted on, so sending it changes nothing'). This last disclosure prevents an agent from wasting effort on a parameter that silently does nothing. No contradiction with 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?
Three short sentences, front-loaded with the core action, followed by the two behavioral caveats. No filler; each sentence carries distinct information and 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 an 8-parameter update tool with a full output schema, 100% parameter coverage, and annotations covering the read/destructive profile, the description covers the action, field scope, partial-update behavior, and the one API quirk. It does not address error handling (e.g., unknown id) or explicit sibling routing, but nothing critical 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?
Schema coverage is 100%, so the baseline is 3. The description adds value by stating a global partial-update semantic that applies across all parameters and by naming the updatable field set — information not conveyed by the per-field schema properties. The renewalCronExpression warning is reinforced, though it already appears 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 verb ('Update'), a resource ('a stored document'), and enumerates the affected fields (type, title, reference number, issuing authority, fee, notes), plus the return value. This makes the tool's role clear and distinguishes it from document siblings (create_document, delete_document, list_documents) and from all other update_* tools by 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 implies usage — modify an existing document — and gives the useful partial-update pattern ('Only the fields you send change'). However, it never names alternatives or states when not to use it (e.g., create_document for new documents, delete_document for removal), so the when-vs-alternatives decision is 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_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 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. | |
| 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. |
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 mutability and non-destructiveness; the description adds the key behavioral split: title/description/notes patch existing instances, while frequency/dates/time regenerate future instances. This is valuable beyond annotations, though 'regenerate' could be more explicit about whether old future instances are replaced.
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 action and immediately followed by the most important behavioral caveat. 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 a fully documented schema and an output schema, the description only needs to convey the tool's selection and effect, which it does clearly. Could be slightly richer on scope/alternatives, but no invocation-critical information 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 already documents all 13 parameters with 100% coverage, including patch behavior for title/description. The description adds only a coarse grouping (notes/title/description vs frequency/dates/time), so it meets baseline but adds no new 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?
States a specific action ('Update') and resource ('recurring calendar event'). The second sentence adds a defining behavioral distinction (patch vs regenerate) that separates it from update_calendar_event and delete_recurring_calendar_event.
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 establishes the context for use: updating a recurring calendar event. It does not explicitly name alternatives like update_calendar_event for one-off events, so it stops short of full when/when-not guidance.
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 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. | |
| 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 | Days before each due date to set that instance's preparation date. Applies to instances generated after this change. | |
| assigneeRotation | No | A member id from list_house_members. |
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 a key behavioral nuance: title/notes changes patch existing instances while frequency/date changes regenerate future instances. This is valuable side-effect information that significantly aids correct invocation, though it does not cover all possible behavioral edge cases.
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, front-loaded with the primary action and immediately followed by the most important behavioral distinction. 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?
With a complete input schema and an output schema present, the description is nearly sufficient on its own. It covers the core side-effect behavior that would otherwise be unclear. Minor gaps exist around invocation context, but the schema and annotations fill most remaining needs.
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 description coverage with rich detail. The description adds a helpful grouping of parameter effects (title/notes vs frequency/date), but most parameter-level meaning is already in the schema, so the added value is moderate.
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 recurring task.' It further clarifies the scope by distinguishing between patching existing instances and regenerating future instances, which clearly differentiates it from generic update_task or create_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 makes it clear this tool is for updating recurring task templates, with behavior on existing and future instances. It does not explicitly name alternatives or state when not to use it, but the context is clear enough for an agent to select it correctly.
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 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. | |
| renewalCronExpression | No | Cron expression for the renewal cadence, no more often than daily. Empty string clears it. |
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 declare readOnlyHint=false (a write operation) and destructiveHint=false (won't destroy other data), and the description is fully consistent with both: 'Update' matches the write hint, and 'Only the fields you send change' explains why it is non-destructive. The description adds genuinely useful behavior beyond annotations — the PATCH-like partial-update contract and the empty-string-clears-value edge case for two specific fields.
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 waste. The core action is front-loaded first, then the two critical behavioral rules (partial updates, empty-string clearing) follow. Every clause earns its place and there is no 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 7-parameter mutation tool with an output schema and annotations covering the safety profile, the description captures the non-obvious semantics an agent needs: partial update behavior and the empty-string clearing gotcha. What's missing is only optional — no explicit pointer to alternatives for create/delete — but schema and annotations carry 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 coverage is 100%, so every parameter already has a meaningful description (e.g., id provenance from list_subscriptions, minor units for fee, enum constraint for status). The description's clearing rule for notes and renewalCronExpression largely restates what the schema already says ('Empty string clears them/it'), though it adds the unifying partial-update interpretation that applies to all params.
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 ('Update a subscription') and adds the partial-update semantics ('Only the fields you send change'), which sharpens what the tool does. It distinguishes from sibling tools primarily by naming the resource 'subscription' — sufficient given all siblings are update_* tools for other resources — but it doesn't explicitly contrast with create_subscription or delete_subscription.
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 behavioral usage guidance: partial updates and the empty-string clearing rule for renewalCronExpression and notes. However, it never states when to use this tool versus alternatives (e.g., create_subscription for new entries, delete_subscription for removal), leaving the when/when-not distinction implicit.
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, preparation date or notes. 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. | |
| preparationDate | No | New preparation date, YYYY-MM-DD. Must not follow dueDate. Empty string clears it. | |
| assignedToMemberId | No | Member id to assign. Empty string 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 mutating but non-destructive operation. The description adds valuable behavioral detail by clarifying partial-update semantics: only submitted fields are changed. This is exactly the kind of context beyond the annotations that helps an agent avoid overwriting unmentioned fields.
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 wasted words. The core action is front-loaded, and the important partial-update constraint is stated immediately after.
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 full schema coverage, a self-describing output schema, and annotations covering mutation safety, the description is largely sufficient. The main gap is not explaining how this tool relates to assign_task, which could lead to an agent choosing the wrong tool for assignment-only updates.
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, including date formats and empty-string clearing behavior. The description lists field categories but adds little 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 uses a clear verb and resource: it updates a task's title, assignee, due date, preparation date, or notes. It is clear about what the tool does, but it does not explicitly distinguish itself from overlapping siblings like assign_task, which also relates to assignment.
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 'Only the fields you send change' gives useful partial-update context and implies when to use the tool. However, it does not explicitly state when to prefer alternatives such as assign_task, complete_task, or create_task, so the guidance versus siblings is only implicit.
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.
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 +]
5 tool updates
- Changed
create_document1 field changed- added
Input schema / properties / titleAdded value: +{ + "type": "string" +}
- Changed
create_subscription1 field changed- added
Input schema / properties / remindMeAdded value: +{ + "description": "Whether to send renewal reminders for this subscription", + "type": "boolean" +}
- Changed
update_document1 field changed- added
Input schema / properties / titleAdded value: +{ + "type": "string" +}
- Changed
update_subscription1 field changed- added
Input schema / properties / remindMeAdded value: +{ + "description": "Whether to send renewal reminders for this subscription", + "type": "boolean" +}
- Changed
update_task2 fields changed- changed
Input schema / properties / dueDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"YYYY-MM-DD format, or empty string to clear" - changed
Input schema / properties / preparationDate / descriptionPrevious value: -"YYYY-MM-DD format"New value: +"YYYY-MM-DD format, or empty string to clear"
68 tool updates
- First observed
add_shopping_list_item - First observed
assign_task - First observed
batch_add_shopping_list_items - First observed
buy_shopping_list_item - First observed
complete_task - First observed
create_appliance - First observed
create_calendar_event - First observed
create_contact - First observed
create_document - First observed
create_meal_plan - First observed
create_pet - First observed
create_recipe - First observed
create_recurring_calendar_event - First observed
create_recurring_task - First observed
create_subscription - First observed
create_task - First observed
create_vehicle - First observed
defer_recommendation - First observed
delete_appliance - First observed
delete_calendar_event - First observed
delete_contact - First observed
delete_document - First observed
delete_meal_plan - First observed
delete_pet - First observed
delete_recipe - First observed
delete_recurring_calendar_event - First observed
delete_recurring_task - First observed
delete_subscription - First observed
delete_task - First observed
delete_vehicle - First observed
forget_memory - First observed
get_house - First observed
get_house_review - First observed
get_profile - First observed
get_weather_forecast - First observed
list_appliances - First observed
list_calendar_events - First observed
list_contacts - First observed
list_documents - First observed
list_global_recipes - First observed
list_house_members - First observed
list_houses - First observed
list_meal_plans - First observed
list_pets - First observed
list_recipes - First observed
list_shopping_list_items - First observed
list_subscriptions - First observed
list_tasks - First observed
list_vehicles - First observed
recall_memory - First observed
remove_shopping_list_item - First observed
skip_recommendation - First observed
store_memory - First observed
uncomplete_task - First observed
update_appliance - First observed
update_calendar_event - First observed
update_contact - First observed
update_document - First observed
update_meal_plan - First observed
update_memory - First observed
update_pet - First observed
update_recipe - First observed
update_recurring_calendar_event - First observed
update_recurring_task - First observed
update_shopping_list_item - First observed
update_subscription - First observed
update_task - First observed
update_vehicle
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
- AlicenseNot gradedqualityBmaintenanceEnables household management through natural language, covering bills, chores, shopping, reminders, budget, and smart-home devices, with every mutating action dry-run, confirmed, and audited.MIT
- 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.