Skip to main content
Glama
datgfg

Datadog MCP Server

by datgfg

Datadog MCP Server

DISCLAIMER: This is a community-maintained project and is not officially affiliated with, endorsed by, or supported by Datadog, Inc. This MCP server utilizes the Datadog API but is developed independently as part of the Model Context Protocol ecosystem.

NPM VersionBuild and Testcodecov

MCP server for the Datadog API, enabling incident management and more.

Features

  • Observability Tools: Provides a mechanism to leverage key Datadog monitoring features, such as incidents, monitors, logs, dashboards, and metrics, through the MCP server.

  • Extensible Design: Designed to easily integrate with additional Datadog APIs, allowing for seamless future feature expansion.

Related MCP server: MCP Datadog Server

Tools

  1. list_incidents

    • Retrieve a list of incidents from Datadog.

    • Inputs:

      • filter (optional string): Filter parameters for incidents (e.g., status, priority).

      • pagination (optional object): Pagination details like page size/offset.

    • Returns: Array of Datadog incidents and associated metadata.

  2. get_incident

    • Retrieve detailed information about a specific Datadog incident.

    • Inputs:

      • incident_id (string): Incident ID to fetch details for.

    • Returns: Detailed incident information (title, status, timestamps, etc.).

  3. get_monitors

    • Fetch the status of Datadog monitors.

    • Inputs:

      • groupStates (optional array): States to filter (e.g., alert, warn, no data, ok).

      • name (optional string): Filter by name.

      • tags (optional array): Filter by tags.

    • Returns: Monitors data and a summary of their statuses.

  4. get_logs

    • Search and retrieve logs from Datadog.

    • Inputs:

      • query (string): Datadog logs query string.

      • from (number): Start time in epoch seconds.

      • to (number): End time in epoch seconds.

      • limit (optional number): Maximum number of logs to return (defaults to 100).

    • Returns: Array of matching logs.

  5. list_dashboards

    • Get a list of dashboards from Datadog.

    • Inputs:

      • name (optional string): Filter dashboards by name.

      • tags (optional array): Filter dashboards by tags.

    • Returns: Array of dashboards with URL references.

  6. get_dashboard

    • Retrieve a specific dashboard from Datadog.

    • Inputs:

      • dashboard_id (string): ID of the dashboard to fetch.

    • Returns: Dashboard details including title, widgets, etc.

  7. query_metrics

    • Retrieve metrics data from Datadog.

    • Inputs:

      • query (string): Metrics query string.

      • from (number): Start time in epoch seconds.

      • to (number): End time in epoch seconds.

    • Returns: Metrics data for the queried timeframe.

  8. list_traces

    • Retrieve a list of APM traces from Datadog.

    • Inputs:

      • query (string): Datadog APM trace query string.

      • from (number): Start time in epoch seconds.

      • to (number): End time in epoch seconds.

      • limit (optional number): Maximum number of traces to return (defaults to 100).

      • sort (optional string): Sort order for traces (defaults to '-timestamp').

      • service (optional string): Filter by service name.

      • operation (optional string): Filter by operation name.

    • Returns: Array of matching traces from Datadog APM.

  9. list_spans

    • Get a list of spans matching a search query (Datadog Spans Search API).

    • Inputs:

      • query (string): Search query following spans syntax.

      • from (number): Minimum timestamp for requested spans (epoch seconds).

      • to (number): Maximum timestamp for requested spans (epoch seconds).

      • sort (optional string): Order of spans in results ('timestamp' | '-timestamp').

      • cursor (optional string): Pagination cursor from previous request.

      • limit (optional number): Maximum number of spans to return (default 100).

    • Returns: Spans list, count, and next cursor when available.

  10. list_hosts

  • Get list of hosts from Datadog.

  • Inputs:

    • filter (optional string): Filter string for search results.

    • sort_field (optional string): Field to sort hosts by.

    • sort_dir (optional string): Sort direction (asc/desc).

    • start (optional number): Starting offset for pagination.

    • count (optional number): Max number of hosts to return (max: 1000).

    • from (optional number): Search hosts from this UNIX timestamp.

    • include_muted_hosts_data (optional boolean): Include muted hosts status and expiry.

    • include_hosts_metadata (optional boolean): Include host metadata (version, platform, etc).

  • Returns: Array of hosts with details including name, ID, aliases, apps, mute status, and more.

  1. get_active_hosts_count

    • Get the total number of active hosts in Datadog.

    • Inputs:

      • from (optional number): Number of seconds from which you want to get total number of active hosts (defaults to 2h).

    • Returns: Count of total active and up hosts.

  2. mute_host

    • Mute a host in Datadog.

    • Inputs:

      • hostname (string): The name of the host to mute.

      • message (optional string): Message to associate with the muting of this host.

      • end (optional number): POSIX timestamp for when the mute should end.

      • override (optional boolean): If true and the host is already muted, replaces existing end time.

    • Returns: Success status and confirmation message.

  3. unmute_host

    • Unmute a host in Datadog.

    • Inputs:

      • hostname (string): The name of the host to unmute.

    • Returns: Success status and confirmation message.

  4. list_downtimes

    • List scheduled downtimes from Datadog.

    • Inputs:

      • currentOnly (optional boolean): Return only currently active downtimes when true.

      • monitorId (optional number): Filter by monitor ID.

    • Returns: Array of scheduled downtimes with details including scope, monitor information, and schedule.

  5. schedule_downtime

    • Schedule a downtime in Datadog.

    • Inputs:

      • scope (string): Scope to apply downtime to (e.g. 'host:my-host').

      • start (optional number): UNIX timestamp for the start of the downtime.

      • end (optional number): UNIX timestamp for the end of the downtime.

      • message (optional string): A message to include with the downtime.

      • timezone (optional string): The timezone for the downtime (e.g. 'UTC', 'America/New_York').

      • monitorId (optional number): The ID of the monitor to mute.

      • monitorTags (optional array): A list of monitor tags for filtering.

      • recurrence (optional object): Recurrence settings for the downtime.

        • type (string): Recurrence type ('days', 'weeks', 'months', 'years').

        • period (number): How often to repeat (must be >= 1).

        • weekDays (optional array): Days of the week for weekly recurrence.

        • until (optional number): UNIX timestamp for when the recurrence ends.

    • Returns: Scheduled downtime details including ID and active status.

  6. cancel_downtime

    • Cancel a scheduled downtime in Datadog.

    • Inputs:

      • downtimeId (number): The ID of the downtime to cancel.

    • Returns: Confirmation of downtime cancellation.

  7. get_rum_applications

    • Get all RUM applications in the organization.

    • Inputs: None.

    • Returns: List of RUM applications.

  8. get_rum_events

    • Search and retrieve RUM events from Datadog.

    • Inputs:

      • query (string): Datadog RUM query string.

      • from (number): Start time in epoch seconds.

      • to (number): End time in epoch seconds.

      • limit (optional number): Maximum number of events to return (default: 100).

    • Returns: Array of RUM events.

  9. get_rum_grouped_event_count

    • Search, group and count RUM events by a specified dimension.

    • Inputs:

      • query (optional string): Additional query filter for RUM search (default: "*").

      • from (number): Start time in epoch seconds.

      • to (number): End time in epoch seconds.

      • groupBy (optional string): Dimension to group results by (default: "application.name").

    • Returns: Grouped event counts.

  10. get_rum_page_performance

    • Get page (view) performance metrics from RUM data.

    • Inputs:

      • query (optional string): Additional query filter for RUM search (default: "*").

      • from (number): Start time in epoch seconds.

      • to (number): End time in epoch seconds.

      • metricNames (array of strings): Array of metric names to retrieve (e.g., 'view.load_time', 'view.first_contentful_paint').

    • Returns: Performance metrics including average, min, max, and count for each metric.

  11. get_rum_page_waterfall

    • Retrieve RUM page (view) waterfall data filtered by application name and session ID.

    • Inputs:

      • applicationName (string): Application name to filter events.

      • sessionId (string): Session ID to filter events.

    • Returns: Waterfall data for the specified application and session.

Setup

Datadog Credentials

You need valid Datadog API credentials to use this MCP server:

  • DATADOG_API_KEY: Your Datadog API key

  • DATADOG_APP_KEY: Your Datadog Application key

  • DATADOG_SITE (optional): The Datadog site (e.g. datadoghq.eu)

Export them in your environment before running the server:

export DATADOG_API_KEY="your_api_key"
export DATADOG_APP_KEY="your_app_key"
export DATADOG_SITE="your_datadog_site"

Installation

Installing via Smithery

To install Datadog MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @winor30/mcp-server-datadog --client claude

Manual Installation

pnpm install
pnpm build
pnpm watch   # for development with auto-rebuild

Usage with Claude Desktop

To use this with Claude Desktop, add the following to your claude_desktop_config.json:

On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json On Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}
{
  "mcpServers": {
    "datadog": {
      "command": "/path/to/mcp-server-datadog/build/index.js",
      "env": {
        "DATADOG_API_KEY": "<YOUR_API_KEY>",
        "DATADOG_APP_KEY": "<YOUR_APP_KEY>",
        "DATADOG_SITE": "<YOUR_SITE>" // Optional
      }
    }
  }
}

Or specify via npx:

{
  "mcpServers": {
    "mcp-server-datadog": {
      "command": "npx",
      "args": ["-y", "@winor30/mcp-server-datadog"],
      "env": {
        "DATADOG_API_KEY": "<YOUR_API_KEY>",
        "DATADOG_APP_KEY": "<YOUR_APP_KEY>",
        "DATADOG_SITE": "<YOUR_SITE>" // Optional
      }
    }
  }
}

Debugging

Because MCP servers communicate over standard input/output, debugging can sometimes be tricky. We recommend using the MCP Inspector. You can run the inspector with:

npm run inspector

The inspector will provide a URL you can open in your browser to see logs and send requests manually.

Contributing

Contributions are welcome! Feel free to open an issue or a pull request if you have any suggestions, bug reports, or improvements to propose.

License

This project is licensed under the Apache License, Version 2.0.

Available Tools

13 tools
get_dashboardC

Get a dashboard from Datadog

ParametersJSON Schema
NameRequiredDescriptionDefault
dashboardIdYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states 'Get' which implies a read operation, but doesn't disclose behavioral traits like authentication needs, rate limits, error handling, or what data is returned. This is inadequate for a tool with no annotation coverage.

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?

The description is a single, efficient sentence with no wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations, 0% schema coverage, and no output schema, the description is incomplete. It lacks details on parameters, return values, and behavioral context, making it insufficient for effective tool use in a complex environment like Datadog.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It doesn't add any meaning beyond the schema, failing to explain what 'dashboardId' is, its format, or where to obtain it. With one undocumented parameter, this leaves significant gaps.

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 clearly states the verb 'Get' and resource 'a dashboard from Datadog', making the purpose understandable. It doesn't explicitly distinguish from siblings like 'list_dashboards', but the verb 'Get' implies retrieving a specific dashboard versus listing multiple, providing some differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites like needing a dashboard ID, contrast with 'list_dashboards' for browsing, or specify use cases such as viewing details of a known dashboard.

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

get_incidentC

Get an incident from Datadog

ParametersJSON Schema
NameRequiredDescriptionDefault
incidentIdYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the basic action without disclosing behavioral traits such as whether it's a read-only operation, error handling, authentication needs, or rate limits. For a tool with zero annotation coverage, this is inadequate.

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?

The description is extremely concise with a single sentence and no wasted words. It's front-loaded with the core action, though this brevity contributes to its lack of detail.

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

Completeness2/5

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

Given the complexity (a retrieval tool with no annotations, 0% schema coverage, and no output schema), the description is incomplete. It doesn't explain the parameter, return values, or behavioral context, making it insufficient for effective tool use.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It doesn't mention the 'incidentId' parameter at all, leaving it undocumented. The description adds no meaning beyond the schema, failing to explain what the parameter represents or how to obtain it.

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

Purpose3/5

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

The description 'Get an incident from Datadog' states the basic action (get) and resource (incident), but it's vague about scope and doesn't distinguish from siblings like 'list_incidents'. It doesn't specify whether this retrieves a single incident by ID or something broader.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'list_incidents'. The description implies it's for retrieving a specific incident, but it doesn't explicitly state this or mention prerequisites like needing an incident ID.

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

get_monitorsC

Get monitors status from Datadog

ParametersJSON Schema
NameRequiredDescriptionDefault
groupStatesNoFilter monitors by their states
nameNoFilter monitors by name
tagsNoFilter monitors by tags

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe how it behaves: no information about authentication requirements, rate limits, pagination, error handling, or what 'status' includes. For a read operation with zero annotation coverage, this leaves significant behavioral gaps.

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?

The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information. Every word earns its place.

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

Completeness2/5

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

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is insufficiently complete. It doesn't explain what 'monitors status' returns, how results are structured, or any behavioral aspects. While the schema covers parameters well, the overall context for effective tool use remains incomplete.

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 fully documents all three parameters (groupStates, name, tags) with their purposes. The description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.

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 clearly states the action ('Get') and resource ('monitors status from Datadog'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'get_dashboard' or 'get_incident', but the specificity of 'monitors status' provides reasonable distinction. The description avoids tautology by not just restating the tool name.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'list_dashboards' or 'get_incident'. There's no mention of prerequisites, typical use cases, or comparison with sibling tools. The agent must infer usage from the tool name and parameters alone.

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

get_rum_applicationsB

Get all RUM applications in the organization

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states it 'gets' applications, implying a read operation, but doesn't cover critical aspects like authentication needs, rate limits, pagination, or what 'all' entails (e.g., scope limitations). This leaves significant gaps in understanding how the tool behaves.

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?

The description is a single, efficient sentence that directly states the tool's purpose without any fluff. It's front-loaded and wastes no words, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the tool has no annotations, no output schema, and the description lacks behavioral details (e.g., return format, error handling), it's incomplete for a tool that retrieves organizational data. The agent would need to guess about the response structure and operational constraints.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, but that's appropriate here. A baseline of 4 is given since the schema fully handles parameters, and the description doesn't introduce confusion.

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 clearly states the verb ('Get') and resource ('all RUM applications in the organization'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_rum_events' or 'get_rum_grouped_event_count', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as 'get_rum_events' or 'list_metrics'. It lacks context about use cases, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone.

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

get_rum_eventsC

Search and retrieve RUM events from Datadog

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoDatadog RUM query string
fromYesStart time in epoch seconds
toYesEnd time in epoch seconds
limitNoMaximum number of events to return. Default is 100.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Search and retrieve' but lacks details on permissions, rate limits, pagination, or what 'retrieve' entails (e.g., format, data structure). This leaves significant gaps for a tool that likely interacts with external data.

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?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for the tool's complexity, making it easy to parse quickly.

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

Completeness2/5

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

Given the tool's complexity (4 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain return values, error handling, or behavioral traits, which are crucial for an agent to use this data retrieval tool effectively in a real-world context.

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 input schema fully documents all parameters. The description adds no additional meaning beyond implying a search operation, which is already suggested by the schema's 'query' parameter. This meets the baseline for high schema coverage.

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 clearly states the action ('Search and retrieve') and resource ('RUM events from Datadog'), providing a specific purpose. However, it doesn't explicitly differentiate from sibling tools like 'get_rum_applications' or 'get_rum_grouped_event_count', which likely retrieve different types of RUM data, so it misses full sibling distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name and parameters alone, which is insufficient for optimal selection.

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

get_rum_grouped_event_countC

Search, group and count RUM events by a specified dimension

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional query filter for RUM search*
fromYesStart time in epoch seconds
toYesEnd time in epoch seconds
groupByNoDimension to group results by. Default is application.nameapplication.name

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but provides minimal behavioral context. It mentions grouping and counting but doesn't describe what the output looks like (aggregated counts? grouped summaries?), whether there are rate limits, authentication requirements, or any constraints on the 'groupBy' dimension beyond the default. For a tool with 4 parameters and no annotations, this is insufficient.

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 a single, efficient sentence that gets straight to the point. It's appropriately sized for the tool's complexity, though it could potentially be more front-loaded with key distinguishing information about when to use it.

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

Completeness2/5

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

For a tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain the output format (crucial for a grouping/counting operation), doesn't mention any constraints or prerequisites, and provides minimal guidance on usage. The description should do more to compensate for the lack of structured metadata.

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 all parameters are documented in the schema. The description adds minimal value beyond the schema - it mentions 'specified dimension' which relates to 'groupBy', but doesn't provide additional context about valid dimensions or grouping behavior. Baseline 3 is appropriate when schema does the heavy lifting.

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 clearly states the tool's purpose with specific verbs ('search, group and count') and resource ('RUM events'), and specifies the grouping dimension. It doesn't explicitly distinguish from sibling tools like 'get_rum_events' or 'get_rum_page_performance', but the grouping/counting focus provides some implicit differentiation.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives is provided. The description doesn't mention when this grouped counting approach is preferable to other RUM tools like 'get_rum_events' (which presumably returns raw events) or 'get_rum_page_performance' (which focuses on performance metrics).

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

get_rum_page_performanceC

Get page (view) performance metrics from RUM data

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional query filter for RUM search*
fromYesStart time in epoch seconds
toYesEnd time in epoch seconds
metricNamesNoArray of metric names to retrieve

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states it 'gets' metrics, implying a read operation, but doesn't disclose behavioral traits such as authentication needs, rate limits, pagination, error handling, or what the return format looks like (e.g., structured data, time-series). This is a significant gap for a tool with no annotation coverage.

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?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with zero waste.

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

Completeness2/5

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

Given the complexity (4 parameters, no annotations, no output schema), the description is incomplete. It lacks information on behavioral traits, usage context, and output format, which are crucial for an agent to invoke this tool correctly. The high schema coverage doesn't compensate for these gaps.

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 parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain what 'RUM search' entails or provide examples for 'metricNames'). Baseline 3 is appropriate as the schema does the heavy lifting.

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 clearly states the verb 'Get' and the resource 'page (view) performance metrics from RUM data', making the purpose evident. It distinguishes from some siblings like 'get_rum_applications' or 'get_rum_events' by specifying 'page performance metrics', but could be more explicit about how it differs from 'get_rum_page_waterfall'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or compare with siblings like 'get_rum_events' or 'query_metrics', leaving the agent to infer usage based on naming alone.

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

get_rum_page_waterfallB

Retrieve RUM page (view) waterfall data filtered by application name and session ID

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationNameYesApplication name to filter events
sessionIdYesSession ID to filter events

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves filtered data but doesn't describe what 'waterfall data' entails, whether it's paginated, rate-limited, or requires specific permissions. This leaves significant gaps for a data retrieval tool.

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?

The description is a single, efficient sentence with zero wasted words. It front-loads the core purpose ('retrieve RUM page waterfall data') and specifies the filtering criteria, making it easy to parse quickly.

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?

Given the tool has no annotations, no output schema, and 2 required parameters, the description is minimally adequate. It covers the basic purpose and parameters but lacks details on behavior, output format, or error handling, which are important for a data retrieval tool in this context.

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?

The description mentions filtering by 'application name and session ID', which aligns with the two parameters. Since schema description coverage is 100%, the schema already documents these parameters fully. The description adds no additional semantic context beyond what the schema provides, meeting the baseline for high coverage.

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 clearly states the verb ('retrieve') and resource ('RUM page waterfall data'), specifying the type of data being fetched. It distinguishes from some siblings like 'get_rum_events' or 'get_rum_page_performance' by focusing on waterfall data, though it doesn't explicitly differentiate from all related tools like 'get_rum_grouped_event_count'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when not to use it, or compare it to sibling tools like 'get_rum_events' or 'get_rum_page_performance', leaving the agent to infer usage context.

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

list_dashboardsC

Get list of dashboards from Datadog

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter dashboards by name
tagsNoFilter dashboards by tags

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It states it 'gets' dashboards (implying a read operation) but doesn't mention pagination, rate limits, authentication requirements, or what the return format looks like. For a list tool with zero annotation coverage, this leaves significant behavioral gaps.

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?

The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple list operation and front-loads the essential information (get list of dashboards).

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

Completeness2/5

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

Given the tool's complexity (list operation with filtering parameters), lack of annotations, and no output schema, the description is insufficiently complete. It doesn't explain what information is returned about each dashboard, how results are structured, or any limitations (like maximum results). For a tool that presumably returns multiple items, more context is needed.

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?

The description doesn't mention any parameters, but the input schema has 100% description coverage, with clear documentation for both 'name' (filter by name) and 'tags' (filter by tags). Since the schema does the heavy lifting, the baseline score of 3 is appropriate - the description adds no parameter semantics beyond what's already in the schema.

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 clearly states the verb ('Get list') and resource ('dashboards from Datadog'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'get_dashboard' or other list tools like 'list_incidents' or 'list_metrics', which would require more specific scope information to earn a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There's no mention of when to choose 'list_dashboards' over 'get_dashboard' (which presumably retrieves a single dashboard), or how it relates to other list tools like 'list_incidents'. Without any usage context or exclusions, this is minimal guidance.

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

list_incidentsC

Get incidents from Datadog

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNo
pageOffsetNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It states 'Get incidents' which implies a read operation, but doesn't clarify if it's safe, paginated, or has rate limits. The description lacks details on return format, error handling, or any constraints beyond the basic action, leaving significant gaps.

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?

The description is extremely concise with a single sentence 'Get incidents from Datadog'. It's front-loaded and wastes no words, making it easy to parse quickly. Every word earns its place by stating the core action and resource.

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

Completeness2/5

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

Given the tool's complexity (list operation with pagination), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'incidents' entail, how results are returned, or any behavioral traits. For a tool with 2 parameters and no structured guidance, more context is needed to be fully helpful.

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?

The description adds no parameter semantics beyond what the input schema provides. With 0% schema description coverage, the two parameters (pageSize, pageOffset) are undocumented in both schema and description. However, the baseline is 3 since the description doesn't need to compensate heavily for a simple list tool with only pagination parameters, but it offers no extra meaning.

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

Purpose3/5

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

The description 'Get incidents from Datadog' states the basic action (get) and resource (incidents from Datadog), making the purpose understandable. However, it's vague about scope (all incidents? filtered?) and doesn't distinguish from sibling tools like 'get_incident' (singular vs. plural). It's not tautological but lacks specificity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_incident' (for a single incident) or 'list_dashboards' (for other resources), nor does it specify contexts or exclusions. Usage is implied only by the name 'list_incidents'.

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

list_metricsC

List active metric names from Datadog

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoStart of the timeframe (in seconds since Unix epoch) to list active metrics. Defaults to 24h ago if omitted.
tagFilterNoFilter metrics that have been submitted with the given tags.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('List active metric names') but doesn't describe what 'active' means, whether this is a read-only operation, potential rate limits, authentication needs, or the format of returned data. This leaves significant gaps for a tool with no annotation coverage.

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?

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'active' metrics are, how results are returned (e.g., pagination, format), or behavioral constraints. For a tool with no structured safety or output information, more context is needed to adequately guide an agent.

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?

The input schema has 100% description coverage, with clear documentation for both optional parameters ('from' and 'tagFilter'). The description adds no additional parameter information beyond what the schema provides, so the baseline score of 3 is appropriate as the schema does the heavy lifting.

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 clearly states the verb ('List') and resource ('active metric names from Datadog'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'query_metrics' or 'get_monitors', which prevents a perfect score.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'query_metrics' or 'get_monitors'. The description lacks any context about use cases, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone.

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

list_spansC

Get a list of spans matching a search query

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch query following spans syntax*
fromYesMinimum timestamp for requested spans (epoch seconds)
toYesMaximum timestamp for requested spans (epoch seconds)
sortNoOrder of spans in results-timestamp
cursorNoPagination cursor from previous request
limitNoMaximum number of spans to return

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'matching a search query' but doesn't specify whether this is a read-only operation, what happens with large result sets (e.g., pagination via 'cursor'), rate limits, or authentication needs. The schema hints at pagination and sorting, but the description doesn't explain these behaviors.

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?

The description is a single, efficient sentence with no wasted words. It front-loads the core purpose ('Get a list of spans') and adds necessary context ('matching a search query'), making it easy to parse quickly.

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

Completeness2/5

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

Given the tool's complexity (6 parameters, no annotations, no output schema), the description is insufficient. It doesn't explain what 'spans' are, how results are structured, or behavioral aspects like pagination or error handling. For a search tool with multiple parameters, more context is needed to guide effective use.

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%, providing detailed parameter documentation. The description adds minimal value beyond the schema by implying the tool uses a search query, but doesn't elaborate on 'spans syntax' or how parameters interact. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't significantly enhance parameter understanding.

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 clearly states the action ('Get a list') and resource ('spans'), and specifies filtering via 'matching a search query'. However, it doesn't differentiate from siblings like 'list_dashboards' or 'list_incidents' beyond the resource type, and doesn't explain what 'spans' are in this context.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'list_metrics' or 'query_metrics'. The description implies it's for searching spans, but lacks context about typical use cases or prerequisites, such as needing specific data sources or permissions.

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

query_metricsC

Query timeseries points of metrics from Datadog

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesStart of the queried time period, seconds since the Unix epoch.
toYesEnd of the queried time period, seconds since the Unix epoch.
queryYesDatadog metrics query string. e.g. "avg:system.cpu.user{*}

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool queries metrics but doesn't mention any behavioral traits like rate limits, authentication needs, error handling, or what the query returns (e.g., data format, pagination). This leaves significant gaps for a tool that interacts with an external service like Datadog.

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?

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to understand at a glance.

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

Completeness2/5

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

Given the complexity of querying an external metrics service (Datadog), no annotations, and no output schema, the description is incomplete. It lacks details on return values, error cases, or any contextual information needed for effective use, making it inadequate for a tool with three parameters and potential behavioral nuances.

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?

The input schema has 100% description coverage, clearly documenting all three parameters (from, to, query) with examples. The description adds no additional meaning beyond what the schema provides, such as explaining query syntax further or usage nuances, so it meets the baseline for high schema coverage.

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 clearly states the action ('Query') and resource ('timeseries points of metrics from Datadog'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'list_metrics' or 'get_monitors', which might have overlapping functionality, so it misses full sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as 'list_metrics' or 'get_monitors', nor does it mention any context or exclusions for usage. It's a basic statement of function without operational context.

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

TDQS

B3.3/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific Datadog resources like dashboards, incidents, monitors, RUM, metrics, and spans. However, there is some potential overlap between 'get_rum_events' and 'get_rum_grouped_event_count' as both involve retrieving RUM events, though the latter adds grouping and counting functionality. Overall, the descriptions help clarify differences, but a few tools could be slightly confusing without careful reading.

Naming Consistency5/5

The naming is highly consistent, following a clear verb_noun pattern throughout. All tools use either 'get_' or 'list_' prefixes followed by a specific resource name, with no deviations in style or convention. This predictability makes it easy for agents to understand and select tools based on their intended actions.

Tool Count5/5

With 13 tools, the count is well-scoped for a Datadog monitoring and observability server. It covers key areas like dashboards, incidents, monitors, RUM, metrics, and spans without being overwhelming. Each tool appears to serve a distinct purpose, contributing to a comprehensive toolset that aligns with the server's domain.

Completeness4/5

The toolset provides strong read-only coverage for Datadog's core features, including retrieval and listing of dashboards, incidents, monitors, RUM data, metrics, and spans. However, there are notable gaps in write operations (e.g., no create, update, or delete tools) and limited query capabilities beyond basic metrics and RUM events. Agents can work around this for read-heavy tasks, but full lifecycle management is not supported.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with DataDog's observability platform through a standardized interface. Supports monitoring infrastructure, managing events, analyzing logs and metrics, and automating operations like alerts and downtimes.
    1
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    Enables interaction with Datadog APIs through automatically generated tools from Postman collections. Supports monitoring operations, log management, metrics submission, and other Datadog functionality through natural language.
    100
    29
    Apache 2.0
  • F
    license
    B
    quality
    F
    maintenance
    Enables comprehensive Datadog monitoring capabilities including CI/CD pipeline management, service logs analysis, metrics querying, monitor and SLO management, service definitions retrieval, and team management through Claude and other MCP clients.
    13
    20
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that provides comprehensive Datadog monitoring capabilities, enabling Claude to manage CI/CD pipelines, analyze logs, query metrics, and handle monitors and SLOs.

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/datgfg/mcp-server-datadog'

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