Skip to main content
Glama

Add or change a maintenance task

save_maintenance

Adds upkeep to track — on an item (itemId), a place (locationId) or the whole household — or, with id, changes a task (title, notes, how often, what it's on, who does it, its part, or dueOn to reschedule; that also re-opens a finished…

Instructions

Adds upkeep to track — on an item (itemId), a place (locationId) or the whole household — or, with id, changes a task (title, notes, how often, what it's on, who does it, its part, or dueOn to reschedule; that also re-opens a finished one-off). To add: title, plus intervalCount + intervalUnit for something that repeats ("every 3 months") or neither for a one-off; dueOn defaults to one interval from today. By use ("every 5,000 miles"): usageEvery, on an item with a usageUnit and a reading (record_reading) — it can have a time interval too, whichever comes first. Check list_maintenance first so you don't add it twice. Not for recording that it was done: that's complete_maintenance. Returns the task with its due date.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "save_maintenance"
  }
}

Input Schema

NameRequiredDescriptionDefault
idNoThe task to change, from list_maintenance; leave out to add a new one
dueOnNoReschedule: when it's next due, yyyy-mm-dd (also re-opens a finished one-off)
notesNoHow to do it: the part number, steps, what to watch for
titleNoWhat to do
itemIdNoThe item it's for (search_inventory); null: not on an item
locationIdNoThe place it's for (list_locations); null: not on a place
partItemIdNoThe consumable it uses (a filter item); null: none
providerIdNoWho usually does it, from list_providers; null: the household
usageEveryNoDue every this much use, in the item's usageUnit; null: not by use
attachmentIdNoThe manual it came from: a document's id from get_item
intervalUnitNoThe unit of intervalCount
partQuantityNoHow many of the part each time
intervalCountNoRepeats every this many intervalUnits ("every 3 months": 3); leave both out for a one-off

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2026.11.10

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare non-destructive write with openWorld=false, so the description carries real weight: it discloses that dueOn defaults to one interval from today, that passing dueOn re-opens a finished one-off, and that the call returns the task with its due date. It doesn't discuss permission requirements or side effects on related records, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense and front-loaded, leading with the add-vs-change split before defaults and alternatives. The nested parentheticals and semicolon chains make it harder to scan than it needs to be, but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter mutation with no output schema, it covers the critical paths: add vs update, recurring vs one-off defaults, usage-based due-ness, and the return value. Occasionally obscure 'what it's on' phrasing leaves some field mappings implicit, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds conditional meaning the schema does not encode: intervalCount and intervalUnit must be given together for a repeating task or both omitted for a one-off, and usageEvery pairs with usageUnit and a reading. That cross-parameter logic is genuinely useful beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource and explicitly splits the two modes: add (no id) versus change (with id), enumerating what can be changed. It names the siblings it is not (list_maintenance, complete_maintenance), so an agent can distinguish it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance on when to use: check list_maintenance first to avoid duplicates, and not for recording completion — route that to complete_maintenance. It also spells out the usage-based path requiring an item with a usageUnit and a reading via record_reading.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.