Skip to main content
Glama
TANTIOPE

Datadog MCP Server

monitors

Manage alert configurations: list, search, create, update, delete, mute, unmute, and view top alerts. Also check monitor history and preview message templates.

Instructions

Manage Datadog monitors. Actions: list, get, search, create, update, delete, mute, unmute, top, history, preview, test_notification. Filters: name, tags, groupStates (alert/warn/ok/no data). get/create/update return the full options object so callers can safely read-then-patch.

create/update accept a config object validated against a typed schema covering the documented Datadog Monitor fields:

  • Top-level: name, type, query, message, tags, priority (1-5, nullable), restrictedRoles, multi, options.

  • options.* validated keys grouped by category:

    • notification: notifyNoData, noDataTimeframe, notifyAudit, notificationPresetName.

    • evaluation/delay: newHostDelay, newGroupDelay, evaluationDelay, requireFullWindow, onMissingData.

    • renotification: renotifyInterval (nullable), renotifyOccurrences, renotifyStatuses, escalationMessage.

    • lifecycle: timeoutH (nullable), includeTags, locked, silenced (record of timestamps/null), groupRetentionDuration.

    • thresholds: thresholds (critical/warning/ok/criticalRecovery/warningRecovery/unknown), thresholdWindows.

    • scheduling: schedulingOptions. Unknown keys (top-level or under options) are forwarded to Datadog as-is and surfaced via an optional warnings array on the response, so the schema does not lag the API. snake_case aliases are accepted on input and normalized to camelCase before validation. Validation errors short-circuit before any HTTP call and surface as 'EINVALID_MONITOR_CONFIG: : '. Reference: https://docs.datadoghq.com/api/latest/monitors/

top: Ranked monitors by alert frequency with real monitor names and context breakdown.

  • Returns: {rank, monitor_id, name (with {{template.vars}}), message (template), total_count, by_context}

  • Perfect for weekly/daily alert reports

  • Gets real monitor names from monitors API (not event titles)

  • WARNING: total_count is the raw alert-event count and INCLUDES renotifies/re-evaluations. For monitors stuck in Alert state, Datadog emits a renotify event every renotify_interval minutes, which inflates this count well beyond the number of real fires. When the question is "how many times did this monitor actually fire", use action=history instead.

history: Count and list real state transitions for one monitor over a time window.

  • Inputs: id (required, monitor ID), from/to (optional time range), transitionType (optional filter, defaults to ["alert","alert recovery"]), group (optional multi-alert group filter).

  • Returns: {transitions: [{timestamp, monitorId, monitorName, group, fromState, toState, transitionType, eventId}], count, meta}

  • count = transitions.length — the number of REAL state changes (fires + recoveries by default), NOT the renotify-inflated count returned by action=top or events action=search.

  • Backed by Datadog v2 events search with a hardcoded source:alert + @monitor.transition. transition_type filter that excludes renotifies by default. To include renotifies, pass transitionType including "renotify".

preview: Render a Datadog monitor message template against a context (read-only safe).

  • Inputs: either inline 'message' OR 'monitor_id' (or existing 'id'); plus optional 'context' { variables, conditionals }.

  • Supported syntax: {{variable.name}} substitution and conditional blocks {{#name}}...{{/name}} / {{^name}}...{{/name}} where name is one of: is_alert, is_warning, is_no_data, is_recovery, is_alert_to_warning, is_warning_to_alert.

  • Missing variables render as {{undefined:name}} markers and are reported in 'variablesMissing'.

  • Loops ({{#each ...}}) and partials ({{> ...}}) return EUNSUPPORTED_TEMPLATE_SYNTAX.

  • Allowed under --read-only (no mutation; at most a getMonitor load).

test_notification: KNOWN LIMITATION — always returns ENOT_SUPPORTED.

  • Datadog's public REST API exposes no monitor test-notification endpoint at v1 or v2 (audited against the official OpenAPI specs). The v1 SDK has no notifyMonitor / testMonitor method.

  • Allowed under --read-only because no Datadog HTTP call is attempted.

  • If Datadog publishes such an endpoint in future, this action will be reimplemented to invoke it.

  • Workaround: use the 'Test Notifications' button in the Datadog monitor UI.

For generic event grouping (deployments, configs), use events tool instead. Note that the events tool's action=search with source:alert ALSO includes renotifies; use its transitionType filter (or this action=history) for fires-only counts.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actionYesAction to perform
idNoMonitor ID (required for get/update/delete/mute/unmute)
queryNoSearch query (for search action)
nameNoFilter by name (for list action)
tagsNoFilter by tags
groupStatesNoFilter multi-alert monitors by group states (e.g., alert by host). Does NOT filter by overall monitor status. Values: alert, warn, no data, ok
limitNoMaximum number of monitors to return (default: 50)
configNoMonitor configuration (for create/update)
messageNoMute message (for mute action) OR inline template source for the preview action. For preview, supply either this inline string or `monitor_id` (or the existing `id` field) so the action can load the monitor message via getMonitor.
endNoMute end timestamp (for mute action)
monitor_idNoNumeric monitor ID used by the preview action when no inline `message` is supplied. Equivalent to passing the existing `id` field as a numeric string.
contextNoSubstitution context for monitors.preview (variables + conditionals).
fromNoStart time (ISO 8601, relative like "1h", or Unix timestamp)
toNoEnd time (ISO 8601, relative like "1h", or Unix timestamp)
contextTagsNoTag prefixes for context breakdown in top action (default: queue, service, ingress, pod_name, kube_namespace, kube_container_name)
maxEventsNoMaximum events to fetch for top action (default: 5000, max: 5000)
transitionTypeNoFor history action: filter by monitor state transition types. Default: ["alert","alert recovery"] (real fires + recoveries, excludes renotifies). Pass ["alert"] for fires only, or include "renotify" for full chronological audit.
groupNoFor history action: filter transitions to a specific multi-alert monitor group (e.g., "pod_name:foo,kube_namespace:bar"). Optional; omit for all groups.
dry_runNoWhen create + dry_run=true, validate the monitor body via POST /api/v1/monitor/validate without creating it. Allowed under --read-only because no monitor is created. Returns { valid, dryRun, monitor }. 400 responses surface verbatim like a failed create.
timezoneNoOptional IANA timezone (e.g. "UTC", "Europe/Paris"). When supplied on get/list, the response adds sibling createdLocal/modifiedLocal ISO 8601 strings next to created/modified. Omit for byte-identical legacy shape. Invalid zones return EINVALID_TIMEZONE.
Behavior5/5

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

No annotations exist, so description fully discloses behaviors: read-then-patch pattern, validation errors, snake_case aliases, unknown key forwarding, supported template syntax, dry_run behavior, and known limitations. Very transparent.

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?

The description is well-structured with sections for each action and front-loaded with top-level info. However, it is somewhat lengthy; could be streamlined without losing clarity. Still appropriate for complexity.

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?

Given 20 parameters, no output schema, and diverse actions, the description is remarkably complete. It covers all actions, parameter details, edge cases, mistakes, and references, leaving no major gaps for an agent.

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

Parameters5/5

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

Schema coverage is 100%, but description adds extensive context beyond schema: details on config options categories, preview parameters, history transition types, top context breakdown, timezone behavior, and more. Adds significant value.

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?

The description explicitly states 'Manage Datadog monitors' and enumerates specific actions (list, get, search, etc.), clearly distinguishing the tool's purpose from siblings like events. It specifies the resource and verbs.

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?

Provides explicit guidance on when to use each action (e.g., use history for fires-only counts, top for renotify-inflated counts) and mentions alternative tools (events) for generic event grouping. Clearly states caveats like test_notification not supported.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TANTIOPE/datadog-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server