Skip to main content
Glama

Create PM template

create_pm_template

Create a new PM template. Templates are reusable PM definitions (not linked to a site/asset) that can seed new PM schedules. Requires pm_templates:write scope.

Input Schema

NameRequiredDescriptionDefault
tasksNoChecklist of tasks baked into this template
titleYesPM template title (required, unique per tenant)
asset_idsNoDefault asset IDs to seed on derived schedules
documentsNoDocument references
frequencyNoSuggested maintenance frequency
resourcesNoResource references (parts, tools, materials, equipment)
descriptionNoDescription
location_idsNoDefault location IDs to seed on derived schedules
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 - resolve via list_work_categories
safety_requirementsNoSafety requirements
custom_interval_weeksNoCustom interval in weeks (when frequency is CUSTOM)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 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 / 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. Changed10 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 / 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. Changed10 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 / 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.7/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, not destructive, not idempotent), so the bar is lower. The description adds useful context beyond annotations: the required pm_templates:write scope and the fact that templates are unlinked, reusable definitions. It does not cover return format or uniqueness behavior, but the auth requirement is a meaningful addition.

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?

Three short, front-loaded sentences with no waste: the action first, then the definitional context, then the scope requirement. Every sentence earns its place.

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 15-parameter creation tool with no output schema, the description is thin: it omits the post-creation flow (how the template is later consumed via create_pm_schedule) and any note on the seeded defaults. Annotations and full schema coverage carry most of the weight, but there is room to do more.

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%, so the schema already documents all 15 parameters including the title uniqueness constraint and the PUBLISHED form_template caveat. The description adds no parameter-level detail, so the baseline 3 is correct.

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 and resource ("Create a new PM template") and clarifies the resource is not linked to a site/asset, distinguishing it from create_pm_schedule. The mention that templates "seed new PM schedules" further separates it from its siblings without naming them explicitly.

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?

Usage is implied through the definition of what a template is and that it seeds schedules, but there is no explicit when-to-use versus when-not, and no guidance on choosing create_pm_template over create_pm_schedule. Adequate but leaves routing to inference.

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