{"openapi":"3.1.0","info":{"title":"Datadog (BYOK) API","version":"0.1.0","description":"Datadog (BYOK) lets an AI assistant read your own Datadog data through the Datadog API with a key you supply (Datadog API key (US1 site, datadoghq.com)). Read-only: 11 tools (validate_api_key, list_monitors, get_monitor, list_dashboards, list_slos, list_hosts, list_events, list_downtimes, list_synthetic_tests, list_incidents, search_logs). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-datadog.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-datadog/docs"},"termsOfService":"https://connectorbay.com/byok-datadog/terms"},"servers":[{"url":"https://byok-datadog.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-datadog/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/validate_api_key":{"post":{"operationId":"validate_api_key","summary":"Check whether the API key is valid for the US1 site (datadoghq.com). Use for \"Is my Datadog API key valid\".","description":"Check whether the API key is valid for the US1 site (datadoghq.com). Use for \"Is my Datadog API key valid\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"validate_api_keyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_monitors":{"post":{"operationId":"list_monitors","summary":"List monitors with type, overall state (Alert, Warn, No Data, OK, Ignored, Skipped, Unknown), priority, query and tags. ","description":"List monitors with type, overall state (Alert, Warn, No Data, OK, Ignored, Skipped, Unknown), priority, query and tags. Filter by name or tags; page with page and page_size. Use for \"Which Datadog monitors are alerting\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only monitors whose name contains this text.","title":"Name"},"tags":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tags the monitor scope must contain, for example 'host:web-1,env:prod'.","title":"Tags"},"monitor_tags":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated monitor tags (service or custom tags) to filter by, for example 'team:ops'.","title":"Monitor Tags"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Monitors per page (1 to 1000, default 100). Sending page_size without page returns the first page.","title":"Page Size"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number starting at 0; leave out together with page_size to get all monitors.","title":"Page"}},"title":"list_monitorsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_monitor":{"post":{"operationId":"get_monitor","summary":"Get one monitor by id: type, query, overall state, priority, tags, message and dates. Use for \"Show Datadog monitor 1\".","description":"Get one monitor by id: type, query, overall state, priority, tags, message and dates. Use for \"Show Datadog monitor 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"monitor_id":{"description":"Numeric monitor id from list_monitors.","maximum":1000000000000000,"minimum":1,"title":"Monitor Id","type":"integer"}},"required":["monitor_id"],"title":"get_monitorArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_dashboards":{"post":{"operationId":"list_dashboards","summary":"List dashboards with title, description, author, layout type, URL path and dates. Use for \"Which Datadog dashboards do I","description":"List dashboards with title, description, author, layout type, URL path and dates. Use for \"Which Datadog dashboards do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Maximum dashboards to return (default 100).","title":"Count"},"start":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Offset to start from.","title":"Start"}},"title":"list_dashboardsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_slos":{"post":{"operationId":"list_slos","summary":"List service level objectives with type, description, target and warning thresholds, tags and linked monitors. Filter by","description":"List service level objectives with type, description, target and warning thresholds, tags and linked monitors. Filter by name text or tag. Use for \"How are my Datadog SLOs defined\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only SLOs whose name contains this text.","title":"Query"},"tags_query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only SLOs with this tag.","title":"Tags Query"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many SLOs to return (default 1000).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Offset to start from.","title":"Offset"}},"title":"list_slosArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_hosts":{"post":{"operationId":"list_hosts","summary":"List infrastructure hosts reporting to Datadog with name, whether up, muted flag, last report time (Unix seconds), apps ","description":"List infrastructure hosts reporting to Datadog with name, whether up, muted flag, last report time (Unix seconds), apps and sources. Use for \"Which hosts report to Datadog and are any down\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to filter hosts by name, alias or tag.","title":"Filter"},"count":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Number of hosts to return (max 1000, default 100).","title":"Count"},"start":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Offset to start from.","title":"Start"}},"title":"list_hostsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_events":{"post":{"operationId":"list_events","summary":"List Datadog events (deploys, alerts, comments) in a time window with title, text, host, tags, priority and source. Up t","description":"List Datadog events (deploys, alerts, comments) in a time window with title, text, host, tags, priority and source. Up to 1000 per page. Use for \"What events happened in Datadog during the last hours\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start":{"description":"Window start as a Unix timestamp in seconds.","maximum":4102444800,"minimum":0,"title":"Start","type":"integer"},"end":{"description":"Window end as a Unix timestamp in seconds.","maximum":4102444800,"minimum":0,"title":"End","type":"integer"},"priority":{"anyOf":[{"enum":["normal","low"],"type":"string"},{"type":"null"}],"default":null,"description":"Only events of this priority.","title":"Priority"},"sources":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated event sources, for example 'jenkins,github'.","title":"Sources"},"tags":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tags to filter by.","title":"Tags"},"page":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number starting at 0 (1000 events per page).","title":"Page"}},"required":["start","end"],"title":"list_eventsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_downtimes":{"post":{"operationId":"list_downtimes","summary":"List scheduled downtimes (muted alert windows) with scope, monitor, start and end (Unix seconds), message and whether ac","description":"List scheduled downtimes (muted alert windows) with scope, monitor, start and end (Unix seconds), message and whether active. Use for \"Which Datadog downtimes are scheduled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"current_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to return only downtimes active right now.","title":"Current Only"}},"title":"list_downtimesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_synthetic_tests":{"post":{"operationId":"list_synthetic_tests","summary":"List Synthetic tests (API, browser, mobile, network) with status live or paused, locations, tags and linked monitor id. ","description":"List Synthetic tests (API, browser, mobile, network) with status live or paused, locations, tags and linked monitor id. Use for \"Which Datadog synthetic tests are running\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Tests per page (default 100).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number starting at 0.","title":"Page Number"}},"title":"list_synthetic_testsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_incidents":{"post":{"operationId":"list_incidents","summary":"List incidents with title, severity, state, customer impact and declared, detected and resolved times. Use for \"What inc","description":"List incidents with title, severity, state, customer impact and declared, detected and resolved times. Use for \"What incidents were declared in Datadog\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Incidents per page (1 to 100, default 10).","title":"Page Size"},"page_offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Offset to start from.","title":"Page Offset"}},"title":"list_incidentsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_logs":{"post":{"operationId":"search_logs","summary":"Search Datadog logs with the log search syntax in a time range, newest first. Returns message, status, service, host and","description":"Search Datadog logs with the log search syntax in a time range, newest first. Returns message, status, service, host and tags per log. Use for \"Show recent error logs from service checkout in Datadog\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Datadog log search query, for example 'service:checkout status:error'. Use '*' for all logs.","maxLength":500,"title":"Query","type":"string"},"from_time":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":"now-1h","description":"Start of the range: date math like 'now-1h' or an ISO 8601 time.","title":"From Time"},"to_time":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":"now","description":"End of the range: 'now' or an ISO 8601 time.","title":"To Time"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many logs to return (1 to 50).","title":"Limit"}},"required":["query"],"title":"search_logsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}