@jupiterone/jupiterone-mcp 0.0.3 → 0.0.6
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.
- package/README.md +2 -2
- package/dist/client/graphql/mutations.js +13 -10
- package/dist/client/graphql/mutations.js.map +1 -1
- package/dist/client/graphql/queries.d.ts +1 -1
- package/dist/client/graphql/queries.d.ts.map +1 -1
- package/dist/client/graphql/queries.js +22 -19
- package/dist/client/graphql/queries.js.map +1 -1
- package/dist/client/jupiterone-client.d.ts +3 -1
- package/dist/client/jupiterone-client.d.ts.map +1 -1
- package/dist/client/jupiterone-client.js +33 -20
- package/dist/client/jupiterone-client.js.map +1 -1
- package/dist/client/services/account-service.js +8 -4
- package/dist/client/services/account-service.js.map +1 -1
- package/dist/client/services/alert-service.js +7 -3
- package/dist/client/services/alert-service.js.map +1 -1
- package/dist/client/services/dashboard-service.js +12 -8
- package/dist/client/services/dashboard-service.js.map +1 -1
- package/dist/client/services/integration-service.js +11 -7
- package/dist/client/services/integration-service.js.map +1 -1
- package/dist/client/services/j1ql-service.d.ts.map +1 -1
- package/dist/client/services/j1ql-service.js +42 -7
- package/dist/client/services/j1ql-service.js.map +1 -1
- package/dist/client/services/rule-service.js +17 -13
- package/dist/client/services/rule-service.js.map +1 -1
- package/dist/generated/description-map.d.ts +2 -0
- package/dist/generated/description-map.d.ts.map +1 -0
- package/dist/generated/description-map.js +2107 -0
- package/dist/generated/description-map.js.map +1 -0
- package/dist/index.js +11 -12
- package/dist/index.js.map +1 -1
- package/dist/server/mcp-server.d.ts +9 -1
- package/dist/server/mcp-server.d.ts.map +1 -1
- package/dist/server/mcp-server.js +1557 -1360
- package/dist/server/mcp-server.js.map +1 -1
- package/dist/types/jupiterone.d.ts +3 -2
- package/dist/types/jupiterone.d.ts.map +1 -1
- package/dist/types/jupiterone.js +2 -1
- package/dist/utils/description-loader.js +8 -5
- package/dist/utils/description-loader.js.map +1 -1
- package/dist/utils/j1ql-validator.d.ts +34 -0
- package/dist/utils/j1ql-validator.d.ts.map +1 -0
- package/dist/utils/j1ql-validator.js +292 -0
- package/dist/utils/j1ql-validator.js.map +1 -0
- package/dist/utils/load-description.d.ts.map +1 -1
- package/dist/utils/load-description.js +7 -7
- package/dist/utils/load-description.js.map +1 -1
- package/package.json +5 -5
- package/dist/descriptions/create-dashboard-widget.md +0 -325
- package/dist/descriptions/create-dashboard.md +0 -12
- package/dist/descriptions/create-inline-question-rule.md +0 -374
- package/dist/descriptions/create-j1ql-from-natural-language.md +0 -7
- package/dist/descriptions/execute-j1ql-query.md +0 -426
- package/dist/descriptions/get-integration-definitions.md +0 -27
- package/dist/descriptions/get-integration-instances.md +0 -35
- package/dist/descriptions/list-alerts.md +0 -14
- package/dist/descriptions/list-rules.md +0 -53
- package/dist/descriptions/update-dashboard.md +0 -467
- package/dist/descriptions/update-inline-question-rule.md +0 -363
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# Create Dashboard Tool
|
|
2
|
-
|
|
3
|
-
Creates a new dashboard in JupiterOne. This tool is simple and self-descriptive: provide a name and a type to create a dashboard. Unless specified otherwise, default to creating personal dashboards.
|
|
4
|
-
After creating a dashboard and all its widgets, you will typically want to call `update-dashboard` tool to set a layout favorable for the user, widgets should never be left at their default size.
|
|
5
|
-
|
|
6
|
-
## Valid Dashboard Types
|
|
7
|
-
```typescript
|
|
8
|
-
export enum DashboardType {
|
|
9
|
-
USER = 'User',
|
|
10
|
-
ACCOUNT = 'Account',
|
|
11
|
-
}
|
|
12
|
-
```
|
|
@@ -1,374 +0,0 @@
|
|
|
1
|
-
# JupiterOne Rule Creation Tool - Complete Guide
|
|
2
|
-
|
|
3
|
-
**Purpose**: Creates inline question-based alert rules in JupiterOne to monitor entities and trigger alerts based on specified conditions.
|
|
4
|
-
|
|
5
|
-
The first step in creating a rule is to identify the query you want to use in order to get the data you want to take action with. Use the `execute-j1ql-query` tool to find the correct query.
|
|
6
|
-
|
|
7
|
-
## Key Requirements for Success
|
|
8
|
-
|
|
9
|
-
### 1. Condition Format (Critical)
|
|
10
|
-
The `condition` parameter must use JupiterOne's specific array format:
|
|
11
|
-
- **Structure**: `["LOGICAL_OPERATOR", [left_value, operator, right_value]]`
|
|
12
|
-
- **Example**: `["AND", ["queries.queryName.total", ">", 0]]`
|
|
13
|
-
- **Supported operators**: `>`, `<`, `>=`, `<=`, `=`, `!=`
|
|
14
|
-
- **Logical operators**: `"AND"`, `"OR"`
|
|
15
|
-
|
|
16
|
-
### 2. Operations Structure
|
|
17
|
-
The `when` clause should only contain:
|
|
18
|
-
- `type`: Always `"FILTER"`
|
|
19
|
-
- `condition`: The array format described above
|
|
20
|
-
- **Do NOT include**: `version`, `specVersion` (these belong at the rule level, not in the when clause)
|
|
21
|
-
|
|
22
|
-
### 3. Query Naming Convention
|
|
23
|
-
- Query names in the `queries` array must match the references in conditions
|
|
24
|
-
- Example: If query name is `"users"`, reference it as `"queries.users.total"`
|
|
25
|
-
- **IMPORTANT**: Use `"query0"` as the standard query name for compatibility with existing patterns
|
|
26
|
-
|
|
27
|
-
### 4. New Entity Detection
|
|
28
|
-
- Use `triggerActionsOnNewEntitiesOnly: true` to only alert on genuinely new entities
|
|
29
|
-
- This prevents re-alerting on existing entities every polling cycle
|
|
30
|
-
- Essential for "new user" or "new resource" type alerts
|
|
31
|
-
|
|
32
|
-
### 5. Polling Intervals
|
|
33
|
-
- **Default**: Use `"ONE_DAY"` unless the user specifically requests a different interval
|
|
34
|
-
- **Available options**: `"DISABLED"`, `"THIRTY_MINUTES"`, `"ONE_HOUR"`, `"FOUR_HOURS"`, `"EIGHT_HOURS"`, `"TWELVE_HOURS"`, `"ONE_DAY"`, `"ONE_WEEK"`
|
|
35
|
-
- Only use more frequent intervals (like `"THIRTY_MINUTES"`) when explicitly requested or for time-sensitive security alerts
|
|
36
|
-
|
|
37
|
-
### 6. Tags vs Labels (Important)
|
|
38
|
-
- **DEPRECATED**: The `tags` array field is deprecated and should always be set to an empty array `[]`
|
|
39
|
-
- **USE INSTEAD**: For tagging functionality, use the `labels` field with key-value pairs
|
|
40
|
-
- **Format**: `labels: [{"labelName": "key", "labelValue": "value"}]`
|
|
41
|
-
- **When users ask for tagging**: Always use the `labels` field to meet their needs
|
|
42
|
-
- **Note**: The `tags` field is still required in the schema for compatibility but should remain empty
|
|
43
|
-
|
|
44
|
-
## Required Schema Fields
|
|
45
|
-
|
|
46
|
-
### Complete Required Parameters for create-inline-question-rule
|
|
47
|
-
**CRITICAL**: All of these fields must be included for successful rule creation:
|
|
48
|
-
|
|
49
|
-
```json
|
|
50
|
-
{
|
|
51
|
-
"name": "Rule Name",
|
|
52
|
-
"description": "Rule description",
|
|
53
|
-
"notifyOnFailure": true,
|
|
54
|
-
"triggerActionsOnNewEntitiesOnly": true,
|
|
55
|
-
"ignorePreviousResults": false,
|
|
56
|
-
"pollingInterval": "ONE_DAY",
|
|
57
|
-
"specVersion": 1,
|
|
58
|
-
"templates": {},
|
|
59
|
-
"outputs": ["alertLevel"],
|
|
60
|
-
"tags": [],
|
|
61
|
-
"labels": [
|
|
62
|
-
{"labelName": "environment", "labelValue": "production"},
|
|
63
|
-
{"labelName": "team", "labelValue": "security"}
|
|
64
|
-
],
|
|
65
|
-
"queries": [
|
|
66
|
-
{
|
|
67
|
-
"query": "FIND Entity...",
|
|
68
|
-
"name": "query0",
|
|
69
|
-
"version": "v1",
|
|
70
|
-
"includeDeleted": false
|
|
71
|
-
}
|
|
72
|
-
],
|
|
73
|
-
"operations": [
|
|
74
|
-
{
|
|
75
|
-
"when": {
|
|
76
|
-
"type": "FILTER",
|
|
77
|
-
"condition": ["AND", ["queries.query0.total", ">", 0]]
|
|
78
|
-
},
|
|
79
|
-
"actions": [...]
|
|
80
|
-
}
|
|
81
|
-
]
|
|
82
|
-
}
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
**Key Schema Requirements**:
|
|
86
|
-
- `ignorePreviousResults`: Must be included (typically `false`)
|
|
87
|
-
- `templates`: Must be included (use `{}` if empty)
|
|
88
|
-
- `tags`: Must be included but should always be empty `[]` (deprecated field)
|
|
89
|
-
- `labels`: Use this for actual tagging functionality with key-value pairs
|
|
90
|
-
- Query `name`: Use `"query0"` for primary query
|
|
91
|
-
- Query `version`: Include `"v1"` for compatibility
|
|
92
|
-
- Query `includeDeleted`: Must be explicitly set to `false`
|
|
93
|
-
|
|
94
|
-
## Available Action Types
|
|
95
|
-
|
|
96
|
-
### 1. SET_PROPERTY
|
|
97
|
-
Sets a property value on the alert (commonly used for alert severity levels).
|
|
98
|
-
|
|
99
|
-
**Configuration**:
|
|
100
|
-
```json
|
|
101
|
-
{
|
|
102
|
-
"type": "SET_PROPERTY",
|
|
103
|
-
"targetProperty": "alertLevel",
|
|
104
|
-
"targetValue": "CRITICAL"
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
**Common Values for alertLevel**: `"LOW"`, `"MEDIUM"`, `"HIGH"`, `"CRITICAL"`, `"INFO"`
|
|
109
|
-
|
|
110
|
-
### 2. CREATE_ALERT
|
|
111
|
-
Creates a basic alert in JupiterOne.
|
|
112
|
-
|
|
113
|
-
**Configuration**:
|
|
114
|
-
```json
|
|
115
|
-
{
|
|
116
|
-
"type": "CREATE_ALERT"
|
|
117
|
-
}
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
**Note**: This is the most basic action and should almost always be included.
|
|
121
|
-
|
|
122
|
-
### 3. SEND_EMAIL
|
|
123
|
-
Sends email notifications to specified recipients.
|
|
124
|
-
|
|
125
|
-
**Configuration**:
|
|
126
|
-
```json
|
|
127
|
-
{
|
|
128
|
-
"type": "SEND_EMAIL",
|
|
129
|
-
"recipients": ["user1@company.com", "user2@company.com"],
|
|
130
|
-
"body": "Affected Items: <br><br>* {{queries.query0.data|mapProperty('displayName')|join('<br>* ')}}"
|
|
131
|
-
}
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
**Required Information to Ask User**:
|
|
135
|
-
- Email addresses of recipients
|
|
136
|
-
- Custom email body content (if desired)
|
|
137
|
-
|
|
138
|
-
**Template Variables Available**:
|
|
139
|
-
- `{{alertWebLink}}` - Link to the alert in JupiterOne
|
|
140
|
-
- `{{queries.queryName.data|mapProperty('fieldName')|join('separator')}}` - Format query results
|
|
141
|
-
|
|
142
|
-
### 4. TAG_ENTITIES
|
|
143
|
-
Adds or removes tags from entities that triggered the rule.
|
|
144
|
-
|
|
145
|
-
**Configuration**:
|
|
146
|
-
```json
|
|
147
|
-
{
|
|
148
|
-
"type": "TAG_ENTITIES",
|
|
149
|
-
"entities": "{{queries.query0.data}}",
|
|
150
|
-
"tags": [
|
|
151
|
-
{"name": "existing tag to remove", "value": null},
|
|
152
|
-
{"name": "new tag", "value": "tag value"}
|
|
153
|
-
]
|
|
154
|
-
}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
**Required Information to Ask User**:
|
|
158
|
-
- Tag names and values to add
|
|
159
|
-
- Tag names to remove (set value to `null`)
|
|
160
|
-
|
|
161
|
-
### 5. SEND_SLACK_MESSAGE
|
|
162
|
-
Sends messages to Slack channels (requires Slack integration).
|
|
163
|
-
|
|
164
|
-
**Configuration**:
|
|
165
|
-
```json
|
|
166
|
-
{
|
|
167
|
-
"integrationInstanceId": "d97d9127-c532-410a-bf0a-9ea93f66c3d2",
|
|
168
|
-
"type": "SEND_SLACK_MESSAGE",
|
|
169
|
-
"channels": ["#security-alerts", "#general"],
|
|
170
|
-
"body": "*Affected Items:* \n\n- {{queries.query0.data|mapProperty('displayName')|join('\n- ')}}"
|
|
171
|
-
}
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
**Required Information to Ask User**:
|
|
175
|
-
- Slack channel names (with # prefix)
|
|
176
|
-
- Slack integration instance ID (may need to query available integrations)
|
|
177
|
-
- Custom message content (if desired)
|
|
178
|
-
|
|
179
|
-
### 6. SEND_TO_S3
|
|
180
|
-
Sends alert data to an S3 bucket (requires AWS S3 integration).
|
|
181
|
-
|
|
182
|
-
**Configuration**:
|
|
183
|
-
```json
|
|
184
|
-
{
|
|
185
|
-
"integrationInstanceId": "f89568b4-2a1b-4bd8-8abd-aee21270df75",
|
|
186
|
-
"type": "SEND_TO_S3",
|
|
187
|
-
"bucket": "security-alerts-bucket",
|
|
188
|
-
"region": "us-east-1",
|
|
189
|
-
"data": {
|
|
190
|
-
"description": "{{alertWebLink}}\n\n**Affected Items:**\n\n* {{queries.query0.data|mapProperty('displayName')|join('\n* ')}}"
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
**Required Information to Ask User**:
|
|
196
|
-
- S3 bucket name
|
|
197
|
-
- AWS region
|
|
198
|
-
- S3 integration instance ID
|
|
199
|
-
- Data structure to send
|
|
200
|
-
|
|
201
|
-
### 7. CREATE_JIRA_TICKET
|
|
202
|
-
Creates a Jira ticket for the alert (requires Jira integration).
|
|
203
|
-
|
|
204
|
-
**Configuration**:
|
|
205
|
-
```json
|
|
206
|
-
{
|
|
207
|
-
"integrationInstanceId": "53a99eaa-18a5-45ef-b748-2de39d642a91",
|
|
208
|
-
"type": "CREATE_JIRA_TICKET",
|
|
209
|
-
"entityClass": "Finding",
|
|
210
|
-
"summary": "Security Alert: Critical Unencrypted Data Found",
|
|
211
|
-
"issueType": "Bug",
|
|
212
|
-
"project": "SEC",
|
|
213
|
-
"updateContentOnChanges": false,
|
|
214
|
-
"additionalFields": {
|
|
215
|
-
"description": {
|
|
216
|
-
"type": "doc",
|
|
217
|
-
"version": 1,
|
|
218
|
-
"content": [
|
|
219
|
-
{
|
|
220
|
-
"type": "paragraph",
|
|
221
|
-
"content": [
|
|
222
|
-
{
|
|
223
|
-
"type": "text",
|
|
224
|
-
"text": "{{alertWebLink}}\n\n**Affected Items:**\n\n* {{queries.query0.data|mapProperty('displayName')|join('\n* ')}}"
|
|
225
|
-
}
|
|
226
|
-
]
|
|
227
|
-
}
|
|
228
|
-
]
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
**Required Information to Ask User**:
|
|
235
|
-
- Jira project key
|
|
236
|
-
- Issue type (Bug, Task, Story, etc.)
|
|
237
|
-
- Ticket summary/title
|
|
238
|
-
- Jira integration instance ID
|
|
239
|
-
- Additional fields as needed
|
|
240
|
-
|
|
241
|
-
**Common Entity Classes**: `"Finding"`, `"Incident"`, `"Issue"`
|
|
242
|
-
|
|
243
|
-
## Template Variables and Formatting
|
|
244
|
-
|
|
245
|
-
### Available Variables
|
|
246
|
-
- `{{alertWebLink}}` - Direct link to the alert in JupiterOne
|
|
247
|
-
- `{{queries.queryName.data}}` - Array of entities from the specified query
|
|
248
|
-
- `{{queries.queryName.total}}` - Count of entities from the query
|
|
249
|
-
|
|
250
|
-
### Data Formatting
|
|
251
|
-
- `|mapProperty('fieldName')` - Extract specific field from each entity
|
|
252
|
-
- `|join('separator')` - Join array elements with specified separator
|
|
253
|
-
- Example: `{{queries.users.data|mapProperty('displayName')|join(', ')}}` - Creates comma-separated list of user names
|
|
254
|
-
|
|
255
|
-
### Common Formatting Patterns
|
|
256
|
-
- **HTML list**: `{{queries.query0.data|mapProperty('displayName')|join('<br>* ')}}`
|
|
257
|
-
- **Markdown list**: `{{queries.query0.data|mapProperty('displayName')|join('\n- ')}}`
|
|
258
|
-
- **Simple list**: `{{queries.query0.data|mapProperty('displayName')|join('\n* ')}}`
|
|
259
|
-
|
|
260
|
-
## Integration Dependencies
|
|
261
|
-
|
|
262
|
-
For actions requiring integrations, you may need to:
|
|
263
|
-
1. Query available integration instances using `get-integration-instances`
|
|
264
|
-
2. Ask the user which integration to use
|
|
265
|
-
3. Use the integration's `id` as the `integrationInstanceId`
|
|
266
|
-
|
|
267
|
-
**Actions requiring integrations**:
|
|
268
|
-
- `SEND_SLACK_MESSAGE` (Slack integration)
|
|
269
|
-
- `SEND_TO_S3` (AWS S3 integration)
|
|
270
|
-
- `CREATE_JIRA_TICKET` (Jira integration)
|
|
271
|
-
|
|
272
|
-
## Working Example Template
|
|
273
|
-
|
|
274
|
-
### Complete Working Rule Structure
|
|
275
|
-
Based on confirmed working examples, use this template:
|
|
276
|
-
|
|
277
|
-
```json
|
|
278
|
-
{
|
|
279
|
-
"name": "Your Rule Name",
|
|
280
|
-
"description": "Your rule description",
|
|
281
|
-
"notifyOnFailure": true,
|
|
282
|
-
"triggerActionsOnNewEntitiesOnly": true,
|
|
283
|
-
"ignorePreviousResults": false,
|
|
284
|
-
"pollingInterval": "ONE_DAY",
|
|
285
|
-
"specVersion": 1,
|
|
286
|
-
"templates": {},
|
|
287
|
-
"outputs": ["alertLevel"],
|
|
288
|
-
"tags": [],
|
|
289
|
-
"labels": [
|
|
290
|
-
{"labelName": "severity", "labelValue": "high"},
|
|
291
|
-
{"labelName": "category", "labelValue": "security"}
|
|
292
|
-
],
|
|
293
|
-
"queries": [
|
|
294
|
-
{
|
|
295
|
-
"query": "FIND Entity WITH condition",
|
|
296
|
-
"name": "query0",
|
|
297
|
-
"version": "v1",
|
|
298
|
-
"includeDeleted": false
|
|
299
|
-
}
|
|
300
|
-
],
|
|
301
|
-
"operations": [
|
|
302
|
-
{
|
|
303
|
-
"when": {
|
|
304
|
-
"type": "FILTER",
|
|
305
|
-
"condition": ["AND", ["queries.query0.total", ">", 0]]
|
|
306
|
-
},
|
|
307
|
-
"actions": [
|
|
308
|
-
{
|
|
309
|
-
"type": "SET_PROPERTY",
|
|
310
|
-
"targetProperty": "alertLevel",
|
|
311
|
-
"targetValue": "CRITICAL"
|
|
312
|
-
},
|
|
313
|
-
{
|
|
314
|
-
"type": "CREATE_ALERT"
|
|
315
|
-
},
|
|
316
|
-
{
|
|
317
|
-
"type": "SEND_EMAIL",
|
|
318
|
-
"recipients": ["user@company.com"],
|
|
319
|
-
"body": "Affected Items: <br><br>* {{queries.query0.data|mapProperty('displayName')|join('<br>* ')}}"
|
|
320
|
-
}
|
|
321
|
-
]
|
|
322
|
-
}
|
|
323
|
-
]
|
|
324
|
-
}
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
## Common Patterns
|
|
328
|
-
|
|
329
|
-
### New Entity Monitoring
|
|
330
|
-
```json
|
|
331
|
-
{
|
|
332
|
-
"condition": ["AND", ["queries.query0.total", ">", 0]],
|
|
333
|
-
"triggerActionsOnNewEntitiesOnly": true
|
|
334
|
-
}
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
### Threshold-based Alerts
|
|
338
|
-
```json
|
|
339
|
-
{
|
|
340
|
-
"condition": ["AND", ["queries.query0.total", ">=", 5]]
|
|
341
|
-
}
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
### Multi-action Rule Example
|
|
345
|
-
```json
|
|
346
|
-
"actions": [
|
|
347
|
-
{"type": "SET_PROPERTY", "targetProperty": "alertLevel", "targetValue": "HIGH"},
|
|
348
|
-
{"type": "CREATE_ALERT"},
|
|
349
|
-
{"type": "SEND_EMAIL", "recipients": ["security@company.com"], "body": "Security issue detected: {{alertWebLink}}"},
|
|
350
|
-
{"type": "TAG_ENTITIES", "entities": "{{queries.query0.data}}", "tags": [{"name": "needs-review", "value": "true"}]}
|
|
351
|
-
]
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
## Debugging Tips
|
|
355
|
-
- If you get "Invalid conjunction operator" errors, check the condition array format
|
|
356
|
-
- If you get "additional properties" errors, remove extra fields from the `when` clause
|
|
357
|
-
- If you get missing property errors, ensure all required schema fields are included
|
|
358
|
-
- **Always include**: `ignorePreviousResults`, `templates`, `tags`, query `version` and `includeDeleted`
|
|
359
|
-
- Always reference existing rules with `get-rule-details` to see working examples
|
|
360
|
-
- Test with simple conditions first, then add complexity
|
|
361
|
-
- Use `"query0"` as the standard query name for compatibility
|
|
362
|
-
|
|
363
|
-
## Best Practices
|
|
364
|
-
- Use descriptive query names that match their purpose (but prefer `"query0"` for main query)
|
|
365
|
-
- Include relevant entity fields in `outputs` for alert context
|
|
366
|
-
- Set appropriate polling intervals (default to `"ONE_DAY"` unless specified)
|
|
367
|
-
- Use the `labels` field for rule organization and tagging (not the deprecated `tags` field)
|
|
368
|
-
- Use `notifyOnFailure: true` to catch rule execution issues
|
|
369
|
-
- Always include `CREATE_ALERT` action as a baseline
|
|
370
|
-
- Always include all required schema fields from the working template
|
|
371
|
-
- Ask users for specific details when configuring notification actions (emails, channels, etc.)
|
|
372
|
-
- When users request tagging functionality, use the `labels` field with key-value pairs
|
|
373
|
-
|
|
374
|
-
This format ensures reliable rule creation and helps avoid common pitfalls encountered during rule development.
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# JupiterOne Natural Language to J1QL Converter
|
|
2
|
-
|
|
3
|
-
**Purpose**: Converts natural language queries into JupiterOne Query Language (J1QL) syntax using AI-powered translation.
|
|
4
|
-
Unless the user gives a specific query to run, this should always be used for determing a query to use for any (but not exclusively) of the following:
|
|
5
|
-
- Queries for rules
|
|
6
|
-
- Queries for widgets
|
|
7
|
-
- Queries to answer a user's question regarding their data in jupiterone
|