Skip to main content
Glama

Update PM template

update_pm_template
DestructiveIdempotent

Update an existing PM template by ID. Requires pm_templates:write scope.

Input Schema

NameRequiredDescriptionDefault
idYesPM template ID
tasksNoChecklist of tasks baked into this template
titleNoPM template title
asset_idsNoDefault asset IDs
documentsNoDocument references
frequencyNoSuggested maintenance frequency
resourcesNoResource references (parts, tools, materials, equipment)
descriptionNoDescription
location_idsNoDefault location IDs
work_categoryNoWork category label (free text)
estimated_costNoEstimated cost
estimated_hoursNoEstimated hours
form_template_idNoForm template ID to attach to every work order this generates - resolve via list_form_templates. Use a PUBLISHED template: generation resolves the current published version of the form, so a draft attaches nothing until it is published.
work_category_idNoWork category ID
safety_requirementsNoSafety requirements
custom_interval_weeksNoCustom interval in weeks (when frequency is CUSTOM)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / asset_ids / items / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • addedInput schema / properties / custom_interval_weeks / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / documents / items / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / form_template_id / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • addedInput schema / properties / id / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • addedInput schema / properties / location_ids / items / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • removedInput schema / properties / resources / items / additionalProperties
      Removed value: -false
    • removedInput schema / properties / tasks / items / additionalProperties
      Removed value: -false
    • addedInput schema / properties / work_category_id / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
  2. Changed11 schema fields changed
    • changedInput schema / $schema
      Previous value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#"
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / asset_ids / items / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • removedInput schema / properties / custom_interval_weeks / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / documents / items / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedInput schema / properties / form_template_id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • removedInput schema / properties / id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • removedInput schema / properties / location_ids / items / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • addedInput schema / properties / resources / items / additionalProperties
      Added value: +false
    • addedInput schema / properties / tasks / items / additionalProperties
      Added value: +false
    • removedInput schema / properties / work_category_id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
  3. Changed11 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / asset_ids / items / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • addedInput schema / properties / custom_interval_weeks / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / documents / items / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / form_template_id / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • addedInput schema / properties / id / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • addedInput schema / properties / location_ids / items / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • removedInput schema / properties / resources / items / additionalProperties
      Removed value: -false
    • removedInput schema / properties / tasks / items / additionalProperties
      Removed value: -false
    • addedInput schema / properties / work_category_id / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
  4. First observed

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this as a non-read-only, destructive, idempotent, closed-world mutation, so the safety profile is covered. The description adds the required write scope, but is silent on what "destructive" means here — e.g. whether omitted fields are cleared or whether the tasks array replaces the existing checklist wholesale.

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

Conciseness5/5

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

Two short sentences with zero filler; the action/scope statement is front-loaded and the permission requirement follows immediately. Nothing could be removed without losing information.

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

Completeness3/5

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

For a 16-parameter destructive update with no output schema, the description is serviceable but thin: only 1 of 16 fields is required, yet there is no mention of patch-vs-replace semantics, partial-update behavior, or what gets discarded. The annotations mitigate this somewhat by signaling destructiveness, keeping it at minimum-viable rather than inadequate.

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

Parameters3/5

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

Schema description coverage is 100% across all 16 properties, including unusually rich notes on form_template_id (PUBLISHED-only) and enum values, so the schema carries parameter semantics. The description adds nothing beyond the schema, which is the baseline 3 case.

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

Purpose4/5

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

States a specific verb (Update), resource (PM template), and identifies the target by ID, so an agent can immediately tell it apart from create_pm_template/delete_pm_template. It does not, however, contrast itself against update_pm_schedule or list_pm_templates, which a reader might confuse with the same domain.

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

Usage Guidelines3/5

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

The description supplies a precondition ("Requires pm_templates:write scope") which is useful operational context, but gives no guidance on when to use this versus create_pm_template or update_pm_schedule, and no exclusions or alternatives are named. Usage is only implied by the verb.

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