Skip to main content
Glama

RAD Security

Official
by rad-security
cloud-inventory.ts3.14 kB
import { z } from "zod"; import { RadSecurityClient } from "../client.js"; // Define provider type using Zod enum const ProviderTypeEnum = z.enum(["aws", "gcp", "azure", "linode"]); type ProviderType = z.infer<typeof ProviderTypeEnum>; // Schema for list_cloud_resources export const ListCloudResourcesSchema = z.object({ provider: ProviderTypeEnum.describe("Cloud provider (aws, gcp, azure, linode)"), filters: z.string().optional().describe("Filter string (e.g., 'resource_type:EC2NetworkInterface,resource_type:SQSQueue,aws_account:123456789012,compliance:not_compliant')"), offset: z.number().optional().describe("Pagination offset. Default: 0"), limit: z.number().optional().default(20).describe("Maximum number of results to return"), q: z.string().optional().describe("Free text search query"), }); // Schema for get_resource_details export const GetCloudResourceDetailsSchema = z.object({ provider: ProviderTypeEnum.describe("Cloud provider (aws, gcp, azure, linode)"), resource_type: z.string().describe("Type of cloud resource (to be fetched from get_cloud_resource_facet_values or from list_cloud_resources)"), resource_id: z.string().describe("ID of the cloud resource"), }); // Schema for get_facets export const GetCloudResourceFacetsSchema = z.object({ provider: ProviderTypeEnum.describe("Cloud provider (aws, gcp, azure, linode)"), }); // Schema for get_cloud_resource_facet_values export const GetCloudResourceFacetValuesSchema = z.object({ provider: ProviderTypeEnum.describe("Cloud provider (aws, gcp, azure, linode)"), facet_id: z.string().describe("ID of the facet"), }); /** * List cloud resources for a specific provider. */ export async function listCloudResources( client: RadSecurityClient, provider: ProviderType, filters?: string, offset?: number, limit: number = 20, q?: string ): Promise<any> { const params: Record<string, any> = { limit }; if (filters) { params.filter = filters; } if (offset !== undefined) { params.offset = offset; } if (q) { params.q = q; } return client.makeRequest( `/accounts/${client.getAccountId()}/cloud-inventory/v1/${provider}`, params ); } /** * Get details for a specific cloud resource. */ export async function getCloudResourceDetails( client: RadSecurityClient, provider: ProviderType, resource_type: string, resource_id: string ): Promise<any> { return client.makeRequest( `/accounts/${client.getAccountId()}/cloud-inventory/v1/${provider}/${resource_type}/${resource_id}` ); } /** * Get available facets for a provider. */ export async function getCloudResourceFacets( client: RadSecurityClient, provider: ProviderType ): Promise<any> { return client.makeRequest( `/accounts/${client.getAccountId()}/cloud-inventory/v1/${provider}/facets` ); } /** * Get values for a specific facet. */ export async function getCloudResourceFacetValues( client: RadSecurityClient, provider: ProviderType, facet_id: string ): Promise<any> { return client.makeRequest( `/accounts/${client.getAccountId()}/cloud-inventory/v1/${provider}/facets/${facet_id}` ); }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rad-security/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server