{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T17:39:57.129Z","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal","markdownUrl":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal.md","server":{"slug":"dfkunstler-mcp-server-for-oscal","name":"MCP Server for OSCAL","registryName":"io.github.dfkunstler/mcp-server-for-oscal","description":"AI agent tools for Open Security Controls Assessment Language (OSCAL)","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"mcp-server-for-oscal","type":"pypi","identifier":"mcp-server-for-oscal","withdrawn":false,"url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal","version":"0.7.1","transport":"stdio","scoredAt":"2026-11-05T05:14:42.730Z"},"score":{"total":94,"tier":"high trust","status":"scored","weekDelta":19,"history":[{"date":"2026-11-05","total":94},{"date":"2026-11-04","total":79},{"date":"2026-11-03","total":79},{"date":"2026-11-02","total":79},{"date":"2026-11-01","total":79},{"date":"2026-10-31","total":79},{"date":"2026-10-30","total":76},{"date":"2026-10-29","total":75},{"date":"2026-10-28","total":90},{"date":"2026-10-27","total":90},{"date":"2026-10-26","total":74},{"date":"2026-10-25","total":89},{"date":"2026-10-24","total":73},{"date":"2026-10-23","total":70},{"date":"2026-10-22","total":69},{"date":"2026-10-21","total":84},{"date":"2026-10-20","total":83},{"date":"2026-10-19","total":83},{"date":"2026-10-18","total":82},{"date":"2026-10-17","total":67},{"date":"2026-10-16","total":82},{"date":"2026-10-15","total":69},{"date":"2026-10-14","total":83},{"date":"2026-10-13","total":34},{"date":"2026-10-12","total":38},{"date":"2026-10-04","total":64},{"date":"2026-10-03","total":63},{"date":"2026-10-02","total":63},{"date":"2026-10-01","total":62},{"date":"2026-09-30","total":62}]},"categories":[{"name":"Supply Chain Security","score":100,"verdict":"partial","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","Runs hatchling.build at install time, a recognised build step with no custom scripting around it.","1 of 53 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.allowlisted","args":{"tool":"hatchling.build","hooks":"build_backend"}},{"code":"dephealth.assessed","args":{"deps":"53","unhealthy":"1"}}]},{"name":"Provenance & Transparency","score":97,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Cryptographically verified build provenance (signed, bound to dfkunstler/mcp-server-for-oscal).","Clear OSI-approved license (Apache-2.0).","Actively maintained (last published 9 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.verified","args":{"repo":"dfkunstler/mcp-server-for-oscal"}},{"code":"license.osi","args":{"spdx":"Apache-2.0"}},{"code":"maintenance.recent","args":{"age_days":"9"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":73,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 5582 tokens (~121/item across 46 items; 46 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"121","items":"46","tools":"46","tokens":"5582","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":94,"verdict":"fail","reasons":["Stability check failed: the tool surface changed between 0.5.2 and 0.7.1: 0 tool removals, 5 breaking changes, 6 additions."],"codes":[{"code":"stability.version_churn","args":{"to":"0.7.1","days":"35","from":"0.5.2","added":"6","breaks":"5","removed":"0"}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description.","Structured output schemas are declared (9% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}},{"code":"toolquality.output_present","args":{"pct":"9"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 46 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 47 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"46"}},{"code":"toolsafety.manipulation_clean","args":{"units":"47","judged":"47"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a current MCP spec version (2026-07-28)."],"codes":[{"code":"protocol.current","args":{"version":"2026-07-28"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"mcp-server-for-oscal","type":"pypi","identifier":"mcp-server-for-oscal","withdrawn":false,"score":94,"current":true,"url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal","markdownUrl":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal.md"}],"facts":[{"label":"Registry","value":"pypi"},{"label":"Package","value":"mcp-server-for-oscal"},{"label":"Version","value":"0.7.1"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"list_oscal_models","title":null,"description":"List the OSCAL model names, each with description, layer, formal and short names, and\nrelease status.\n\nUse when you need a valid `model_name` for get_oscal_schema or a `model` for the Metaschema\ntools.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":61},{"name":"get_oscal_schema","title":null,"description":"Return the JSON schema or XML Schema (XSD) of one OSCAL model as text.\n\nUse when you need the structure of an OSCAL model: its properties, types, and required\nfields.","inputs":[{"name":"model_name","type":"string","required":true,"description":"OSCAL model name from list_oscal_models, or \"complete\" for all models (very large)."},{"name":"schema_type","type":"string","required":false,"description":"\"json\" returns the JSON schema as JSON text; \"xsd\" returns the XML Schema."}],"outputs":[{"name":"result","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":106},{"name":"get_allowed_values","title":null,"description":"Return the values OSCAL Metaschema `allowed-values` constraints permit at a target, with\n`allow-other`, `namespace` and `conditions` for predicates, and source file and line. Use\nwhen the JSON schema does not list the values; use get_constraints for other constraint\ntypes. Results are paged within a response budget, and an empty page lists\n`suggested-targets`.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100. A page may hold fewer to fit the response budget."},{"name":"model","type":"string","required":true,"description":"OSCAL model name from list_oscal_models, e.g. \"catalog\"."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"target","type":"string","required":true,"description":"Target_Selector: a Metaschema definition name, optionally followed by \"/\" (child) or \"//\" (descendant) and instance names, e.g. \"defined-component/prop/@name\". No predicates, unions, or whitespace."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":208},{"name":"get_constraints","title":null,"description":"List the OSCAL Metaschema constraints at a target (`allowed-values`, `matches`, `index`,\n`index-has-key`, `is-unique`, `has-cardinality`, `expect`) with type-specific details and\nsource file and line; a bare definition name returns every constraint declared on it and\nits local definitions. Use when you need rules the JSON schema does not express; use\nget_allowed_values for the values themselves. Results are paged within a response\nbudget.","inputs":[{"name":"constraint_types","type":null,"required":false,"description":"Constraint types to keep. Omit or pass an empty list for all types."},{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100. A page may hold fewer to fit the response budget."},{"name":"model","type":"string","required":true,"description":"OSCAL model name from list_oscal_models, e.g. \"catalog\"."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"target","type":"string","required":true,"description":"Target_Selector: a Metaschema definition name, optionally followed by \"/\" (child) or \"//\" (descendant) and instance names, e.g. \"defined-component/prop/@name\". No predicates, unions, or whitespace."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":245},{"name":"find_references_to","title":null,"description":"Find the fields, flags, props, and links that OSCAL Metaschema `index-has-key`\nconstraints require to reference an assembly by key (UUID or ID), with the matching\n`index`, source file and line for both, and `cross-document`. Use when you need what must\npoint to a component, party, location, or resource, including prop and link references a\nsearch for UUID fields misses. Results are paged within a response budget.","inputs":[{"name":"assembly","type":"string","required":true,"description":"Instance or definition name of the referenced assembly, matched exactly, e.g. \"component\", \"party\", \"resource\", or \"system-component\"."},{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100. A page may hold fewer to fit the response budget."},{"name":"model","type":null,"required":false,"description":"OSCAL model name from list_oscal_models, e.g. \"system-security-plan\", to keep only references declared in that model. Indexes always resolve across all models. Omit for all models."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":226},{"name":"get_definition","title":null,"description":"Return every OSCAL Metaschema definition with a given name, with formal name,\ndescription, remarks, flags, model children, constraint summaries, and source file and\nline. Use when you need documentation or structure that the generated JSON and XML schemas\nshorten or drop. Results are paged within a response budget, and long remarks are marked\n`truncated`.","inputs":[{"name":"kind","type":null,"required":false,"description":"Definition kind to keep. Omit for all kinds."},{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100. A page may hold fewer to fit the response budget."},{"name":"model","type":null,"required":false,"description":"OSCAL model name from list_oscal_models, e.g. \"catalog\". Omit for all models."},{"name":"name","type":"string","required":true,"description":"Metaschema definition name, 1-200 characters, matched exactly (case-sensitive), e.g. \"defined-component\" or \"uuid\"."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":200},{"name":"get_metaschema_source","title":null,"description":"Read a line range of a bundled OSCAL Metaschema source file verbatim, or list the files\nwith line counts when `file` is omitted. Use when checking a `source-file` and `line` from\nget_definition, get_allowed_values, get_constraints, or find_references_to. A response may\nhold fewer lines to fit the response budget; continue from `end-line` + 1 while\n`has-more` is true.","inputs":[{"name":"file","type":null,"required":false,"description":"Bundle-relative path exactly as listed, e.g. \"oscal_component_metaschema.xml\". Omit to list the files."},{"name":"line_count","type":"integer","required":false,"description":"Maximum lines to return, 1-500."},{"name":"start_line","type":"integer","required":false,"description":"1-based first line to return."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":166},{"name":"list_oscal_resources","title":null,"description":"List OSCAL community resources (tools, content, articles, talks) from the awesome-oscal\nlist, each with `category` and markdown `text`. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":77},{"name":"query_component_definition","title":null,"description":"Return OSCAL Components from loaded Component Definitions as OSCAL JSON, or one\nCapability when a by_uuid or by_title query matches a Capability. Use when you need\ncomponent details: call it directly with by_title or by_type when you know the name or\ntype, else find UUIDs and titles first with list_components; use list_capabilities or\nget_capability only for Component Definitions that contain capabilities. Results are paged.","inputs":[{"name":"component_definition_filter","type":null,"required":false,"description":"UUID or exact title (case-insensitive) of one Component Definition to search. Omit to search all."},{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"query_type","type":"string","required":false,"description":"\"all\" (paged, large without a filter), \"by_uuid\", \"by_title\" (title, then property value), or \"by_type\" (Component type). by_uuid and by_title return a matching Capability first."},{"name":"query_value","type":null,"required":false,"description":"UUID, title, or Component type to match. Required unless query_type is \"all\"."},{"name":"return_format","type":"string","required":false,"description":"Response format. Only \"raw\" (OSCAL JSON) is supported."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":253},{"name":"list_component_definitions","title":null,"description":"List loaded Component Definitions with UUID, title, component count, and size. Use when\npicking a `component_definition_filter` for query_component_definition. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":76},{"name":"list_components","title":null,"description":"List loaded Components with UUID, title, and parent Component Definition. Use when\npicking a `query_value` for query_component_definition. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":71},{"name":"list_capabilities","title":null,"description":"List loaded Capabilities with UUID, name, and parent Component Definition. Use when\nworking with Component Definitions that contain capabilities; the list is empty when none\ndo. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":78},{"name":"get_capability","title":null,"description":"Get one Capability by UUID as OSCAL JSON, or null when no Capability has that UUID. Use\nwhen working with Component Definitions that contain capabilities.","inputs":[{"name":"uuid","type":"string","required":true,"description":"UUID of the Capability, from list_capabilities."}],"outputs":[{"name":"result","type":null,"required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":55},{"name":"validate_oscal_content","title":null,"description":"Validate OSCAL JSON text and return per-level results for JSON syntax, JSON Schema, the\nOSCAL model, and oscal-cli (skipped when not installed). Later levels are skipped when the\nJSON does not parse.","inputs":[{"name":"content","type":"string","required":true,"description":"OSCAL JSON document as a string."},{"name":"model_type","type":null,"required":false,"description":"OSCAL model name from list_oscal_models, e.g. \"catalog\". Omit to detect it from the document's root key."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":103},{"name":"validate_oscal_file","title":null,"description":"Validate an OSCAL JSON file and return per-level results for JSON syntax, JSON Schema,\nthe OSCAL model, and oscal-cli (skipped when not installed). Use when the document is in a\nfile; for JSON text use validate_oscal_content.","inputs":[{"name":"file_uri","type":"string","required":true,"description":"Path or URI of an OSCAL JSON file. Remote URIs are rejected unless the server operator enables remote URIs."},{"name":"model_type","type":null,"required":false,"description":"OSCAL model name from list_oscal_models, e.g. \"catalog\". Omit to detect it from the document's root key."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":127},{"name":"query_catalog","title":null,"description":"Return loaded OSCAL Catalogs with metadata and `childTypeCounts`. For controls and groups,\nuse list_catalog_controls or list_catalog_groups, then get_child_element.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"query_type","type":"string","required":false,"description":"\"all\" (paged), \"by_uuid\", or \"by_title\" (exact, then full-text)."},{"name":"query_value","type":null,"required":false,"description":"UUID or title to match. Required for by_uuid and by_title."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":119},{"name":"list_catalogs","title":null,"description":"List loaded OSCAL Catalogs with UUID, title, child count, and size. Use when picking a\n`query_value` for query_catalog. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":74},{"name":"query_ssp","title":null,"description":"Return loaded OSCAL SSPs with metadata and `childTypeCounts`. For child elements, use\nlist_ssp_control_implementations or list_ssp_system_components, then get_child_element.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"query_type","type":"string","required":false,"description":"\"all\" (paged), \"by_uuid\", or \"by_title\" (exact, then full-text)."},{"name":"query_value","type":null,"required":false,"description":"UUID or title to match. Required for by_uuid and by_title."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":126},{"name":"list_ssps","title":null,"description":"List loaded OSCAL System Security Plans with UUID, title, child count, and size. Use when\npicking a `query_value` for query_ssp. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":77},{"name":"query_profile","title":null,"description":"Return loaded OSCAL Profiles with metadata and `childTypeCounts`. For child elements, use\nlist_profile_imports or list_profile_modify, then get_child_element.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"query_type","type":"string","required":false,"description":"\"all\" (paged), \"by_uuid\", or \"by_title\" (exact, then full-text)."},{"name":"query_value","type":null,"required":false,"description":"UUID or title to match. Required for by_uuid and by_title."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":119},{"name":"list_profiles","title":null,"description":"List loaded OSCAL Profiles with UUID, title, child count, and size. Use when picking a\n`query_value` for query_profile. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":72},{"name":"query_assessment_plan","title":null,"description":"Return loaded OSCAL Assessment Plans with `childTypeCounts`. For child elements, use list_assessment_plan_tasks or list_assessment_plan_activities, then\nget_child_element.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"query_type","type":"string","required":false,"description":"\"all\" (paged), \"by_uuid\", or \"by_title\" (exact, then full-text)."},{"name":"query_value","type":null,"required":false,"description":"UUID or title to match. Required for by_uuid and by_title."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":124},{"name":"list_assessment_plans","title":null,"description":"List loaded OSCAL Assessment Plans with UUID, title, child count, and size. Use when\npicking a `query_value` for query_assessment_plan. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":79},{"name":"query_assessment_results","title":null,"description":"Return loaded OSCAL Assessment Results with `childTypeCounts`. For child elements, use list_assessment_results_results or list_assessment_results_findings, then\nget_child_element.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"query_type","type":"string","required":false,"description":"\"all\" (paged), \"by_uuid\", or \"by_title\" (exact, then full-text)."},{"name":"query_value","type":null,"required":false,"description":"UUID or title to match. Required for by_uuid and by_title."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":124},{"name":"list_assessment_results","title":null,"description":"List loaded OSCAL Assessment Results with UUID, title, child count, and size. Use when\npicking a `query_value` for query_assessment_results. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":78},{"name":"query_poam","title":null,"description":"Return loaded OSCAL Plans of Action and Milestones with metadata and `childTypeCounts`.\nFor POA&M items, use list_poam_items, then get_child_element.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"query_type","type":"string","required":false,"description":"\"all\" (paged), \"by_uuid\", or \"by_title\" (exact, then full-text)."},{"name":"query_value","type":null,"required":false,"description":"UUID or title to match. Required for by_uuid and by_title."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":122},{"name":"list_poams","title":null,"description":"List loaded OSCAL Plans of Action and Milestones with UUID, title, child count, and size.\nUse when picking a `query_value` for query_poam. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":78},{"name":"query_mapping_collection","title":null,"description":"Return loaded OSCAL Mapping Collections with metadata and `childTypeCounts`. For\nmappings, use list_mapping_collection_mappings, then get_child_element.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"query_type","type":"string","required":false,"description":"\"all\" (paged), \"by_uuid\", or \"by_title\" (exact, then full-text)."},{"name":"query_value","type":null,"required":false,"description":"UUID or title to match. Required for by_uuid and by_title."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":118},{"name":"list_mapping_collections","title":null,"description":"List loaded OSCAL Mapping Collections with UUID, title, child count, and size. Use when\npicking a `query_value` for query_mapping_collection. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":77},{"name":"text_search_oscal","title":null,"description":"Search loaded OSCAL documents and child elements, including control prose, ranked by\nrelevance. Pass a child hit's entity ID and `parentDocumentUuid` to get_child_element.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100. A page may hold fewer to fit the response budget."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"oscal_model_type","type":null,"required":false,"description":"OSCAL model name from list_oscal_models, e.g. \"catalog\". Omit for all models."},{"name":"query_text","type":"string","required":true,"description":"Full-text search terms."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":129},{"name":"list_catalog_controls","title":null,"description":"List controls in loaded OSCAL Catalogs with token ID (e.g. ac-1), title, and parent\ndocument. Get a control's OSCAL JSON with get_child_element. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":104},{"name":"list_catalog_groups","title":null,"description":"List control groups (families) in loaded OSCAL Catalogs with token ID, title, and parent\ndocument. Get a group's OSCAL JSON with get_child_element. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":101},{"name":"list_ssp_control_implementations","title":null,"description":"List the control-implementation element of loaded OSCAL SSPs, one per SSP. Get\nits OSCAL JSON with get_child_element. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":98},{"name":"list_ssp_system_components","title":null,"description":"List system components in loaded OSCAL SSPs with UUID, title, and parent document. Get\na component's OSCAL JSON with get_child_element. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":99},{"name":"list_profile_imports","title":null,"description":"List imports in loaded OSCAL Profiles, with positional IDs (import-0, import-1). Get\nan import's OSCAL JSON with get_child_element. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":100},{"name":"list_profile_modify","title":null,"description":"List the modify element (control tailoring) of loaded OSCAL Profiles, one per profile.\nGet its OSCAL JSON with get_child_element. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":94},{"name":"list_assessment_plan_tasks","title":null,"description":"List tasks in loaded OSCAL Assessment Plans with UUID, title, and parent document. Get\na task's OSCAL JSON with get_child_element. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":98},{"name":"list_assessment_plan_activities","title":null,"description":"List activities in loaded OSCAL Assessment Plans with UUID, title, and parent document.\nGet an activity's OSCAL JSON with get_child_element. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":98},{"name":"list_assessment_results_results","title":null,"description":"List results in loaded OSCAL Assessment Results with UUID, title, and parent document.\nGet a result's OSCAL JSON with get_child_element. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":97},{"name":"list_assessment_results_findings","title":null,"description":"List findings in loaded OSCAL Assessment Results with UUID, title, and parent document.\nGet a finding's OSCAL JSON with get_child_element. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":98},{"name":"list_poam_items","title":null,"description":"List POA&M items in loaded OSCAL POA&Ms with ID, title, and parent document. Get\nan item's OSCAL JSON with get_child_element. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":101},{"name":"list_mapping_collection_mappings","title":null,"description":"List mappings in loaded OSCAL Mapping Collections with UUID, title, and parent document.\nGet a mapping's OSCAL JSON with get_child_element. Results are paged.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":97},{"name":"get_child_element","title":null,"description":"Get one child element by UUID or token ID, with its OSCAL JSON in `raw_json`. If the\nresult is an `ambiguous_element_id` error, retry with parent_doc_uuid.","inputs":[{"name":"element_id","type":"string","required":true,"description":"UUID or token ID (e.g. ac-1) of the child element. Token IDs are unique only within one document."},{"name":"parent_doc_uuid","type":null,"required":false,"description":"UUID of one parent document to scope results to. Omit for all documents."}],"outputs":[{"name":"result","type":null,"required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":104},{"name":"query_oscal_documentation","title":null,"description":"Search OSCAL documentation (Knowledge Base if configured, plus local docs) and return\npaged passages. Use when a schema lacks the answer; for a model property try\nget_oscal_schema. Pass a hit's `docId` to get_oscal_documentation for the full page.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum items per page, 1-100. A page may hold fewer to fit the response budget."},{"name":"offset","type":"integer","required":false,"description":"Zero-based index of the first item."},{"name":"query","type":"string","required":true,"description":"Question or search terms about OSCAL."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":124},{"name":"get_oscal_documentation","title":null,"description":"Read an OSCAL documentation page by `docId` as a verbatim line range. Use when a\nquery_oscal_documentation snippet is not enough. A response may hold fewer lines to fit\nthe response budget; continue from `end-line` + 1 while `has-more` is true.","inputs":[{"name":"doc_id","type":"string","required":true,"description":"docId from a query_oscal_documentation result."},{"name":"line_count","type":"integer","required":false,"description":"Maximum lines to return, 1-500."},{"name":"start_line","type":"integer","required":false,"description":"1-based first line to return."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":123},{"name":"about","title":null,"description":"Return server metadata: package version, keywords, bundled OSCAL version, and the number of documents loaded from OSCAL_DOCUMENTS_DIR.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":34}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T05:14:42.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"verified","label":"Verified","reason":"verified","reasonLabel":"Verified","discovery":"attestation_endpoint","discoveryLabel":"Registry attestation endpoint","sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[{"hook":"build_backend","tier":"allowlisted"}],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":53,"partial":false,"deprecated":null,"stale":null,"noRepo":1}},"mismatches":[],"changelog":{"trackingSince":"2026-09-30","recent":[{"id":"chg_01a1aa21-78da-7da5-b691-eb2cd45dc8ca","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a1aa21-78da-7da5-b691-eb2cd45dc8ca"},{"id":"chg_01a1aa21-78dc-7a14-b831-9bd2645bbca9","kind":"score.total_changed","summary":"Trust score (79 → 94)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a1aa21-78dc-7a14-b831-9bd2645bbca9"},{"id":"chg_01a1908d-74d2-7de8-9adf-b03426b5598c","kind":"advisory.resolved","summary":"CVE-2026-59951 no longer affects this package","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a1908d-74d2-7de8-9adf-b03426b5598c"},{"id":"chg_01a1908d-74d5-75e2-8648-c1ecf44a4a25","kind":"check.verdict","summary":"Known CVEs (fail → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a1908d-74d5-75e2-8648-c1ecf44a4a25"},{"id":"chg_01a1908d-74d6-7227-92c8-5f90bd983de5","kind":"advisory.resolved","summary":"CVE-2026-116685 no longer affects this package","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a1908d-74d6-7227-92c8-5f90bd983de5"},{"id":"chg_01a1908d-74d7-74da-a292-11a312805fa0","kind":"advisory.resolved","summary":"CVE-2026-116684 no longer affects this package","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a1908d-74d7-74da-a292-11a312805fa0"},{"id":"chg_01a1908d-74d8-725f-a4d9-f167025ee344","kind":"advisory.resolved","summary":"CVE-2026-116686 no longer affects this package","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a1908d-74d8-725f-a4d9-f167025ee344"},{"id":"chg_01a1908d-74d8-7aa1-b85a-2f45104eb9ca","kind":"score.total_changed","summary":"Trust score (76 → 79)","materiality":"functional","direction":"improvement","scoreDelta":3,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a1908d-74d8-7aa1-b85a-2f45104eb9ca"},{"id":"chg_01a18b68-5dcd-7bdc-8c83-e2094685c9c4","kind":"score.total_changed","summary":"Trust score (75 → 76)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a18b68-5dcd-7bdc-8c83-e2094685c9c4"},{"id":"chg_01a18659-8750-7304-8ca6-ebc8df7e6d97","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a18659-8750-7304-8ca6-ebc8df7e6d97"},{"id":"chg_01a18659-8751-7920-a1af-3c4d88c0e5c7","kind":"score.total_changed","summary":"Trust score (90 → 75)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a18659-8751-7920-a1af-3c4d88c0e5c7"},{"id":"chg_01a18084-f597-7e74-8e54-fc753cf8a7ed","kind":"advisory.identified","summary":"CVE-2026-116685 affects this package (high)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a18084-f597-7e74-8e54-fc753cf8a7ed"},{"id":"chg_01a18084-f59a-7682-bb6a-8da6b8411bbc","kind":"advisory.identified","summary":"CVE-2026-116684 affects this package (high)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a18084-f59a-7682-bb6a-8da6b8411bbc"},{"id":"chg_01a18084-f59a-7ced-bf68-3d9c9dc79f28","kind":"advisory.identified","summary":"CVE-2026-116686 affects this package (high)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a18084-f59a-7ced-bf68-3d9c9dc79f28"},{"id":"chg_01a17b91-20fa-7592-9ea3-1b2b5aaddcae","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a17b91-20fa-7592-9ea3-1b2b5aaddcae"},{"id":"chg_01a17b91-20fb-7c5f-9e14-74d879d0d683","kind":"score.total_changed","summary":"Trust score (74 → 90)","materiality":"functional","direction":"improvement","scoreDelta":16,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a17b91-20fb-7c5f-9e14-74d879d0d683"},{"id":"chg_01a17a95-e07e-78ad-8de9-a5adcf514521","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a17a95-e07e-78ad-8de9-a5adcf514521"},{"id":"chg_01a17a95-e081-731f-a0d8-27dafcf41424","kind":"package.version_changed","summary":"Package version (0.7.0 → 0.7.1)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a17a95-e081-731f-a0d8-27dafcf41424"},{"id":"chg_01a17a95-e081-7c96-8588-99224e10d0fa","kind":"score.total_changed","summary":"Trust score (89 → 74)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a17a95-e081-7c96-8588-99224e10d0fa"},{"id":"chg_01a17111-3f81-7cbf-8f83-dba282589983","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal#chg-chg_01a17111-3f81-7cbf-8f83-dba282589983"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal/changelog.json"},"links":{"html":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal","markdown":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal.md","changelogJson":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal/changelog.json","changelogRss":"https://verifymcp.io/servers/dfkunstler-mcp-server-for-oscal/mcp-server-for-oscal.xml","external":[{"label":"PyPI project","href":"https://pypi.org/project/mcp-server-for-oscal/"},{"label":"Socket report","href":"https://socket.dev/pypi/package/mcp-server-for-oscal"},{"label":"Repository","href":"https://github.com/dfkunstler/mcp-server-for-oscal"}]}}