Skip to main content
Glama
winor30

mcp-server-datadog

by winor30

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: Datadog MCP 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_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.

  10. 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.

  11. 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.

  12. unmute_host

    • Unmute a host in Datadog.

    • Inputs:

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

    • Returns: Success status and confirmation message.

  13. 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.

  14. 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.

  15. cancel_downtime

    • Cancel a scheduled downtime in Datadog.

    • Inputs:

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

    • Returns: Confirmation of downtime cancellation.

  16. get_rum_applications

    • Get all RUM applications in the organization.

    • Inputs: None.

    • Returns: List of RUM applications.

  17. 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.

  18. 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.

  19. 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.

  20. 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)

  • DATADOG_SUBDOMAIN (optional): The Datadog subdomain (e.g. <your-subdomain>.datadoghq.com)

  • DATADOG_STORAGE_TIER (optional): Logs storage tier for v2 logs searches. Supported values: indexes, online-archives, or flex.

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" # Optional
export DATADOG_SUBDOMAIN="your_datadog_subdomain" # Optional
export DATADOG_STORAGE_TIER="flex" # Optional: indexes | online-archives | flex

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
        "DATADOG_SUBDOMAIN": "<YOUR_SUBDOMAIN>", // Optional
        "DATADOG_STORAGE_TIER": "indexes" // Optional: indexes | online-archives | flex
      }
    }
  }
}

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
        "DATADOG_SUBDOMAIN": "<YOUR_SUBDOMAIN>", // Optional
        "DATADOG_STORAGE_TIER": "indexes" // Optional: indexes | online-archives | flex
      }
    }
  }
}

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

21 tools
cancel_downtimeC

Cancel a scheduled downtime in Datadog

NameRequiredDescriptionDefault
downtimeIdYes

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 must cover behavior on its own. It does not say whether cancellation is irreversible, what happens to an already-canceled downtime, whether permissions are required, or what the tool returns.

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?

It is a single front-loaded sentence with no waste. The brevity is appropriate for the description's length, even though the content is incomplete elsewhere.

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?

This is a mutation tool with no annotations and no output schema, and its only parameter is undocumented. The description does not provide enough behavioral or parameter context for an agent to call it confidently, beyond knowing that it cancels a downtime.

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%, and the description does not explain downtimeId beyond implying that something is canceled. It does not say how to obtain the ID or what format it uses, even though the required parameter is central to invoking the tool.

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: "Cancel a scheduled downtime." That clearly separates it from sibling tools such as schedule_downtime and list_downtimes, but it does not explicitly mention those alternatives.

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 says nothing about when to use this tool instead of schedule_downtime or list_downtimes, and it gives no prerequisites, such as needing a downtimeId from list_downtimes.

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

get_active_hosts_countC

Get the total number of active hosts in Datadog (defaults to last 5 minutes)

NameRequiredDescriptionDefault
fromNoNumber of seconds from which you want to get total number of active hosts (defaults to 2h)

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 the full behavioral burden. It does state the purpose and a default time window, but the stated default of 'last 5 minutes' contradicts the schema default of 7200 seconds (2 hours), which is a serious transparency issue for an agent relying on the description.

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 front-loaded sentence with no unnecessary text. It is appropriately sized for a simple count operation.

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 simple one-parameter read tool with no output schema, the description covers the core purpose. But the conflicting default and lack of sibling differentiation leave an agent with avoidable ambiguity.

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 coverage is 100%, so the parameter itself is well documented in the schema. However, the description's parenthetical default conflicts with the schema's default, adding confusion rather than meaning beyond 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?

States a specific verb and resource: getting the total number of active hosts in Datadog. It is clear what the tool does, but it does not explicitly distinguish itself from sibling tools like list_hosts, which would help an agent choose the right call.

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 implies a time-windowed count but gives no explicit guidance on when to use this tool versus alternatives such as list_hosts. It also does not explain any constraints or exclusions.

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

get_all_servicesB

Extract all unique service names from logs

NameRequiredDescriptionDefault
toYesEnd time in epoch seconds
fromYesStart time in epoch seconds
limitNoMaximum number of logs to search through. Default is 1000.
queryNoOptional query filter for log search*

TDQS

B3.3/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 the full behavioral burden. 'Extract' implies a read operation, but the description does not state whether it is read-only, what permissions are needed, how the 'limit' default of 1000 affects completeness, or whether the result is exhaustive despite saying 'all unique'.

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, front-loaded sentence with no redundant or filler text. It is appropriately sized for the tool's simplicity.

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 simple tool with fully documented parameters, the description adequately implies the return value as a list of unique service names. However, without annotations or an output schema, it omits important context such as how the 'limit' constrains the search and what the exact return structure looks like.

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 already explains 'from', 'to', 'limit', and 'query'. The description adds no parameter-specific semantics beyond what the schema provides, which is the baseline expectation at full 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 states a specific verb ('Extract') and resource ('all unique service names from logs'), which clearly distinguishes the outcome from sibling tools like get_logs. It could be slightly sharper by naming the log-retrieval alternative, but the operation is understandable without opening the schema.

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 only implied: the required 'from'/'to' parameters and 'from logs' phrase suggest it is for discovering service names within a time window. There is no explicit when-to-use/when-not-to-use guidance or comparison to alternatives such as get_logs.

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

get_dashboardC

Get a dashboard from Datadog

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

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_logsB

Search and retrieve logs from Datadog

NameRequiredDescriptionDefault
toYesEnd time in epoch seconds
fromYesStart time in epoch seconds
limitNoMaximum number of logs to return. Default is 100.
queryNoDatadog logs query string

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the behavioral burden, but it only implies a read operation through 'search and retrieve.' It does not disclose permissions, rate limits, pagination behavior, result handling, or whether the query is executed as a read-only Datadog search.

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 front-loaded sentence with no wasted words. It is efficient and easy to parse, even if it is terse.

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?

The tool is relatively simple and the schema fully documents parameters, but without annotations or an output schema the description should provide more behavioral context and usage guidance. It is minimally adequate for invoking the tool, but not complete for selecting it confidently among siblings.

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 explains all four parameters including time range, limit, and query string. The description adds no parameter-level meaning beyond what the schema provides, making the baseline score of 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 states a clear action and resource combination: 'Search and retrieve logs' from Datadog. It is specific enough to distinguish this from metrics- or trace-focused siblings, though it does not explicitly name or contrast those alternatives.

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 gives no explicit when-to-use guidance, prerequisites, or alternatives. An agent can infer this is for log retrieval, but there is no guidance on when to choose it over query_metrics, list_traces, or get_rum_events.

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

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

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

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

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

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

NameRequiredDescriptionDefault
toYesEnd time in epoch seconds
fromYesStart time in epoch seconds
queryNoOptional query filter for RUM search*
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

NameRequiredDescriptionDefault
toYesEnd time in epoch seconds
fromYesStart time in epoch seconds
queryNoOptional query filter for RUM search*
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

NameRequiredDescriptionDefault
sessionIdYesSession ID to filter events
applicationNameYesApplication name 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

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_downtimesC

List scheduled downtimes from Datadog

NameRequiredDescriptionDefault
currentOnlyNo

TDQS

C2.6/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 behavioral burden and discloses almost nothing: no default scope, no pagination or result-size hints, no mention of time-range behavior for 'scheduled' downtimes, and no indication that it is a read-only operation beyond the verb 'List'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with zero waste and the resource front-loaded, but it is terse to the point of under-specification rather than genuinely concise.

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 simple read tool with one parameter and no output schema, the description still omits the default result scope, the meaning of currentOnly, and any sense of return shape. It is not adequate to call the tool confidently.

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?

The single optional parameter currentOnly has 0% schema description coverage and the description never mentions it. Whether it means 'only currently active' or 'only not-yet-started' is left entirely ambiguous, which is a real risk for a filter flag.

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 (List) and resource (scheduled downtimes) plus the source system Datadog, so the agent can distinguish it from mutation siblings schedule_downtime and cancel_downtime. It stops short of explicitly naming those alternatives.

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 on when to use this versus schedule_downtime, cancel_downtime, or list_incidents. Nothing indicates whether it returns active, upcoming, or historical downtimes, which is the key selection question for a downtime-listing tool.

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

list_hostsC

Get list of hosts from Datadog

NameRequiredDescriptionDefault
fromNoSearch hosts from this UNIX timestamp
countNoMax number of hosts to return (max: 1000)
startNoStarting offset for pagination
filterNoFilter string for search results
sort_dirNoSort direction (asc/desc)
sort_fieldNoField to sort hosts by
include_hosts_metadataNoInclude host metadata (version, platform, etc)
include_muted_hosts_dataNoInclude muted hosts status and expiry

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 the full burden. 'Get list' implies a read operation, but it discloses nothing about pagination behavior, result caps, rate limits, or auth requirements, which matters for an 8-parameter listing tool.

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?

A single front-loaded sentence that wastes no words. It is appropriately sized, though its brevity is partly under-specification rather than pure efficiency.

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 an 8-parameter listing tool with no output schema and no annotations, the description should at minimum indicate what the returned host records contain and note pagination semantics. It leaves both the return shape and pagination/count behavior unexplained.

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 coverage is 100%, with all eight parameters documented inline, so the schema does the heavy lifting. The description adds no interpretation of the parameters beyond what the schema already states, which is the baseline-3 scenario.

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 states a specific verb and resource ('Get list of hosts') from a named platform, which is unambiguous. It does not differentiate from siblings like get_active_hosts_count or mute_host, but the name plus verb makes the resource clear.

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?

There is no guidance on when to use this versus get_active_hosts_count or the mute/unmute siblings, nor any note on preconditions. The agent is left to infer usage entirely from the name.

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

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_tracesC

Get APM traces from Datadog

NameRequiredDescriptionDefault
toYesEnd time in epoch seconds
fromYesStart time in epoch seconds
sortNoSort order for traces-timestamp
limitNoMaximum number of traces to return
queryYesDatadog APM trace query string
serviceNoFilter by service name
operationNoFilter by operation name

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 the full behavioral burden, yet it discloses nothing beyond 'get'. It doesn't state that this is a read-only operation, mention the default limit of 100 results, pagination behavior, query cost/rate limits, or what happens with a malformed query.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no wasted words, but it is under-specified rather than genuinely concise. There is no structure or front-loaded guidance because there is almost no content.

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?

With 7 parameters, 3 required, no annotations and no output schema, the description needs to do real work — especially explaining the Datadog query string, time-range semantics, and result limits. It covers none of this.

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 baseline of 3 applies. However, the description adds nothing about the 'query' string syntax or how 'service'/'operation' interact with 'query', which would be the highest-value addition for this tool.

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 resource (APM traces) and source (Datadog), which is enough to distinguish it from siblings like query_metrics and get_logs. The verb 'Get' is generic and doesn't convey the query/list nature, but the resource noun carries the 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 indication of when to use this tool versus query_metrics, get_logs, or the RUM tools. It doesn't mention prerequisites, whether a Datadog APM account/query syntax is needed, or what a typical use case looks like.

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

mute_hostC

Mute a host in Datadog

NameRequiredDescriptionDefault
endNoPOSIX timestamp for when the mute should end
messageNoMessage to associate with the muting of this host
hostnameYesThe name of the host to mute
overrideNoIf true and the host is already muted, replaces existing end time

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 the full burden of behavioral disclosure. It states the action but not what muting actually does (e.g., suppressing alerts/notifications), whether it requires permissions, how long it lasts by default, or whether it is reversible.

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 single front-loaded sentence is efficient and contains no filler. However, its extreme brevity leaves behavioral gaps that make it feel under-specified rather than optimally concise.

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 mutation tool with no annotations and no output schema, the description should explain the effect of muting, default duration behavior, and the role of 'override'. It does not, leaving the agent dependent on parameter names alone.

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 four parameters are already documented in the input schema. The description adds no meaning beyond the schema, which matches the baseline of 3 when structured fields do 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 names a specific verb ('Mute') and resource ('a host'), so the basic action is unambiguous. It does not distinguish itself from the sibling tool 'unmute_host' or explain what muting entails, but the purpose is clear.

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?

There is no guidance on when to use this tool versus alternatives such as 'unmute_host' or 'schedule_downtime', nor any preconditions or exclusions. The agent must infer usage entirely from the name.

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

NameRequiredDescriptionDefault
toYesEnd of the queried time period, seconds since the Unix epoch.
fromYesStart 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.

schedule_downtimeC

Schedule a downtime in Datadog

NameRequiredDescriptionDefault
endNo
scopeYes
startNo
messageNo
timezoneNo
monitorIdNo
recurrenceNo
monitorTagsNo

TDQS

C2.4/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 the full burden of behavioral disclosure for a mutating tool. It only states that it schedules a downtime and omits critical behavior such as whether alerts are suppressed, whether the downtime applies immediately or per start/end, how recurrence works, and what permissions are required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler, which is structurally clean. However, for a tool with 8 parameters and a nested recurrence object, the brevity reflects under-specification rather than useful conciseness.

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

Completeness1/5

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

Given no annotations, no output schema, 8 parameters, and a nested recurrence object, the description is far too thin to support correct invocation. Key inputs and behavioral consequences are entirely undocumented.

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

Parameters1/5

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

Schema description coverage is 0% across 8 parameters, including a nested recurrence object, and the description adds no parameter meanings. It does not explain what scope expects, whether start/end are epoch timestamps, how timezone interacts, or what monitorTags does.

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 uses a specific verb and resource ('Schedule a downtime') and names the product domain (Datadog), so an agent can distinguish it from read-only downtime siblings like list_downtimes. It does not explicitly differentiate itself from cancel_downtime or mute_host, which keeps it below 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?

There is no guidance on when to use this tool versus cancel_downtime, list_downtimes, or mute_host, nor any prerequisites such as required permissions or valid scope formats. The agent is left to infer usage entirely from the name.

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

unmute_hostC

Unmute a host in Datadog

NameRequiredDescriptionDefault
hostnameYesThe name of the host to unmute

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 the full behavioral burden, yet it says nothing about permissions required, whether unmuting re-enables alerting/notifications, or what happens when the host is not muted (no-op vs. error). For a state-mutating tool with zero annotation coverage this is a meaningful gap.

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?

A single front-loaded sentence with no padding or redundancy. It is efficient, though the brevity comes at the cost of substance rather than being a model of tight completeness.

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?

The tool is simple (one fully documented parameter, no output schema), so the minimal description is close to sufficient. However, with no annotations the description should at least indicate that this is a mutating operation that restores host monitoring/alerting, which it does not.

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% and the single hostname parameter is documented in the schema as "The name of the host to unmute". The description adds nothing beyond that, so the baseline 3 applies.

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 ("Unmute a host") plus the platform (Datadog), which is enough for an agent to identify the operation. It implicitly contrasts with the sibling mute_host through the verb, but never names the alternative or clarifies scope (e.g., whether this affects monitoring alerts only).

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?

There is no statement of when to use this tool, no prerequisites (e.g., the host must currently be muted), and no explicit reference to mute_host as the inverse operation. The agent must infer the pairing from the sibling name alone.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 21 tool updatesv1.8.0
    • First observedcancel_downtime
    • First observedget_active_hosts_count
    • First observedget_all_services
    • First observedget_dashboard
    • First observedget_incident
    • First observedget_logs
    • First observedget_monitors
    • First observedget_rum_applications
    • First observedget_rum_events
    • First observedget_rum_grouped_event_count
    • First observedget_rum_page_performance
    • First observedget_rum_page_waterfall
    • First observedlist_dashboards
    • First observedlist_downtimes
    • First observedlist_hosts
    • First observedlist_incidents
    • First observedlist_traces
    • First observedmute_host
    • First observedquery_metrics
    • First observedschedule_downtime
    • First observedunmute_host

TDQS

B3.1/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target a clearly distinct resource+action pair, and the RUM group separates applications, events, grouped counts, performance, and waterfall. Minor overlap exists between get_rum_events and get_rum_grouped_event_count, and get_all_services is a log-derived helper that could be mistaken for a general listing tool.

Naming Consistency4/5

Names consistently use snake_case with verb_noun ordering (list_*, get_*, mute_host, schedule_downtime). There are minor deviations where 'get' is used for list-like operations (get_monitors, get_logs, get_rum_applications) instead of 'list', but the pattern remains readable.

Tool Count4/5

21 tools cover a broad Datadog surface (incidents, metrics, logs, monitors, dashboards, traces, hosts, downtimes, RUM), so the count is justified by the domain. It sits at the upper end of comfortable scope but each tool maps to a real capability.

Completeness4/5

The surface covers the key read/monitoring workflows plus some write actions (host mute/unmute, downtime schedule/cancel). Gaps remain in write coverage for incidents, monitors, and dashboards (no create/update/mute), but core observability workflows are workable.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • 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
    -
  • A
    license
    B
    quality
    D
    maintenance
    Enables interaction with Datadog's monitoring and observability platform through the MCP protocol. Supports incident management, monitor status checks, log searches, metrics queries, APM traces, dashboard access, RUM analytics, host management, and downtime scheduling.
    13
    3 npm
    Apache 2.0
  • 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.
    -
  • A
    license
    C
    quality
    F
    maintenance
    A comprehensive read-only MCP server for Datadog, providing 117 tools to query logs, APM, metrics, monitors, dashboards, SLOs, and more, with zero write capabilities for safe AI integration.
    100
    1,326 npm
    2
    MIT