Skip to main content
Glama

List maintenance windows

list_maintenance_windows
Read-onlyIdempotent

Get a paginated list of the maintenance windows of the project, newest first. Filter them by state, monitor, status page or tag.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "project_id": "<project_id>"
    },
    "name": "list_maintenance_windows"
  }
}

Input Schema

NameRequiredDescriptionDefault
tagNoFilter maintenance windows by tag. Can be specified multiple times to only return maintenance windows having all the given tags.
pageNoPage number to show
stateNoFilter maintenance windows by state.
per_pageNoNumber of resources to return per page
monitor_idNoFilter maintenance windows by monitor ID. Can be specified multiple times to filter by multiple monitor IDs.
project_idYesID of the project to act on, see whoami
status_page_idNoFilter maintenance windows by status page ID. Can be specified multiple times to filter by multiple status page IDs.

Output Schema

NameRequiredDescriptionDefault
dataNo
metaNoMeta data for pagination

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "data": {
      +      "items": {
      +        "properties": {
      +          "created_at": {
      +            "description": "Date of creation for the entity",
      +            "format": "date-time",
      +            "type": "string"
      +          },
      +          "description": {
      +            "description": "Description of the maintenance window",
      +            "examples": [
      +              "Planned database upgrade and maintenance"
      +            ],
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "ends_at": {
      +            "description": "Date and time when the maintenance window ends, with minute precision (seconds must be `00`). Must be after `starts_at` and within the next year.",
      +            "format": "date-time",
      +            "type": "string"
      +          },
      +          "id": {
      +            "description": "Maintenance window ID",
      +            "examples": [
      +              1
      +            ],
      +            "type": "integer"
      +          },
      +          "monitoring_mode": {
      +            "description": "Monitoring mode during maintenance",
      +            "enum": [
      +              "pause",
      +              "mute",
      +              "normal"
      +            ],
      +            "type": "string"
      +          },
      +          "monitors": {
      +            "description": "List of monitor IDs linked to the maintenance window",
      +            "examples": [
      +              [
      +                1,
      +                2,
      +                3
      +              ]
      +            ],
      +            "items": {
      +              "type": "integer"
      +            },
      +            "type": "array"
      +          },
      +          "project_id": {
      +            "description": "Parent project ID",
      +            "examples": [
      +              1
      +            ],
      +            "type": "integer"
      +          },
      +          "starts_at": {
      +            "description": "Date and time when the maintenance window starts, with minute precision (seconds must be `00`). Must be within the next year.",
      +            "format": "date-time",
      +            "type": "string"
      +          },
      +          "state": {
      +            "description": "Maintenance window state",
      +            "enum": [
      +              "scheduled",
      +              "in_progress",
      +              "completed",
      +              "cancelled"
      +            ],
      +            "type": "string"
      +          },
      +          "status_pages": {
      +            "description": "List of status page IDs linked to the maintenance window",
      +            "examples": [
      +              [
      +                1,
      +                2
      +              ]
      +            ],
      +            "items": {
      +              "type": "integer"
      +            },
      +            "type": [
      +              "array",
      +              "null"
      +            ]
      +          },
      +          "tags": {
      +            "description": "Resource tags, made of lowercase letters, numbers, `.`, `_`, `:` and `-`. An organization can have up to 200 tags.",
      +            "items": {
      +              "examples": [
      +                "environment:production"
      +              ],
      +              "type": "string"
      +            },
      +            "type": [
      +              "array",
      +              "null"
      +            ]
      +          },
      +          "title": {
      +            "description": "Maintenance window title",
      +            "examples": [
      +              "Database upgrade"
      +            ],
      +            "type": "string"
      +          },
      +          "updated_at": {
      +            "description": "Date of last update for the entity",
      +            "format": "date-time",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "meta": {
      +      "description": "Meta data for pagination",
      +      "properties": {
      +        "current_page": {
      +          "examples": [
      +            2
      +          ],
      +          "type": "integer"
      +        },
      +        "from": {
      +          "examples": [
      +            11
      +          ],
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "has_more_pages": {
      +          "description": "Whether a next page exists, fetched with the page argument",
      +          "type": "boolean"
      +        },
      +        "per_page": {
      +          "examples": [
      +            100
      +          ],
      +          "type": "integer"
      +        },
      +        "to": {
      +          "examples": [
      +            20
      +          ],
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds genuinely new behavior only in the 'newest first' ordering; 'paginated' merely restates the page/per_page parameters already in the schema, and nothing is said about auth or result-volume limits.

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 sentences, no filler: the resource and ordering come first, then the available filters. Every clause carries information an agent can act on.

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?

With seven parameters, rich annotations, and an output schema (which removes any need to describe return values), the description covers resource, ordering, pagination, and filter set adequately. A brief note on the project_id requirement (echoing 'see whoami') or result-count behavior would make it fully complete.

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 every parameter including the state enum and the multi-value tag/monitor_id/status_page_id semantics is already documented. The description names the four filter dimensions but adds no syntax, combination, or default behavior beyond the schema, making the baseline 3 appropriate.

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?

The description gives a specific verb and resource ('Get a paginated list of the maintenance windows of the project') plus scope ('of the project') and ordering ('newest first'). This cleanly separates it from the singular get_maintenance_window and from mutating siblings like create/update/delete_maintenance_window, though no sibling is named 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 by the name and the enumeration of filters — an agent can infer this is the discovery tool to call before get/update/delete on a specific window. There is no explicit when-to-use/when-not statement and no pointer to alternatives such as get_maintenance_window for a single record.

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