@arbium/enterprise-agent-connect 0.1.2-dev.d2aa5ca → 0.2.1-dev.7b4e802

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 (163) hide show
  1. package/README.md +19 -7
  2. package/dist/connectors/adestra/connector.json +336 -0
  3. package/dist/connectors/adobe-admin-console/connector.json +212 -0
  4. package/dist/connectors/argo-cd/connector.json +210 -0
  5. package/dist/connectors/automox/connector.json +376 -0
  6. package/dist/connectors/churnzero/connector.json +238 -0
  7. package/dist/connectors/confluence/connector.json +168 -0
  8. package/dist/connectors/cvent/connector.json +287 -0
  9. package/dist/connectors/datadog/connector.json +188 -0
  10. package/dist/connectors/drata/connector.json +447 -0
  11. package/dist/connectors/druva/connector.json +258 -0
  12. package/dist/connectors/dynamics-365/connector.json +16 -1
  13. package/dist/connectors/dynamics-365/index.d.ts +1 -4
  14. package/dist/connectors/dynamics-365/index.js.map +1 -1
  15. package/dist/connectors/entra/index.d.ts +1 -1
  16. package/dist/connectors/forsta-decipher/connector.json +164 -0
  17. package/dist/connectors/gitlab/connector.json +263 -0
  18. package/dist/connectors/gong/vendor.d.ts +1 -1
  19. package/dist/connectors/gong/vendor.js +24 -32
  20. package/dist/connectors/gong/vendor.js.map +1 -1
  21. package/dist/connectors/grafana/connector.json +162 -0
  22. package/dist/connectors/http/index.d.ts +7 -7
  23. package/dist/connectors/http/index.js +66 -9
  24. package/dist/connectors/http/index.js.map +1 -1
  25. package/dist/connectors/http/openapi.d.ts +62 -0
  26. package/dist/connectors/http/openapi.js +342 -0
  27. package/dist/connectors/http/openapi.js.map +1 -0
  28. package/dist/connectors/intercom/connector.json +249 -0
  29. package/dist/connectors/intune/index.d.ts +1 -1
  30. package/dist/connectors/jamf/vendor.js +5 -1
  31. package/dist/connectors/jamf/vendor.js.map +1 -1
  32. package/dist/connectors/jira/connector.json +3 -3
  33. package/dist/connectors/jira/vendor.d.ts +1 -1
  34. package/dist/connectors/jira/vendor.js +8 -2
  35. package/dist/connectors/jira/vendor.js.map +1 -1
  36. package/dist/connectors/lusha/connector.json +59 -0
  37. package/dist/connectors/lusha/index.d.ts +8 -0
  38. package/dist/connectors/lusha/index.js +7 -0
  39. package/dist/connectors/lusha/index.js.map +1 -0
  40. package/dist/connectors/lusha/tools.d.ts +2 -0
  41. package/dist/connectors/lusha/tools.js +113 -0
  42. package/dist/connectors/lusha/tools.js.map +1 -0
  43. package/dist/connectors/lusha/vendor.d.ts +4 -0
  44. package/dist/connectors/lusha/vendor.js +72 -0
  45. package/dist/connectors/lusha/vendor.js.map +1 -0
  46. package/dist/connectors/microsoft/client.d.ts +11 -3
  47. package/dist/connectors/microsoft/client.js +62 -8
  48. package/dist/connectors/microsoft/client.js.map +1 -1
  49. package/dist/connectors/netsuite/connector.json +4 -2
  50. package/dist/connectors/netsuite/vendor.d.ts +1 -1
  51. package/dist/connectors/netsuite/vendor.js +5 -6
  52. package/dist/connectors/netsuite/vendor.js.map +1 -1
  53. package/dist/connectors/odata/index.d.ts +1 -4
  54. package/dist/connectors/odata/index.js +12 -5
  55. package/dist/connectors/odata/index.js.map +1 -1
  56. package/dist/connectors/okta/connector.json +3 -2
  57. package/dist/connectors/okta/vendor.d.ts +1 -1
  58. package/dist/connectors/okta/vendor.js +7 -6
  59. package/dist/connectors/okta/vendor.js.map +1 -1
  60. package/dist/connectors/outlook-calendar/index.d.ts +1 -1
  61. package/dist/connectors/outlook-mail/index.d.ts +1 -1
  62. package/dist/connectors/pagerduty/connector.json +247 -0
  63. package/dist/connectors/qualys/connector.json +271 -0
  64. package/dist/connectors/safebase/connector.json +221 -0
  65. package/dist/connectors/salesforce/vendor.d.ts +1 -1
  66. package/dist/connectors/salesforce/vendor.js +9 -3
  67. package/dist/connectors/salesforce/vendor.js.map +1 -1
  68. package/dist/connectors/sap-s4hana/connector.json +1 -0
  69. package/dist/connectors/servicenow/vendor.d.ts +0 -1
  70. package/dist/connectors/servicenow/vendor.js +7 -10
  71. package/dist/connectors/servicenow/vendor.js.map +1 -1
  72. package/dist/connectors/sharepoint-files/connector.json +34 -3
  73. package/dist/connectors/sharepoint-files/documents.d.ts +7 -0
  74. package/dist/connectors/sharepoint-files/documents.js +212 -0
  75. package/dist/connectors/sharepoint-files/documents.js.map +1 -0
  76. package/dist/connectors/sharepoint-files/docx-worker.d.ts +7 -0
  77. package/dist/connectors/sharepoint-files/docx-worker.js +41 -0
  78. package/dist/connectors/sharepoint-files/docx-worker.js.map +1 -0
  79. package/dist/connectors/sharepoint-files/docx.d.ts +96 -0
  80. package/dist/connectors/sharepoint-files/docx.js +823 -0
  81. package/dist/connectors/sharepoint-files/docx.js.map +1 -0
  82. package/dist/connectors/sharepoint-files/index.d.ts +1 -4
  83. package/dist/connectors/sharepoint-files/index.js +2 -1
  84. package/dist/connectors/sharepoint-files/index.js.map +1 -1
  85. package/dist/connectors/sharepoint-files/ooxml.d.ts +19 -0
  86. package/dist/connectors/sharepoint-files/ooxml.js +179 -0
  87. package/dist/connectors/sharepoint-files/ooxml.js.map +1 -0
  88. package/dist/connectors/sharepoint-files/paging.d.ts +15 -0
  89. package/dist/connectors/sharepoint-files/paging.js +87 -0
  90. package/dist/connectors/sharepoint-files/paging.js.map +1 -0
  91. package/dist/connectors/sharepoint-files/parse-host.mjs +78 -0
  92. package/dist/connectors/sharepoint-files/pdf-worker.mjs +108 -0
  93. package/dist/connectors/sharepoint-files/pdf.d.ts +16 -0
  94. package/dist/connectors/sharepoint-files/pdf.js +19 -0
  95. package/dist/connectors/sharepoint-files/pdf.js.map +1 -0
  96. package/dist/connectors/sharepoint-files/sandbox.d.ts +19 -0
  97. package/dist/connectors/sharepoint-files/sandbox.js +176 -0
  98. package/dist/connectors/sharepoint-files/sandbox.js.map +1 -0
  99. package/dist/connectors/sharepoint-files/tools.d.ts +6 -0
  100. package/dist/connectors/sharepoint-files/tools.js +79 -4
  101. package/dist/connectors/sharepoint-files/tools.js.map +1 -1
  102. package/dist/connectors/slack/vendor.d.ts +1 -1
  103. package/dist/connectors/slack/vendor.js +32 -38
  104. package/dist/connectors/slack/vendor.js.map +1 -1
  105. package/dist/connectors/soap/index.d.ts +1 -4
  106. package/dist/connectors/soap/index.js +4 -3
  107. package/dist/connectors/soap/index.js.map +1 -1
  108. package/dist/connectors/sonarqube/connector.json +165 -0
  109. package/dist/connectors/sprout-social/connector.json +158 -0
  110. package/dist/connectors/sql/index.d.ts +1 -4
  111. package/dist/connectors/sql/index.js +2 -0
  112. package/dist/connectors/sql/index.js.map +1 -1
  113. package/dist/connectors/synthesia/connector.json +113 -0
  114. package/dist/connectors/teams/index.d.ts +1 -1
  115. package/dist/connectors/teams/tools.d.ts +6 -1
  116. package/dist/connectors/teams/tools.js +3 -2
  117. package/dist/connectors/teams/tools.js.map +1 -1
  118. package/dist/connectors/wordpress/connector.json +203 -0
  119. package/dist/connectors/workday/connector.json +6 -4
  120. package/dist/connectors/workday/vendor.d.ts +1 -1
  121. package/dist/connectors/workday/vendor.js +8 -4
  122. package/dist/connectors/workday/vendor.js.map +1 -1
  123. package/dist/connectors/zephyr/connector.json +192 -0
  124. package/dist/packages/connector-kit/src/common.d.ts +4 -5
  125. package/dist/packages/connector-kit/src/common.js +4 -1
  126. package/dist/packages/connector-kit/src/common.js.map +1 -1
  127. package/dist/packages/connector-kit/src/connector.d.ts +82 -34
  128. package/dist/packages/connector-kit/src/connector.js +163 -21
  129. package/dist/packages/connector-kit/src/connector.js.map +1 -1
  130. package/dist/packages/connector-kit/src/fetch.d.ts +6 -0
  131. package/dist/packages/connector-kit/src/fetch.js +44 -0
  132. package/dist/packages/connector-kit/src/fetch.js.map +1 -0
  133. package/dist/packages/connector-kit/src/index.d.ts +3 -3
  134. package/dist/packages/connector-kit/src/index.js +1 -0
  135. package/dist/packages/connector-kit/src/index.js.map +1 -1
  136. package/dist/packages/connector-kit/src/oauth.d.ts +3 -1
  137. package/dist/packages/connector-kit/src/oauth.js +16 -6
  138. package/dist/packages/connector-kit/src/oauth.js.map +1 -1
  139. package/dist/packages/connector-kit/src/types.d.ts +4 -1
  140. package/dist/packages/connector-kit/src/types.js.map +1 -1
  141. package/dist/packages/server/migrations/0008_internal_apps.sql +16 -0
  142. package/dist/packages/server/migrations/rollback/to-legacy.sql +2 -0
  143. package/dist/packages/server/src/api.d.ts +2486 -257
  144. package/dist/packages/server/src/api.js +84 -1
  145. package/dist/packages/server/src/api.js.map +1 -1
  146. package/dist/packages/server/src/app.js +26 -1
  147. package/dist/packages/server/src/app.js.map +1 -1
  148. package/dist/packages/server/src/builtin.d.ts +7 -3
  149. package/dist/packages/server/src/builtin.js +32 -0
  150. package/dist/packages/server/src/builtin.js.map +1 -1
  151. package/dist/packages/server/src/events/runtime.js +17 -10
  152. package/dist/packages/server/src/events/runtime.js.map +1 -1
  153. package/dist/packages/server/src/events/store.d.ts +2 -2
  154. package/dist/packages/server/src/index.d.ts +3 -3
  155. package/dist/packages/server/src/index.js +32 -22
  156. package/dist/packages/server/src/index.js.map +1 -1
  157. package/dist/packages/server/src/service.d.ts +1134 -14
  158. package/dist/packages/server/src/service.js +266 -21
  159. package/dist/packages/server/src/service.js.map +1 -1
  160. package/dist/packages/server/src/store.d.ts +43 -4
  161. package/dist/packages/server/src/store.js +79 -0
  162. package/dist/packages/server/src/store.js.map +1 -1
  163. package/package.json +4 -1
@@ -0,0 +1,287 @@
1
+ {
2
+ "id": "cvent",
3
+ "name": "Cvent",
4
+ "description": "Let agents read your Cvent events: who was invited and who registered, attended or declined, each event's invitation lists and its exhibitors and sponsors. For reconciling RSVPs and matching delegates to sponsors.",
5
+ "logo": "/brand/registry/cvent.svg",
6
+ "identity": "A Cvent REST API application (machine to machine). It reads with the scopes you give its workspace, across every event in your Cvent account.",
7
+ "accountKey": "host",
8
+ "connectionKind": "guided",
9
+ "setup": [
10
+ {
11
+ "title": "Create a REST API workspace",
12
+ "body": "You need a Cvent administrator for this. Give the workspace only the read scopes below. If you are not a developer on it yourself, invite yourself (or whoever finishes setup) under Developers. This connection works with Cvent accounts in the North American data center.",
13
+ "link": {
14
+ "label": "Cvent: inviting developers to your workspace",
15
+ "href": "https://developers.cvent.com/docs/rest-api/tutorials/inviting-your-developers"
16
+ },
17
+ "click": [
18
+ "In Cvent, hover over the global navigation and select Admin, then under Integrations select REST API.",
19
+ "Select + Create Workspace, name it Agents, tick only the scopes below, then Save.",
20
+ "On the Developers tab, select + Invite Developers, enter the email of whoever finishes setup, select the Agents workspace, then Send."
21
+ ],
22
+ "copy": ["{scope}"]
23
+ },
24
+ {
25
+ "title": "Create a machine to machine application",
26
+ "body": "Sign in to the Cvent Developer Portal as that developer and create an application in the Agents workspace with the same scopes. Copy its client ID and client secret for the form below.",
27
+ "link": {
28
+ "label": "Cvent: making your first API call",
29
+ "href": "https://developers.cvent.com/docs/rest-api/tutorials/developer-quickstart"
30
+ },
31
+ "click": [
32
+ "In the Cvent Developer Portal, go to Applications and select Create application.",
33
+ "Enter a name such as Agents, select Machine to machine, assign the scopes below, then Save.",
34
+ "Select View applications and copy the Client ID and Client secret."
35
+ ],
36
+ "copy": ["{scope}"]
37
+ },
38
+ {
39
+ "title": "Check what people agreed to",
40
+ "body": "Attendee and contact records hold names, emails, companies and registration answers. Make sure your event privacy notices allow agents to read them, and give contact lookups only to agents that need them.",
41
+ "click": ["Ask your privacy or events team whether attendee data may be read by AI agents."],
42
+ "confirm": "cvent-attendee-data"
43
+ }
44
+ ],
45
+ "afterConnect": [],
46
+ "fields": [
47
+ {
48
+ "id": "client_id",
49
+ "label": "Client ID",
50
+ "secret": false
51
+ },
52
+ {
53
+ "id": "client_secret",
54
+ "label": "Client secret",
55
+ "secret": true
56
+ }
57
+ ],
58
+ "capabilities": [
59
+ {
60
+ "id": "read_events",
61
+ "label": "Read events and attendees",
62
+ "description": "List and read events, list attendees (invitees, registrants and their status, invitation list and check-in), read one attendee, and list an event's invitation lists.",
63
+ "required": true,
64
+ "note": "Reaches every event in the account unless you keep an agent to chosen events.",
65
+ "scopes": ["event/events:read", "event/attendees:read", "event/invitation-lists:read"],
66
+ "permissions": [],
67
+ "tools": [
68
+ "cvent_list_events",
69
+ "cvent_get_event",
70
+ "cvent_list_attendees",
71
+ "cvent_get_attendee",
72
+ "cvent_list_invitation_lists"
73
+ ]
74
+ },
75
+ {
76
+ "id": "read_exhibitors",
77
+ "label": "Read exhibitors and sponsors",
78
+ "description": "List an event's exhibitors and sponsors, with their sponsorship level, and the event's sponsorship levels.",
79
+ "scopes": ["exhibitor/exhibitors:read", "exhibitor/sponsorship-levels:read"],
80
+ "permissions": [],
81
+ "tools": ["cvent_list_exhibitors", "cvent_list_sponsorship_levels"]
82
+ },
83
+ {
84
+ "id": "read_contacts",
85
+ "label": "Look up contacts",
86
+ "description": "Read a contact's name, email, company and title from your Cvent address book.",
87
+ "note": "Contacts are account-wide, not limited to chosen events.",
88
+ "scopes": ["event/contacts:read"],
89
+ "permissions": [],
90
+ "tools": ["cvent_get_contact"]
91
+ }
92
+ ],
93
+ "limits": [
94
+ {
95
+ "id": "events",
96
+ "label": "Events",
97
+ "help": "Optional: only these Cvent events (their ids). Event and attendee lists must then be filtered to them, such as id eq '<id>' for events and event.id eq '<id>' for attendees. Leave empty for every event.",
98
+ "kind": "list",
99
+ "required": false,
100
+ "pattern": "^[0-9A-Fa-f-]{36}$"
101
+ }
102
+ ],
103
+ "verify": {
104
+ "method": "GET",
105
+ "path": "/events?limit=5",
106
+ "label": "Cvent events",
107
+ "show": "data[].title"
108
+ },
109
+ "revoke": "In the Cvent Developer Portal, go to Applications and delete the application (turn off Termination Protection first if it is on). Agents lose access to Cvent at once.",
110
+ "http": {
111
+ "baseUrl": "https://api-platform.cvent.com/ea",
112
+ "auth": {
113
+ "type": "oauth2",
114
+ "tokenUrl": "https://api-platform.cvent.com/ea/oauth2/token",
115
+ "clientId": "client_id",
116
+ "clientSecret": "client_secret",
117
+ "clientAuth": "basic"
118
+ },
119
+ "tools": [
120
+ {
121
+ "name": "cvent_list_events",
122
+ "description": "List events, newest changes first unless sorted. Filter with Cvent's filter syntax, e.g. title contains 'Summit' and start ge '2026-01-01T00:00:00Z'.",
123
+ "method": "GET",
124
+ "path": "/events",
125
+ "params": {
126
+ "filter": {
127
+ "type": "string",
128
+ "description": "Cvent filter, e.g. status eq 'Active' (fields: id, title, code, start, end, status, format, venue.address.city)",
129
+ "in": "query",
130
+ "required": false
131
+ },
132
+ "sort": {
133
+ "type": "string",
134
+ "description": "Sort order, start:ASC or start:DESC",
135
+ "in": "query",
136
+ "required": false,
137
+ "enum": ["start:ASC", "start:DESC"]
138
+ },
139
+ "limit": {
140
+ "type": "integer",
141
+ "description": "Events per page, up to 200",
142
+ "in": "query",
143
+ "default": 50
144
+ },
145
+ "token": {
146
+ "type": "string",
147
+ "description": "The next page's cursor, from the previous answer",
148
+ "in": "query",
149
+ "required": false
150
+ }
151
+ },
152
+ "answerLimits": [{ "field": "data.id", "limit": "events" }],
153
+ "result": {
154
+ "items": "data",
155
+ "fields": ["id", "title", "code", "start", "end", "timezone", "status", "format", "capacity", "venues.name"]
156
+ },
157
+ "paging": { "param": "token", "body": "paging.nextToken" }
158
+ },
159
+ {
160
+ "name": "cvent_get_event",
161
+ "description": "Read one event by its id: dates, venue, status, capacity, planners and custom fields.",
162
+ "method": "GET",
163
+ "path": "/events/{event_id}",
164
+ "params": {
165
+ "event_id": { "type": "string", "description": "The event id", "in": "path", "limit": "events" }
166
+ }
167
+ },
168
+ {
169
+ "name": "cvent_list_attendees",
170
+ "description": "List attendees (invitees and registrants) with their status, invitation list, registration type and check-in. Filter to one event with event.id eq '<id>'; add status eq 'Accepted' (or Declined, Invited, No Response, Cancelled) to reconcile RSVPs.",
171
+ "method": "GET",
172
+ "path": "/attendees",
173
+ "params": {
174
+ "filter": {
175
+ "type": "string",
176
+ "description": "Cvent filter, e.g. event.id eq '<id>' and invitationList.id eq '<id>' (fields: event.id, invitationList.id, registrationType.id, checkedIn, registeredAt)",
177
+ "in": "query",
178
+ "required": false
179
+ },
180
+ "limit": {
181
+ "type": "integer",
182
+ "description": "Attendees per page, up to 200",
183
+ "in": "query",
184
+ "default": 100
185
+ },
186
+ "token": {
187
+ "type": "string",
188
+ "description": "The next page's cursor, from the previous answer",
189
+ "in": "query",
190
+ "required": false
191
+ }
192
+ },
193
+ "answerLimits": [{ "field": "data.event.id", "limit": "events" }],
194
+ "result": {
195
+ "items": "data",
196
+ "fields": [
197
+ "id",
198
+ "event.id",
199
+ "contact.id",
200
+ "contact.firstName",
201
+ "contact.lastName",
202
+ "contact.email",
203
+ "contact.company",
204
+ "contact.title",
205
+ "status",
206
+ "invitationList.id",
207
+ "registrationType.id",
208
+ "registeredAt",
209
+ "registrationCancelledAt",
210
+ "responseMethod",
211
+ "checkedIn",
212
+ "guest"
213
+ ]
214
+ },
215
+ "paging": { "param": "token", "body": "paging.nextToken" }
216
+ },
217
+ {
218
+ "name": "cvent_get_attendee",
219
+ "description": "Read one attendee by id, with their registration answers.",
220
+ "method": "GET",
221
+ "path": "/attendees/{attendee_id}",
222
+ "params": {
223
+ "attendee_id": { "type": "string", "description": "The attendee id", "in": "path" }
224
+ },
225
+ "answerLimits": [{ "field": "event.id", "limit": "events" }]
226
+ },
227
+ {
228
+ "name": "cvent_list_invitation_lists",
229
+ "description": "List an event's invitation lists, the waves invitees are grouped in.",
230
+ "method": "GET",
231
+ "path": "/events/{event_id}/invitation-lists",
232
+ "params": {
233
+ "event_id": { "type": "string", "description": "The event id", "in": "path", "limit": "events" },
234
+ "token": {
235
+ "type": "string",
236
+ "description": "The next page's cursor, from the previous answer",
237
+ "in": "query",
238
+ "required": false
239
+ }
240
+ },
241
+ "result": { "items": "data", "fields": ["id", "name", "default", "locale"] },
242
+ "paging": { "param": "token", "body": "paging.nextToken" }
243
+ },
244
+ {
245
+ "name": "cvent_list_exhibitors",
246
+ "description": "List an event's exhibitors and sponsors, with whether each is a sponsor and its sponsorship level.",
247
+ "method": "GET",
248
+ "path": "/events/{event_id}/exhibitors",
249
+ "params": {
250
+ "event_id": { "type": "string", "description": "The event id", "in": "path", "limit": "events" },
251
+ "token": {
252
+ "type": "string",
253
+ "description": "The next page's cursor, from the previous answer",
254
+ "in": "query",
255
+ "required": false
256
+ }
257
+ },
258
+ "result": {
259
+ "items": "data",
260
+ "fields": ["id", "name", "description", "website", "email", "eventSponsor", "featured", "sponsorshipLevel", "hidden"]
261
+ },
262
+ "paging": { "param": "token", "body": "paging.nextToken" }
263
+ },
264
+ {
265
+ "name": "cvent_list_sponsorship_levels",
266
+ "description": "List an event's sponsorship levels.",
267
+ "method": "GET",
268
+ "path": "/events/{event_id}/sponsorship-levels",
269
+ "params": {
270
+ "event_id": { "type": "string", "description": "The event id", "in": "path", "limit": "events" }
271
+ }
272
+ },
273
+ {
274
+ "name": "cvent_get_contact",
275
+ "description": "Read one contact by id: name, email, company, title and work address.",
276
+ "method": "GET",
277
+ "path": "/contacts/{contact_id}",
278
+ "params": {
279
+ "contact_id": { "type": "string", "description": "The contact id (an attendee's contact.id)", "in": "path" }
280
+ },
281
+ "result": {
282
+ "fields": ["id", "firstName", "lastName", "email", "company", "title", "designation", "type.name", "workAddress", "workPhone", "optOut"]
283
+ }
284
+ }
285
+ ]
286
+ }
287
+ }
@@ -0,0 +1,188 @@
1
+ {
2
+ "id": "datadog",
3
+ "name": "Datadog",
4
+ "description": "Let agents read your Datadog monitors and what triggered them, search events and logs, and query metrics. For first response to production alerts and incident summaries.",
5
+ "logo": "/brand/registry/datadog.svg",
6
+ "identity": "A Datadog API key and an application key of a service account made for agents. The application key carries the service account's role, narrowed to the scopes you choose.",
7
+ "accountKey": "host",
8
+ "connectionKind": "guided",
9
+ "setup": [
10
+ {
11
+ "title": "Create a service account for agents",
12
+ "body": "Give the service account the Datadog Read Only Role, so nothing it holds can change your monitors or settings.",
13
+ "link": {
14
+ "label": "Datadog: service accounts",
15
+ "href": "https://docs.datadoghq.com/account_management/org_settings/service_accounts/"
16
+ },
17
+ "click": [
18
+ "In Datadog, open Organization Settings, then under Accounts select Service Accounts > New Service Account.",
19
+ "Name: AI agents. Assign Roles: Datadog Read Only Role. Select Create Service Account."
20
+ ]
21
+ },
22
+ {
23
+ "title": "Create its application key",
24
+ "body": "Create the key on the service account and limit it to the scopes of what agents may read: monitors_read and events_read always, logs_read_data for logs and timeseries_query for metrics. Datadog shows the key only once.",
25
+ "link": {
26
+ "label": "Datadog: API and application keys",
27
+ "href": "https://docs.datadoghq.com/account_management/api-app-keys/"
28
+ },
29
+ "click": [
30
+ "On the Service Accounts page, select AI agents, then New Key. Name: AI agents. Select Create Key and copy it.",
31
+ "Edit the key's scopes and keep only monitors_read, events_read, logs_read_data and timeseries_query (the last two only if you allow them below)."
32
+ ]
33
+ },
34
+ {
35
+ "title": "Create an API key and find your API address",
36
+ "body": "Datadog wants an API key beside the application key. The API address depends on your Datadog site: api.datadoghq.com for app.datadoghq.com, api.us3.datadoghq.com, api.us5.datadoghq.com, api.datadoghq.eu, api.ap1.datadoghq.com, and so on. You can test both keys with the command below: it counts your monitors and changes nothing.",
37
+ "click": [
38
+ "Organization Settings > API Keys > New Key. Name: AI agents. Select Create API key and copy it.",
39
+ "Your site is in your browser's address bar while you are in Datadog. For app.datadoghq.com or app.datadoghq.eu the API address puts api in place of app; for a site such as us3.datadoghq.com it adds api. in front, as in api.us3.datadoghq.com."
40
+ ],
41
+ "copy": [
42
+ "DD_API=api.datadoghq.com",
43
+ "curl -s -H \"DD-API-KEY: $DD_API_KEY\" -H \"DD-APPLICATION-KEY: $DD_APP_KEY\" \"https://$DD_API/api/v1/monitor/search?per_page=1\""
44
+ ],
45
+ "shell": "bash"
46
+ }
47
+ ],
48
+ "afterConnect": [],
49
+ "fields": [
50
+ {
51
+ "id": "host",
52
+ "label": "API address",
53
+ "help": "Your Datadog site's API address, such as api.datadoghq.com or api.datadoghq.eu.",
54
+ "placeholder": "api.datadoghq.com",
55
+ "secret": false
56
+ },
57
+ { "id": "api_key", "label": "API key", "secret": true },
58
+ { "id": "application_key", "label": "Application key", "secret": true }
59
+ ],
60
+ "capabilities": [
61
+ {
62
+ "id": "read_monitors",
63
+ "label": "Read monitors and events",
64
+ "description": "Search monitors by status, tag or name, read one monitor with its query and the state of each group, and search events such as monitor alerts and deployments.",
65
+ "required": true,
66
+ "note": "Read-only. Reaches every monitor and event in your Datadog organization.",
67
+ "scopes": ["monitors_read", "events_read"],
68
+ "permissions": [],
69
+ "tools": ["datadog_search_monitors", "datadog_get_monitor", "datadog_search_events"]
70
+ },
71
+ {
72
+ "id": "read_logs",
73
+ "label": "Search logs",
74
+ "description": "Search logs by query and time, such as the errors of one service around an alert.",
75
+ "note": "Logs can hold customer data and secrets your applications wrote to them. Anything an agent reads may end up in what it writes.",
76
+ "scopes": ["logs_read_data"],
77
+ "permissions": [],
78
+ "tools": ["datadog_search_logs"]
79
+ },
80
+ {
81
+ "id": "read_metrics",
82
+ "label": "Query metrics",
83
+ "description": "Read a metric query's values over a time window, such as error rate or latency around an alert.",
84
+ "scopes": ["timeseries_query"],
85
+ "permissions": [],
86
+ "tools": ["datadog_query_metrics"]
87
+ }
88
+ ],
89
+ "limits": [],
90
+ "verify": {
91
+ "method": "GET",
92
+ "path": "/api/v1/monitor/search?per_page=1",
93
+ "label": "Monitors in Datadog",
94
+ "show": "metadata.total_count"
95
+ },
96
+ "revoke": "In Datadog, open Organization Settings > Service Accounts, select AI agents and revoke its application key, then delete the API key under API Keys. Agents lose access to Datadog at once.",
97
+ "http": {
98
+ "baseUrl": "https://{host}",
99
+ "allowedHosts": ["*.datadoghq.com", "*.datadoghq.eu", "*.ddog-gov.com"],
100
+ "auth": { "type": "header", "header": "DD-API-KEY", "value": "api_key" },
101
+ "fieldHeaders": { "DD-APPLICATION-KEY": "application_key" },
102
+ "tools": [
103
+ {
104
+ "name": "datadog_search_monitors",
105
+ "description": "Search monitors with Datadog's monitor search syntax, such as status:alert or tag:service:checkout. Pass page to read further pages, from 0.",
106
+ "method": "GET",
107
+ "path": "/api/v1/monitor/search",
108
+ "params": {
109
+ "query": { "type": "string", "description": "The search, such as status:alert tag:env:prod", "in": "query", "required": false },
110
+ "page": { "type": "integer", "description": "The page, from 0", "in": "query", "default": 0 },
111
+ "per_page": { "type": "integer", "description": "Monitors per page", "in": "query", "default": 30 }
112
+ },
113
+ "result": {
114
+ "fields": [
115
+ "metadata.total_count",
116
+ "monitors.id",
117
+ "monitors.name",
118
+ "monitors.status",
119
+ "monitors.type",
120
+ "monitors.tags",
121
+ "monitors.query",
122
+ "monitors.last_triggered_ts"
123
+ ]
124
+ }
125
+ },
126
+ {
127
+ "name": "datadog_get_monitor",
128
+ "description": "Read one monitor: its query, message, thresholds, tags and the state of each group, such as which hosts are alerting.",
129
+ "method": "GET",
130
+ "path": "/api/v1/monitor/{monitor_id}",
131
+ "params": {
132
+ "monitor_id": { "type": "integer", "description": "The monitor id", "in": "path" },
133
+ "group_states": { "type": "string", "description": "Which group states to include: all, or a comma-separated list of alert, warn and no data", "in": "query", "default": "all" }
134
+ }
135
+ },
136
+ {
137
+ "name": "datadog_search_events",
138
+ "description": "Search events, such as monitor alerts, deployments and configuration changes, with Datadog's event search syntax. Pass next from the answer as cursor for the next page.",
139
+ "method": "GET",
140
+ "path": "/api/v2/events",
141
+ "params": {
142
+ "query": { "type": "string", "description": "The search, such as source:deploy service:checkout", "in": "query", "name": "filter[query]", "required": false },
143
+ "from": { "type": "string", "description": "Start of the window, milliseconds since 1970", "in": "query", "name": "filter[from]", "required": false },
144
+ "to": { "type": "string", "description": "End of the window, milliseconds since 1970", "in": "query", "name": "filter[to]", "required": false },
145
+ "sort": { "type": "string", "enum": ["timestamp", "-timestamp"], "description": "Oldest or newest first", "in": "query", "default": "-timestamp" },
146
+ "limit": { "type": "integer", "description": "Events per page", "in": "query", "name": "page[limit]", "default": 25 },
147
+ "cursor": { "type": "string", "description": "The next value of the previous answer", "in": "query", "name": "page[cursor]", "required": false }
148
+ },
149
+ "paging": { "param": "cursor", "body": "meta.page.after" },
150
+ "result": {
151
+ "items": "data",
152
+ "fields": ["id", "attributes.timestamp", "attributes.message", "attributes.tags", "attributes.attributes.title", "attributes.attributes.status", "attributes.attributes.service"]
153
+ }
154
+ },
155
+ {
156
+ "name": "datadog_search_logs",
157
+ "description": "Search logs with Datadog's log search syntax, such as service:checkout status:error. Pass next from the answer as cursor for the next page.",
158
+ "method": "GET",
159
+ "path": "/api/v2/logs/events",
160
+ "params": {
161
+ "query": { "type": "string", "description": "The search, such as service:checkout status:error", "in": "query", "name": "filter[query]" },
162
+ "from": { "type": "string", "description": "Start of the window, a time such as 2026-10-01T08:00:00Z", "in": "query", "name": "filter[from]" },
163
+ "to": { "type": "string", "description": "End of the window, a time such as 2026-10-01T09:00:00Z", "in": "query", "name": "filter[to]" },
164
+ "sort": { "type": "string", "enum": ["timestamp", "-timestamp"], "description": "Oldest or newest first", "in": "query", "default": "-timestamp" },
165
+ "limit": { "type": "integer", "description": "Logs per page, at most 1000", "in": "query", "name": "page[limit]", "default": 50 },
166
+ "cursor": { "type": "string", "description": "The next value of the previous answer", "in": "query", "name": "page[cursor]", "required": false }
167
+ },
168
+ "paging": { "param": "cursor", "body": "meta.page.after" },
169
+ "result": {
170
+ "items": "data",
171
+ "fields": ["attributes.timestamp", "attributes.status", "attributes.service", "attributes.host", "attributes.message", "attributes.tags"]
172
+ }
173
+ },
174
+ {
175
+ "name": "datadog_query_metrics",
176
+ "description": "Read a metric query's points over a time window, such as avg:trace.http.request.errors{service:checkout}.as_count().",
177
+ "method": "GET",
178
+ "path": "/api/v1/query",
179
+ "params": {
180
+ "query": { "type": "string", "description": "The metric query", "in": "query" },
181
+ "from": { "type": "integer", "description": "Start of the window, seconds since 1970", "in": "query" },
182
+ "to": { "type": "integer", "description": "End of the window, seconds since 1970", "in": "query" }
183
+ },
184
+ "result": { "fields": ["status", "error", "series.metric", "series.scope", "series.pointlist", "series.unit"] }
185
+ }
186
+ ]
187
+ }
188
+ }