@rad-security/mcp-server 0.0.27 → 0.0.31-2.g635c655

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 (37) hide show
  1. package/README.md +53 -60
  2. package/dist/index.js +44 -381
  3. package/dist/index.js.map +1 -1
  4. package/dist/operations/cve-dispositions.d.ts +27 -0
  5. package/dist/operations/cve-dispositions.js +46 -0
  6. package/dist/operations/cve-dispositions.js.map +1 -0
  7. package/dist/operations/findings.d.ts +4 -4
  8. package/dist/operations/findings.js +1 -1
  9. package/dist/operations/findings.js.map +1 -1
  10. package/dist/operations/inbox.d.ts +2 -2
  11. package/dist/operations/radql.js +72 -1
  12. package/dist/operations/radql.js.map +1 -1
  13. package/dist/version.d.ts +1 -1
  14. package/dist/version.js +1 -1
  15. package/dist/version.js.map +1 -1
  16. package/package.json +1 -1
  17. package/dist/operations/cloud-compliance.d.ts +0 -116
  18. package/dist/operations/cloud-compliance.js +0 -123
  19. package/dist/operations/cloud-compliance.js.map +0 -1
  20. package/dist/operations/cloud-inventory.d.ts +0 -70
  21. package/dist/operations/cloud-inventory.js +0 -61
  22. package/dist/operations/cloud-inventory.js.map +0 -1
  23. package/dist/operations/cves.d.ts +0 -23
  24. package/dist/operations/cves.js +0 -51
  25. package/dist/operations/cves.js.map +0 -1
  26. package/dist/operations/identities.d.ts +0 -33
  27. package/dist/operations/identities.js +0 -30
  28. package/dist/operations/identities.js.map +0 -1
  29. package/dist/operations/misconfigs.d.ts +0 -23
  30. package/dist/operations/misconfigs.js +0 -306
  31. package/dist/operations/misconfigs.js.map +0 -1
  32. package/dist/operations/runtime_network.d.ts +0 -50
  33. package/dist/operations/runtime_network.js +0 -41
  34. package/dist/operations/runtime_network.js.map +0 -1
  35. package/dist/operations/threats.d.ts +0 -22
  36. package/dist/operations/threats.js +0 -24
  37. package/dist/operations/threats.js.map +0 -1
package/dist/index.js CHANGED
@@ -13,23 +13,17 @@ import express from "express";
13
13
  import { RadSecurityClient } from "./client.js";
14
14
  import * as containers from "./operations/containers.js";
15
15
  import * as audit from "./operations/audit.js";
16
- import * as cloudInventory from "./operations/cloud-inventory.js";
17
16
  import * as clusters from "./operations/clusters.js";
18
- import * as identities from "./operations/identities.js";
19
17
  import * as images from "./operations/images.js";
18
+ import * as cveDispositions from "./operations/cve-dispositions.js";
20
19
  import * as kubeobject from "./operations/kubeobject.js";
21
- import * as misconfigs from "./operations/misconfigs.js";
22
20
  import * as runtime from "./operations/runtime.js";
23
- import * as runtimeNetwork from "./operations/runtime_network.js";
24
- import * as threats from "./operations/threats.js";
25
21
  import * as findings from "./operations/findings.js";
26
- import * as cves from "./operations/cves.js";
27
22
  import * as inbox from "./operations/inbox.js";
28
23
  import * as workflows from "./operations/workflows.js";
29
24
  import * as customWorkflows from "./operations/custom-workflows.js";
30
25
  import * as knowledgeBase from "./operations/knowledge-base.js";
31
26
  import * as radql from "./operations/radql.js";
32
- import * as cloudCompliance from "./operations/cloud-compliance.js";
33
27
  import * as dashboards from "./operations/dashboards.js";
34
28
  import * as integrations from "./operations/integrations.js";
35
29
  import { VERSION } from "./version.js";
@@ -115,21 +109,6 @@ async function newServer() {
115
109
  },
116
110
  ]
117
111
  : []),
118
- // Identity tools
119
- ...(isToolkitEnabled("identities", toolkitFilters)
120
- ? [
121
- {
122
- name: "list_identities",
123
- description: "Get list of identities for a specific Kubernetes cluster",
124
- inputSchema: zodToJsonSchema(identities.ListIdentitiesSchema),
125
- },
126
- {
127
- name: "get_identity_details",
128
- description: "Get detailed information about a specific identity in a Kubernetes cluster",
129
- inputSchema: zodToJsonSchema(identities.GetIdentityDetailsSchema),
130
- },
131
- ]
132
- : []),
133
112
  // Audit tools
134
113
  ...(isToolkitEnabled("audit", toolkitFilters)
135
114
  ? [
@@ -140,66 +119,6 @@ async function newServer() {
140
119
  },
141
120
  ]
142
121
  : []),
143
- // Cloud Inventory tools
144
- ...(isToolkitEnabled("cloud_inventory", toolkitFilters)
145
- ? [
146
- {
147
- name: "list_cloud_resources",
148
- description: "List cloud resources for a specific provider with optional filtering",
149
- inputSchema: zodToJsonSchema(cloudInventory.ListCloudResourcesSchema),
150
- },
151
- {
152
- name: "get_cloud_resource_details",
153
- description: "Get detailed information about a specific cloud resource",
154
- inputSchema: zodToJsonSchema(cloudInventory.GetCloudResourceDetailsSchema),
155
- },
156
- {
157
- name: "get_cloud_resource_facets",
158
- description: "Get available facets for filtering cloud resources from a provider",
159
- inputSchema: zodToJsonSchema(cloudInventory.GetCloudResourceFacetsSchema),
160
- },
161
- {
162
- name: "get_cloud_resource_facet_value",
163
- description: "Get values for a specific facet from a cloud provider",
164
- inputSchema: zodToJsonSchema(cloudInventory.GetCloudResourceFacetValuesSchema),
165
- },
166
- ]
167
- : []),
168
- // Cloud Compliance tools
169
- ...(isToolkitEnabled("cloud_compliance", toolkitFilters)
170
- ? [
171
- {
172
- name: "list_compliance_frameworks",
173
- description: "List all compliance frameworks available for cloud resources (e.g., CIS, SOC2, PCI-DSS)",
174
- inputSchema: zodToJsonSchema(cloudCompliance.ListComplianceFrameworksSchema),
175
- },
176
- {
177
- name: "list_framework_requirements",
178
- description: "List all requirements for a specific compliance framework",
179
- inputSchema: zodToJsonSchema(cloudCompliance.ListFrameworkRequirementsSchema),
180
- },
181
- {
182
- name: "list_requirement_controls",
183
- description: "List controls associated with a specific requirement within a compliance framework",
184
- inputSchema: zodToJsonSchema(cloudCompliance.ListRequirementControlsSchema),
185
- },
186
- {
187
- name: "list_compliance_controls",
188
- description: "List all compliance control summaries for the account",
189
- inputSchema: zodToJsonSchema(cloudCompliance.ListComplianceControlsSchema),
190
- },
191
- {
192
- name: "get_compliance_control",
193
- description: "Get detailed information about a specific compliance control",
194
- inputSchema: zodToJsonSchema(cloudCompliance.GetComplianceControlSchema),
195
- },
196
- {
197
- name: "list_control_resources",
198
- description: "List cloud resources associated with a specific compliance control",
199
- inputSchema: zodToJsonSchema(cloudCompliance.ListControlResourcesSchema),
200
- },
201
- ]
202
- : []),
203
122
  // Image tools
204
123
  ...(isToolkitEnabled("images", toolkitFilters)
205
124
  ? [
@@ -223,6 +142,21 @@ async function newServer() {
223
142
  description: "Get the SBOM of a container image",
224
143
  inputSchema: zodToJsonSchema(images.GetImageSBOMSchema),
225
144
  },
145
+ {
146
+ name: "ignore_cve",
147
+ description: "Ignore a CVE for this account so it no longer appears in vulnerability reporting. Use for confirmed false positives, accepted risks, or won't-fix decisions. Do NOT use for remediated CVEs — those drop off automatically on the next scan.",
148
+ inputSchema: zodToJsonSchema(cveDispositions.ignoreCveSchema),
149
+ },
150
+ {
151
+ name: "unignore_cve",
152
+ description: "Remove an account-wide CVE disposition, restoring the CVE to vulnerability reporting.",
153
+ inputSchema: zodToJsonSchema(cveDispositions.unignoreCveSchema),
154
+ },
155
+ {
156
+ name: "list_cve_dispositions",
157
+ description: "List active CVE dispositions (ignored / false positive) for this account, with reason and author.",
158
+ inputSchema: zodToJsonSchema(cveDispositions.listCveDispositionsSchema),
159
+ },
226
160
  ]
227
161
  : []),
228
162
  // Kubernetes Object tools
@@ -240,26 +174,6 @@ async function newServer() {
240
174
  },
241
175
  ]
242
176
  : []),
243
- // Manifest Misconfigurations tools
244
- ...(isToolkitEnabled("misconfigs", toolkitFilters)
245
- ? [
246
- {
247
- name: "list_k8s_resource_misconfigs",
248
- description: "Get manifest misconfigurations for a Kubernetes resource",
249
- inputSchema: zodToJsonSchema(misconfigs.ListKubernetesResourceMisconfigurationsSchema),
250
- },
251
- {
252
- name: "get_k8s_resource_misconfig",
253
- description: "Get detailed information about a specific Kubernetes resource misconfiguration",
254
- inputSchema: zodToJsonSchema(misconfigs.GetKubernetesResourceMisconfigurationDetailsSchema),
255
- },
256
- {
257
- name: "list_k8s_resource_misconfig_policies",
258
- description: "List available misconfiguration policies used by RAD Security to detect Kubernetes resource misconfigurations",
259
- inputSchema: zodToJsonSchema(misconfigs.ListKubernetesResourceMisconfigurationPoliciesSchema),
260
- },
261
- ]
262
- : []),
263
177
  // Runtime tools
264
178
  ...(isToolkitEnabled("runtime", toolkitFilters)
265
179
  ? [
@@ -280,36 +194,6 @@ async function newServer() {
280
194
  },
281
195
  ]
282
196
  : []),
283
- // Runtime Network tools
284
- ...(isToolkitEnabled("runtime_network", toolkitFilters)
285
- ? [
286
- {
287
- name: "list_http_requests",
288
- description: "List HTTP requests insights with optional filtering by method, path, source and destination workloads, and PII detection",
289
- inputSchema: zodToJsonSchema(runtimeNetwork.listHttpRequestsSchema),
290
- },
291
- {
292
- name: "list_network_connections",
293
- description: "List network connections with optional filtering",
294
- inputSchema: zodToJsonSchema(runtimeNetwork.listNetworkConnectionsSchema),
295
- },
296
- {
297
- name: "list_network_connection_srcs",
298
- description: "List network connection sources with optional filtering by source and destination workloads",
299
- inputSchema: zodToJsonSchema(runtimeNetwork.listNetworkConnectionSourcesSchema),
300
- },
301
- ]
302
- : []),
303
- // Threat Vectors tools
304
- ...(isToolkitEnabled("threats", toolkitFilters)
305
- ? [
306
- {
307
- name: "list_threat_vectors",
308
- description: "List threat vectors",
309
- inputSchema: zodToJsonSchema(threats.listThreatVectorsSchema),
310
- },
311
- ]
312
- : []),
313
197
  // Findings tools
314
198
  ...(isToolkitEnabled("findings", toolkitFilters)
315
199
  ? [
@@ -325,40 +209,6 @@ async function newServer() {
325
209
  },
326
210
  ]
327
211
  : []),
328
- // CVE tools
329
- ...(isToolkitEnabled("cves", toolkitFilters)
330
- ? [
331
- {
332
- name: "list_cve_vendors",
333
- description: "Get a list of all vendors in the CVE database. Source: cve-search.org",
334
- inputSchema: zodToJsonSchema(z.object({})),
335
- },
336
- {
337
- name: "list_cve_products",
338
- description: "Get a list of all products associated with a vendor in the CVE database. Source: cve-search.org",
339
- inputSchema: zodToJsonSchema(z.object({
340
- vendor: z
341
- .string()
342
- .describe("Vendor name to list products for"),
343
- })),
344
- },
345
- {
346
- name: "search_cves",
347
- description: "Search CVEs by vendor and optionally product. Source: cve-search.org",
348
- inputSchema: zodToJsonSchema(cves.searchCvesSchema),
349
- },
350
- {
351
- name: "get_cve",
352
- description: "Get details for a specific CVE ID. Source: cve-search.org",
353
- inputSchema: zodToJsonSchema(cves.getCveSchema),
354
- },
355
- {
356
- name: "get_latest_30_cves",
357
- description: "Get the latest/newest 30 CVEs including CAPEC, CWE and CPE expansions. Source: cve-search.org",
358
- inputSchema: zodToJsonSchema(z.object({})),
359
- },
360
- ]
361
- : []),
362
212
  // Inbox tools
363
213
  ...(isToolkitEnabled("inbox", toolkitFilters)
364
214
  ? [
@@ -464,7 +314,7 @@ async function newServer() {
464
314
  ? [
465
315
  {
466
316
  name: "radql_list_data_types",
467
- description: "List all available RadQL data types (discovery). ALWAYS call this FIRST before using other RadQL tools to discover what data is available to query. Returns data types like 'containers', 'kubernetes_resources', 'inbox_items', 'vulnerabilities', etc. with descriptions.",
317
+ description: "List all available RadQL data types (discovery). ALWAYS call this FIRST before using other RadQL tools to discover what data is available to query. Returns data types like 'containers', 'kubernetes_resources', 'inbox_items', 'cloud_resources', 'cloud_benchmarks', 'cloud_benchmark_summaries', etc. with descriptions.",
468
318
  inputSchema: zodToJsonSchema(radql.RadQLListDataTypesSchema),
469
319
  },
470
320
  {
@@ -488,7 +338,7 @@ containers: name, image_name, image_repo, owner_kind, cluster_id, created_at
488
338
  Example: image_name:*nginx* AND owner_kind:Pod
489
339
 
490
340
  finding_groups: type, source_kind, source_name, rule_title, severity, event_timestamp
491
- Types: k8s_misconfiguration, k8s_audit_logs_anomaly, threat_vector
341
+ Types: k8s_misconfiguration, k8s_audit_logs_anomaly
492
342
  Example: type:k8s_misconfiguration AND severity:critical
493
343
 
494
344
  inbox_items: severity (High|Medium|Low), type, title, archived, false_positive, created_at
@@ -497,6 +347,16 @@ inbox_items: severity (High|Medium|Low), type, title, archived, false_positive,
497
347
  kubernetes_resources: kind, name, namespace, cluster_id, owner_kind, created_at
498
348
  Example: kind:Deployment AND namespace:production
499
349
 
350
+ CLOUD RESOURCES & COMPLIANCE (use these RadQL data types instead of dedicated cloud tools):
351
+ cloud_resources: cloud_provider, cloud_account_id, resource_type, resource_name, resource_id, resource_json, last_seen_at
352
+ Example: cloud_provider:aws AND resource_type:aws_iam_policy
353
+
354
+ cloud_benchmark_summaries: cloud_provider, cloud_account_id, benchmark_id, title, description, fail_count, pass_count, total_count, last_seen_at
355
+ Example: cloud_provider:aws AND fail_count>0
356
+
357
+ cloud_benchmarks: cloud_provider, cloud_account_id, benchmark_id, control_id, control_title, severity, status, reason, resource_id, last_seen_at
358
+ Example: status:fail AND benchmark_id:*cis*
359
+
500
360
  CRITICAL QUOTING RULES:
501
361
  MUST quote when value contains:
502
362
  - Dates/timestamps: created_at>"2024-01-01" (NOT created_at>2024-01-01)
@@ -624,25 +484,6 @@ For complete schema: call radql_get_type_metadata with target data_type`,
624
484
  ],
625
485
  };
626
486
  }
627
- // Identity tools
628
- case "list_identities": {
629
- const args = identities.ListIdentitiesSchema.parse(request.params.arguments);
630
- const response = await identities.listIdentities(client, args.identity_types, args.cluster_ids, args.page, args.page_size, args.q);
631
- return {
632
- content: [
633
- { type: "text", text: JSON.stringify(response, null, 2) },
634
- ],
635
- };
636
- }
637
- case "get_identity_details": {
638
- const args = identities.GetIdentityDetailsSchema.parse(request.params.arguments);
639
- const response = await identities.getIdentityDetails(client, args.identity_id);
640
- return {
641
- content: [
642
- { type: "text", text: JSON.stringify(response, null, 2) },
643
- ],
644
- };
645
- }
646
487
  // Audit tools
647
488
  case "who_shelled_into_pod": {
648
489
  const args = audit.WhoShelledIntoPodSchema.parse(request.params.arguments);
@@ -653,98 +494,6 @@ For complete schema: call radql_get_type_metadata with target data_type`,
653
494
  ],
654
495
  };
655
496
  }
656
- // Cloud Inventory tools
657
- case "list_cloud_resources": {
658
- const args = cloudInventory.ListCloudResourcesSchema.parse(request.params.arguments);
659
- const response = await cloudInventory.listCloudResources(client, args.provider, args.filters, args.offset, args.limit, args.q);
660
- return {
661
- content: [
662
- { type: "text", text: JSON.stringify(response, null, 2) },
663
- ],
664
- };
665
- }
666
- case "get_cloud_resource_details": {
667
- const args = cloudInventory.GetCloudResourceDetailsSchema.parse(request.params.arguments);
668
- const response = await cloudInventory.getCloudResourceDetails(client, args.provider, args.resource_type, args.resource_id);
669
- return {
670
- content: [
671
- { type: "text", text: JSON.stringify(response, null, 2) },
672
- ],
673
- };
674
- }
675
- case "get_cloud_resource_facets": {
676
- const args = cloudInventory.GetCloudResourceFacetsSchema.parse(request.params.arguments);
677
- const response = await cloudInventory.getCloudResourceFacets(client, args.provider);
678
- return {
679
- content: [
680
- { type: "text", text: JSON.stringify(response, null, 2) },
681
- ],
682
- };
683
- }
684
- case "get_cloud_resource_facet_value": {
685
- const args = cloudInventory.GetCloudResourceFacetValuesSchema.parse(request.params.arguments);
686
- const response = await cloudInventory.getCloudResourceFacetValues(client, args.provider, args.facet_id);
687
- return {
688
- content: [
689
- { type: "text", text: JSON.stringify(response, null, 2) },
690
- ],
691
- };
692
- }
693
- // Cloud Compliance tools
694
- case "list_compliance_frameworks": {
695
- const args = cloudCompliance.ListComplianceFrameworksSchema.parse(request.params.arguments);
696
- const response = await cloudCompliance.listComplianceFrameworks(client, args.datasource_ids, args.page, args.page_size);
697
- return {
698
- content: [
699
- { type: "text", text: JSON.stringify(response, null, 2) },
700
- ],
701
- };
702
- }
703
- case "list_framework_requirements": {
704
- const args = cloudCompliance.ListFrameworkRequirementsSchema.parse(request.params.arguments);
705
- const response = await cloudCompliance.listFrameworkRequirements(client, args.framework_name, args.datasource_ids, args.page, args.page_size);
706
- return {
707
- content: [
708
- { type: "text", text: JSON.stringify(response, null, 2) },
709
- ],
710
- };
711
- }
712
- case "list_requirement_controls": {
713
- const args = cloudCompliance.ListRequirementControlsSchema.parse(request.params.arguments);
714
- const response = await cloudCompliance.listRequirementControls(client, args.framework_name, args.requirement_id, args.datasource_ids, args.page, args.page_size);
715
- return {
716
- content: [
717
- { type: "text", text: JSON.stringify(response, null, 2) },
718
- ],
719
- };
720
- }
721
- case "list_compliance_controls": {
722
- const args = cloudCompliance.ListComplianceControlsSchema.parse(request.params.arguments);
723
- const response = await cloudCompliance.listComplianceControls(client, args.status, args.providers, args.page, args.page_size);
724
- return {
725
- content: [
726
- { type: "text", text: JSON.stringify(response, null, 2) },
727
- ],
728
- };
729
- }
730
- case "get_compliance_control": {
731
- const args = cloudCompliance.GetComplianceControlSchema.parse(request.params.arguments);
732
- const response = await cloudCompliance.getComplianceControl(client, args.control_name, args.datasource_ids);
733
- return {
734
- content: [
735
- { type: "text", text: JSON.stringify(response, null, 2) },
736
- ],
737
- };
738
- }
739
- case "list_control_resources": {
740
- const args = cloudCompliance.ListControlResourcesSchema.parse(request.params.arguments);
741
- const response = await cloudCompliance.listControlResources(client, args.control_name, args.datasource_ids, args.page, args.page_size);
742
- return {
743
- content: [
744
- { type: "text", text: JSON.stringify(response, null, 2) },
745
- ],
746
- };
747
- }
748
497
  // Image tools
749
498
  case "list_images": {
750
499
  const args = images.ListImagesSchema.parse(request.params.arguments);
@@ -781,46 +530,46 @@ For complete schema: call radql_get_type_metadata with target data_type`,
781
530
  ],
782
531
  };
783
532
  }
784
- // Kubernetes Objects tools
785
- case "get_k8s_resource_details": {
786
- const args = kubeobject.GetKubernetesResourceDetailsSchema.parse(request.params.arguments);
787
- const response = await kubeobject.getKubernetesResourceDetails(client, args.cluster_id, args.resource_uid);
533
+ case "ignore_cve": {
534
+ const args = cveDispositions.ignoreCveSchema.parse(request.params.arguments);
535
+ const response = await cveDispositions.ignoreCve(client, args.cve_name, args.disposition, args.reason);
788
536
  return {
789
537
  content: [
790
538
  { type: "text", text: JSON.stringify(response, null, 2) },
791
539
  ],
792
540
  };
793
541
  }
794
- case "list_k8s_resources": {
795
- const args = kubeobject.ListKubernetesResourcesSchema.parse(request.params.arguments);
796
- const response = await kubeobject.listKubernetesResources(client, args.kinds, args.namespace, args.cluster_id, args.page, args.page_size);
542
+ case "unignore_cve": {
543
+ const args = cveDispositions.unignoreCveSchema.parse(request.params.arguments);
544
+ const response = await cveDispositions.unignoreCve(client, args.cve_name);
797
545
  return {
798
546
  content: [
799
547
  { type: "text", text: JSON.stringify(response, null, 2) },
800
548
  ],
801
549
  };
802
550
  }
803
- // Kubernetes Resource Misconfigurations tools
804
- case "list_k8s_resource_misconfigs": {
805
- const args = misconfigs.ListKubernetesResourceMisconfigurationsSchema.parse(request.params.arguments);
806
- const response = await misconfigs.listKubernetesResourceMisconfigurations(client, args.resource_uid);
551
+ case "list_cve_dispositions": {
552
+ cveDispositions.listCveDispositionsSchema.parse(request.params.arguments);
553
+ const response = await cveDispositions.listCveDispositions(client);
807
554
  return {
808
555
  content: [
809
556
  { type: "text", text: JSON.stringify(response, null, 2) },
810
557
  ],
811
558
  };
812
559
  }
813
- case "get_k8s_resource_misconfig": {
814
- const args = misconfigs.GetKubernetesResourceMisconfigurationDetailsSchema.parse(request.params.arguments);
815
- const response = await misconfigs.getKubernetesResourceMisconfigurationDetails(client, args.cluster_id, args.misconfig_id);
560
+ // Kubernetes Objects tools
561
+ case "get_k8s_resource_details": {
562
+ const args = kubeobject.GetKubernetesResourceDetailsSchema.parse(request.params.arguments);
563
+ const response = await kubeobject.getKubernetesResourceDetails(client, args.cluster_id, args.resource_uid);
816
564
  return {
817
565
  content: [
818
566
  { type: "text", text: JSON.stringify(response, null, 2) },
819
567
  ],
820
568
  };
821
569
  }
822
- case "list_k8s_resource_misconfig_policies": {
823
- const response = await misconfigs.listKubernetesResourceMisconfigurationPolicies();
570
+ case "list_k8s_resources": {
571
+ const args = kubeobject.ListKubernetesResourcesSchema.parse(request.params.arguments);
572
+ const response = await kubeobject.listKubernetesResources(client, args.kinds, args.namespace, args.cluster_id, args.page, args.page_size);
824
573
  return {
825
574
  content: [
826
575
  { type: "text", text: JSON.stringify(response, null, 2) },
@@ -855,44 +604,6 @@ For complete schema: call radql_get_type_metadata with target data_type`,
855
604
  ],
856
605
  };
857
606
  }
858
- // Runtime Network tools
859
- case "list_http_requests": {
860
- const args = runtimeNetwork.listHttpRequestsSchema.parse(request.params.arguments);
861
- const response = await runtimeNetwork.listHttpRequests(client, args);
862
- return {
863
- content: [
864
- { type: "text", text: JSON.stringify(response, null, 2) },
865
- ],
866
- };
867
- }
868
- case "list_network_connections": {
869
- const args = runtimeNetwork.listNetworkConnectionsSchema.parse(request.params.arguments);
870
- const response = await runtimeNetwork.listNetworkConnections(client, args);
871
- return {
872
- content: [
873
- { type: "text", text: JSON.stringify(response, null, 2) },
874
- ],
875
- };
876
- }
877
- case "list_network_connection_srcs": {
878
- const args = runtimeNetwork.listNetworkConnectionSourcesSchema.parse(request.params.arguments);
879
- const response = await runtimeNetwork.listNetworkConnectionSources(client, args);
880
- return {
881
- content: [
882
- { type: "text", text: JSON.stringify(response, null, 2) },
883
- ],
884
- };
885
- }
886
- // Threat Vectors tools
887
- case "list_threat_vectors": {
888
- const args = threats.listThreatVectorsSchema.parse(request.params.arguments);
889
- const response = await threats.listThreatVectors(client, args.clustersIds, args.namespaces, args.resource_uid, args.page, args.page_size);
890
- return {
891
- content: [
892
- { type: "text", text: JSON.stringify(response, null, 2) },
893
- ],
894
- };
895
- }
896
607
  // Findings tools
897
608
  case "list_security_findings": {
898
609
  const args = findings.listFindingsSchema.parse(request.params.arguments);
@@ -918,54 +629,6 @@ For complete schema: call radql_get_type_metadata with target data_type`,
918
629
  ],
919
630
  };
920
631
  }
921
- // CVE tools
922
- case "list_cve_vendors": {
923
- const response = await cves.listCveVendors();
924
- return {
925
- content: [
926
- { type: "text", text: JSON.stringify(response, null, 2) },
927
- ],
928
- };
929
- }
930
- case "list_cve_products": {
931
- const args = z
932
- .object({
933
- vendor: z.string(),
934
- })
935
- .parse(request.params.arguments);
936
- const response = await cves.listCveProducts(args.vendor);
937
- return {
938
- content: [
939
- { type: "text", text: JSON.stringify(response, null, 2) },
940
- ],
941
- };
942
- }
943
- case "search_cves": {
944
- const args = cves.searchCvesSchema.parse(request.params.arguments);
945
- const response = await cves.searchCves(args.vendor, args.product);
946
- return {
947
- content: [
948
- { type: "text", text: JSON.stringify(response, null, 2) },
949
- ],
950
- };
951
- }
952
- case "get_cve": {
953
- const args = cves.getCveSchema.parse(request.params.arguments);
954
- const response = await cves.getCve(args.cveId);
955
- return {
956
- content: [
957
- { type: "text", text: JSON.stringify(response, null, 2) },
958
- ],
959
- };
960
- }
961
- case "get_latest_30_cves": {
962
- const response = await cves.getLatest30Cves();
963
- return {
964
- content: [
965
- { type: "text", text: JSON.stringify(response, null, 2) },
966
- ],
967
- };
968
- }
969
632
  // Inbox tools
970
633
  case "mark_inbox_item_as_false_positive": {
971
634
  const args = inbox.MarkInboxItemAsFalsePositiveSchema.parse(request.params.arguments);