@jupiterone/jupiterone-mcp 0.0.2 → 0.0.4

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 CHANGED
@@ -1,6 +1,97 @@
1
1
  # JupiterOne MCP Server
2
2
 
3
- A Model Context Protocol (MCP) server that provides access to JupiterOne account rules and alert details. This server enables AI assistants and other MCP clients to interact with JupiterOne's security monitoring and alerting system.
3
+ A Model Context Protocol (MCP) server that provides access to JupiterOne tools. This server enables AI assistants and other MCP clients to interact with JupiterOne's data.
4
+
5
+ ## Configuration
6
+
7
+ ### Prerequisites
8
+
9
+ 1. **JupiterOne Account**: You need an active JupiterOne account
10
+ 2. **API Key**: Generate an API key from your JupiterOne account settings
11
+ 3. **Account ID**: Your JupiterOne account identifier
12
+ 4. Working node installation with a version >= 18
13
+
14
+ ### Installation with Claude Desktop
15
+
16
+ To use this MCP server with Claude Desktop, you need to add it to your Claude configuration file.
17
+
18
+ #### Option 1: Using npx (Recommended)
19
+
20
+ Add the following configuration to your Claude Desktop configuration file:
21
+
22
+ ```json
23
+ {
24
+ "mcpServers": {
25
+ "jupiterone": {
26
+ "command": "npx",
27
+ "args": ["-y", "@jupiterone/jupiterone-mcp"],
28
+ "env": {
29
+ "JUPITERONE_API_KEY": "your-api-key-here",
30
+ "JUPITERONE_ACCOUNT_ID": "your-account-id-here",
31
+ "JUPITERONE_BASE_URL": "https://graphql.us.jupiterone.io"
32
+ }
33
+ }
34
+ }
35
+ }
36
+ ```
37
+
38
+ #### Option 2: Global Installation (For nvm users or troubleshooting)
39
+
40
+ If you're using nvm or experiencing issues with Option 1, first install the package globally:
41
+
42
+ ```bash
43
+ npm install -g @jupiterone/jupiterone-mcp
44
+ ```
45
+
46
+ Then add this configuration to your Claude Desktop config file:
47
+
48
+ ```json
49
+ {
50
+ "mcpServers": {
51
+ "jupiterone": {
52
+ "command": "/usr/local/bin/node",
53
+ "args": ["/usr/local/bin/jupiterone-mcp"],
54
+ "env": {
55
+ "JUPITERONE_API_KEY": "your-api-key-here",
56
+ "JUPITERONE_ACCOUNT_ID": "your-account-id-here",
57
+ "JUPITERONE_BASE_URL": "https://graphql.us.jupiterone.io"
58
+ }
59
+ }
60
+ }
61
+ }
62
+ ```
63
+
64
+ **Note**: You may need to adjust the paths in Option 2 based on your Node.js installation:
65
+ - For Homebrew Node.js: `/usr/local/bin/node` and `/usr/local/bin/jupiterone-mcp`
66
+ - For nvm: `~/.nvm/versions/node/v[version]/bin/node` and `~/.nvm/versions/node/v[version]/bin/jupiterone-mcp`
67
+
68
+ ### Installation with Cursor
69
+
70
+ For Cursor IDE, add the same configuration to your Cursor settings:
71
+
72
+ 1. Open Cursor Settings
73
+ 2. Navigate to "Features" → "Model Context Protocol"
74
+ 3. Add the server configuration using either Option 1 or Option 2 from above
75
+
76
+ ### Environment Variables
77
+
78
+ Replace the placeholder values with your actual JupiterOne credentials:
79
+
80
+ - **JUPITERONE_API_KEY**: Your JupiterOne API key (required)
81
+ - **JUPITERONE_ACCOUNT_ID**: Your JupiterOne account ID (required).
82
+ - **JUPITERONE_BASE_URL**: JupiterOne GraphQL endpoint (optional, defaults to `https://graphql.us.jupiterone.io`)
83
+
84
+ ### Getting Your JupiterOne Credentials
85
+
86
+ 1. **API Key**:
87
+ - Log into your JupiterOne account
88
+ - Go to Settings → API Keys
89
+ - Create a new API key or use an existing one
90
+
91
+ 2. **Account ID**:
92
+ - This can be retrieved by either of the following:
93
+ - Navigating to `https://j1dev.apps.us.jupiterone.io/settings/account-management`
94
+ - Run the following query in your JupiterOne account: `find jupiterone_account as x return x.accountId`
4
95
 
5
96
  ## Features
6
97
 
@@ -36,6 +127,9 @@ A Model Context Protocol (MCP) server that provides access to JupiterOne account
36
127
  ### Account Management
37
128
  - **test-connection** - Test connection to JupiterOne API and get account information
38
129
 
130
+ ### Query Execution
131
+ - **execute-j1ql-query** - Execute a J1QL query
132
+
39
133
  ## Available Tools
40
134
 
41
135
  ### Rules Management
@@ -3,7 +3,7 @@ export declare const LIST_RULE_INSTANCES = "\n query listRuleInstances($limit:
3
3
  export declare const GET_ACCOUNT_INFO = "\n query account {\n iamGetAccount {\n accountId\n accountSubdomain\n accountName\n accountOwner\n status\n accountType\n accountLogoUrl\n __typename\n }\n }\n";
4
4
  export declare const GET_DASHBOARDS = "\n query GetDashboards {\n getDashboards(options: {includeAllJ1ManagedDashboards: true}) {\n id\n name\n userId\n category\n supportedUseCase\n prerequisites {\n prerequisitesMet\n preRequisitesGroupsFulfilled\n preRequisitesGroupsRequired\n __typename\n }\n isJ1ManagedBoard\n resourceGroupId\n starred\n _timeUpdated\n _createdAt\n __typename\n }\n }\n";
5
5
  export declare const GET_DASHBOARD_DETAILS = "\n query solo_GetDashboard($dashboardId: String!) {\n getDashboard(dashboardId: $dashboardId) {\n ...InsightsDashboard\n __typename\n }\n }\n\n fragment InsightsDashboard on InsightsDashboard {\n id\n name\n category\n userId\n supportedUseCase\n isJ1ManagedBoard\n published\n publishedToUserIds\n publishedToGroupIds\n groupIds\n userIds\n scopeFilters\n resourceGroupId\n starred\n _timeUpdated\n _createdAt\n prerequisites {\n prerequisitesMet\n preRequisitesGroupsFulfilled\n preRequisitesGroupsRequired\n __typename\n }\n parameters {\n ...DashboardParameterFields\n __typename\n }\n widgets {\n ...InsightsWidget\n __typename\n }\n layouts {\n ...InsightsDashboardLayoutConfig\n __typename\n }\n __typename\n }\n\n fragment DashboardParameterFields on DashboardParameter {\n dashboardId\n accountId\n id\n label\n name\n options\n valueType\n type\n default\n disableCustomInput\n requireValue\n __typename\n }\n\n fragment InsightsWidget on InsightsWidget {\n id\n title\n description\n type\n questionId\n noResultMessage\n includeDeleted\n config {\n queries {\n id\n name\n query\n __typename\n }\n settings\n postQueryFilters\n disableQueryPolicyFilters\n __typename\n }\n __typename\n }\n\n fragment InsightsDashboardLayoutConfig on InsightsDashboardLayoutConfig {\n xs {\n ...InsightsDashboardLayoutItem\n __typename\n }\n sm {\n ...InsightsDashboardLayoutItem\n __typename\n }\n md {\n ...InsightsDashboardLayoutItem\n __typename\n }\n lg {\n ...InsightsDashboardLayoutItem\n __typename\n }\n xl {\n ...InsightsDashboardLayoutItem\n __typename\n }\n __typename\n }\n\n fragment InsightsDashboardLayoutItem on InsightsDashboardLayoutItem {\n static\n moved\n w\n h\n x\n y\n i\n __typename\n }\n";
6
- export declare const GET_INTEGRATION_DEFINITIONS = "\n query IntegrationDefinitions($cursor: String, $includeConfig: Boolean = false) {\n integrationDefinitions(cursor: $cursor) {\n definitions {\n ...IntegrationDefinitionsValues\n __typename\n }\n pageInfo {\n endCursor\n __typename\n }\n __typename\n }\n }\n\n fragment IntegrationDefinitionsValues on IntegrationDefinition {\n id\n name\n type\n title\n displayMode\n oAuth {\n oAuthUrlGeneratorPath\n __typename\n }\n offsiteUrl\n offsiteButtonTitle\n offsiteStatusQuery\n integrationType\n integrationClass\n integrationCategory\n beta\n docsWebLink\n repoWebLink\n invocationPaused\n managedExecutionDisabled\n managedCreateDisabled\n managedDeleteDisabled\n integrationPlatformFeatures {\n supportsChildInstances\n supportsCollectors\n supportsIngestionSourcesConfig\n supportsAgentConfigurations\n __typename\n }\n ingestionSourcesConfig {\n id\n title\n description\n defaultsToDisabled\n childIngestionSourcesMetadata {\n id\n name\n __typename\n }\n cannotBeDisabled\n __typename\n }\n ingestionSourcesOverrides {\n enabled\n ingestionSourceId\n __typename\n }\n totalInstanceCount\n integrationJobStatusMetrics {\n count\n status\n __typename\n }\n icon\n provisioningType\n description\n customDefinitionType\n ...IntegrationDefinitionConfigFragment @include(if: $includeConfig)\n __typename\n }\n\n fragment IntegrationDefinitionConfigFragment on IntegrationDefinition {\n configFields {\n ...ConfigFieldsRecursive\n __typename\n }\n authSections {\n id\n description\n displayName\n configFields {\n ...ConfigFieldsRecursive\n __typename\n }\n verificationDisabled\n __typename\n }\n configSections {\n displayName\n configFields {\n ...ConfigFieldsRecursive\n __typename\n }\n __typename\n }\n __typename\n }\n\n fragment ConfigFieldsRecursive on ConfigField {\n ...ConfigFieldValues\n configFields {\n ...ConfigFieldValues\n configFields {\n ...ConfigFieldValues\n __typename\n }\n __typename\n }\n __typename\n }\n\n fragment ConfigFieldValues on ConfigField {\n key\n displayName\n description\n type\n format\n defaultValue\n helperText\n inputAdornment\n mask\n optional\n immutable\n readonly\n computed\n options {\n value\n description\n label\n webLink\n default\n __typename\n }\n __typename\n }\n";
6
+ export declare const GET_INTEGRATION_DEFINITIONS = "\n query IntegrationDefinitions($cursor: String, $includeConfig: Boolean = false) {\n integrationDefinitions(cursor: $cursor) {\n definitions {\n ...IntegrationDefinitionsValues\n __typename\n }\n pageInfo {\n endCursor\n __typename\n }\n __typename\n }\n }\n\n fragment IntegrationDefinitionsValues on IntegrationDefinition {\n id\n name\n type\n title\n integrationType\n integrationClass\n integrationCategory\n totalInstanceCount\n description\n ...IntegrationDefinitionConfigFragment @include(if: $includeConfig)\n __typename\n }\n\n fragment IntegrationDefinitionConfigFragment on IntegrationDefinition {\n configFields {\n ...ConfigFieldsRecursive\n __typename\n }\n authSections {\n id\n description\n displayName\n configFields {\n ...ConfigFieldsRecursive\n __typename\n }\n verificationDisabled\n __typename\n }\n configSections {\n displayName\n configFields {\n ...ConfigFieldsRecursive\n __typename\n }\n __typename\n }\n __typename\n }\n\n fragment ConfigFieldsRecursive on ConfigField {\n ...ConfigFieldValues\n configFields {\n ...ConfigFieldValues\n configFields {\n ...ConfigFieldValues\n __typename\n }\n __typename\n }\n __typename\n }\n\n fragment ConfigFieldValues on ConfigField {\n key\n displayName\n description\n type\n format\n defaultValue\n helperText\n inputAdornment\n mask\n optional\n immutable\n readonly\n computed\n options {\n value\n description\n label\n webLink\n default\n __typename\n }\n __typename\n }\n";
7
7
  export declare const GET_INTEGRATION_INSTANCES = "\n query IntegrationInstances($definitionId: String, $cursor: String, $limit: Int, $filter: ListIntegrationInstancesSearchFilter) {\n integrationInstancesV2(\n definitionId: $definitionId\n cursor: $cursor\n limit: $limit\n filter: $filter\n ) {\n instances {\n ...IntegrationInstanceLiteValues\n __typename\n }\n pageInfo {\n endCursor\n __typename\n }\n __typename\n }\n }\n\n fragment IntegrationInstanceLiteValues on IntegrationInstanceLite {\n id\n name\n accountId\n sourceIntegrationInstanceId\n pollingInterval\n pollingIntervalCronExpression {\n hour\n dayOfWeek\n __typename\n }\n integrationDefinitionId\n description\n config\n instanceRelationship\n resourceGroupId\n createdOn\n createdBy\n updatedOn\n updatedBy\n mostRecentJob {\n status\n hasSkippedSteps\n createDate\n __typename\n }\n __typename\n }\n";
8
8
  export declare const GET_INTEGRATION_JOBS = "\n query IntegrationJobs($status: IntegrationJobStatus, $integrationInstanceId: String, $integrationDefinitionId: String, $integrationInstanceIds: [String], $cursor: String, $size: Int) {\n integrationJobs(\n status: $status\n integrationInstanceId: $integrationInstanceId\n integrationDefinitionId: $integrationDefinitionId\n integrationInstanceIds: $integrationInstanceIds\n cursor: $cursor\n size: $size\n ) {\n jobs {\n ...IntegrationJobValues\n __typename\n }\n pageInfo {\n endCursor\n __typename\n }\n __typename\n }\n }\n\n fragment IntegrationJobValues on IntegrationJob {\n id\n status\n integrationInstanceId\n createDate\n endDate\n hasSkippedSteps\n integrationInstance {\n id\n name\n __typename\n }\n integrationDefinition {\n id\n title\n integrationType\n __typename\n }\n __typename\n }\n";
9
9
  export declare const GET_INTEGRATION_JOB = "\n query IntegrationJob($integrationJobId: ID!, $integrationInstanceId: String!) {\n integrationJob(\n id: $integrationJobId\n integrationInstanceId: $integrationInstanceId\n ) {\n ...IntegrationJobValues\n __typename\n }\n }\n\n fragment IntegrationJobValues on IntegrationJob {\n id\n status\n integrationInstanceId\n createDate\n endDate\n hasSkippedSteps\n integrationInstance {\n id\n name\n __typename\n }\n integrationDefinition {\n id\n title\n integrationType\n __typename\n }\n __typename\n }\n";
@@ -11,5 +11,5 @@ export declare const GET_INTEGRATION_EVENTS = "\n query ListEvents($jobId: Stri
11
11
  export declare const LIST_RULE_EVALUATIONS = "\n query listCollectionResults($collectionType: CollectionType!, $collectionOwnerId: String!, $beginTimestamp: Long!, $endTimestamp: Long!, $limit: Int, $cursor: String, $tag: String) {\n listCollectionResults(\n collectionType: $collectionType\n collectionOwnerId: $collectionOwnerId\n beginTimestamp: $beginTimestamp\n endTimestamp: $endTimestamp\n limit: $limit\n cursor: $cursor\n tag: $tag\n ) {\n results {\n accountId\n collectionOwnerId\n collectionOwnerVersion\n collectionType\n outputs {\n name\n value\n __typename\n }\n rawDataDescriptors {\n name\n persistedResultType\n rawDataKey\n recordCount\n recordCreateCount\n recordDeleteCount\n recordUpdateCount\n __typename\n }\n tag\n timestamp\n __typename\n }\n pageInfo {\n endCursor\n hasNextPage\n __typename\n }\n __typename\n }\n }\n";
12
12
  export declare const GET_RULE_EVALUATION_DETAILS = "\n query ruleEvaluationDetails($ruleEvaluationDetailsInput: RuleEvaluationDetailsInput!) {\n ruleEvaluationDetails(input: $ruleEvaluationDetailsInput) {\n accountRuleId\n startedOn\n question {\n totalDuration\n queries {\n status\n queryEvaluationDetails {\n name\n duration\n status\n error\n __typename\n }\n __typename\n }\n __typename\n }\n conditions {\n status\n condition\n __typename\n }\n actions {\n status\n actionEvaluationDetails {\n actionId\n action\n status\n duration\n finishedOn\n logs\n __typename\n }\n __typename\n }\n ruleEvaluationOrigin\n __typename\n }\n }\n";
13
13
  export declare const GET_RAW_DATA_DOWNLOAD_URL = "\n query getRawDataDownloadUrl($rawDataKey: String!) {\n getRawDataDownloadUrl(rawDataKey: $rawDataKey)\n }\n";
14
- export declare const QUERY_V1 = "\n query J1QL($query: String!, $variables: JSON, $cursor: String, $scopeFilters: [JSON!], $flags: QueryV1Flags) {\n queryV1(query: $query, variables: $variables, cursor: $cursor, scopeFilters: $scopeFilters, flags: $flags) {\n type\n data\n cursor\n }\n }\n";
14
+ export declare const QUERY_V2 = "\n query J1QLv2($query: String!, $variables: JSON, $cursor: String, $scopeFilters: JSON, $includeDeleted: Boolean, $returnRowMetadata: Boolean, $returnComputedProperties: Boolean) {\n queryV2(query: $query, variables: $variables, cursor: $cursor, scopeFilters: $scopeFilters, includeDeleted: $includeDeleted, returnRowMetadata: $returnRowMetadata, returnComputedProperties: $returnComputedProperties) {\n type\n url\n correlationId\n }\n }\n";
15
15
  //# sourceMappingURL=queries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/client/graphql/queries.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,mtCAkEhC,CAAC;AAEF,eAAO,MAAM,mBAAmB,kuCAmE/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,oNAa5B,CAAC;AAEF,eAAO,MAAM,cAAc,4cAsB1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,kjEAsHjC,CAAC;AAEF,eAAO,MAAM,2BAA2B,6sFA6IvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,2+BAgDrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,+8BA0ChC,CAAC;AAEF,eAAO,MAAM,mBAAmB,kmBA+B/B,CAAC;AAEF,eAAO,MAAM,sBAAsB,8nBA+BlC,CAAC;AAEF,eAAO,MAAM,qBAAqB,ijCA2CjC,CAAC;AAEF,eAAO,MAAM,2BAA2B,+2BA0CvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,uHAIrC,CAAC;AAGF,eAAO,MAAM,QAAQ,6RAQpB,CAAC"}
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/client/graphql/queries.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,mtCAkEhC,CAAC;AAEF,eAAO,MAAM,mBAAmB,kuCAmE/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,oNAa5B,CAAC;AAEF,eAAO,MAAM,cAAc,4cAsB1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,kjEAsHjC,CAAC;AAEF,eAAO,MAAM,2BAA2B,kwDA6FvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,2+BAgDrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,+8BA0ChC,CAAC;AAEF,eAAO,MAAM,mBAAmB,kmBA+B/B,CAAC;AAEF,eAAO,MAAM,sBAAsB,8nBA+BlC,CAAC;AAEF,eAAO,MAAM,qBAAqB,ijCA2CjC,CAAC;AAEF,eAAO,MAAM,2BAA2B,+2BA0CvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,uHAIrC,CAAC;AAGF,eAAO,MAAM,QAAQ,qdAQpB,CAAC"}
@@ -309,59 +309,11 @@ export const GET_INTEGRATION_DEFINITIONS = `
309
309
  name
310
310
  type
311
311
  title
312
- displayMode
313
- oAuth {
314
- oAuthUrlGeneratorPath
315
- __typename
316
- }
317
- offsiteUrl
318
- offsiteButtonTitle
319
- offsiteStatusQuery
320
312
  integrationType
321
313
  integrationClass
322
314
  integrationCategory
323
- beta
324
- docsWebLink
325
- repoWebLink
326
- invocationPaused
327
- managedExecutionDisabled
328
- managedCreateDisabled
329
- managedDeleteDisabled
330
- integrationPlatformFeatures {
331
- supportsChildInstances
332
- supportsCollectors
333
- supportsIngestionSourcesConfig
334
- supportsAgentConfigurations
335
- __typename
336
- }
337
- ingestionSourcesConfig {
338
- id
339
- title
340
- description
341
- defaultsToDisabled
342
- childIngestionSourcesMetadata {
343
- id
344
- name
345
- __typename
346
- }
347
- cannotBeDisabled
348
- __typename
349
- }
350
- ingestionSourcesOverrides {
351
- enabled
352
- ingestionSourceId
353
- __typename
354
- }
355
315
  totalInstanceCount
356
- integrationJobStatusMetrics {
357
- count
358
- status
359
- __typename
360
- }
361
- icon
362
- provisioningType
363
316
  description
364
- customDefinitionType
365
317
  ...IntegrationDefinitionConfigFragment @include(if: $includeConfig)
366
318
  __typename
367
319
  }
@@ -679,13 +631,13 @@ export const GET_RAW_DATA_DOWNLOAD_URL = `
679
631
  getRawDataDownloadUrl(rawDataKey: $rawDataKey)
680
632
  }
681
633
  `;
682
- // J1QL Query Executor
683
- export const QUERY_V1 = `
684
- query J1QL($query: String!, $variables: JSON, $cursor: String, $scopeFilters: [JSON!], $flags: QueryV1Flags) {
685
- queryV1(query: $query, variables: $variables, cursor: $cursor, scopeFilters: $scopeFilters, flags: $flags) {
634
+ // J1QL Query Executor V2 - Provides more detailed error messages
635
+ export const QUERY_V2 = `
636
+ query J1QLv2($query: String!, $variables: JSON, $cursor: String, $scopeFilters: JSON, $includeDeleted: Boolean, $returnRowMetadata: Boolean, $returnComputedProperties: Boolean) {
637
+ queryV2(query: $query, variables: $variables, cursor: $cursor, scopeFilters: $scopeFilters, includeDeleted: $includeDeleted, returnRowMetadata: $returnRowMetadata, returnComputedProperties: $returnComputedProperties) {
686
638
  type
687
- data
688
- cursor
639
+ url
640
+ correlationId
689
641
  }
690
642
  }
691
643
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/client/graphql/queries.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEnC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmElC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;CAa/B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsB7B,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsHpC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6I1C,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDxC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CnC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BlC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BrC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CpC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0C1C,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;CAIxC,CAAC;AAEF,sBAAsB;AACtB,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;CAQvB,CAAC"}
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/client/graphql/queries.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEnC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmElC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;CAa/B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsB7B,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsHpC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6F1C,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDxC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CnC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BlC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BrC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CpC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0C1C,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;CAIxC,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;CAQvB,CAAC"}
@@ -11,7 +11,7 @@ export declare class JupiterOneClient {
11
11
  private dashboardService;
12
12
  private accountService;
13
13
  private integrationService;
14
- private j1qlService;
14
+ j1qlService: J1qlService;
15
15
  constructor(config: JupiterOneConfig);
16
16
  listAlertInstances(...args: Parameters<AlertService['listAlertInstances']>): Promise<{
17
17
  instances: import("../types/jupiterone.js").AlertRuleInstance[];
@@ -1 +1 @@
1
- {"version":3,"file":"jupiterone-client.d.ts","sourceRoot":"","sources":["../../src/client/jupiterone-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jupiterone-client.d.ts","sourceRoot":"","sources":["../../src/client/jupiterone-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"jupiterone-client.js","sourceRoot":"","sources":["../../src/client/jupiterone-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jupiterone-client.js","sourceRoot":"","sources":["../../src/client/jupiterone-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAgB;IACtB,YAAY,CAAe;IAC3B,WAAW,CAAc;IACzB,gBAAgB,CAAmB;IACnC,cAAc,CAAiB;IAC/B,kBAAkB,CAAqB;IACxC,WAAW,CAAc;IAEhC,YAAY,MAAwB;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,IAAI,kCAAkC,EAAE;YACpF,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;gBACxC,cAAc,EAAE,kBAAkB;gBAClC,kBAAkB,EAAE,MAAM,CAAC,SAAS;aACrC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,kBAAkB,CAAC,GAAG,IAAoD;QAC9E,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,GAAG,IAAsD;QAClF,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,eAAe;IACf,KAAK,CAAC,iBAAiB,CAAC,GAAG,IAAkD;QAC3E,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,GAAG,IAAoD;QAC/E,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,gCAAgC,CACpC,GAAG,IAAiE;QAEpE,OAAO,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC,GAAG,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,gCAAgC,CACpC,GAAG,IAAiE;QAEpE,OAAO,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC,GAAG,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,oCAAoC,CACxC,GAAG,IAAqE;QAExE,OAAO,IAAI,CAAC,WAAW,CAAC,oCAAoC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,oCAAoC,CACxC,GAAG,IAAqE;QAExE,OAAO,IAAI,CAAC,WAAW,CAAC,oCAAoC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAG,IAAmD;QAC7E,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,GAAG,IAAqD;QACjF,OAAO,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,GAAG,IAAoD;QAC/E,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,GAAG,IAAsD;QACnF,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,GAAG,IAAyD;QACzF,OAAO,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,GAAG,IAAsD;QACnF,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAG,IAAkD;QAC3E,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAG,IAAqD;QAC5E,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAG,IAAkD;QACtE,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,GAAG,IAA2D;QACxF,OAAO,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAG,IAAqD;QAC5E,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;IAC9C,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,yBAAyB,CAC7B,GAAG,IAAiE;QAEpE,OAAO,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,GAAG,IAA+D;QAElE,OAAO,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAG,IAA0D;QACpF,OAAO,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,gBAAwB,EAAE,qBAA6B;QAC7E,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IAC5F,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACxB,KAAa,EACb,qBAA6B,EAC7B,MAAe,EACf,IAAa;QAEb,OAAO,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAClG,CAAC;IAED,eAAe;IACf,KAAK,CAAC,6BAA6B,CACjC,GAAG,IAA8D;QAEjE,OAAO,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC,GAAG,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAG,IAAiD;QACzE,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"j1ql-service.d.ts","sourceRoot":"","sources":["../../../src/client/services/j1ql-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AAIlF,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC;;OAEG;IACG,6BAA6B,CACjC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,qCAAqC,CAAC,+BAA+B,CAAC,CAAC;IAQlF;;OAEG;IACG,gBAAgB,CAAC,EACrB,KAAK,EACL,SAAS,EACT,MAAM,EACN,YAAY,EACZ,KAAK,GACN,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC7B,GAAG,OAAO,CAAC,GAAG,CAAC;CAajB"}
1
+ {"version":3,"file":"j1ql-service.d.ts","sourceRoot":"","sources":["../../../src/client/services/j1ql-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AAIlF,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC;;OAEG;IACG,6BAA6B,CACjC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,qCAAqC,CAAC,+BAA+B,CAAC,CAAC;IAQlF;;OAEG;IACG,gBAAgB,CAAC,EACrB,KAAK,EACL,SAAS,EACT,MAAM,EACN,YAAY,EACZ,KAAK,GACN,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC7B,GAAG,OAAO,CAAC,GAAG,CAAC;CAoDjB"}
@@ -1,5 +1,5 @@
1
1
  import { CREATE_J1QL_FROM_NATURAL_LANGUAGE } from '../graphql/mutations.js';
2
- import { QUERY_V1 } from '../graphql/queries.js';
2
+ import { QUERY_V2 } from '../graphql/queries.js';
3
3
  export class J1qlService {
4
4
  client;
5
5
  constructor(client) {
@@ -16,14 +16,45 @@ export class J1qlService {
16
16
  * Execute a J1QL query
17
17
  */
18
18
  async executeJ1qlQuery({ query, variables, cursor, scopeFilters, flags, }) {
19
- const response = await this.client.request(QUERY_V1, {
19
+ // Use queryV2 for better error messages
20
+ const response = await this.client.request(QUERY_V2, {
20
21
  query,
21
22
  variables,
22
23
  cursor,
23
24
  scopeFilters,
24
- flags,
25
+ includeDeleted: flags?.includeDeleted,
26
+ returnRowMetadata: flags?.returnRowMeta,
27
+ returnComputedProperties: flags?.computedProperties,
25
28
  });
26
- return response.queryV1;
29
+ // Handle deferred response
30
+ if (response.queryV2.type === 'deferred' && response.queryV2.url) {
31
+ // Poll the URL until results are ready
32
+ const maxAttempts = 60; // 60 attempts = 1 minute max wait
33
+ const pollInterval = 1000; // 1 second between polls
34
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
35
+ const fetchResponse = await fetch(response.queryV2.url);
36
+ if (!fetchResponse.ok) {
37
+ throw new Error(`Failed to fetch query results: ${fetchResponse.statusText}`);
38
+ }
39
+ const result = await fetchResponse.json();
40
+ // Check if the query is complete
41
+ if (result.status === 'COMPLETE' || result.status === 'FAILED') {
42
+ if (result.status === 'FAILED') {
43
+ throw new Error(result.error || 'Query execution failed');
44
+ }
45
+ return result;
46
+ }
47
+ // If still in progress, wait before next poll
48
+ if (result.status === 'IN_PROGRESS') {
49
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
50
+ continue;
51
+ }
52
+ // If we get an unexpected status, return the result as-is
53
+ return result;
54
+ }
55
+ throw new Error('Query timed out after 60 seconds');
56
+ }
57
+ return response.queryV2;
27
58
  }
28
59
  }
29
60
  //# sourceMappingURL=j1ql-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"j1ql-service.js","sourceRoot":"","sources":["../../../src/client/services/j1ql-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,OAAO,WAAW;IACF;IAApB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C;;OAEG;IACH,KAAK,CAAC,6BAA6B,CACjC,eAAuB;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,iCAAiC,EACjC,EAAE,eAAe,EAAE,CACpB,CAAC;QACF,OAAO,QAAQ,CAAC,6BAA6B,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,EACrB,KAAK,EACL,SAAS,EACT,MAAM,EACN,YAAY,EACZ,KAAK,GAON;QACC,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAC7C,QAAQ,EACR;YACE,KAAK;YACL,SAAS;YACT,MAAM;YACN,YAAY;YACZ,KAAK;SACN,CACF,CAAC;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"j1ql-service.js","sourceRoot":"","sources":["../../../src/client/services/j1ql-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,OAAO,WAAW;IACF;IAApB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C;;OAEG;IACH,KAAK,CAAC,6BAA6B,CACjC,eAAuB;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,iCAAiC,EACjC,EAAE,eAAe,EAAE,CACpB,CAAC;QACF,OAAO,QAAQ,CAAC,6BAA6B,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,EACrB,KAAK,EACL,SAAS,EACT,MAAM,EACN,YAAY,EACZ,KAAK,GAON;QACC,wCAAwC;QACxC,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAC7C,QAAQ,EACR;YACE,KAAK;YACL,SAAS;YACT,MAAM;YACN,YAAY;YACZ,cAAc,EAAE,KAAK,EAAE,cAAc;YACrC,iBAAiB,EAAE,KAAK,EAAE,aAAa;YACvC,wBAAwB,EAAE,KAAK,EAAE,kBAAkB;SACpD,CACF,CAAC;QAEF,2BAA2B;QAC3B,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjE,uCAAuC;YACvC,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,kCAAkC;YAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,yBAAyB;YAEpD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;gBACvD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACxD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;gBAChF,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;gBAE1C,iCAAiC;gBACjC,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC/B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,wBAAwB,CAAC,CAAC;oBAC5D,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,8CAA8C;gBAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;oBACpC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;oBAChE,SAAS;gBACX,CAAC;gBAED,0DAA0D;gBAC1D,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;CACF"}
@@ -34,6 +34,13 @@ The `when` clause should only contain:
34
34
  - **Available options**: `"DISABLED"`, `"THIRTY_MINUTES"`, `"ONE_HOUR"`, `"FOUR_HOURS"`, `"EIGHT_HOURS"`, `"TWELVE_HOURS"`, `"ONE_DAY"`, `"ONE_WEEK"`
35
35
  - Only use more frequent intervals (like `"THIRTY_MINUTES"`) when explicitly requested or for time-sensitive security alerts
36
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
+
37
44
  ## Required Schema Fields
38
45
 
39
46
  ### Complete Required Parameters for create-inline-question-rule
@@ -51,6 +58,10 @@ The `when` clause should only contain:
51
58
  "templates": {},
52
59
  "outputs": ["alertLevel"],
53
60
  "tags": [],
61
+ "labels": [
62
+ {"labelName": "environment", "labelValue": "production"},
63
+ {"labelName": "team", "labelValue": "security"}
64
+ ],
54
65
  "queries": [
55
66
  {
56
67
  "query": "FIND Entity...",
@@ -74,7 +85,8 @@ The `when` clause should only contain:
74
85
  **Key Schema Requirements**:
75
86
  - `ignorePreviousResults`: Must be included (typically `false`)
76
87
  - `templates`: Must be included (use `{}` if empty)
77
- - `tags`: 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
78
90
  - Query `name`: Use `"query0"` for primary query
79
91
  - Query `version`: Include `"v1"` for compatibility
80
92
  - Query `includeDeleted`: Must be explicitly set to `false`
@@ -274,6 +286,10 @@ Based on confirmed working examples, use this template:
274
286
  "templates": {},
275
287
  "outputs": ["alertLevel"],
276
288
  "tags": [],
289
+ "labels": [
290
+ {"labelName": "severity", "labelValue": "high"},
291
+ {"labelName": "category", "labelValue": "security"}
292
+ ],
277
293
  "queries": [
278
294
  {
279
295
  "query": "FIND Entity WITH condition",
@@ -348,10 +364,11 @@ Based on confirmed working examples, use this template:
348
364
  - Use descriptive query names that match their purpose (but prefer `"query0"` for main query)
349
365
  - Include relevant entity fields in `outputs` for alert context
350
366
  - Set appropriate polling intervals (default to `"ONE_DAY"` unless specified)
351
- - Add meaningful tags for rule organization
367
+ - Use the `labels` field for rule organization and tagging (not the deprecated `tags` field)
352
368
  - Use `notifyOnFailure: true` to catch rule execution issues
353
369
  - Always include `CREATE_ALERT` action as a baseline
354
370
  - Always include all required schema fields from the working template
355
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
356
373
 
357
374
  This format ensures reliable rule creation and helps avoid common pitfalls encountered during rule development.
@@ -15,9 +15,9 @@ The tool supports various query parameters including:
15
15
  - Applying scope filters
16
16
  - Pagination using cursors
17
17
 
18
- ### JupiterOne Query Language (J1QL) Guide for AI Agents
18
+ ### JupiterOne Query Language (J1QL) Quick Reference
19
19
 
20
- > **CRITICAL:** Follow this guide strictly. Any deviation may result in query failure. Do not use operators not documented here.
20
+ > **IMPORTANT:** Always validate queries using this tool before creating rules or widgets. Start with discovery queries if unsure about data structure.
21
21
 
22
22
  #### Core Concepts
23
23
 
@@ -317,48 +317,12 @@ RETURN u.username, p.email, d.name
317
317
  LIMIT 10
318
318
  ```
319
319
 
320
- #### Discovery Techniques (ALWAYS USE THESE FIRST)
320
+ #### Discovery Queries - ALWAYS START HERE
321
321
 
322
- FIRST:
323
- **Identify entity classes and counts**:
324
- ```j1ql
325
- FIND * AS ent RETURN ent._class, COUNT(ent)
326
- ```
327
-
328
- SECOND:
329
- **Discover properties on an entity**:
330
- ```j1ql
331
- FIND User AS ent RETURN ent.* LIMIT 100
332
- ```
333
-
334
- THIRD:
335
- **Find how entities are related**:
336
- ```j1ql
337
- FIND User THAT RELATES TO AS rel * AS ent RETURN rel._class, ent._type, COUNT(ent)
338
- ```
339
-
340
- FORTH:
341
- **Discover property values**:
342
- ```j1ql
343
- FIND User AS ent RETURN ent.status, COUNT(ent)
344
- ```
345
-
346
- ADDITIONAL:
347
-
348
- **Identify properties on related entities**:
349
- ```j1ql
350
- FIND User THAT RELATES TO Device AS ent RETURN ent.* LIMIT 100
351
- ```
352
-
353
- **Find related entity types**:
354
- ```j1ql
355
- FIND User THAT RELATES TO * AS ent RETURN ent._type, COUNT(ent)
356
- ```
357
-
358
- **Identify relationship classes**:
359
- ```j1ql
360
- FIND User THAT RELATES TO AS rel * AS ent RETURN rel._class, ent._type, COUNT(ent)
361
- ```
322
+ 1. **Find all entity classes**: `FIND * AS e RETURN e._class, COUNT(e)`
323
+ 2. **Explore entity properties**: `FIND EntityClass AS e RETURN e.* LIMIT 10`
324
+ 3. **Discover relationships**: `FIND Entity1 THAT RELATES TO AS rel Entity2 RETURN rel._class`
325
+ 4. **Check property values**: `FIND Entity AS e RETURN e.property, COUNT(e)`
362
326
 
363
327
  #### ⚠️ QUERY VALIDATION CHECKLIST ⚠️
364
328
 
@@ -373,54 +337,43 @@ Before running any J1QL query, verify:
373
337
  7. ✓ Optional traversals use proper parentheses and question mark syntax
374
338
  8. ✓ All aliases referenced in RETURN or WHERE are properly defined earlier
375
339
 
376
- #### Common Errors to Avoid
377
-
378
- 1. **Syntax Errors**:
379
- - Using LIKE comparison (use ~= instead)
380
- - Using IS to test for undefined (use property=undefined instead)
381
- - Placing alias before WITH statement
382
- - Using double quotes for strings
383
- - Missing LIMIT clause
384
-
385
- 2. **Structure Errors**:
386
- - ❌ Using WHERE for basic entity filtering
387
- - ❌ Incorrectly placing direction arrows
388
- - Referencing undefined aliases
389
- - Using improper optional traversal syntax
390
-
391
- 3. **No Results**
392
- - ❌ No results may be expected, validate with the context of the query
393
- - Use wildcard relationship (i.e. THAT RELATES TO)
394
- - Confirm the property being filtered exists
395
- - Confirm the value being used for the filtered property exists
396
- - Never assume _type, _class, relationship verbs or properties, only use what has been found in discovery
397
-
398
- #### Query Development Process
399
-
400
- 1. **Start with discovery queries** to understand the data model:
401
- ```j1ql
402
- FIND * AS ent RETURN ent._class, COUNT(ent)
403
- ```
404
-
405
- 2. **Examine specific entity properties**:
406
- ```j1ql
407
- FIND User AS ent RETURN ent.* LIMIT 100
408
- ```
409
-
410
- 3. **Determine what and how the entity relates to other entities**:
411
- ```j1ql
412
- FIND User THAT RELATES TO AS rel * AS ent RETURN rel._class, ent._type, COUNT(ent)
413
- ```
414
-
415
- 4. **Incrementally build complexity**:
416
- - Start with basic entity queries
417
- - Add property filters
418
- - Add relationship traversals
419
- - Add specific return fields
420
- - Add aggregations if needed
421
- - Rinse and repeat until you have a query doing what you need
422
- - IMPORTANT: Don't assume _type, _class, relationship verbs or properties, only use values found during discovery!
423
-
424
- 5. **Troubleshoot by simplifying** - if a complex query fails, break it into smaller parts
425
-
426
- By following these strict guide `plines, AI agents can effectively create valid J1QL queries that provide accurate security insights across the organization's digital environment.
340
+ #### Most Common Errors (Quick Reference)
341
+
342
+ 1. **Missing quotes**: `name = john` → `name = 'john'`
343
+ 2. **Wrong quotes**: `name = "john"` `name = 'john'`
344
+ 3. **Alias placement**: `AS u WITH active = true` → `WITH active = true AS u`
345
+ 4. **WHERE needs alias**: `WHERE active = true` → `AS u WHERE u.active = true`
346
+ 5. **Undefined alias**: `FIND User RETURN u.name` → `FIND User AS u RETURN u.name`
347
+ 6. **No LIMIT**: Add `LIMIT 100` or use `COUNT()` to prevent timeouts
348
+
349
+ #### Common Patterns & Examples
350
+
351
+ **Security Queries**:
352
+ - Unencrypted data: `FIND DataStore WITH encrypted = false`
353
+ - Users without MFA: `FIND User WITH mfaEnabled != true`
354
+ - Critical findings: `FIND Finding WITH severity = "critical"`
355
+
356
+ **Dashboard Queries**:
357
+ - Pie chart: Return `name` and `value` pairs
358
+ - Number chart: Return single `value`
359
+ - Bar chart: Return `x` and `y` values
360
+ - Table: Return named columns
361
+
362
+ **Rule Queries**:
363
+ - New entities: Add time filter `WITH _createdOn > date.now - 1 day`
364
+ - Always test with `execute-j1ql-query` first
365
+ - Use condition: `["AND", ["queries.query0.total", ">", 0]]`
366
+
367
+ #### Best Practices
368
+
369
+ 1. **Always start with discovery** - Don't assume entity names or properties
370
+ 2. **Test incrementally** - Build complex queries step by step
371
+ 3. **Use this tool to validate** - Test every query before using in rules/widgets
372
+ 4. **Check error suggestions** - The tool provides specific fixes for common issues
373
+ 5. **Use proper syntax**:
374
+ - Single quotes for strings
375
+ - Alias AFTER WITH clause
376
+ - LIMIT to prevent timeouts
377
+ - Proper capitalization for classes
378
+
379
+ **Remember**: The execute-j1ql-query tool now provides enhanced error messages with specific suggestions. Always test queries here first!
@@ -0,0 +1,27 @@
1
+ # Get Integration Definitions Tool
2
+
3
+ Get all available integration definitions in your JupiterOne account. This tool returns a list of integration definitions that can be used to create integration instances. Integration definitions define the types of integrations available (like AWS, Azure, GitHub, etc.) and their configuration requirements. If a user is needing a specific integration instance id for something such as a rule action, you will want to start here and then use the `get-integration-instances` tool. Each integration definition will have a Name and a Title field, you should use this to identify which definition is correct for what the user is looking for. As an example, if the user wants to send a slack notification as a part of a rule action, you would want to pull all of the integration definitions and find any that have Slack in the name and/or title. If there are multiple, then clarify the differences to the user and allow them to guide you on which one is correct.
4
+
5
+ ## Parameters
6
+ - `cursor` (optional): Pagination cursor to get the next page of results. Use the `endCursor` from a previous response's `pageInfo`. When you are needing to find a specific type of integration, you will want to query all of the available pages until there are no more left to query so you can select from the entire list.
7
+ - `includeConfig` (optional): Whether to include configuration fields in the response. When true, returns detailed configuration schemas for each integration type. Typically this should be false or omitted entirely.
8
+
9
+ ## Example Usage
10
+ Get all integration definitions without configuration details:
11
+ ```json
12
+ {}
13
+ ```
14
+
15
+ Get all integration definitions with configuration fields:
16
+ ```json
17
+ {
18
+ "includeConfig": true
19
+ }
20
+ ```
21
+
22
+ Get the next page of integration definitions using a cursor:
23
+ ```json
24
+ {
25
+ "cursor": "cursor_here"
26
+ }
27
+ ```