get_significant_change_guidance
Aggregate FedRAMP guidance and FRMR references for Significant Change requirements to support compliance analysis and documentation.
Instructions
Aggregate markdown sections and FRMR references related to Significant Change.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Implementation Reference
- MCP tool definition including the handler (execute function) that invokes the core getSignificantChangeGuidance logic with input limit.
export const significantChangeTool: ToolDefinition< typeof schema, ReturnType<typeof getSignificantChangeGuidance> > = { name: "get_significant_change_guidance", description: "Aggregate markdown sections and FRMR references related to Significant Change.", schema, execute: async (input) => { return getSignificantChangeGuidance(input.limit ?? 50); }, }; - Zod input schema defining the limit parameter for the tool.
const schema = z.object({ limit: z.number().int().min(1).max(100).default(50), }); - src/tools/register.ts:24-53 (registration)Registers the significantChangeTool (imported from ./get_significant_change_guidance.js) with the MCP server via registerToolDefs.
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/search.ts:215-240 (helper)Core implementation function that finds and aggregates significant change sources from markdown and FRMR documents, interleaving results up to the limit.
export function getSignificantChangeGuidance( limit: number, ): { sources: SignificantChangeSource[] } { const markdown = findMarkdownSignificantSections(limit); const frmr = findFrmrSignificantReferences(limit); const sources: SignificantChangeSource[] = []; let markdownIndex = 0; let frmrIndex = 0; while ( sources.length < limit && (frmrIndex < frmr.length || markdownIndex < markdown.length) ) { if (frmrIndex < frmr.length) { sources.push(frmr[frmrIndex]); frmrIndex += 1; } if (sources.length >= limit) { break; } if (markdownIndex < markdown.length) { sources.push(markdown[markdownIndex]); markdownIndex += 1; } } return { sources }; }