list_controls
Retrieve flattened control mappings across FedRAMP security control sets to analyze compliance requirements and regulatory relationships.
Instructions
Return flattened control mappings across FRMR sets.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| family | No | ||
| control | No | ||
| source | No |
Implementation Reference
- src/tools/list_controls.ts:25-32 (handler)The execute handler function for the 'list_controls' tool, which invokes listControlMappings with the input parameters and returns the mappings.execute: async (input) => { const mappings = listControlMappings({ family: input.family, control: input.control, source: input.source, }); return { mappings }; },
- src/tools/list_controls.ts:6-16 (schema)Zod schema defining the input parameters for the list_controls tool: optional family, control, and source enum.const schema = z.object({ family: z.string().optional(), control: z.string().optional(), source: z .enum([ "KSI", "MAS", "VDR", "SCN", "FRD", "ADS", "CCM", "FSI", "ICP", "PVA", "RSC", "UCM", "unknown", ]) .optional(), });
- src/tools/register.ts:24-52 (registration)Registration of all tools including listControlsTool in the registerTools function, which is called by the MCP server.export function registerTools(server: McpServer): void { registerToolDefs(server, [ // Document discovery listFrmrDocumentsTool, getFrmrDocumentTool, listVersionsTool, // KSI tools listKsiTool, getKsiTool, filterByImpactTool, getThemeSummaryTool, getEvidenceExamplesTool, // Control mapping tools listControlsTool, getControlRequirementsTool, analyzeControlCoverageTool, // Search & lookup tools searchMarkdownTool, readMarkdownTool, searchDefinitionsTool, getRequirementByIdTool, // Analysis tools diffFrmrTool, grepControlsTool, significantChangeTool, // System tools healthCheckTool, updateRepositoryTool, ]);
- src/frmr.ts:125-153 (helper)Core helper function that filters and returns control mappings based on family, control, and source options.export function listControlMappings( options: ListControlOptions, ): ControlMapping[] { return getControlMappings().filter((mapping) => { if (options.source && mapping.source !== options.source) { return false; } if (options.family) { const family = mapping.control.split("-")[0]; if (!family.startsWith(options.family.toUpperCase())) { return false; } } if (options.control) { const expected = options.control.toUpperCase(); const controlId = mapping.control.toUpperCase(); if ( !( controlId === expected || controlId.startsWith(`${expected}-`) || expected.startsWith(controlId) ) ) { return false; } } return true; }); }