Skip to main content
Glama

get_frmr_document

Retrieve FedRAMP FRMR documents to access KSI categories, MAS requirements, and compliance content with metadata and summaries for security analysis.

Instructions

Retrieve a FRMR document with metadata, raw JSON, and summary. Use this to get KSI categories (like KSI-IAM, KSI-CNA), MAS requirements, or other FRMR content. First use list_frmr_documents to find available documents, then use this tool with the path. For KSI, use path 'FRMR.KSI.key-security-indicators.json'.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeNo
pathYes

Implementation Reference

  • The execute handler for the 'get_frmr_document' tool. It calls getFrmrDocument with the input type and path, then returns meta, raw_json, and summary.
    execute: async (input) => { const { meta, rawJson, summary } = getFrmrDocument( input.type as never, input.path, ); return { meta, raw_json: rawJson, summary, }; },
  • Zod input schema for the tool: optional 'type' enum and required 'path' string.
    const schema = z.object({ type: z .enum(["KSI", "MAS", "VDR", "SCN", "FRD", "ADS"]) .optional(), path: z.string(), });
  • The registerTools function registers getFrmrDocumentTool among other tools to 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 getFrmrDocument that resolves the document by path, performs validation, constructs metadata and summary, and returns the structured response used by the tool handler.
    export function getFrmrDocument( type: FrmrDocumentType | undefined, path: string, ): { meta: FrmrDocumentMeta; rawJson: string; summary: FrmrSummary } { const doc = resolveFrmrDocument(path); if (!doc) { throw createError({ code: "NOT_FOUND", message: `FRMR document not found at path ${path}`, }); } if (type && doc.type !== type) { throw createError({ code: "BAD_REQUEST", message: `Requested type ${type} does not match document type ${doc.type}`, }); } const { rawText, topLevelKeys } = doc; const meta: FrmrDocumentMeta = { type: doc.type, title: doc.title, version: doc.version, published: doc.published, path: doc.path, idHint: doc.idHint, itemCount: doc.itemCount, }; const summary: FrmrSummary = { countItems: doc.itemCount, topLevelKeys, }; return { meta, rawJson: rawText, summary }; }

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