Skip to main content
Glama

get_evidence_examples

Find automation-friendly evidence collection sources for FedRAMP KSI compliance, including APIs, CLI commands, and artifacts.

Instructions

Get suggested evidence examples for KSI compliance. Returns automation-friendly evidence collection sources (APIs, CLI commands, artifacts) for each KSI. NOTE: These are community suggestions, not official FedRAMP guidance.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
themeNoFilter by KSI theme (e.g., IAM, CNA, AFR)
idNoGet evidence for a specific KSI item ID
includeRetiredNoInclude retired KSIs in results (default: true for backwards compatibility)

Implementation Reference

  • The main handler implementation for the get_evidence_examples tool, including the execute function that loads data, filters KSIs, and constructs the response.
    export const getEvidenceExamplesTool: ToolDefinition< typeof schema, EvidenceExamplesResult > = { name: "get_evidence_examples", description: "Get suggested evidence examples for KSI compliance. Returns automation-friendly evidence collection sources (APIs, CLI commands, artifacts) for each KSI. NOTE: These are community suggestions, not official FedRAMP guidance.", schema, execute: async (input) => { const evidenceData = loadEvidenceExamples(); const ksiItems = getKsiItems(); const disclaimer = evidenceData?.disclaimer ?? "These evidence examples are community suggestions to help with FedRAMP compliance automation. They are NOT official FedRAMP guidance. Always verify requirements with official FedRAMP documentation at https://fedramp.gov"; // Filter KSI items based on input let filtered: KsiItem[] = ksiItems; if (input.theme) { const themeLower = input.theme.toLowerCase(); filtered = filtered.filter( (item) => item.category?.toLowerCase() === themeLower, ); } if (input.id) { const idUpper = input.id.toUpperCase(); filtered = filtered.filter((item) => item.id.toUpperCase() === idUpper); } // Build example items with evidence examples let items: EvidenceExampleItem[] = filtered.map((ksi) => { // Get evidence examples for this KSI from our data file const evidenceExample = evidenceData?.examples[ksi.id]; return { ksiId: ksi.id, ksiName: ksi.title ?? evidenceExample?.name ?? ksi.id, ksiStatement: ksi.statement ?? ksi.description, theme: ksi.category ?? ksi.theme ?? "", impact: ksi.impact, evidence: evidenceExample?.evidence ?? [], retired: evidenceExample?.retired, }; }); // Filter out retired KSIs if requested if (input.includeRetired === false) { items = items.filter((item) => !item.retired); } // Get unique themes const themes = [...new Set(items.map((item) => item.theme).filter(Boolean))].sort(); return { disclaimer, total: items.length, items, themes, }; }, };
  • Zod schema defining the input parameters for the tool: theme (optional filter), id (optional specific KSI), includeRetired (boolean, default true).
    const schema = z.object({ theme: z .string() .optional() .describe("Filter by KSI theme (e.g., IAM, CNA, AFR)"), id: z.string().optional().describe("Get evidence for a specific KSI item ID"), includeRetired: z .boolean() .optional() .default(true) .describe("Include retired KSIs in results (default: true for backwards compatibility)"), });
  • Import of the getEvidenceExamplesTool.
    import { getEvidenceExamplesTool } from "./get_evidence_examples.js";
  • Registration of all tools including getEvidenceExamplesTool in the registerTools function 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, ]);
  • Helper function to load the evidence-examples.json data file used by the tool.
    function loadEvidenceExamples(): EvidenceExamplesData | null { try { // Look for evidence-examples.json in data directory (relative to package root) const dataPath = join(__dirname, "..", "..", "data", "evidence-examples.json"); const content = readFileSync(dataPath, "utf-8"); return JSON.parse(content) as EvidenceExamplesData; } catch { // If file doesn't exist or can't be parsed, return null return null; } }

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/ethanolivertroy/fedramp-docs-mcp'

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