Skip to main content
Glama

Update a machine

update_machine
Destructive

Correct a registered machine (its name, control type, prep type and style, basket, boiler, accessories or notes), or record where its selectors stand (settings). Only the keys you send in fields change; send null to clear an optional field (an empty string also clears a text field, but not a number or a closed list). Required fields can be changed but not cleared. fields may be omitted when only reason is sent. prep_style decides whether shots on this machine are diagnosed at all: only "espresso" is. Programs are edited with register_program, the built-in grinder link is not editable here, and archiving is set_equipment_archived.

Input Schema

NameRequiredDescriptionDefault
fieldsNo
reasonNoOptional note, appended to this record's own notes as an ordinary line. Omit it and nothing is written.
machine_idYesThis account's own machine number, from list_machines. Never guess one.

Output Schema

NameRequiredDescriptionDefault
statusYes
messageYes
machine_idYes
changed_keysYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / fields / properties / settings
      Added value: +{
      +  "description": "Where the machine's selectors now stand, as {key: position} from list_machines settings, e.g. {\"brew_temperature\": \"ii\"}. Only the keys given change; a null position clears one, null clears all. Shots are stamped with these.",
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  2. Changed2 schema fields changed
    • addedInput schema / properties / fields / properties / catalog_id
      Added value: +{
      +  "description": "The maintenance catalog model this machine is; \"none\" if it is not listed; null to unbind. list_machines proposes one from the name under maintenance.catalog.match",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / fields / properties / hardness_dh
      Added value: +{
      +  "description": "The total hardness (GH) of the water this machine runs on, in °dH; null to fall back to the water of its last shot",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
  3. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations give destructiveHint=true without explaining scope, and the description fills that gap precisely: partial-update semantics ('Only the keys you send in fields change'), the null-vs-empty-string clearing rule and its exception for numbers and closed lists, and the fact that required fields can be changed but not cleared. It also discloses a cross-system side effect not visible anywhere else — prep_style determines whether shots are diagnosed at all.

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?

Highly front-loaded: purpose, then update/clearing semantics, then exceptions, then sibling routing. The parenthetical field list and the dense closing sentence are efficient but pack several rules into single run-on clauses, which costs a little readability.

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 nested-object mutation with an output schema, the description covers what an agent actually needs: how partial updates work, how to clear values, what cannot be cleared, what is out of scope, and the domain consequence of prep_style. Return values are correctly left to the output schema.

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?

With 67% schema coverage the schema already documents most fields, but the description adds rules the schema does not: the null/empty-string clearing asymmetry, the distinction between changing versus clearing required fields, and the consequence of prep_style on diagnosis. It does not, however, restate which fields are required or optional, leaving that to 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?

Opens with a specific verb+resource ('Correct a registered machine') and enumerates the exact editable surface (name, control type, prep type/style, basket, boiler, accessories, notes) plus the secondary purpose of recording selector positions. It explicitly carves out what belongs to siblings: 'Programs are edited with register_program, the built-in grinder link is not editable here, and archiving is set_equipment_archived.'

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?

Names three alternatives and the boundary condition for each (register_program for programs, set_equipment_archived for archiving, grinder link out of scope). It also states the degenerate call shape ('fields may be omitted when only reason is sent'), removing the main invocation ambiguity.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources