mcp-server-datadog
The mcp-server-datadog enables interaction with Datadog's API for monitoring, incident management, and observability tasks.
Incident Management: List and retrieve incident details
Monitor Management: Fetch and filter monitors by status, name, or tags
Logs: Search and retrieve logs based on queries and timeframes
Dashboards: List and access dashboard details
Metrics: Query metrics data for specific timeframes
APM Traces: Retrieve traces filtered by service or operation
Host Management: List, mute, unmute hosts, and get active host counts
Downtime Management: Schedule, list, and cancel downtimes
RUM (Real User Monitoring): Access RUM events, applications, performance metrics, and waterfall data
Allows to interact with Datadog's monitoring features including incidents, monitors, logs, dashboards, metrics, traces, and host management. Provides capabilities for incident management, monitoring, observability, and scheduled downtimes.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-datadoglist incidents from the last hour"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
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
list_incidentsRetrieve 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.
get_incidentRetrieve 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.).
get_monitorsFetch 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.
get_logsSearch 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.
list_dashboardsGet 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.
get_dashboardRetrieve a specific dashboard from Datadog.
Inputs:
dashboard_id(string): ID of the dashboard to fetch.
Returns: Dashboard details including title, widgets, etc.
query_metricsRetrieve 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.
list_tracesRetrieve 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.
list_hostsGet 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.
get_active_hosts_countGet 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.
mute_hostMute 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.
unmute_hostUnmute a host in Datadog.
Inputs:
hostname(string): The name of the host to unmute.
Returns: Success status and confirmation message.
list_downtimesList 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.
schedule_downtimeSchedule 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.
cancel_downtimeCancel a scheduled downtime in Datadog.
Inputs:
downtimeId(number): The ID of the downtime to cancel.
Returns: Confirmation of downtime cancellation.
get_rum_applicationsGet all RUM applications in the organization.
Inputs: None.
Returns: List of RUM applications.
get_rum_eventsSearch 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.
get_rum_grouped_event_countSearch, 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.
get_rum_page_performanceGet 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.
get_rum_page_waterfallRetrieve 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 keyDATADOG_APP_KEY: Your Datadog Application keyDATADOG_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, orflex.
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 | flexInstallation
Installing via Smithery
To install Datadog MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @winor30/mcp-server-datadog --client claudeManual Installation
pnpm install
pnpm build
pnpm watch # for development with auto-rebuildUsage 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 inspectorThe 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 toolscancel_downtimeC
Cancel a scheduled downtime in Datadog
| Name | Required | Description | Default |
|---|---|---|---|
| downtimeId | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Number of seconds from which you want to get total number of active hosts (defaults to 2h) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End time in epoch seconds | |
| from | Yes | Start time in epoch seconds | |
| limit | No | Maximum number of logs to search through. Default is 1000. | |
| query | No | Optional query filter for log search | * |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| dashboardId | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| incidentId | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End time in epoch seconds | |
| from | Yes | Start time in epoch seconds | |
| limit | No | Maximum number of logs to return. Default is 100. | |
| query | No | Datadog logs query string |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter monitors by name | |
| tags | No | Filter monitors by tags | |
| groupStates | No | Filter monitors by their states |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End time in epoch seconds | |
| from | Yes | Start time in epoch seconds | |
| limit | No | Maximum number of events to return. Default is 100. | |
| query | No | Datadog RUM query string |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End time in epoch seconds | |
| from | Yes | Start time in epoch seconds | |
| query | No | Optional query filter for RUM search | * |
| groupBy | No | Dimension to group results by. Default is application.name | application.name |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End time in epoch seconds | |
| from | Yes | Start time in epoch seconds | |
| query | No | Optional query filter for RUM search | * |
| metricNames | No | Array of metric names to retrieve |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID to filter events | |
| applicationName | Yes | Application name to filter events |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter dashboards by name | |
| tags | No | Filter dashboards by tags |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| currentOnly | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Search hosts from this UNIX timestamp | |
| count | No | Max number of hosts to return (max: 1000) | |
| start | No | Starting offset for pagination | |
| filter | No | Filter string for search results | |
| sort_dir | No | Sort direction (asc/desc) | |
| sort_field | No | Field to sort hosts by | |
| include_hosts_metadata | No | Include host metadata (version, platform, etc) | |
| include_muted_hosts_data | No | Include muted hosts status and expiry |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | ||
| pageOffset | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End time in epoch seconds | |
| from | Yes | Start time in epoch seconds | |
| sort | No | Sort order for traces | -timestamp |
| limit | No | Maximum number of traces to return | |
| query | Yes | Datadog APM trace query string | |
| service | No | Filter by service name | |
| operation | No | Filter by operation name |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | POSIX timestamp for when the mute should end | |
| message | No | Message to associate with the muting of this host | |
| hostname | Yes | The name of the host to mute | |
| override | No | If true and the host is already muted, replaces existing end time |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End of the queried time period, seconds since the Unix epoch. | |
| from | Yes | Start of the queried time period, seconds since the Unix epoch. | |
| query | Yes | Datadog metrics query string. e.g. "avg:system.cpu.user{*} |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| scope | Yes | ||
| start | No | ||
| message | No | ||
| timezone | No | ||
| monitorId | No | ||
| recurrence | No | ||
| monitorTags | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| hostname | Yes | The name of the host to unmute |
TDQS
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.
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.
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.
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.
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.
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.
21 tool updates
v1.8.0- First observed
cancel_downtime - First observed
get_active_hosts_count - First observed
get_all_services - First observed
get_dashboard - First observed
get_incident - First observed
get_logs - First observed
get_monitors - First observed
get_rum_applications - First observed
get_rum_events - First observed
get_rum_grouped_event_count - First observed
get_rum_page_performance - First observed
get_rum_page_waterfall - First observed
list_dashboards - First observed
list_downtimes - First observed
list_hosts - First observed
list_incidents - First observed
list_traces - First observed
mute_host - First observed
query_metrics - First observed
schedule_downtime - First observed
unmute_host
TDQS
Scored across 21 tools
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.
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.
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.
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
Related MCP Connectors
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
- MeandrOAuthcom.meandr
MCP gateway and cloud hosting for MCP servers, agents and apps like RAG, managed from your agent.
Host any HTTP API as a standard MCP server; auto-distribute to 12+ mainstream agent platforms.
- mttrlyOAuthcom.mttrly
AI-powered incident management and server monitoring via MCP.
Related MCP Servers
- FlicenseBqualityFmaintenanceEnables 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.1320-
- AlicenseBqualityDmaintenanceEnables 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.133 npmApache 2.0
- FlicenseNot gradedqualityDmaintenanceA 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.-
- AlicenseCqualityFmaintenanceA 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.1001,326 npm2MIT