@us-all/datadog-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +275 -0
  3. package/dist/client.d.ts +21 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +37 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/config.d.ts +8 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +17 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +100 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/tools/account.d.ts +48 -0
  16. package/dist/tools/account.d.ts.map +1 -0
  17. package/dist/tools/account.js +64 -0
  18. package/dist/tools/account.js.map +1 -0
  19. package/dist/tools/apm.d.ts +36 -0
  20. package/dist/tools/apm.d.ts.map +1 -0
  21. package/dist/tools/apm.js +40 -0
  22. package/dist/tools/apm.js.map +1 -0
  23. package/dist/tools/dashboards.d.ts +82 -0
  24. package/dist/tools/dashboards.d.ts.map +1 -0
  25. package/dist/tools/dashboards.js +124 -0
  26. package/dist/tools/dashboards.js.map +1 -0
  27. package/dist/tools/downtimes.d.ts +51 -0
  28. package/dist/tools/downtimes.d.ts.map +1 -0
  29. package/dist/tools/downtimes.js +96 -0
  30. package/dist/tools/downtimes.js.map +1 -0
  31. package/dist/tools/events.d.ts +52 -0
  32. package/dist/tools/events.d.ts.map +1 -0
  33. package/dist/tools/events.js +70 -0
  34. package/dist/tools/events.js.map +1 -0
  35. package/dist/tools/hosts.d.ts +38 -0
  36. package/dist/tools/hosts.d.ts.map +1 -0
  37. package/dist/tools/hosts.js +55 -0
  38. package/dist/tools/hosts.js.map +1 -0
  39. package/dist/tools/incidents.d.ts +23 -0
  40. package/dist/tools/incidents.d.ts.map +1 -0
  41. package/dist/tools/incidents.js +29 -0
  42. package/dist/tools/incidents.js.map +1 -0
  43. package/dist/tools/logs.d.ts +67 -0
  44. package/dist/tools/logs.d.ts.map +1 -0
  45. package/dist/tools/logs.js +98 -0
  46. package/dist/tools/logs.js.map +1 -0
  47. package/dist/tools/metrics.d.ts +61 -0
  48. package/dist/tools/metrics.d.ts.map +1 -0
  49. package/dist/tools/metrics.js +94 -0
  50. package/dist/tools/metrics.js.map +1 -0
  51. package/dist/tools/monitors.d.ts +92 -0
  52. package/dist/tools/monitors.d.ts.map +1 -0
  53. package/dist/tools/monitors.js +157 -0
  54. package/dist/tools/monitors.js.map +1 -0
  55. package/dist/tools/notebooks.d.ts +41 -0
  56. package/dist/tools/notebooks.d.ts.map +1 -0
  57. package/dist/tools/notebooks.js +60 -0
  58. package/dist/tools/notebooks.js.map +1 -0
  59. package/dist/tools/oncall.d.ts +18 -0
  60. package/dist/tools/oncall.d.ts.map +1 -0
  61. package/dist/tools/oncall.js +31 -0
  62. package/dist/tools/oncall.js.map +1 -0
  63. package/dist/tools/rum.d.ts +50 -0
  64. package/dist/tools/rum.d.ts.map +1 -0
  65. package/dist/tools/rum.js +65 -0
  66. package/dist/tools/rum.js.map +1 -0
  67. package/dist/tools/security.d.ts +25 -0
  68. package/dist/tools/security.d.ts.map +1 -0
  69. package/dist/tools/security.js +37 -0
  70. package/dist/tools/security.js.map +1 -0
  71. package/dist/tools/slos.d.ts +59 -0
  72. package/dist/tools/slos.d.ts.map +1 -0
  73. package/dist/tools/slos.js +82 -0
  74. package/dist/tools/slos.js.map +1 -0
  75. package/dist/tools/synthetics.d.ts +115 -0
  76. package/dist/tools/synthetics.d.ts.map +1 -0
  77. package/dist/tools/synthetics.js +185 -0
  78. package/dist/tools/synthetics.js.map +1 -0
  79. package/dist/tools/utils.d.ts +18 -0
  80. package/dist/tools/utils.d.ts.map +1 -0
  81. package/dist/tools/utils.js +97 -0
  82. package/dist/tools/utils.js.map +1 -0
  83. package/package.json +54 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 us-all
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,275 @@
1
+ # Datadog MCP Server
2
+
3
+ A comprehensive [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server for Datadog. Gives AI assistants like Claude direct access to your Datadog monitoring data — metrics, logs, APM traces, RUM, monitors, dashboards, and more.
4
+
5
+ [한국어 README](./README_KO.md)
6
+
7
+ ## Why This Server?
8
+
9
+ The existing community MCP server only covers basic operations. This project provides full Datadog API coverage:
10
+
11
+ | Feature | Community MCP | This Server |
12
+ |---------|:---:|:---:|
13
+ | Time-series metric queries (CPU, memory, IOPS, etc.) | - | ✓ |
14
+ | APM / Trace search | - | ✓ |
15
+ | RUM event search & aggregation | - | ✓ |
16
+ | Monitor / Dashboard CRUD | - | ✓ |
17
+ | Synthetics test management | - | ✓ |
18
+ | Downtime management | - | ✓ |
19
+ | Security signals | - | ✓ |
20
+ | On-Call schedules | - | ✓ |
21
+ | Usage / Account management | - | ✓ |
22
+ | **Total tools** | **6** | **46** |
23
+
24
+ ## Quick Start
25
+
26
+ ### Option 1: npx (Recommended)
27
+
28
+ ```bash
29
+ npx @us-all/datadog-mcp \
30
+ --env DD_API_KEY=<your-key> \
31
+ --env DD_APP_KEY=<your-key> \
32
+ --env DD_SITE=us5.datadoghq.com
33
+ ```
34
+
35
+ ### Option 2: Docker
36
+
37
+ ```bash
38
+ docker run -e DD_API_KEY=<key> -e DD_APP_KEY=<key> -e DD_SITE=us5.datadoghq.com \
39
+ ghcr.io/us-all/datadog-mcp-server:latest
40
+ ```
41
+
42
+ ### Option 3: Build from Source
43
+
44
+ ```bash
45
+ git clone https://github.com/us-all/datadog-mcp-server.git
46
+ cd datadog-mcp-server
47
+ pnpm install
48
+ pnpm run build
49
+ node dist/index.js
50
+ ```
51
+
52
+ ## Configuration
53
+
54
+ ### Environment Variables
55
+
56
+ | Variable | Required | Default | Description |
57
+ |----------|----------|---------|-------------|
58
+ | `DD_API_KEY` | Yes | — | Datadog API key |
59
+ | `DD_APP_KEY` | Yes | — | Datadog Application key |
60
+ | `DD_SITE` | No | `us5.datadoghq.com` | Datadog site (see below) |
61
+ | `DD_ALLOW_WRITE` | No | `false` | Set to `true` to enable write/mutate operations (create, update, delete) |
62
+
63
+ ### Supported DD_SITE Values
64
+
65
+ | Site | Value | Region |
66
+ |------|-------|--------|
67
+ | US1 | `datadoghq.com` | US (Virginia) |
68
+ | US3 | `us3.datadoghq.com` | US (Virginia) |
69
+ | US5 | `us5.datadoghq.com` | US (Oregon) |
70
+ | EU1 | `datadoghq.eu` | EU (Frankfurt) |
71
+ | AP1 | `ap1.datadoghq.com` | Asia-Pacific (Tokyo) |
72
+
73
+ If `DD_SITE` is not set, it defaults to `us5.datadoghq.com`. Set this to match your Datadog organization's site.
74
+
75
+ ### Read-Only Mode
76
+
77
+ By default, all write operations are blocked to prevent accidental changes by AI agents. The following tools require `DD_ALLOW_WRITE=true`:
78
+
79
+ `create-monitor`, `update-monitor`, `delete-monitor`, `mute-monitor`, `create-dashboard`, `update-dashboard`, `delete-dashboard`, `send-logs`, `post-event`, `trigger-synthetics`, `create-synthetics-test`, `update-synthetics-test`, `delete-synthetics-test`, `create-downtime`, `cancel-downtime`
80
+
81
+ ### Claude Desktop
82
+
83
+ Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
84
+
85
+ ```json
86
+ {
87
+ "mcpServers": {
88
+ "datadog": {
89
+ "command": "npx",
90
+ "args": ["-y", "@us-all/datadog-mcp"],
91
+ "env": {
92
+ "DD_API_KEY": "<your-api-key>",
93
+ "DD_APP_KEY": "<your-app-key>",
94
+ "DD_SITE": "us5.datadoghq.com"
95
+ }
96
+ }
97
+ }
98
+ }
99
+ ```
100
+
101
+ ### Claude Code
102
+
103
+ ```bash
104
+ # Global (all projects)
105
+ claude mcp add datadog -s user \
106
+ -e DD_API_KEY=<key> -e DD_APP_KEY=<key> -e DD_SITE=us5.datadoghq.com \
107
+ -- npx -y @us-all/datadog-mcp
108
+
109
+ # Project-only
110
+ claude mcp add datadog -s project \
111
+ -e DD_API_KEY=<key> -e DD_APP_KEY=<key> -e DD_SITE=us5.datadoghq.com \
112
+ -- npx -y @us-all/datadog-mcp
113
+ ```
114
+
115
+ ## Tools (46)
116
+
117
+ ### Metrics (5)
118
+ | Tool | Description |
119
+ |------|-------------|
120
+ | `query-metrics` | Query time-series metric data with full Datadog query syntax |
121
+ | `get-metrics` | Search available metrics by name pattern |
122
+ | `get-metric-metadata` | Get metric metadata (type, unit, description) |
123
+ | `list-active-metrics` | List active metrics, optionally filtered by host or tag |
124
+ | `list-metric-tags` | List tags for a specific metric |
125
+
126
+ ### Monitors (6)
127
+ | Tool | Description |
128
+ |------|-------------|
129
+ | `get-monitors` | List monitors with filtering by name, tags, or state |
130
+ | `get-monitor` | Get detailed monitor information by ID |
131
+ | `create-monitor` | Create a new monitor |
132
+ | `update-monitor` | Update a monitor's configuration |
133
+ | `delete-monitor` | Delete a monitor |
134
+ | `mute-monitor` | Mute a monitor for a scope and optional duration |
135
+
136
+ ### Dashboards (5)
137
+ | Tool | Description |
138
+ |------|-------------|
139
+ | `get-dashboards` | List all dashboards |
140
+ | `get-dashboard` | Get dashboard with all widgets and configuration |
141
+ | `create-dashboard` | Create a new dashboard |
142
+ | `update-dashboard` | Update a dashboard |
143
+ | `delete-dashboard` | Delete a dashboard |
144
+
145
+ ### Logs (3)
146
+ | Tool | Description |
147
+ |------|-------------|
148
+ | `search-logs` | Search logs by query with time range filtering |
149
+ | `aggregate-logs` | Aggregate logs with computations (count, avg, sum, percentiles) and grouping |
150
+ | `send-logs` | Send log entries to Datadog |
151
+
152
+ ### Events (2)
153
+ | Tool | Description |
154
+ |------|-------------|
155
+ | `get-events` | Get events filtered by priority, source, or tags |
156
+ | `post-event` | Post a custom event (supports markdown, @mentions) |
157
+
158
+ ### Incidents (1)
159
+ | Tool | Description |
160
+ |------|-------------|
161
+ | `get-incidents` | List incidents with pagination |
162
+
163
+ ### APM (1)
164
+ | Tool | Description |
165
+ |------|-------------|
166
+ | `search-spans` | Search APM spans/traces by service, resource, status, duration |
167
+
168
+ ### RUM (2)
169
+ | Tool | Description |
170
+ |------|-------------|
171
+ | `search-rum-events` | Search RUM events (sessions, views, errors, actions) |
172
+ | `aggregate-rum` | Aggregate RUM data with computations and grouping |
173
+
174
+ ### Hosts (2)
175
+ | Tool | Description |
176
+ |------|-------------|
177
+ | `list-hosts` | List infrastructure hosts with filtering and metadata |
178
+ | `get-host-totals` | Get total active and up host counts |
179
+
180
+ ### SLOs (3)
181
+ | Tool | Description |
182
+ |------|-------------|
183
+ | `list-slos` | List SLOs with filtering by query, tags, or IDs |
184
+ | `get-slo` | Get detailed SLO information |
185
+ | `get-slo-history` | Get SLO performance history (status, error budget, compliance) |
186
+
187
+ ### Synthetics (6)
188
+ | Tool | Description |
189
+ |------|-------------|
190
+ | `list-synthetics` | List Synthetics tests (API, Browser, Mobile) |
191
+ | `get-synthetics-result` | Get latest results for a test |
192
+ | `trigger-synthetics` | Trigger tests on demand |
193
+ | `create-synthetics-test` | Create a new Synthetics test |
194
+ | `update-synthetics-test` | Update a Synthetics test |
195
+ | `delete-synthetics-test` | Delete Synthetics tests |
196
+
197
+ ### Downtimes (3)
198
+ | Tool | Description |
199
+ |------|-------------|
200
+ | `list-downtimes` | List scheduled downtimes |
201
+ | `create-downtime` | Create a downtime (mute monitors) |
202
+ | `cancel-downtime` | Cancel an active downtime |
203
+
204
+ ### Security (1)
205
+ | Tool | Description |
206
+ |------|-------------|
207
+ | `search-security-signals` | Search security monitoring signals |
208
+
209
+ ### Account & Usage (2)
210
+ | Tool | Description |
211
+ |------|-------------|
212
+ | `get-usage-summary` | Get usage summary (hosts, logs, APM, RUM, etc.) |
213
+ | `list-users` | List organization users |
214
+
215
+ ### Notebooks (2)
216
+ | Tool | Description |
217
+ |------|-------------|
218
+ | `list-notebooks` | List notebooks with search and filtering |
219
+ | `get-notebook` | Get a notebook with all cells and content |
220
+
221
+ ### On-Call (2)
222
+ | Tool | Description |
223
+ |------|-------------|
224
+ | `get-team-oncall` | Get current on-call responders for a team |
225
+ | `get-oncall-schedule` | Get an on-call schedule with layers and team info |
226
+
227
+ ## Architecture
228
+
229
+ ```
230
+ Claude AI → MCP Protocol (stdio) → index.ts → tools/*.ts → Datadog SDK → Datadog API
231
+ ```
232
+
233
+ ### Project Structure
234
+
235
+ ```
236
+ src/
237
+ ├── index.ts # MCP server entry point, 46 tools registered
238
+ ├── config.ts # Environment variable loading
239
+ ├── client.ts # Datadog API client initialization
240
+ └── tools/
241
+ ├── utils.ts # Error handling wrapper
242
+ ├── metrics.ts # Time-series queries + metric catalog
243
+ ├── monitors.ts # Monitor CRUD + mute
244
+ ├── dashboards.ts # Dashboard CRUD
245
+ ├── logs.ts # Log search, aggregation, sending
246
+ ├── events.ts # Event listing and creation
247
+ ├── incidents.ts # Incident listing
248
+ ├── apm.ts # APM span/trace search
249
+ ├── rum.ts # RUM event search and aggregation
250
+ ├── hosts.ts # Infrastructure host management
251
+ ├── slos.ts # SLO queries and history
252
+ ├── synthetics.ts # Synthetics test CRUD + triggering
253
+ ├── downtimes.ts # Downtime management
254
+ ├── security.ts # Security signal search
255
+ ├── account.ts # Usage summary and user management
256
+ ├── notebooks.ts # Notebook listing
257
+ └── oncall.ts # On-call schedule and responders
258
+ ```
259
+
260
+ ## Tech Stack
261
+
262
+ - **Runtime**: Node.js 18+ (TypeScript strict mode, ESM)
263
+ - **Package Manager**: pnpm
264
+ - **MCP SDK**: `@modelcontextprotocol/sdk`
265
+ - **Datadog Client**: `@datadog/datadog-api-client` (official SDK)
266
+ - **Validation**: zod
267
+ - **Config**: dotenv
268
+
269
+ ## Contributing
270
+
271
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup and guidelines.
272
+
273
+ ## License
274
+
275
+ [MIT](./LICENSE)
@@ -0,0 +1,21 @@
1
+ import { v1, v2 } from "@datadog/datadog-api-client";
2
+ export declare const metricsApi: v1.MetricsApi;
3
+ export declare const monitorsApi: v1.MonitorsApi;
4
+ export declare const dashboardsApi: v1.DashboardsApi;
5
+ export declare const eventsApi: v1.EventsApi;
6
+ export declare const hostsApi: v1.HostsApi;
7
+ export declare const slosApi: v1.ServiceLevelObjectivesApi;
8
+ export declare const syntheticsApi: v1.SyntheticsApi;
9
+ export declare const logsV1Api: v1.LogsApi;
10
+ export declare const usageMeteringApi: v1.UsageMeteringApi;
11
+ export declare const notebooksApi: v1.NotebooksApi;
12
+ export declare const metricsV2Api: v2.MetricsApi;
13
+ export declare const logsApi: v2.LogsApi;
14
+ export declare const incidentsApi: v2.IncidentsApi;
15
+ export declare const spansApi: v2.SpansApi;
16
+ export declare const rumApi: v2.RUMApi;
17
+ export declare const downtimesApi: v2.DowntimesApi;
18
+ export declare const securityMonitoringApi: v2.SecurityMonitoringApi;
19
+ export declare const usersApi: v2.UsersApi;
20
+ export declare const onCallApi: v2.OnCallApi;
21
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,EAAE,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAoB7D,eAAO,MAAM,UAAU,eAAmC,CAAC;AAC3D,eAAO,MAAM,WAAW,gBAAoC,CAAC;AAC7D,eAAO,MAAM,aAAa,kBAAsC,CAAC;AACjE,eAAO,MAAM,SAAS,cAAkC,CAAC;AACzD,eAAO,MAAM,QAAQ,aAAiC,CAAC;AACvD,eAAO,MAAM,OAAO,8BAAkD,CAAC;AACvE,eAAO,MAAM,aAAa,kBAAsC,CAAC;AACjE,eAAO,MAAM,SAAS,YAAgC,CAAC;AACvD,eAAO,MAAM,gBAAgB,qBAAyC,CAAC;AACvE,eAAO,MAAM,YAAY,iBAAqC,CAAC;AAG/D,eAAO,MAAM,YAAY,eAAmC,CAAC;AAC7D,eAAO,MAAM,OAAO,YAAgC,CAAC;AACrD,eAAO,MAAM,YAAY,iBAAqC,CAAC;AAC/D,eAAO,MAAM,QAAQ,aAAiC,CAAC;AACvD,eAAO,MAAM,MAAM,WAA+B,CAAC;AACnD,eAAO,MAAM,YAAY,iBAAqC,CAAC;AAC/D,eAAO,MAAM,qBAAqB,0BAA8C,CAAC;AACjF,eAAO,MAAM,QAAQ,aAAiC,CAAC;AACvD,eAAO,MAAM,SAAS,cAAkC,CAAC"}
package/dist/client.js ADDED
@@ -0,0 +1,37 @@
1
+ import { client, v1, v2 } from "@datadog/datadog-api-client";
2
+ import { config } from "./config.js";
3
+ const configuration = client.createConfiguration({
4
+ authMethods: {
5
+ apiKeyAuth: config.apiKey,
6
+ appKeyAuth: config.appKey,
7
+ },
8
+ });
9
+ configuration.setServerVariables({
10
+ site: config.site,
11
+ });
12
+ // Enable unstable operations
13
+ configuration.unstableOperations["v2.listIncidents"] = true;
14
+ configuration.unstableOperations["v2.getIncident"] = true;
15
+ configuration.unstableOperations["v2.searchIncidents"] = true;
16
+ // v1 APIs
17
+ export const metricsApi = new v1.MetricsApi(configuration);
18
+ export const monitorsApi = new v1.MonitorsApi(configuration);
19
+ export const dashboardsApi = new v1.DashboardsApi(configuration);
20
+ export const eventsApi = new v1.EventsApi(configuration);
21
+ export const hostsApi = new v1.HostsApi(configuration);
22
+ export const slosApi = new v1.ServiceLevelObjectivesApi(configuration);
23
+ export const syntheticsApi = new v1.SyntheticsApi(configuration);
24
+ export const logsV1Api = new v1.LogsApi(configuration);
25
+ export const usageMeteringApi = new v1.UsageMeteringApi(configuration);
26
+ export const notebooksApi = new v1.NotebooksApi(configuration);
27
+ // v2 APIs
28
+ export const metricsV2Api = new v2.MetricsApi(configuration);
29
+ export const logsApi = new v2.LogsApi(configuration);
30
+ export const incidentsApi = new v2.IncidentsApi(configuration);
31
+ export const spansApi = new v2.SpansApi(configuration);
32
+ export const rumApi = new v2.RUMApi(configuration);
33
+ export const downtimesApi = new v2.DowntimesApi(configuration);
34
+ export const securityMonitoringApi = new v2.SecurityMonitoringApi(configuration);
35
+ export const usersApi = new v2.UsersApi(configuration);
36
+ export const onCallApi = new v2.OnCallApi(configuration);
37
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;IAC/C,WAAW,EAAE;QACX,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,UAAU,EAAE,MAAM,CAAC,MAAM;KAC1B;CACF,CAAC,CAAC;AAEH,aAAa,CAAC,kBAAkB,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;CAClB,CAAC,CAAC;AAEH,6BAA6B;AAC7B,aAAa,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;AAC5D,aAAa,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;AAC1D,aAAa,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;AAE9D,UAAU;AACV,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,EAAE,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAE/D,UAAU;AACV,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,EAAE,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare const config: {
2
+ apiKey: string;
3
+ appKey: string;
4
+ site: string;
5
+ allowWrite: boolean;
6
+ };
7
+ export declare function validateConfig(): void;
8
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM;;;;;CAKlB,CAAC;AAEF,wBAAgB,cAAc,IAAI,IAAI,CAOrC"}
package/dist/config.js ADDED
@@ -0,0 +1,17 @@
1
+ import dotenv from "dotenv";
2
+ dotenv.config();
3
+ export const config = {
4
+ apiKey: process.env.DD_API_KEY ?? "",
5
+ appKey: process.env.DD_APP_KEY ?? "",
6
+ site: process.env.DD_SITE ?? "us5.datadoghq.com",
7
+ allowWrite: process.env.DD_ALLOW_WRITE === "true",
8
+ };
9
+ export function validateConfig() {
10
+ if (!config.apiKey) {
11
+ throw new Error("DD_API_KEY environment variable is required");
12
+ }
13
+ if (!config.appKey) {
14
+ throw new Error("DD_APP_KEY environment variable is required");
15
+ }
16
+ }
17
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE;IACpC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE;IACpC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,mBAAmB;IAChD,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM;CAClD,CAAC;AAEF,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { validateConfig } from "./config.js";
5
+ import { wrapToolHandler } from "./tools/utils.js";
6
+ // Tool imports
7
+ import { queryMetricsSchema, queryMetrics, getMetricsSchema, getMetrics, getMetricMetadataSchema, getMetricMetadata, listActiveMetricsSchema, listActiveMetrics, listMetricTagsSchema, listMetricTags, } from "./tools/metrics.js";
8
+ import { getMonitorsSchema, getMonitors, getMonitorSchema, getMonitor, createMonitorSchema, createMonitor, updateMonitorSchema, updateMonitor, deleteMonitorSchema, deleteMonitor, muteMonitorSchema, muteMonitor, } from "./tools/monitors.js";
9
+ import { getDashboardsSchema, getDashboards, getDashboardSchema, getDashboard, createDashboardSchema, createDashboard, updateDashboardSchema, updateDashboard, deleteDashboardSchema, deleteDashboard, } from "./tools/dashboards.js";
10
+ import { searchLogsSchema, searchLogs, aggregateLogsSchema, aggregateLogs, sendLogsSchema, sendLogs } from "./tools/logs.js";
11
+ import { getEventsSchema, getEvents, postEventSchema, postEvent } from "./tools/events.js";
12
+ import { getIncidentsSchema, getIncidents } from "./tools/incidents.js";
13
+ import { searchSpansSchema, searchSpans } from "./tools/apm.js";
14
+ import { searchRumEventsSchema, searchRumEvents, aggregateRumSchema, aggregateRum } from "./tools/rum.js";
15
+ import { listHostsSchema, listHosts, getHostTotalsSchema, getHostTotals } from "./tools/hosts.js";
16
+ import { listSlosSchema, listSlos, getSloSchema, getSlo, getSloHistorySchema, getSloHistory } from "./tools/slos.js";
17
+ import { listSyntheticsSchema, listSynthetics, getSyntheticsResultSchema, getSyntheticsResult, triggerSyntheticsSchema, triggerSynthetics, createSyntheticsTestSchema, createSyntheticsTest, updateSyntheticsTestSchema, updateSyntheticsTest, deleteSyntheticsTestSchema, deleteSyntheticsTest, } from "./tools/synthetics.js";
18
+ import { listDowntimesSchema, listDowntimes, createDowntimeSchema, createDowntime, cancelDowntimeSchema, cancelDowntime } from "./tools/downtimes.js";
19
+ import { searchSecuritySignalsSchema, searchSecuritySignals } from "./tools/security.js";
20
+ import { getUsageSummarySchema, getUsageSummary, listUsersSchema, listUsers } from "./tools/account.js";
21
+ import { listNotebooksSchema, listNotebooks, getNotebookSchema, getNotebook } from "./tools/notebooks.js";
22
+ import { getTeamOnCallSchema, getTeamOnCall, getOnCallScheduleSchema, getOnCallSchedule } from "./tools/oncall.js";
23
+ validateConfig();
24
+ const server = new McpServer({
25
+ name: "datadog",
26
+ version: "1.0.0",
27
+ });
28
+ // --- Metrics ---
29
+ server.tool("query-metrics", "Query time-series metric data from Datadog. Supports any Datadog metric query syntax (e.g., avg:system.cpu.user{host:myhost} by {env})", queryMetricsSchema.shape, wrapToolHandler(queryMetrics));
30
+ server.tool("get-metrics", "Search for available Datadog metrics by name pattern", getMetricsSchema.shape, wrapToolHandler(getMetrics));
31
+ server.tool("get-metric-metadata", "Get metadata for a specific Datadog metric (type, unit, description)", getMetricMetadataSchema.shape, wrapToolHandler(getMetricMetadata));
32
+ server.tool("list-active-metrics", "List active metrics from a given time, optionally filtered by host or tag", listActiveMetricsSchema.shape, wrapToolHandler(listActiveMetrics));
33
+ server.tool("list-metric-tags", "List tags for a specific metric (useful for understanding available groupings and filters)", listMetricTagsSchema.shape, wrapToolHandler(listMetricTags));
34
+ // --- Monitors ---
35
+ server.tool("get-monitors", "List Datadog monitors with optional filtering by name, tags, or state", getMonitorsSchema.shape, wrapToolHandler(getMonitors));
36
+ server.tool("get-monitor", "Get detailed information about a specific Datadog monitor by ID", getMonitorSchema.shape, wrapToolHandler(getMonitor));
37
+ server.tool("create-monitor", "Create a new Datadog monitor (metric alert, log alert, etc.)", createMonitorSchema.shape, wrapToolHandler(createMonitor));
38
+ server.tool("update-monitor", "Update an existing Datadog monitor's configuration", updateMonitorSchema.shape, wrapToolHandler(updateMonitor));
39
+ server.tool("delete-monitor", "Delete a Datadog monitor by ID", deleteMonitorSchema.shape, wrapToolHandler(deleteMonitor));
40
+ server.tool("mute-monitor", "Mute a Datadog monitor (silence notifications) for a scope and optional duration", muteMonitorSchema.shape, wrapToolHandler(muteMonitor));
41
+ // --- Dashboards ---
42
+ server.tool("get-dashboards", "List all Datadog dashboards", getDashboardsSchema.shape, wrapToolHandler(getDashboards));
43
+ server.tool("get-dashboard", "Get a specific Datadog dashboard with all widgets and configuration", getDashboardSchema.shape, wrapToolHandler(getDashboard));
44
+ server.tool("create-dashboard", "Create a new Datadog dashboard with widgets", createDashboardSchema.shape, wrapToolHandler(createDashboard));
45
+ server.tool("update-dashboard", "Update an existing Datadog dashboard", updateDashboardSchema.shape, wrapToolHandler(updateDashboard));
46
+ server.tool("delete-dashboard", "Delete a Datadog dashboard by ID", deleteDashboardSchema.shape, wrapToolHandler(deleteDashboard));
47
+ // --- Logs ---
48
+ server.tool("search-logs", "Search Datadog logs by query with time range filtering", searchLogsSchema.shape, wrapToolHandler(searchLogs));
49
+ server.tool("aggregate-logs", "Aggregate Datadog logs with statistical computations (count, avg, sum, percentiles) and grouping", aggregateLogsSchema.shape, wrapToolHandler(aggregateLogs));
50
+ server.tool("send-logs", "Send log entries to Datadog", sendLogsSchema.shape, wrapToolHandler(sendLogs));
51
+ // --- Events ---
52
+ server.tool("get-events", "Get Datadog events within a time range, optionally filtered by priority, source, or tags", getEventsSchema.shape, wrapToolHandler(getEvents));
53
+ server.tool("post-event", "Post a custom event to Datadog (supports markdown, @mentions)", postEventSchema.shape, wrapToolHandler(postEvent));
54
+ // --- Incidents ---
55
+ server.tool("get-incidents", "List Datadog incidents with pagination", getIncidentsSchema.shape, wrapToolHandler(getIncidents));
56
+ // --- APM ---
57
+ server.tool("search-spans", "Search APM spans/traces for performance analysis. Filter by service, resource, status, duration", searchSpansSchema.shape, wrapToolHandler(searchSpans));
58
+ // --- RUM ---
59
+ server.tool("search-rum-events", "Search Real User Monitoring events (sessions, views, errors, actions) from mobile/web apps", searchRumEventsSchema.shape, wrapToolHandler(searchRumEvents));
60
+ server.tool("aggregate-rum", "Aggregate RUM data with statistical computations (count, avg, percentiles) and grouping by fields", aggregateRumSchema.shape, wrapToolHandler(aggregateRum));
61
+ // --- Hosts ---
62
+ server.tool("list-hosts", "List infrastructure hosts with filtering, sorting, and metadata", listHostsSchema.shape, wrapToolHandler(listHosts));
63
+ server.tool("get-host-totals", "Get total number of active and up hosts", getHostTotalsSchema.shape, wrapToolHandler(getHostTotals));
64
+ // --- SLOs ---
65
+ server.tool("list-slos", "List Service Level Objectives with optional filtering by query, tags, or IDs", listSlosSchema.shape, wrapToolHandler(listSlos));
66
+ server.tool("get-slo", "Get detailed information about a specific SLO", getSloSchema.shape, wrapToolHandler(getSlo));
67
+ server.tool("get-slo-history", "Get SLO performance history over a time range (status, error budget, compliance)", getSloHistorySchema.shape, wrapToolHandler(getSloHistory));
68
+ // --- Synthetics ---
69
+ server.tool("list-synthetics", "List all Synthetics monitoring tests (API, Browser, Mobile)", listSyntheticsSchema.shape, wrapToolHandler(listSynthetics));
70
+ server.tool("get-synthetics-result", "Get latest results for a Synthetics API test by public ID", getSyntheticsResultSchema.shape, wrapToolHandler(getSyntheticsResult));
71
+ server.tool("trigger-synthetics", "Trigger one or more Synthetics tests on demand", triggerSyntheticsSchema.shape, wrapToolHandler(triggerSynthetics));
72
+ server.tool("create-synthetics-test", "Create a new Synthetics API test (HTTP, SSL, TCP, DNS, etc.)", createSyntheticsTestSchema.shape, wrapToolHandler(createSyntheticsTest));
73
+ server.tool("update-synthetics-test", "Update an existing Synthetics API test", updateSyntheticsTestSchema.shape, wrapToolHandler(updateSyntheticsTest));
74
+ server.tool("delete-synthetics-test", "Delete one or more Synthetics tests by public ID", deleteSyntheticsTestSchema.shape, wrapToolHandler(deleteSyntheticsTest));
75
+ // --- Downtimes ---
76
+ server.tool("list-downtimes", "List scheduled downtimes (monitor mute periods)", listDowntimesSchema.shape, wrapToolHandler(listDowntimes));
77
+ server.tool("create-downtime", "Create a downtime to mute monitors by scope, monitor ID, or monitor tags", createDowntimeSchema.shape, wrapToolHandler(createDowntime));
78
+ server.tool("cancel-downtime", "Cancel an active downtime by ID", cancelDowntimeSchema.shape, wrapToolHandler(cancelDowntime));
79
+ // --- Security ---
80
+ server.tool("search-security-signals", "Search Datadog security monitoring signals with query filtering", searchSecuritySignalsSchema.shape, wrapToolHandler(searchSecuritySignals));
81
+ // --- Account & Usage ---
82
+ server.tool("get-usage-summary", "Get Datadog account usage summary for a billing period (hosts, logs, APM, RUM, etc.)", getUsageSummarySchema.shape, wrapToolHandler(getUsageSummary));
83
+ server.tool("list-users", "List Datadog organization users with filtering and pagination", listUsersSchema.shape, wrapToolHandler(listUsers));
84
+ // --- Notebooks ---
85
+ server.tool("list-notebooks", "List Datadog notebooks with search and filtering", listNotebooksSchema.shape, wrapToolHandler(listNotebooks));
86
+ server.tool("get-notebook", "Get a specific Datadog notebook with all cells and content", getNotebookSchema.shape, wrapToolHandler(getNotebook));
87
+ // --- On-Call ---
88
+ server.tool("get-team-oncall", "Get current on-call responders for a Datadog team", getTeamOnCallSchema.shape, wrapToolHandler(getTeamOnCall));
89
+ server.tool("get-oncall-schedule", "Get an on-call schedule by ID with layers and team information", getOnCallScheduleSchema.shape, wrapToolHandler(getOnCallSchedule));
90
+ // Start server
91
+ async function main() {
92
+ const transport = new StdioServerTransport();
93
+ await server.connect(transport);
94
+ console.error("Datadog MCP server running on stdio");
95
+ }
96
+ main().catch((error) => {
97
+ console.error("Fatal error:", error);
98
+ process.exit(1);
99
+ });
100
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { z } from "zod/v4";
2
+ export declare const getUsageSummarySchema: z.ZodObject<{
3
+ startMonth: z.ZodString;
4
+ endMonth: z.ZodOptional<z.ZodString>;
5
+ includeOrgDetails: z.ZodOptional<z.ZodBoolean>;
6
+ }, z.core.$strip>;
7
+ export declare function getUsageSummary(params: z.infer<typeof getUsageSummarySchema>): Promise<{
8
+ startDate: string | undefined;
9
+ endDate: string | undefined;
10
+ usage: {
11
+ date: string | undefined;
12
+ agentHostTop99pCount: number | undefined;
13
+ containerCount: number | undefined;
14
+ customTsCount: number | undefined;
15
+ logsIndexedCount: number | undefined;
16
+ ingestedEventsBytesSum: number | undefined;
17
+ apmHostTop99pCount: number | undefined;
18
+ rumSessionCountSum: number | undefined;
19
+ syntheticsCheckCallsCountSum: number | undefined;
20
+ }[] | undefined;
21
+ }>;
22
+ export declare const listUsersSchema: z.ZodObject<{
23
+ pageSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
24
+ pageNumber: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
25
+ filter: z.ZodOptional<z.ZodString>;
26
+ filterStatus: z.ZodOptional<z.ZodString>;
27
+ sort: z.ZodOptional<z.ZodString>;
28
+ sortDir: z.ZodOptional<z.ZodEnum<{
29
+ asc: "asc";
30
+ desc: "desc";
31
+ }>>;
32
+ }, z.core.$strip>;
33
+ export declare function listUsers(params: z.infer<typeof listUsersSchema>): Promise<{
34
+ count: number;
35
+ users: {
36
+ id: string | undefined;
37
+ email: string | undefined;
38
+ name: string | undefined;
39
+ title: string | undefined;
40
+ status: string | undefined;
41
+ verified: boolean | undefined;
42
+ disabled: boolean | undefined;
43
+ icon: string | undefined;
44
+ createdAt: string | undefined;
45
+ modifiedAt: string | undefined;
46
+ }[];
47
+ }>;
48
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/tools/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AAEH,wBAAsB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC;;;;;;;;;;;;;;GAsBlF;AAED,eAAO,MAAM,eAAe;;;;;;;;;;iBAO1B,CAAC;AAEH,wBAAsB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC;;;;;;;;;;;;;;GA0BtE"}
@@ -0,0 +1,64 @@
1
+ import { z } from "zod/v4";
2
+ import { usageMeteringApi, usersApi } from "../client.js";
3
+ export const getUsageSummarySchema = z.object({
4
+ startMonth: z.string().describe("Start month (ISO 8601). Example: 2026-01-01T00:00:00Z"),
5
+ endMonth: z.string().optional().describe("End month (ISO 8601). Example: 2026-02-01T00:00:00Z"),
6
+ includeOrgDetails: z.boolean().optional().describe("Include organization details breakdown"),
7
+ });
8
+ export async function getUsageSummary(params) {
9
+ const response = await usageMeteringApi.getUsageSummary({
10
+ startMonth: new Date(params.startMonth),
11
+ endMonth: params.endMonth ? new Date(params.endMonth) : undefined,
12
+ includeOrgDetails: params.includeOrgDetails,
13
+ });
14
+ return {
15
+ startDate: response.startDate?.toISOString(),
16
+ endDate: response.endDate?.toISOString(),
17
+ usage: response.usage?.map((u) => ({
18
+ date: u.date?.toISOString(),
19
+ agentHostTop99pCount: u.agentHostTop99p,
20
+ containerCount: u.containerAvg,
21
+ customTsCount: u.customTsAvg,
22
+ logsIndexedCount: u.indexedEventsCountSum,
23
+ ingestedEventsBytesSum: u.ingestedEventsBytesSum,
24
+ apmHostTop99pCount: u.apmHostTop99p,
25
+ rumSessionCountSum: u.rumSessionCountSum,
26
+ syntheticsCheckCallsCountSum: u.syntheticsCheckCallsCountSum,
27
+ })),
28
+ };
29
+ }
30
+ export const listUsersSchema = z.object({
31
+ pageSize: z.number().optional().default(50).describe("Number of results per page (default 50)"),
32
+ pageNumber: z.number().optional().default(0).describe("Page number (0-based)"),
33
+ filter: z.string().optional().describe("Search filter string. Example: john"),
34
+ filterStatus: z.string().optional().describe("Filter by user status. Example: Active, Pending, Disabled"),
35
+ sort: z.string().optional().describe("Sort field. Example: name, email, created_at"),
36
+ sortDir: z.enum(["asc", "desc"]).optional().describe("Sort direction: asc or desc"),
37
+ });
38
+ export async function listUsers(params) {
39
+ const response = await usersApi.listUsers({
40
+ pageSize: params.pageSize,
41
+ pageNumber: params.pageNumber,
42
+ filter: params.filter,
43
+ filterStatus: params.filterStatus,
44
+ sort: params.sort,
45
+ sortDir: params.sortDir,
46
+ });
47
+ const users = response.data ?? [];
48
+ return {
49
+ count: users.length,
50
+ users: users.map((u) => ({
51
+ id: u.id,
52
+ email: u.attributes?.email,
53
+ name: u.attributes?.name,
54
+ title: u.attributes?.title,
55
+ status: u.attributes?.status,
56
+ verified: u.attributes?.verified,
57
+ disabled: u.attributes?.disabled,
58
+ icon: u.attributes?.icon,
59
+ createdAt: u.attributes?.createdAt?.toISOString(),
60
+ modifiedAt: u.attributes?.modifiedAt?.toISOString(),
61
+ })),
62
+ };
63
+ }
64
+ //# sourceMappingURL=account.js.map