Skip to main content
Glama

list_security_findings

Identify and filter security findings in Kubernetes and cloud environments by type, severity, source, and status, enabling targeted risk assessment and remediation actions.

Instructions

List security findings with optional filtering by types, severities, sources, and status

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
from_timeNoFrom time in RFC3339 or relative format, i.e. now-7dnow-7d
limitNoNumber of findings to return
severitiesNoList of severity levels to filter by
source_kindsNoList of source kinds to filter by. i.e. Deployment,Pod,Container,Node,etc.
source_namesNoList of source names to filter by
source_namespacesNoList of source namespaces to filter by
source_typesNoList of source types to filter by
statusNoStatus of the findings to filter byopen
to_timeNoTo time in RFC3339 or relative format, i.e. now-7d
typesNoList of finding types to filter by

Implementation Reference

  • Core handler function that executes the list_security_findings tool logic by constructing filters and querying the RAD Security API for unified findings.
    export async function listFindings( client: RadSecurityClient, limit: number = 20, types?: string[], severities?: string[], source_types?: string[], source_kinds?: string[], source_names?: string[], source_namespaces?: string[], status: string = "open", from_time: string = "now-7d", to_time?: string ): Promise<any> { const filterParam = makeFilter({ type: types, severity: severities, source_type: source_types, source_kind: source_kinds, source_name: source_names, source_namespace: source_namespaces, status: status, }); const params: Record<string, any> = { limit, filters: filterParam, from: from_time, }; if (to_time) { params.to = to_time; } const response = await client.makeRequest( `/accounts/${client.getAccountId()}/unified_findings/groups`, params ); return { size: response.length, entries: response, has_more: response.length === limit, }; }
  • Zod input schema defining parameters for filtering and paginating security findings.
    export const listFindingsSchema = z.object({ limit: z.number().optional().default(20).describe("Number of findings to return"), types: z.array(z.enum(types)).optional().describe("List of finding types to filter by"), severities: z.array(z.enum(severities)).optional().describe("List of severity levels to filter by"), source_kinds: z.array(z.string()).optional().describe("List of source kinds to filter by. i.e. Deployment,Pod,Container,Node,etc."), source_types: z.array(z.enum(source_types)).optional().describe("List of source types to filter by"), source_names: z.array(z.string()).optional().describe("List of source names to filter by"), source_namespaces: z.array(z.string()).optional().describe("List of source namespaces to filter by"), status: z.enum(statuses).optional().default("open").describe("Status of the findings to filter by"), from_time: z.string().optional().default("now-7d").describe("From time in RFC3339 or relative format, i.e. now-7d"), to_time: z.string().optional().describe("To time in RFC3339 or relative format, i.e. now-7d"), });
  • src/index.ts:283-287 (registration)
    Tool registration in the listTools response, including name, description, and schema reference.
    { name: "list_security_findings", description: "List security findings with optional filtering by types, severities, sources, and status", inputSchema: zodToJsonSchema(findings.listFindingsSchema), },
  • Dispatcher handler in the CallToolRequest switch statement that parses arguments and delegates to the core listFindings function.
    case "list_security_findings": { const args = findings.listFindingsSchema.parse(request.params.arguments); const response = await findings.listFindings( client, args.limit, args.types, args.severities, args.source_types, args.source_kinds, args.source_names, args.source_namespaces, args.status, args.from_time, args.to_time ); return { content: [{ type: "text", text: JSON.stringify(response, null, 2) }], };
  • Helper utility function to construct comma-separated filter strings from parameter objects used in the listFindings API call.
    function makeFilter(filterObj: Record<string, string | string[] | undefined>): string { const filters: string[] = []; for (const [key, value] of Object.entries(filterObj)) { if (!value) continue; if (Array.isArray(value)) { for (const item of value) { if (item) { filters.push(`${key}:${item}`); } } } else { filters.push(`${key}:${value}`); } } return filters.join(","); }

Latest Blog Posts

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