Monitors

Lists all notifiers in the organization, sorted by name. Labels are resolved unless exclude=labels.

Request

Query parameters

exclude'labels'

Exclude resolved label objects from each notifier response. The labelIds and labelNames fields are still returned.

labelstring[]

Filter by label names in your organization. Repeat the parameter for multiple names, for example ?label=prod&label=team-a. Names match case-insensitively after whitespace normalization; duplicates count once. Commas are part of a name, not separators. Reading resources never creates missing labels.

labelMatch'any' | 'all'

How to combine label names: any (the default) requires at least one requested label on a resource; all requires every requested label on that same resource. For example, ?label=prod&label=team-a matches either label, while ?label=prod&label=team-a&labelMatch=all requires both. Unknown names have no matches with any and make all return no resources. Without label parameters, labelMatch has no effect.

Response

Notifiers in the organization.

createdAtstring date-time

Timestamp when the notifier was created

createdBystring

Email or ID of the user who created the notifier

createdByAgentboolean

true when the MCP server created this notifier

disabledboolean

Whether repeated delivery failures disabled the notifier. False when a user snoozed it with disabledUntil. Ignored on requests

disabledUntilstring

ISO timestamp until which the notifier is disabled (null if enabled)

lastErrorstring

The delivery error that disabled the notifier. Empty for email notifiers and when disabled is false. Ignored on requests

namestring required

Human-readable name for the notifier

updatedAtstring date-time

Timestamp when the notifier was last updated

idstring

Unique identifier for the notifier

labelIdsLabelID[] required

IDs of labels assigned to this notifier.

labelNamesstring[] required

Names of assigned labels, including with exclude=labels; [] when unassigned.

Example response

[
  {
    "createdAt": "2024-01-15T10:30:00Z",
    "createdBy": "alice@example.com",
    "disabledUntil": "2024-03-20T15:00:00Z",
    "name": "Production Slack Alerts",
    "properties": {
      "chatgptWorkspaceAgent": {
        "triggerId": "agtch_example"
      },
      "claudeCode": {
        "routineId": "trig_01ABCDEFGHJKLMNOPQRSTUVW"
      },
      "cursor": {
        "webhookUrl": "https://api2.cursor.sh/automations/webhook/00000000-0000-0000-0000-000000000000"
      },
      "customWebhook": {
        "body": "{\"alert\": \"{{.AlertName}}\", \"severity\": \"{{.Severity}}\", \"message\": \"{{.Message}}\"}",
        "headers": {
          "Content-Type": "application/json",
          "X-API-Version": "1.0"
        },
        "secretHeaders": {
          "Authorization": "Bearer {{token}}"
        },
        "url": "https://api.custom-service.com/alerts"
      },
      "discord": {
        "discordChannel": "123456789012345678",
        "discordToken": "Bot 123456789012345678",
        "messageTemplate": {
          "body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
          "title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
        }
      },
      "discordWebhook": {
        "discordWebhookUrl": "https://discord.com/api/webhooks/123456789012345678/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "messageTemplate": {
          "body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
          "title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
        }
      },
      "email": {
        "emails": [
          "oncall@example.com",
          "alerts@example.com"
        ],
        "messageTemplate": {
          "body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
          "title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
        }
      },
      "jiraServiceManagement": {
        "apiKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      },
      "microsoftTeams": {
        "messageTemplate": {
          "body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
          "title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
        },
        "microsoftTeamsUrl": "https://outlook.office.com/webhook/123456789/IncomingWebhook/..."
      },
      "opsgenie": {
        "apiKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "isEU": true
      },
      "pagerduty": {
        "routingKey": "1234567890abcdef1234567890abcdef",
        "token": "u+1234567890abcdef1234567890abcdef"
      },
      "slack": {
        "messageTemplate": {
          "body": "Value {{.Value}} crossed {{.Threshold}}.{{range .Groups}}\n{{index .Values \"service\"}}: {{.Value}}{{end}}",
          "title": "{{if eq .Action \"Open\"}}🔥{{else}}✅{{end}} {{.Name}}"
        },
        "slackUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
      },
      "webhook": {
        "url": "https://api.example.com/webhooks/alerts"
      }
    },
    "updatedAt": "2024-01-15T11:00:00Z",
    "id": "z0NfJw64aKagPOBBIJ"
  }
]

Changes

    • info

      added the new optional query request parameter label

    • info

      added the new optional query request parameter labelMatch

    • info

      added the non-success response with the status

    • info

      added the optional property ///// to the response with the status

    • info

      added the optional property ///// to the response with the status

    • info

      added the optional property ///// to the response with the status

    • info

      added the optional property ////// to the response with the status

    • info

      added the optional property ////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property ////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the required property // to the response with the status

    • breaking

      the / response's property type changed from no type to object for status

    • info

      added the new optional query request parameter exclude

    • info

      added the optional property ////// to the response with the status

    • info

      added the optional property ////// to the response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the required property // to the response with the status