Last updated:
Query Telemetry via MCP
The Dash0 MCP Server exposes a set of direct, read-only tools that let your AI assistant (Claude Code, Claude.ai, Cursor, and similar) query your observability data without learning PromQL or OpenTelemetry semantics. Each tool answers one specific question, returns a value, and consumes no Agent0 credits.
This page is the reference for those direct tools. For handing a whole open-ended investigation to Agent0 instead, see Delegate to Agent0 via MCP.
This page covers the outbound direction: your AI assistant calling into Dash0 through the Dash0 MCP Server. It is not about connecting external MCP servers into Agent0 as connectors, the opposite direction. For that, see Use MCP in Chat and Automations.
Direct Tools vs Delegation
The server exposes two kinds of tools:
- Direct telemetry tools: the ones documented on this page. Your assistant picks the tool, supplies the parameters, and gets back a value. They read and return data only, and consume no credits.
- Agent0 delegation tools:
runTask,waitForTask, and the thread-inspection tools. These hand a question to Agent0, which works out the queries itself. They consume Agent0 credits and are documented, together with their cost and how to disable them, in Delegate to Agent0 via MCP.
Reach for a direct tool when you already know which value you want ("the current p95 latency for checkout-service", "the failed checks in the last hour"). Delegate when the question is open-ended and spans signals ("why did checkout-service get slow around 14:00?").
Connecting
The direct tools become available once the Dash0 MCP Server is connected to your assistant. Setup snippets for each supported tool are in the Integration Hub. See Use AI in Dash0 for the overview.
Common Parameters
Most direct tools share the same conventions. They are described once here and not repeated for every tool below.
dataset: Required by every tool exceptlistDatasets. Pass the dataset's technical ID. CalllistDatasetsfirst to discover the available datasets and their technical IDs.timeRange: An object withfromandto. Both accept ISO timestamps (2026-01-15T14:30:00.000Z) or relative references (now,now-1h,now-30m).frommust be a time in the past and must be earlier thanto; the two values must differ. Where a tool makestimeRangeoptional, it defaults to the last hour.filters: An array of{ key, operator, value }objects. Discover available keys withgetAttributeKeysand their values withgetAttributeValues. Supported operators:is,is_not,is_set,is_not_set,is_one_of,is_not_one_of,contains,does_not_contain,starts_with,does_not_start_with,ends_with,does_not_end_with,matches,does_not_match,gt,gte,lt,lte,is_any. The default operator isis.pagination: Limits the result set.limitis between 1 and 50. List and catalog tools page with anoffset; record-oriented tools (logs, spans, failed checks, metric catalog, web events) page with acursorreturned in each response.
Discovery
Start here to learn what you can query before querying it.
listDatasets
Lists the datasets you can access, with each one's display name and technical ID. Takes no parameters. The technical ID it returns is the dataset value every other tool expects.
getAttributeKeys
Lists the attribute keys present in a given telemetry kind over a time range.
- Required:
scope,timeRange,dataset. scope: Selects the data source, one oflogs,metrics,spans,resources(resource-level attributes), orweb-events(browser and RUM events).- Optional:
filters, aregexto match keys,sorting,pagination.
getAttributeValues
Lists the values present for one or more attribute keys. Pass several keys in one call to avoid repeated round trips.
- Required:
attributeKeys(a single key or an array),scope,timeRange,dataset. - Optional:
filters, aregexto match values,sorting,pagination.
Services and Infrastructure
getServiceCatalog
Returns the catalog of services with their RED metrics (request rate, errors, duration) and a map of their inter-dependencies.
- Required:
dataset. - Optional:
timeRange(defaults to the last hour),filters,sort(byrequests_total,errors_percentage,duration_p95_seconds,service.name, orservice.namespace),pagination. - Note: Rows whose
dash0.resource.typeisexternalare uninstrumented dependencies you do not operate (databases, queues, third-party APIs); their RED reflects the dependency's own aggregate health. UsegetServiceDetailsfor a per-caller breakdown.
getServiceDetails
Returns one service's RED metrics, health, operations, replicas, infrastructure, related resources, and direct dependencies.
- Required:
serviceName,dataset. - Optional:
serviceNamespace,timeRange(defaults to the last hour).
getK8sPods
Returns the catalog of Kubernetes pods with their RED metrics and a dependency map.
- Required:
timeRange,dataset. - Optional:
filters,pagination.
Metrics
getMetricCatalog
Lists the metrics available in a dataset, each with its OpenTelemetry type.
- Required:
timeRange,dataset. - Optional:
filters,pagination.
getMetricDetails
Returns the details of a single metric, including its type and attributes.
- Required:
metricName,metricType,timeRange,dataset. metricType: One ofsum,gauge,histogram,exponential_histogram,summary. If you do not know it, callgetMetricCatalogorgetMetricDetailsfirst rather than guessing, since the wrong type makes the query fail.
getMetricQuery
Builds a PromQL expression for a metric and returns it as text. It does not execute the query and takes no time range.
- Required:
metricName,metricType,dataset. - Optional:
aggregationFunction(min,max,avg,sum, or a percentile such asp95; percentiles apply only tohistogramandexponential_histogram, andsummaryaccepts onlyavg),aggregationInterval(the range-vector window, default5m),filters,groupBy,metricUnit. - Note: Use this to construct a correct expression, then run it with
promql.
promql
Executes a PromQL query.
- Required:
query,dataset. - Optional:
timeRange,timestamp(the reference point for an instant query),timeSeriesOptions(produces a time series by evaluating at multiple steps). - Note: Select a metric by its OpenTelemetry name as the value of the
otel_metric_namelabel, for example{otel_metric_name="dash0.spans"}. The dots-to-underscores rule applies only to label keys, never to the metric name itself.
sql
Executes a D0QL query, a ClickHouse SQL subset, against your observability data.
- Required:
query,timeRange,dataset. - Note:
SELECTqueries return at most 20 rows.
Logs
getLogRecords
Returns log records matching the filters and time range.
- Required:
timeRange,dataset. - Optional:
filters,logAttributeKeys(the attribute keys to return, defaultservice.nameanddash0.resource.type),pagination.
getFullLogRecord
Returns a single log record by ID, with its full attributes and body.
- Required:
logRecordId,dataset.
getLogCorrelations
Compares a baseline population of logs against a subset to find the attributes most correlated with the subset.
- Required:
dataset. - Optional:
baselineFilters,timeRange(defaults to the last hour),minAbsoluteCorrelation. - Defining the subset: Use
subsetSelectionto pick a named subset within the baseline (errorLogs, orlogsAfterTimestampwith a timestamp), orsubsetFiltersto define the subset as its own independently filtered population (for example logs from a failing pod against a healthy one). The two are mutually exclusive;subsetFiltersmust repeat any scope the baseline already applied. The default iserrorLogs.
Traces and Spans
getSpans
Searches spans and returns their name, status, service, resource, metadata, and extra attributes.
- Required:
dataset. - Optional:
filters,timeRange(defaults to the last hour),ordering(latestFirstoroldestFirst),spanAttributeKeys(extra keys to display),pagination.
getTraceDetails
Returns the details of a trace or span, including its events, hierarchy, and comparison to similar spans.
- Required:
traceId,dataset. - Optional:
spanId(defaults to the trace's root span; use it to navigate into children or ancestors),timeRange. - Note: Always pass
timeRangewhen you have time context. Looking up a trace without any time constraint is much slower.
getFullSpanEvent
Returns a single span event with its full attributes. Use it when getTraceDetails shows a span event with truncated attributes, such as an exception.stacktrace.
- Required:
traceId,spanId,eventName,dataset. - Optional:
eventIndex(0-based, to disambiguate events sharing a name; defaults to the first match).
getSpanCorrelations
Compares a baseline population of spans against a subset to find the attributes most correlated with the subset.
- Required:
dataset. - Optional:
baselineFilters,timeRange(defaults to the last hour),minAbsoluteCorrelation. - Defining the subset: Use
subsetSelectionfor a named subset within the baseline (errorSpans,spansAboveDurationThreshold,spansAfterTimestamp, orspansWithinBoundingBox), orsubsetFiltersfor an independently filtered population. The two are mutually exclusive;subsetFiltersmust repeat any scope the baseline already applied. The default iserrorSpans.
Checks and SLOs
getFailedChecks
Lists failed checks over a time range.
- Required:
timeRange,dataset. - Optional:
filters,pagination. - Note: Each status is as of the end of the requested time range, not the present moment. A check that ended within the range reports
resolved, andunknownmeans the status is missing rather than healthy.
getFailedCheckDetails
Returns detailed information about one failed check.
- Required:
issueIdentifier,timeRange,dataset. - Note:
issueIdentifier(dash0.issue.identifier) is one grouping of a check rule that fired, not a check rule ID (dash0.check.id). To go from a rule to its issues, list failed checks filtered ondash0.check.idfirst.
listSlos
Lists the Service Level Objectives defined natively in Dash0, each with its ID, origin, and display name. This is the starting point for any SLO, SLI, or error-budget question.
- Required:
dataset. - Optional:
pagination, aregexto match name or origin.
getSlo
Returns one SLO's full definition (its objective, target, and indicator) by the ID or origin taken from listSlos.
- Required:
sloId,dataset. - Optional:
formatset toopensloto return the definition as a public OpenSLO v1 YAML document instead of Dash0's internal representation.
Synthetic Checks
getSyntheticChecks
Returns synthetic HTTP check statuses and their current health state.
- Required:
timeRange,dataset. - Optional:
filters.
getSyntheticCheck
Returns one synthetic check's definition by ID or origin.
- Required:
syntheticCheckId,dataset.
Frontend and Real User Monitoring
listWebsites
Lists website services in alphabetical order with their metrics: sessions, page views, users, bounce rate, requests, errors, LCP, CLS, and INP.
- Required:
timeRange,dataset. - Optional:
pagination.
getWebEvents
Searches web events and returns their ID, name, associated span and trace IDs, and extra attributes. Returns at most 50 events.
- Required:
dataset. - Optional:
filters,eventNames,eventAttributeKeys,ordering,serviceName,sessionId,timeRange,pagination. - Note: When
sessionIdis set,serviceNameis required and the time range, event names, and pagination are ignored. OtherwisetimeRangeandpaginationapply.
Dashboards
listDashboards
Lists the dashboards in a dataset.
- Required:
dataset. - Optional:
pagination, aregexto match name, description, or tags.
Deep Links
generateDash0Url
Generates a shareable Dash0 deep-link URL for a specific page, returned as a <dash0link> tag that renders as a clickable button.
- Required:
page,dataset. page: An object whosepageTypeselects the target and the fields it accepts:logs(Logs Explorer),traces(Trace Explorer),web-events(Web Events Explorer),check-rules(Alerting Check Rules),automations(Agent0 Automations), oragent0-thread(a specific Agent0 conversation thread).
Further Reading
- About Agent0 — Overview of the AI layer built into Dash0
- Delegate to Agent0 via MCP — Hand a whole investigation to Agent0 instead of calling tools yourself
- Use AI in Dash0 — Connect external AI tools to Dash0 observability data
- Use MCP in Chat and Automations — Connecting external MCP servers into Agent0, the opposite direction
- Model Selection — Model classes and reasoning effort for delegated tasks