Submit metrics and events to Datadog, query timeseries, and read monitors, downtimes, dashboards, logs, hosts and users across every Datadog site.
Datadog ships in the w6w first-party pack. It declares 22 actions, 3 health checks, and the host runs its code in a sandbox that never sees the credential.
io.w6w.datadogDatadog brings observability data into a workflow that already handles the rest of a deploy or an incident — metrics and events go in, and monitors, downtimes, dashboards, logs, hosts and access records come back out, across any of Datadog’s nine regional sites (US, EU, AP, UK and both government clouds).
Metrics can be pushed and queried, events posted and searched, and monitors and downtimes listed, inspected, scheduled or cancelled — enough to mute a noisy alert during a deploy and un-mute it afterward, or pull dashboard and host inventory for a status report. Log search reaches Datadog’s own indexed logs directly, and account and user lookups round out the picture for reporting who has access.
A single connection is scoped to one site and one organization’s api and application keys, so this fits infrastructure and on-call workflows that need to read or write Datadog state as part of a larger deploy, incident-response or reporting pipeline, without a separate credential per region.
Three routes to the same 22 actions. The Workflow tab is generated from Datadog's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.
current-user-get Read the user this connection's application key acts as, with their organization, roles and granted permissions.
dashboard-list List custom-created and cloned dashboards. Preset dashboards are not returned.
metric-query Evaluate a Datadog metric query over a time window and return the timeseries.
monitor-search Search monitors with the Manage Monitors query syntax, with facet counts.
validate Check that this connection's Datadog API key is live. Needs no application key and no permissions.
A workflow step names the app and the action, and the editor fills in the
connection when you pick one. This is the Step shape from the
workflow spec, carrying Datadog's real ids.
{
"manifestVersion": "2",
"name": "datadog-example",
"steps": [
{
"id": "dashboard-get",
"uses": {
"app": "io.w6w.datadog",
"action": "dashboard-get",
"connection": "conn_YOUR_CONNECTION_ID"
},
"with": {
"dashboardId": "<dashboardId>"
}
}
]
}dashboard-get current-user-get dashboard-list downtime-get downtime-list +17 more actions available
Every app-specific value here is a blank you have to fill in. An
app action is reached through the connection that authenticates it, so the
address is a connection id, not the app id — and connections belong to your account,
so a public page cannot know yours. Create one for Datadog, then fill in
the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the
parameters that action declares. The call itself is real — the shape is transcribed
from the studio's own snippet builder, which prints the same kind of blanks — but
nothing in it is specific to Datadog. The Workflow tab is where this app's
real ids are.
npm install @w6w/sdkyarn add @w6w/sdkpnpm add @w6w/sdkdeno add npm:@w6w/sdkimport { W6wClient, isActionRun } from "@w6w/sdk";
// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();
const envelope = await client.run({
urn: "conn_YOUR_CONNECTION_ID",
action: "event-post",
payload: {
title: "<value>",
text: "<value>",
// alertType: "<value>",
// priority: "<value>",
// tags: "<value>",
// host: "<value>",
// aggregationKey: "<value>",
// sourceTypeName: "<value>",
// dateHappened: "<value>",
},
});
if (isActionRun(envelope)) console.log(envelope.value); npm install -g @w6w/cli w6w run conn_YOUR_CONNECTION_ID --action event-post --payload '{"title":"<value>","text":"<value>"}' Give an AI agent Datadog — without giving it Datadog's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.
One tool call{
"name": "w6w_invoke",
"arguments": {
"ref": "app:io.w6w.datadog#dashboard-get",
"input": {
"dashboardId": "<dashboardId>"
}
}
}
Every tool names its target with a single ref. The
app: form above doesn't name a connection at all — the
host resolves which of the caller's Datadog connections to sign
with, and refuses rather than guesses when the answer is ambiguous.
The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.
Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.
Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.
Datadog's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.
The MCP surface is part of the hosted platform. Datadog itself is MIT, and the runtime that executes it is source-available (FSL).
Datadog declares its own checks, so its health is a property of the app rather than something the host guesses at.
Product component status from this connection's own Datadog status page — one page per site, so an EU1 connection reads status.datadoghq.eu and never US1's. Covers APM, Log Management, Monitors, Metrics and Infra Monitoring, Synthetics, RUM and the rest of the product surface. It does NOT cover the REST API: no Datadog status page publishes an API component. See the `api` check for that.
Unauthenticated probe of GET /api/v1/validate on this connection's own api.<site> host. A schema-correct 401 or 403 is a pass: it proves the host resolves and Datadog is answering. Whether the keys are any good is the auth check's job. This is the only automatable signal for the UK1 site, which publishes no status page.