MCP server for Autodesk Revit integration, enabling CAD import, element manipulation, and BIM operations through JSON-RPC protocol
Critical gaps across all dimensions. Of 24 tools, only 6 have visible input schemas in source (get_file_info, get_cad_entities, get_layers, get_cad_block_info, convert_cad_to_family, link_cad_files). 18 tools (create_level, create_grid, get_current_view_elements, etc.) have NO visible schema definitions, only handler file references. Descriptions range from absent to generic (e.g., 'Creates a new level in the Revit document' lacks parameters, constraints, return type). No parameter descriptions visible for most tools. No output schemas documented. No error handling guidance. No tool annotations (readOnlyHint/destructiveHint).
Analyzes and returns model statistics
Converts CAD blocks to Revit family types with specified parameters
Creates FillPattern + Material + FloorType/WallType in Revit from tile/brick specifications extracted from PDF/DWG
Creates a new grid in the Revit document
Creates grid intersections in the Revit document
Creates a new level in the Revit document
Creates a schedule in the Revit document
Creates a new view sheet in the Revit document
18 of 24 tools have NO visible input schema definitions in source code. Only handler file references exist (e.g., 'RevitPlugin/Handlers/CommandRouter.cs').
18 tools lack descriptions entirely (0 chars). Examples: 'create_level', 'create_grid', 'get_current_view_elements'. LLMs cannot determine when or why to select these tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
Creates a new wall type in the Revit document
Detects clashes between elements in the model
Exports the model in various formats
Retrieves information about CAD blocks including their types, sizes, and instances
Extracts entities (lines, blocks, text) from linked CAD files. Parameters: linkedCADFileName (string): Name of the CAD file, entityTypes (string[]): Types to extract (LINE, BLOCK, TEXT, etc.), layerFilter (string[]): Layers to include (optional)
Retrieves elements visible in the current view
Retrieves properties of a specific element
Retrieves Revit project metadata and linked CAD files. Parameters: includeLinkedFiles (bool): Include list of linked CAD files
Analyzes CAD layer structure and properties from linked CAD files
Retrieves project information from the Revit document
Retrieves currently selected elements in Revit
Links one or more DWG files into the active Revit document. Parameters: filePaths (string[]) required: absolute DWG paths, placement (string) optional: "origin" (default), skipIfAlreadyLinked (bool) optional: default true
Loads a family file into the Revit document
Modifies properties of an existing element
Searches for modules or components in the model
Sets parameter values on elements
No tool annotations present (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe read-only tools from destructive ones. 12 WRITE tools (create_level, create_grid, convert_cad_to_family, etc.) lack destructiveHint annotation.
No output schemas documented for any tool. LLMs cannot plan downstream tool calls or extract required fields. Example: does get_file_info return {files: [], linkedFiles: []} or {project: {}, cad: {}}? Undocumented output forces LLMs to guess.
No error handling guidance. Tools lack recovery hints (e.g., 'If CAD file not found, try link_cad_files() first'). No error categorization (retryable vs user-fixable vs fatal). Agents cannot self-correct on failures.