Skip to main content
Glama

Mark maintenance done

complete_maintenance

Records completed maintenance tasks, updates next due dates, adjusts part stock, and logs notes or costs so recurring upkeep stays on schedule.

Instructions

Records that a task was done (today, or doneOn), with an optional note and cost in cents — use it whenever the person says they did one ("changed the furnace filter"); the id comes from list_maintenance. Credited to the task's usual provider unless providerId says otherwise (null: the household did it), and its part, if it has one, comes out of stock. A repeating task is then due again one interval after that day; a one-off is finished. For maintenance by use, give reading (what the odometer or hour meter says now): the next is due usageEvery after it. Returns the task with its new due date.

Input Schema

NameRequiredDescriptionDefault
idYesThe task's id, from list_maintenance
noteNoAnything worth remembering about this time
doneOnNoWhen it was done, yyyy-mm-dd; today if left out. The next due date counts from this day
readingNoMaintenance by use: what the item's counter says now; the next one is due usageEvery after it
usePartNoTake the task's part out of stock (default true; false when an old one was cleaned instead)
costCentsNoWhat it cost this time, in cents
providerIdNoWho did it this time (list_providers); left out: the task's usual provider; null: the household

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv0.1.1
    • addedInput schema / properties / costCents / description
      Added value: +"What it cost this time, in cents"
    • addedInput schema / properties / doneOn / description
      Added value: +"When it was done, yyyy-mm-dd; today if left out. The next due date counts from this day"
    • addedInput schema / properties / id / description
      Added value: +"The task's id, from list_maintenance"
    • addedInput schema / properties / note / description
      Added value: +"Anything worth remembering about this time"
    • addedInput schema / properties / providerId / description
      Added value: +"Who did it this time (list_providers); left out: the task's usual provider; null: the household"
    • addedInput schema / properties / reading / description
      Added value: +"Maintenance by use: what the item's counter says now; the next one is due usageEvery after it"
    • addedInput schema / properties / usePart / description
      Added value: +"Take the task's part out of stock (default true; false when an old one was cleaned instead)"
  2. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing side effects and state transitions: crediting to the task's usual provider, providerId=null meaning the household did it, the part being decremented from stock, repeating tasks rescheduling one interval after doneOn, one-off tasks being closed out, and reading-based rescheduling by usageEvery. It also states what is returned, which the annotations do not cover.

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?

Front-loaded with the trigger, then side effects, then the use-based special case, then the return value — a logical order with no filler. It is a single dense block, though, and could be split for faster scanning of the reading/providerId branches.

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

Completeness5/5

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

For a 7-parameter mutation with no output schema, the description covers the trigger, the id source, provider crediting, stock consumption, rescheduling rules for both recurring and one-off tasks, the usage-based path, and the return value. Nothing an agent needs in order to invoke it correctly 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 cross-parameter meaning: reading pairs with usageEvery to compute the next due date, providerId's null has a specific household semantic, and usePart's false case is motivated ('an old one was cleaned instead'). Most individual parameter phrasing still mirrors the schema, so it is not a full 5.

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 ('Records that a task was done') plus the scope of what can be supplied (today or doneOn, note, cost). It is clearly distinguished from add_maintenance, delete_maintenance, and list_maintenance, the latter named explicitly as the source of the id.

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

Usage Guidelines4/5

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

Gives a concrete trigger with a natural-language example ('whenever the person says they did one — "changed the furnace filter"') and routes the agent to list_maintenance for the id. It also carves out the use-based case via reading, but never distinguishes this tool from the sibling record_reading, which an agent could plausibly pick instead when a counter value is involved.

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