Revit MCP Server
The Revit MCP Server connects AI clients to Autodesk Revit (2024–2027) through 48 tools spanning model creation, querying, modification, analysis, documentation, MEP, interoperability, and advanced scripting.
Query & Inspection
Check connection/API status, get model info, list levels, families, categories, and views
Get active view details, visible/selected elements, element properties, and parameters
Export view images
Create Building Elements
Walls, floors, roofs, ceilings, levels, grids, structural beams/framing, columns
Rooms and room separation lines; place family instances
Views (floor plans, sections, elevations, 3D), sheets, schedules, and detail lines
Modify Elements
Delete elements, modify or set parameter values
Move, copy, rotate, or mirror elements; switch the active view
Visualization
Color-code elements by parameter values; clear color overrides
Tag walls or specific elements; create dimension annotations
Analysis
Filter elements by category, type, visibility, or spatial bounds
Export room data (areas, volumes, boundaries), get material quantities
Detect hard clashes between disciplines; analyze model statistics
MEP
Create ducts, pipes, and mechanical/piping systems
Interoperability & Persistence
Export to IFC (IFC2x3/IFC4), PDF, PNG, JPG, or DWG
Link or import external files (DWG, DXF, DGN, RVT); load
.rfafamily filesSave or Save-As the Revit document
Advanced
Execute arbitrary IronPython code directly inside the Revit context for fully custom operations beyond the built-in tools
Provides 45 tools for building design, editing, analysis, MEP, interop, and documentation via Autodesk Revit API, accessible through pyRevit.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Revit MCP Servercreate a new level at elevation 10 feet"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Revit MCP Server
MCP server for Autodesk Revit 2024/2025/2026/2027 via pyRevit — 48 tools for building design, editing, analysis, clash detection, MEP, interop, documentation, and model persistence.
Works with any MCP client: Claude Desktop, Claude Code, Cursor, Windsurf, Copilot, or any other MCP-compatible application.
How It Works
AI Client ──stdio/SSE/HTTP──> MCP Server (Python/FastMCP) ──HTTP :48884──> pyRevit Routes ──> Revit APIThe MCP server runs on your machine and communicates with Revit through pyRevit's Routes API. Any MCP-compatible AI client can connect to it.
Related MCP server: RevitMCPBridge2026
Prerequisites
Requirement | Details |
Windows 10/11 | Revit is Windows-only |
Autodesk Revit | 2024, 2025, 2026, or 2027 |
pyRevit | Installed and loaded in Revit |
uv | Python package manager (install) |
A project open in Revit | Tools require an active document |
Install pyRevit (if not already installed)
pyRevit is a free add-in that lets scripts run inside Revit. This MCP server needs it to communicate with Revit.
Download the latest .exe installer (e.g.
pyRevit_CLI_x.x.x.x_admin_signed.exe)Run the installer — accept all defaults, click Next through each screen
Open (or restart) Revit — you should see a pyRevit tab in the ribbon at the top
In the pyRevit tab, click Settings (gear icon)
In the Settings window, go to the Routes section on the left
Check the box to Enable Routes Server
Click Save Settings and let pyRevit reload
To verify: open a browser and go to http://localhost:48884/ — you should see a response (not a "connection refused" error).
Quick Start
Step 1: Clone and install
git clone https://github.com/Demolinator/revit-mcp-server.git
cd revit-mcp-server
uv syncStep 2: Install the pyRevit extension
The revit_mcp/ folder and startup.py need to run inside Revit via pyRevit.
Option A — Install from pyRevit (recommended):
In Revit, go to pyRevit tab > Extensions
Find "MCP Server for Revit Python" > Install
Wait for pyRevit to reload
Option B — Manual install:
Copy the entire repo folder to
%APPDATA%\pyRevit\Extensions\Rename the folder to
mcp-server-for-revit-python.extensionIn Revit, go to pyRevit tab > Settings > Custom Extensions
Add the path to the
.extensionfolderReload pyRevit (or restart Revit)
Step 3: Activate pyRevit Routes
In Revit, go to pyRevit tab > Settings
Navigate to Routes > activate Routes Server
pyRevit will start listening on
http://localhost:48884/
Step 4: Verify connection
Open a browser and go to:
http://localhost:48884/revit_mcp/status/You should see:
{
"status": "active",
"health": "healthy",
"revit_available": true,
"document_title": "your_project_name",
"api_name": "revit_mcp"
}Step 5: Start the MCP server
uv run main.pyThat's it. Your AI client can now connect.
Connecting Your AI Client
Claude Desktop / Claude Code
Add to your MCP config:
{
"mcpServers": {
"revit": {
"command": "uv",
"args": ["run", "main.py"],
"cwd": "/path/to/revit-mcp-server"
}
}
}Cursor / Windsurf / Other MCP Clients
Use HTTP transport:
uv run main.py --streamable-httpThen configure your client to connect to http://localhost:8000/mcp.
Transport Modes
Flag | Transport | Endpoints | Use Case |
(none) | stdio | stdin/stdout | Claude Desktop / Claude Code |
| SSE |
| Legacy clients |
| HTTP |
| HTTP-based clients |
| Both | All above | Maximum compatibility |
Testing with MCP Inspector
mcp dev main.pyThen open http://127.0.0.1:6274 in your browser.
Supported Tools (48)
Create (15)
Tool | Description |
| Create new levels with elevations |
| Create walls, beams, and other line-based elements |
| Create floors, roofs, and surface elements |
| Place a family instance at specified location |
| Create column grid lines |
| Create structural beams and framing |
| Create new drawing sheets |
| Create schedules with custom fields |
| Create rooms at specified levels |
| Create room separation boundary lines |
| Create ducts between two points (MEP) |
| Create pipes between two points (MEP) |
| Create mechanical or piping systems |
| Create view-specific detail lines |
| Create floor plans, sections, elevations, 3D views |
Query (12)
Tool | Description |
| Check if the API is active and responding |
| Get model information |
| Get all levels with elevations |
| Get available family types |
| Get all family categories |
| Export a view as an image |
| List all exportable views |
| Get active view details |
| Get elements in current view |
| Get currently selected elements |
| List parameters for a category |
| Get all parameters and properties of an element |
Modify (8)
Tool | Description |
| Delete elements from the model |
| Modify element parameter values |
| Color elements by parameter values |
| Reset element colors |
| Tag all walls in current view |
| Set a single parameter value on an element |
| Tag specific elements with annotation symbols |
| Move, copy, rotate, or mirror elements |
| Switch the active view in Revit |
Analyze (5)
Tool | Description |
| Filter elements by category and parameters |
| Export room areas, volumes, boundaries |
| Material takeoff data |
| Detect hard clashes (interferences) between disciplines, e.g. structure vs MEP |
| Element counts and model stats |
Document (3)
Tool | Description |
| Create dimension annotations |
| Export views to PDF or image |
Interop & Persistence (4)
Tool | Description |
| Export model to IFC format (IFC2x3/IFC4) |
| Link or import DWG, DXF, DGN, SAT, SKP, 3DM, or RVT files |
| Load a Revit family ( |
| Save / Save-As the model to disk (persistence across sessions) |
Advanced (1)
Tool | Description |
| Execute IronPython code in Revit context |
Architecture
Two runtimes communicate over HTTP:
Component | Runtime | Location | Purpose |
| Python 3.11+ (CPython) | Your machine | MCP protocol, tool definitions |
| IronPython 2.7 (inside Revit) | Revit process | pyRevit route handlers, Revit API |
Multi-Version Revit Support
This server supports Revit 2024, 2025, 2026, and 2027 through centralized helper functions that handle the ElementId API differences across versions:
get_element_id_value()— Extracts integer IDs using.Value(2024+) with.IntegerValuefallbackmake_element_id()— Creates ElementIds usingSystem.Int64(2024+) withintfallback
No configuration needed — version detection is automatic via try/except at runtime.
Revit 2027 note: Revit 2027 runs on .NET 10 (vs .NET 8 in 2025/2026). This MCP server is pyRevit-based, so .NET compatibility is handled by pyRevit itself — ensure you run a pyRevit build with Revit 2027 support. None of the 48 tools use APIs removed in 2027 (AXM/FormIt import,
Mechanical.Zonemembers, legacy rebar creation, or the droppedEnergyDataSettingsproperties).
Unit Handling
All tools accept millimeters (mm). The server converts to Revit's internal feet.
From | To mm |
meters | x 1000 |
feet | x 304.8 |
inches | x 25.4 |
Creating Your Own Tools
Adding a new tool requires 2 files + 2 registration lines:
Route handler in
revit_mcp/new_module.py(IronPython 2.7)Tool definition in
tools/new_tools.py(Python 3.11+)Register routes in
startup.pyRegister tools in
tools/__init__.py
See LLM.txt for full context that helps AI assistants understand the codebase.
Contributing
Contributions are welcome! Feel free to submit pull requests or open issues.
Author
Talal Ahmed
License
MIT
Available Tools
45 toolsai_element_filterA
Filter and find Revit elements by category, type, visibility, and spatial bounds.
A powerful query tool for finding specific elements in the model. Combine filters for precise results — e.g., find all exterior walls on Level 1 visible in the current view.
Args: category: BuiltInCategory name, e.g. "OST_Walls", "OST_Doors" (optional) type_name: Filter by family type name or partial match (optional) visible_in_view: Only include elements visible in the active view (optional) bounding_box_min: Spatial filter min corner {"x", "y", "z"} in mm (optional) bounding_box_max: Spatial filter max corner {"x", "y", "z"} in mm (optional) max_elements: Maximum results to return (defaults to 50) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | ||
| type_name | No | ||
| visible_in_view | No | ||
| bounding_box_min | No | ||
| bounding_box_max | No | ||
| max_elements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as a 'powerful query tool' for finding elements, implying a read operation, but does not explicitly state it is non-destructive. It also lacks details on performance implications, permissions, or limitations on spatial bounds. The default max_elements is mentioned in the schema but not in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a one-line summary, a brief paragraph, and a bullet-like Args list. While the Args list is verbose, each line is informative and earns its place. The opening sentence is front-loaded with the tool's purpose. Minor overuse of whitespace could be trimmed slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has 6 parameters (including nested objects) and no output schema, the description should explain what the tool returns. It fails to describe the output format (e.g., list of element IDs or properties), which is a significant gap. The input parameters are well-covered, but the overall completeness is lacking for an effective agent interaction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite the schema having 0% description coverage, the description includes a detailed Args section for each parameter, explaining the expected format (e.g., BuiltInCategory name, partial match, units in mm), which adds significant meaning beyond the schema's basic type and title information. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Filter and find Revit elements by category, type, visibility, and spatial bounds,' which clearly states the verb (filter/find) and resource (Revit elements). Among the sibling tools, which include simpler retrieval tools like get_current_view_elements and get_selected_elements, this tool’s multi-criteria filtering capability distinguishes it effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an example ('find all exterior walls on Level 1 visible in the current view') and advises to combine filters for precise results. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention conditions to avoid using it. Nonetheless, the context implies it is for advanced filtering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_model_statisticsB
Analyze the Revit model and return element counts grouped by category.
Provides a high-level overview of what's in the model — how many walls, doors, windows, floors, etc. Useful for progress tracking and model health checks.
Args: ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It implies the tool is read-only but does not explicitly state that, nor does it describe potential side effects, performance implications, or output format. The mention of a 'ctx' argument not present in the schema adds confusion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief with two sentences and an unnecessary 'Args' line. The core purpose is clear and front-loaded, but the redundant argument mention wastes space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description should specify the structure of the return value (e.g., dictionary of categories to counts). It only says 'element counts grouped by category,' which is vague. Compared to siblings like get_revit_model_info, it lacks details on what exactly is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so schema coverage is 100%. However, the description includes an 'Args' line referencing a 'ctx' parameter that does not exist in the schema, which could mislead an agent. For a zero-parameter tool, the description should not introduce phantom parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes the Revit model and returns element counts grouped by category, with examples like walls, doors, windows. However, it does not differentiate itself from sibling tools such as get_material_quantities or get_revit_model_info, which also provide model analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it is useful for progress tracking and model health checks, providing context for when to use it. However, it lacks explicit guidance on when not to use it or how it compares to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_colorsA
Clear color overrides for elements in a category
This tool removes all color overrides that have been applied to elements in the specified category, returning them to their default appearance.
Args: category_name: Name of the category to clear colors from (e.g., "Walls", "Doors") ctx: MCP context for logging
Returns: Results of the clear operation including count of elements processed
| Name | Required | Description | Default |
|---|---|---|---|
| category_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it removes all color overrides and returns elements to default appearance. Returns count of processed elements. Without annotations, this provides adequate transparency for the tool's effect, though it omits details like undo capability or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Starts with a focused one-line purpose, followed by a brief elaboration and well-structured Args/Returns sections. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the main action, parameter, and return value adequately for a simple tool. Lacks mention of error handling (e.g., invalid category) or prerequisites, but overall is sufficient given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description's Args section provides a clear explanation of category_name with examples ('Walls', 'Doors'), adding significant meaning beyond the schema which only has a title and type. With 0% schema coverage, this fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states the action: 'Clear color overrides for elements in a category.' It specifies the resource (color overrides for category elements) and the verb (clear). This sufficiently distinguishes it from siblings like color_splash or modify_element.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., individually clearing overrides on elements). No context on prerequisites or conditions like needing a valid category that has overrides.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color_splashA
Color elements in a category based on parameter values
This tool applies color coding to Revit elements within a specified category based on their parameter values. Elements with the same parameter value will receive the same color.
Args: category_name: Name of the category to color (e.g., "Walls", "Doors", "Windows") parameter_name: Name of the parameter to use for coloring (e.g., "Mark", "Type Name") use_gradient: Whether to use gradient coloring instead of distinct colors (default: False) custom_colors: Optional list of custom colors in hex format (e.g., ["#FF0000", "#00FF00"]) ctx: MCP context for logging
Returns: Results of the coloring operation including statistics and color assignments
| Name | Required | Description | Default |
|---|---|---|---|
| category_name | Yes | ||
| parameter_name | Yes | ||
| use_gradient | No | ||
| custom_colors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains that elements with the same parameter value get the same color, and mentions optional gradient and custom colors. It also describes return value with statistics, but lacks details on persistence or reversibility. Since no annotations exist, the description covers behavior adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a brief summary followed by parameter descriptions. It is concise and front-loaded, though the parameter list could be more compact. Overall, it is clear and without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's core functionality and all parameters, and mentions return values. Given no output schema, the description is fairly complete, though it could mention error handling or edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides detailed parameter explanations beyond the schema, including example values and formats (e.g., hex for custom_colors). With 0% schema coverage, the description compensates well by clarifying each parameter's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: coloring Revit elements based on parameter values, with examples of parameters. It distinguishes from siblings like 'clear_colors' or 'set_parameter'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. It only describes the function without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_detail_lineA
Create a detail line in a Revit view for annotation purposes.
Detail lines are view-specific 2D annotation elements. They only appear in the view where they are created (unlike model lines). Must be created in a plan, section, or detail view.
Args: start_point: Start point {"x", "y", "z"} in mm end_point: End point {"x", "y", "z"} in mm view_name: Target view name (defaults to active view) line_style: Line style name (e.g., "Medium Lines"). Uses default if omitted ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| start_point | Yes | ||
| end_point | Yes | ||
| view_name | No | ||
| line_style | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description explains that detail lines are view-specific and 2D, and requires a valid view type. However, it does not disclose potential side effects, error conditions (e.g., invalid view name), or authorization requirements, leaving gaps in transparency for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description starts with a clear one-line purpose, followed by contextual prose, then a structured Args list. It is informative and well-organized, but could be slightly more concise by merging some redundant statements. Still effective and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters (2 required) and no output schema, the description covers parameter meaning, view restrictions, and the distinction from model lines. It does not document return values or error behavior, but for a straightforward creation tool, it provides sufficient context for an AI agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage, so the description fully carries the burden. It explains each parameter's role, format (including coordinate component keys and units in mm), and defaults (view_name defaults to active view, line_style uses default style if omitted), adding substantial value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifically identifies the tool as creating a detail line for annotation in Revit, clarifying it is view-specific and 2D, distinguishing it from model lines. It also specifies valid view types (plan, section, detail), leaving no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states that lines appear only in the view where created and must be in a plan, section, or detail view, providing clear context. While it contrasts with model lines, it does not explicitly name alternative tools like create_line_based_element or provide when-not-to-use guidance, slightly reducing completeness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_dimensionsA
Create dimension annotations for elements in the current view.
Automatically dimensions the specified elements. Works in plan, section, and elevation views. The dimension line is placed at an offset from the elements for readability.
Args: element_ids: List of element IDs to dimension dimension_type: Type of dimension — "linear", "aligned", or "angular" (defaults to "linear") ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| element_ids | Yes | ||
| dimension_type | No | linear |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses that the dimension line is automatically placed at an offset for readability. However, it lacks details on potential side effects (e.g., overwriting existing dimensions), error handling, or permissions required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with four sentences, front-loading the primary action and view constraints. The Args list is clear but could be more integrated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, view support, and parameter meaning but omits details like default offset distance, behavior in 3D views, and error scenarios. For a simple tool, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema description coverage is 0%, the description's Args section defines the parameters: element_ids as 'List of element IDs to dimension' and dimension_type with possible values ('linear', 'aligned', 'angular'), adding meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create', the resource 'dimension annotations', and the scope 'for elements in the current view'. It also specifies the view types (plan, section, elevation), which distinguishes it from sibling tools like create_detail_line.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates that the tool works in plan, section, and elevation views, providing context for when to use it. However, it does not explicitly mention when not to use it or provide alternatives, which could be improved for better guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ductA
Create a duct in the Revit model between two points.
Requires a project with mechanical families loaded (MEP template). Specify diameter for round ducts, or width+height for rectangular. All dimensions in millimeters.
Args: start_point: Start point {"x", "y", "z"} in mm end_point: End point {"x", "y", "z"} in mm system_type: System type name (e.g., "Supply Air"). Auto-detects if omitted duct_type: Duct type name (e.g., "Round Duct"). Auto-detects if omitted level_name: Level name. Defaults to nearest level diameter: Round duct diameter in mm width: Rectangular duct width in mm height: Rectangular duct height in mm ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| start_point | Yes | ||
| end_point | Yes | ||
| system_type | No | ||
| duct_type | No | ||
| level_name | No | ||
| diameter | No | ||
| width | No | ||
| height | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description indicates a write operation but does not disclose side effects, permissions needed, or potential issues. It mentions auto-detection behavior for some parameters, offering moderate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary paragraph and an Args list. It is somewhat lengthy but front-loads the main action. Could be slightly more concise, but effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no output schema, and no annotations, the description covers shape modes, defaults, and units adequately. Lacks return value info but is fairly complete for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description provides detailed explanations for each parameter, including units, default behaviors, and selection logic. This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a duct in the Revit model between two points,' which is a specific verb and resource. It distinguishes from sibling tools like create_pipe and create_structural_framing by specifying duct creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions requirements ('MEP template') and usage patterns ('diameter for round, width+height for rectangular'). It does not explicitly state when not to use or provide alternatives, but context makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_gridA
Create grid lines for the structural layout of a building.
Grids define the column grid system. Each grid is a line from start to end point (in millimeters). Names auto-assign (A, B, C... or 1, 2, 3...) if not provided. Supports batch creation.
Args: grids: List of grid definitions, each with: - start_point (dict): {"x": float, "y": float, "z": float} in mm (required) - end_point (dict): {"x": float, "y": float, "z": float} in mm (required) - name (str): Grid line name (optional, auto-assigned) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| grids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses batch creation, auto-naming behavior, and units (mm). However, it does not mention side effects, error conditions, permissions, or what happens on duplicate names. It is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is informative and well-structured with a clear introductory sentence followed by detailed parameter documentation. It is slightly verbose (e.g., 'Grids define the column grid system' is somewhat redundant) but generally earns its place without excessive fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (batch creation of grid lines with auto-naming), the description covers the essential aspects: parameter format, auto-naming, and batch support. It lacks mention of the return value (e.g., created grid IDs) and coordinate system reference, but these are minor omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is minimal (array of objects with additionalProperties: true). The description adds rich semantic detail: each grid item requires start_point and end_point (with x,y,z floats in mm) and an optional name. This fully compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'grid lines for the structural layout of a building.' It differentiates this tool from all siblings, as no other tool deals with grid lines. The purpose is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating structural grid lines but provides no explicit guidance on when to use it versus alternatives, prerequisites, or ordering relative to other tools (e.g., before columns). It lacks 'when not to use' or context about the design phase.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_levelA
Create building levels (floor elevations) in Revit.
Levels define the floor-to-floor heights of a building and must be created before placing walls, floors, or other level-dependent elements.
Args: levels: List of level definitions, each with: - elevation (float): Elevation in mm from project origin (required) - name (str): Level name, e.g. "Ground Floor" (optional, auto-assigned) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| levels | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only states the creation action and parameter details, missing key information such as side effects (e.g., whether existing levels are affected), required permissions, failure modes, or implications for model state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loading the main purpose, followed by a brief explanation of levels' role, then a structured Args section. Every sentence adds value without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description does not explain what the tool returns (e.g., a list of created level IDs), leaving the agent without expected response structure. Also lacks behavioral notes. For a creation tool, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is sparse with a single array parameter 'levels' having extra properties allowed (0% coverage). The description adds needed meaning by specifying each element requires 'elevation' (float in mm) and optionally 'name', which is essential for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Create' and clearly identifies the resource 'building levels (floor elevations)' in Revit. It explains what levels do and distinguishes this tool from siblings like list_levels, which only list levels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states that levels 'must be created before placing walls, floors, or other level-dependent elements,' providing clear context for when to use this tool. It does not explicitly exclude alternative approaches or mention when not to use it, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_line_based_elementA
Create walls, beams, and other line-based building elements in Revit.
Each element needs start and end points (in millimeters), element type (wall/beam), and optionally a level name, height, and family type name. Supports batch creation — pass multiple elements in one call.
Args: elements: List of element definitions, each with: - element_type (str): "wall" or "beam" (required) - start_point (dict): {"x": float, "y": float, "z": float} in mm (required) - end_point (dict): {"x": float, "y": float, "z": float} in mm (required) - type_name (str): Family type name, e.g. "Generic - 200mm" (optional) - level_name (str): Target level name (optional, defaults to first level) - height (float): Element height in mm (optional, defaults to 3000) - offset (float): Offset from base level in mm (optional, defaults to 0) - structural (bool): Mark as structural (optional, defaults to false) - name (str): Description for reference (optional) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| elements | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses batch creation capability and parameter structure but lacks details on side effects, permissions, or failure behavior. For a mutation tool, this is moderately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with paragraphs and an Args section, but slightly lengthy. It front-loads the purpose and remains informative without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Input parameters are thoroughly described, but there is no output schema or explanation of return values (e.g., created element IDs). Error handling and model state implications are missing, leaving gaps for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage with minimal structure. The description compensates by detailing each element definition (type, points, optional fields), adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates 'walls, beams, and other line-based building elements' with a specific verb and resource. It distinguishes from sibling tools like create_detail_line, create_duct, and create_pipe, which target different element types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for line-based elements but does not explicitly state when to use this tool vs alternatives like create_duct or create_pipe. It mentions batch creation but lacks guidance on exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mep_systemA
Create a mechanical or piping system and optionally add elements to it.
Groups ducts or pipes into a named system for organization and analysis.
Args: system_type: "mechanical" or "piping" system_name: Display name for the system (e.g., "Level 1 Supply Air") element_ids: Optional list of duct/pipe element IDs to add to the system ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| system_type | Yes | ||
| system_name | Yes | ||
| element_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It covers the basic operation (creation, optional add) but lacks details on side effects, permission requirements, naming constraints, or error conditions. It is a minimal description without contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at approximately 50 words and well-organized with a one-line summary followed by a bullet-style Args section. Every sentence is informative, and the structure is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should explain the return value (e.g., system ID). It omits this, leaving a gap for the agent. It covers the core function but is incomplete for post-invocation understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description's Args section adds crucial meaning: system_type as 'mechanical' or 'piping', system_name as display name, and element_ids as optional list. This compensates for the schema gap, though it could provide more detail on name constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a mechanical or piping system' and 'Groups ducts or pipes into a named system for organization and analysis.' The verb 'Create' and resource 'MEP system' are specific, and the mention of system_type distinguishes it from sibling tools like create_duct and create_pipe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after individual duct/pipe elements are created, and it notes optional element addition. However, it does not explicitly state when to use this tool versus alternatives or provide exclusions, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pipeA
Create a pipe in the Revit model between two points.
Requires a project with plumbing families loaded (MEP template). All dimensions in millimeters.
Args: start_point: Start point {"x", "y", "z"} in mm end_point: End point {"x", "y", "z"} in mm system_type: System type name (e.g., "Domestic Hot Water"). Auto-detects if omitted pipe_type: Pipe type name (e.g., "Copper"). Auto-detects if omitted level_name: Level name. Defaults to nearest level diameter: Pipe diameter in mm ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| start_point | Yes | ||
| end_point | Yes | ||
| system_type | No | ||
| pipe_type | No | ||
| level_name | No | ||
| diameter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It only mentions 'Create' implying mutation, but lacks details on side effects, reversibility, permissions, or state changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary, prerequisites, and a parameter list. It is concise but front-loaded appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description should explain return values or success criteria. It only covers inputs, leaving behavior post-execution unclear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description adds semantic meaning for all 6 parameters (e.g., coordinates in mm, auto-detect, default behavior), significantly enhancing understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a pipe in the Revit model between two points,' specifying the action (create) and the resource (pipe). It distinguishes from sibling tools like create_duct and create_mep_system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes prerequisites (MEP template with plumbing families) and units (millimeters), but does not explicitly state when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_roomA
Create a room in the Revit model at a specified level.
Rooms must be placed inside enclosed areas (bounded by walls or room separation lines). If no location is given, Revit auto-places the room.
Args: level_name: Target level name (e.g., "Level 1") location: Optional placement point {"x": float, "y": float} in mm name: Room name (e.g., "Living Room") number: Room number (e.g., "101") ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| level_name | Yes | ||
| location | No | ||
| name | No | ||
| number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that rooms require enclosed areas and that auto-placement occurs if no location is given, but it fails to explain error handling, permission needs, side effects, or the return value. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively compact and front-loaded with the core purpose. The Args list is slightly redundant with the schema but adds context. It could be more concise, but overall it is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, but the description does not explain what is returned after creation (e.g., room ID). It also omits error conditions like invalid level or location outside enclosure. Given the complexity (4 params, nested object), this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds significant meaning: it specifies level_name as the target level with an example, location as an optional point with x,y in mm, and names/numbers with examples. It also explains auto-placement when location is omitted, which is not evident from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a room in the Revit model at a specified level. It specifies the verb 'create', the resource 'room', and the context 'Revit model', which distinguishes it from sibling tools like create_detail_line or create_dimensions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that rooms must be placed inside enclosed areas bounded by walls or room separation lines, implying a prerequisite. However, it does not explicitly guide when to use this tool versus alternatives like create_room_separation, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_room_separationA
Create room separation lines to define room boundaries.
Room separation lines act as invisible walls for room calculation. Use these when physical walls don't fully enclose a space (e.g., open-plan areas, corridors). All coordinates in millimeters.
Args: lines: List of line segments, each with: - start_point (dict): {"x": float, "y": float, "z": float} in mm - end_point (dict): {"x": float, "y": float, "z": float} in mm level_name: Target level name (defaults to active view's level) view_name: Plan view name (defaults to active view) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| lines | Yes | ||
| level_name | No | ||
| view_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the lines 'act as invisible walls for room calculation' but does not mention whether this operation is destructive, if special permissions are needed, or what side effects (e.g., modification of room boundaries) occur. The description lacks critical details about the tool's impact on the model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with an Args section, but includes unnecessary details like 'ctx: MCP context for logging' which is not relevant for an agent selecting the tool. The purpose is front-loaded, and the overall length is appropriate, but a few words could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 3 parameters, the description explains the input well but does not mention what the tool returns (e.g., element IDs, success status). For a creation tool, return value is often needed for subsequent operations. The description is incomplete for full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. The Args section explains lines as list of segments with start_point and end_point dicts (x,y,z in mm), and level_name/view_name default to active view. This adds significant meaning, but could be more structured for the 'lines' parameter (e.g., exact format of dict).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create room separation lines to define room boundaries,' specifying the verb (create) and resource (room separation lines). It distinguishes from sibling tools like create_room and create_grid by focusing on invisible walls for room calculation, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases: 'Use these when physical walls don't fully enclose a space (e.g., open-plan areas, corridors).' However, it does not mention when not to use or suggest alternatives, which would be helpful for an AI agent deciding between this and other creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_scheduleB
Create a schedule (quantity takeoff view) for a specific element category.
Schedules tabulate element data — e.g., a wall schedule showing all walls with their types, lengths, and areas. The schedule appears as a new view in the Revit project browser.
Args: category: BuiltInCategory name, e.g. "OST_Walls", "OST_Rooms" (required) fields: Parameter names to include as columns (optional, uses default set) e.g., ["Family and Type", "Length", "Area", "Mark"] schedule_name: Name for the schedule view (optional, auto-generated) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | ||
| fields | No | ||
| schedule_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It states that the schedule appears as a new view, but does not disclose side effects, prerequisites (e.g., category existence), or permissions. The description is adequate but could be more thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly concise with front-loaded purpose, a short explanation, and an args list. No unnecessary sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description explains the outcome (new view appears). However, it omits error conditions, default behaviors, and any return value. It is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains category as a BuiltInCategory name with examples, fields as column parameter names, and schedule_name as a view name. This adds meaning but lacks details like accepted values or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a schedule (quantity takeoff view) for a specific element category, with an example of walls. However, it does not explicitly distinguish it from sibling tools like create_view, which might also create views.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives (e.g., create_view or list_families). No when-not or exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sheetA
Create a drawing sheet in Revit for construction documentation.
Sheets are the printable output of a Revit project. Each sheet has a title block, sheet number, and name. Views can be placed on sheets after creation.
Args: sheet_number: Sheet number, e.g. "A101" (optional, auto-assigned) sheet_name: Sheet title, e.g. "Ground Floor Plan" (defaults to "Unnamed Sheet") title_block_name: Title block family name (optional, uses first available) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_number | No | ||
| sheet_name | No | Unnamed Sheet | |
| title_block_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It mentions optional parameters and defaults, but does not disclose potential conflicts (e.g., duplicate sheet numbers), error conditions, permissions required, or side effects. Lacks transparency for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a clear opening sentence and an args section. Some redundancy ('Views can be placed on sheets after creation' could be integrated), but overall efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Does not describe return values (e.g., sheet ID) or confirmation of creation. No mention of error handling or prerequisites. For a creation tool without output schema, this leaves a significant gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond the schema by providing examples and explanations for each parameter (e.g., sheet_number as 'e.g. A101', sheet_name default). However, does not clarify valid values for title_block_name or constraints, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly specifies the verb 'create' and resource 'drawing sheet in Revit for construction documentation'. Provides context on what sheets are and that views can be placed later, distinguishing it from sibling tools like create_view or create_detail_line.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for construction documentation and mentions that views can be placed afterward, but does not explicitly state when to use this tool vs alternatives like create_view. No 'when not to use' guidance, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_structural_framingA
Create structural beams and framing elements in Revit.
Beams are placed along a line between two points at a specified level. All dimensions in millimeters. Supports batch creation.
Args: elements: List of beam definitions, each with: - start_point (dict): {"x": float, "y": float, "z": float} in mm (required) - end_point (dict): {"x": float, "y": float, "z": float} in mm (required) - type_name (str): Beam family type name (optional) - level_name (str): Target level name (optional) - name (str): Description for reference (optional) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| elements | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that it creates elements, uses millimeters, and supports batch creation, but it does not mention side effects (e.g., overwriting existing elements), permissions, limits, or error handling. This provides moderate transparency but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a brief overview followed by a parameter list. Each sentence adds value, but the parameter list could be more compact. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the basic usage and input structure, but it lacks information about return values (output), error conditions, validation rules, or limitations. Given the complexity (nested objects, no output schema), more details on behavior and outcomes would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is sparse with only an array of objects and no parameter descriptions. The description compensates by detailing each sub-parameter (start_point, end_point, type_name, etc.) with types and optionality, adding significant meaning. However, it could be more precise about the dict structure or coordinate units (mm already noted).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates structural beams and framing elements in Revit, specifying they are placed along a line between two points. This distinguishes it from sibling creation tools like create_detail_line or create_grid, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating beams and framing elements, and mentions batch creation, but it does not explicitly state when to use this tool over alternatives like create_line_based_element or other structural tools. No exclusions or context for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_surface_based_elementA
Create floors, roofs, ceilings, and other surface-based building elements.
Each element needs a closed boundary polygon (list of line segments) where the last point connects back to the first. All dimensions in millimeters. Supports batch creation.
Args: elements: List of element definitions, each with: - element_type (str): "floor", "roof", or "ceiling" (required) - boundary (list[dict]): Array of {"p0": Point, "p1": Point} segments forming a closed polygon (required, minimum 3 segments) - type_name (str): Family type name (optional) - level_name (str): Target level name (optional) - offset (float): Offset from level in mm (optional, defaults to 0) - name (str): Description for reference (optional) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| elements | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description details the creation process and required parameters. Lacks mention of permissions, reversibility, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, includes Args section. Moderately concise but could be trimmed slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides good detail on inputs but misses return value, error handling, and prerequisites. No output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage, but description thoroughly explains the structure of 'elements' including required fields, types, and boundary format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it creates surface-based elements like floors, roofs, ceilings, with batch creation and polygon requirement. Distinguishes from sibling create_line_based_element.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides general context but lacks explicit guidance on when to use this tool vs. alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_viewA
Create a new view in the Revit model.
Supports floor plans, ceiling plans, sections, elevations, and 3D views. Floor plans and ceiling plans require a level name. Sections require a section box definition with origin, direction, and dimensions.
Args: view_type: Type of view — "floor_plan", "ceiling_plan", "section", "elevation", or "3d" name: Display name for the new view level_name: Required for floor_plan and ceiling_plan — the level to show section_box: Required for section — defines the cut plane: - origin (dict): {"x", "y", "z"} center point in mm - direction (dict): {"x", "y", "z"} view direction vector - up (dict): {"x", "y", "z"} up direction vector - width (float): Section width in mm - height (float): Section height in mm - depth (float): Section depth in mm ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| view_type | Yes | ||
| name | Yes | ||
| level_name | No | ||
| section_box | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It explains parameter requirements for different view types but does not describe side effects (e.g., document modification, active view changes, write permissions, or error states). The focus is on parameter structure rather than the operation's impact, leaving the agent underinformed about the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence followed by parameter details in bullet-like format. It front-loads the purpose and uses concise language. The section_box breakdown uses indentation for clarity. Slightly lengthy due to the nested parameter details, but each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers creation abilities and parameter rules but lacks completeness. It does not describe return values (e.g., view ID), success/failure behavior, or prerequisites (e.g., open Revit document). The sibling tools provide some context, but the description should stand alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden. It adds significant meaning: enumerates view_type values, clarifies the level_name condition, and provides a detailed nested structure for section_box (origin, direction, up, width, height, depth). This compensates well for the bare schema. However, the description mentions a 'ctx' parameter not present in the schema, which could confuse agents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new view in the Revit model and lists supported view types (floor plans, ceiling plans, sections, elevations, 3D). It distinguishes itself from sibling tools like create_room or create_sheet by focusing on views, but does not explicitly contrast with other view-related tools (e.g., set_active_view). The purpose is specific but lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage conditions: floor plans and ceiling plans require a level name, sections require a section box definition with specific fields. This guides the agent on when certain parameters are needed. However, it does not state when not to use the tool or suggest alternatives (e.g., if a view already exists). The context is clear but lacks non-usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_elementsA
Delete one or more elements from the Revit model.
Removes elements by their IDs. If a deleted element hosts other elements (e.g., a wall with doors), the hosted elements are also deleted (cascade). All deletions happen in a single transaction — if any fails, none are deleted.
Args: element_ids: List of Revit element IDs to delete ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| element_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses cascade deletion of hosted elements and that all deletions occur in a single transaction (all or none). This is good transparency, though it could mention return values or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured with a brief paragraph and a clearly formatted Args section. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter, no output schema, and no annotations, the description covers the essential behavior and parameter meaning. It could be slightly improved by mentioning error handling or return value, but it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter with no description (0% coverage). The description adds meaning by identifying the parameter as 'Revit element IDs' and explaining the cascade and transaction context. This provides necessary semantics beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes elements from the Revit model by IDs, and mentions cascade deletion and transactional behavior. It is specific and distinguishes itself from sibling tools, which involve other operations like creating, modifying, or querying elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, such as modifying elements instead. However, it provides clear behavior (cascade deletion, atomic transaction) that helps the agent understand its effects. No explicit when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_revit_codeA
Execute IronPython code directly in Revit context.
This tool allows you to send IronPython 2.7.12 code to be executed inside Revit. The code has access to:
doc: The active Revit document
DB: Revit API Database namespace
revit: pyRevit module
print: Function to output text (returned in response)
Use this when the existing MCP tools cannot accomplish what you need.
Args: code: The IronPython code to execute (as a string) description: Optional description of what the code does ctx: MCP context for logging
Returns: Execution results including any output or errors
Example: code = ''' # encoding: utf-8 # Hello World example print("Hello from Revit!") from pyrevit import revit, DB, forms, script output = script.get_output() output.close_others() doc = revit.doc print("Document title:", doc.Title) print("Number of walls:", len(list(DB.FilteredElementCollector(doc).OfCategory(DB.BuiltInCategory.OST_Walls).WhereElementIsNotElementType()))) collector = DB.FilteredElementCollector(doc).OfClass(DB.TextNoteType).ToElements() print("Number of text note types:", len(collector)) '''
Tips for writing IronPython code in Revit:
Accessing Element.Name property: Some Revit elements don't expose the 'Name' property directly in IronPython. Use defensive access patterns:
Option 1: Use getattr with a default value
name = getattr(element, 'Name', 'N/A')
Option 2: Use try-except
try: name = element.Name except AttributeError: name = 'Unable to retrieve name'
Option 3: Use BuiltInParameter for element types
param = element_type.get_Parameter(DB.BuiltInParameter.ALL_MODEL_TYPE_NAME) name = param.AsString() if param else 'N/A'
Always check if elements exist before accessing properties: element = doc.GetElement(element_id) if element: # Safe to access element properties
Use hasattr() before accessing optional properties: if hasattr(element_type, 'FamilyName'): family_name = element_type.FamilyName
The Tool already wraps the code around a transaction.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| description | No | Code execution |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description fully discloses behavior: it executes IronPython 2.7.12, wraps code in a transaction, provides access to doc/DB/revit/print, and includes error-handling tips. This is comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with sections, example, and tips. It could be trimmed slightly, but the content justifies the length for a complex code-execution tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations or output schema, the description covers purpose, usage, behavioral details, parameter guidance, and even troubleshooting. It feels complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates with a detailed example and tips for writing code, adding significant meaning to both parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it executes IronPython code in Revit context. It explicitly says to use this when existing MCP tools cannot accomplish what you need, distinguishing it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: use when other tools fail. It also lists available objects and gives tips, making it clear when and how to apply the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_documentA
Export a Revit view or sheet to PDF or image format.
Exports the specified view (or the active view if none specified) to a file on disk. Supported formats: PDF, PNG, JPG, DWG.
Args: view_name: Name of the view or sheet to export (optional, uses active view) format: Output format — "pdf", "png", "jpg", or "dwg" (defaults to "pdf") resolution: DPI for image formats (defaults to 300, ignored for PDF/DWG) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| view_name | No | ||
| format | No | ||
| resolution | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, description bears full behavioral burden. It explains it exports to file on disk and lists supported formats, but does not disclose error handling, file overwrite behavior, or performance implications. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, front-loaded with purpose, and includes a well-structured Args section. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters and no output schema, description covers core behavior and parameter details. However, it omits return value (file path) and potential error cases (e.g., invalid view name), leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description adds crucial meaning. It explains each parameter with defaults, usage, and context (e.g., resolution ignored for PDF/DWG), fully compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it exports a Revit view or sheet to PDF or image format. Specific verb 'Export' and resource 'Revit view or sheet' with supported formats listed. Distinguishes from sibling export tools like export_ifc and export_room_data by focusing on view/sheet to PDF/image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes when to specify a view name and that it falls back to the active view. However, lacks explicit guidance on when to use this tool versus other export tools like export_ifc or export_room_data, and does not mention prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_ifcA
Export the Revit model to IFC format.
Creates an IFC file at the specified path. Optionally filter by view to export only visible elements. Supports IFC2x3 and IFC4.
Args: file_path: Output file path (must end in .ifc) ifc_version: "IFC2x3" (default) or "IFC4" export_base_quantities: Include IFC base quantities (default: true) view_name: Export only elements visible in this view (optional) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| ifc_version | No | IFC2x3 | |
| export_base_quantities | No | ||
| view_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It states that the tool creates an IFC file, effectively a write/mutation operation, and mentions logging context. It lacks details on potential side effects or permissions required, but for a file export tool, the behavior is well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three short paragraphs with a clear first line front-loading the purpose. No fluff; every sentence adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 params, no output schema, no nested objects), the description covers all necessary aspects: purpose, parameters, options, and context argument. It is complete enough for an AI agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain parameters. It does so by listing each argument with its meaning, default values, and constraints (e.g., file_path must end in .ifc). This adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb and resource: 'Export the Revit model to IFC format.' It specifies the output format and offers filtering options, distinguishing it from sibling tools like 'export_document' or 'export_room_data'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the optional view filter and IFC version selection, but it does not explicitly mention when NOT to use this tool or alternatives. The context is clear enough for an AI agent to make an informed choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_room_dataA
Export data for all rooms defined in the Revit model.
Returns room names, numbers, levels, areas, perimeters, and departments in a structured format suitable for analysis and reporting.
Args: ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool exports all rooms and returns a structured format, implying a read-only operation. However, it lacks details on potential side effects, permission requirements, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences and an args note, front-loading the purpose. Every sentence earns its place without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and no annotations, the description provides adequate context: it names the exported data fields and indicates the output is structured. It could mention output format or limits, but overall it is sufficient for a simple data export tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and the schema coverage is 100%. The description does not add parameter information, but the baseline for zero parameters is 4, as there is nothing to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports data for all rooms in the Revit model, listing specific return fields (names, numbers, levels, etc.), which distinguishes it from sibling tools like export_document or export_ifc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for room data reporting but does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_view_elementsA
Get all elements visible in the currently active view in Revit.
Returns detailed information about each element including:
Element ID, name, and type
Category and category ID
Level information (if applicable)
Location information (point or curve)
Summary statistics grouped by category
This is useful for understanding what elements are currently visible and analyzing the content of the active view.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the return data (IDs, names, types, categories, etc.) but does not disclose potential side effects, performance impacts, or edge cases like empty views. Basic transparency is achieved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at 7 lines, front-loading the core purpose. Each sentence adds value: purpose, return fields, and a note on usefulness. No redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with no parameters and no output schema, the description sufficiently explains what the tool returns and when it is useful. It lacks information on error handling or performance, but overall completeness is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the input schema fully covers the interface. The description adds no parameter details, which is appropriate. Baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets all elements visible in the currently active view, specifying the resource (elements in active view) and the verb (get). It mentions detailed return fields, distinguishing it from siblings like get_selected_elements and get_current_view_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for understanding visible elements and analyzing view content, but does not explicitly state when to use it over alternatives or provide exclusions. The guidance is implied but not direct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_view_infoA
Get detailed information about the currently active view in Revit.
Returns comprehensive information including:
View name, type, and ID
Scale and detail level
Crop box status
View family type
View discipline
Template status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It describes the return info but does not disclose behaviors like read-only status, error conditions (e.g., no active view), or performance impact. The description is accurate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two clear sentences and a bulleted list of return fields. There is no unnecessary text, and the structure is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description thoroughly explains the return values, covering all relevant aspects of a view. The tool has low complexity (no parameters), and the description is complete for an agent to understand what the tool provides.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the description adds significant value by listing the specific information returned (view name, type, ID, scale, detail level, crop box, family type, discipline, template status). This goes beyond the schema, which has no parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets detailed information about the currently active view, listing specific fields like name, type, ID, scale, etc. This distinguishes it from siblings like get_current_view_elements, get_revit_view, list_revit_views, and set_active_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing details about the active view but does not explicitly state when to use it over alternatives or provide exclusions. No guidance on prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_element_propertiesA
Get all properties and parameters of a Revit element.
Returns the element's category, family, type, and a complete list of both instance and type parameters with their values, storage types, and read-only status.
Args: element_id: Revit element ID to inspect include_type_params: Include type parameters in addition to instance parameters (default: true) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| element_id | Yes | ||
| include_type_params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adequately discloses that the tool reads element properties and returns detailed parameter information (values, storage types, read-only status). It does not mention side effects or error cases, but for a read operation this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line purpose, a bullet-like return description, and an args section. Every sentence adds value, though the args section could be slightly more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return values well. It covers both parameters. However, it lacks details on error handling (e.g., invalid element_id) and does not mention performance considerations, which are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description includes an 'Args' section that explains both parameters: element_id is 'Revit element ID to inspect' and include_type_params describes its effect and default. This adds meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get all properties and parameters') and the resource ('a Revit element'), and lists the specific data returned (category, family, type, parameters). It distinguishes itself from siblings like get_selected_elements and list_category_parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but does not provide explicit guidance on when to use it over alternatives like list_category_parameters or get_revit_model_info. The agent must infer usage from the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_material_quantitiesB
Get material quantities (areas and volumes) from the Revit model.
Returns aggregated material data across all elements, optionally filtered by category. Useful for quantity takeoffs and cost estimation.
Args: categories: List of categories to include, e.g. ["OST_Walls", "OST_Floors"] (optional, defaults to all categories) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| categories | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits beyond the basic operation. It does not specify that the tool is read-only, mention side effects, or address performance or permissions. Additionally, the description includes a 'ctx' parameter not present in the schema, causing minor inconsistency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively short and front-loads the core purpose. The inclusion of an 'Args' section provides structure, though the 'ctx' line could be considered unnecessary if it is not part of the actual input schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description explains inputs and output type (aggregated material data with areas and volumes). However, it lacks detail on the exact return format (e.g., list of objects) and units, which would be needed for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'categories' has no schema description, but the tool description adds meaning by providing an example and stating it defaults to all categories. This compensates for the missing schema documentation, though the description references an extra 'ctx' parameter not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves material quantities (areas and volumes) from a Revit model, with optional category filtering. It is specific about the verb and resource but does not differentiate from sibling tools like 'analyze_model_statistics'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it is 'useful for quantity takeoffs and cost estimation', implying a use case but providing no explicit guidance on when to use this tool vs alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_revit_model_infoD
Get comprehensive information about the current Revit model
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as whether the tool is read-only, the scope of information returned, performance implications, or any side effects. The agent has no insight into what the tool does beyond a generic phrase.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (one sentence) but lacks necessary detail. Conciseness is not valuable when the content is insufficient to guide the agent. It earns a middle score because it is not overly verbose but fails to be informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description should explain what information is returned. It does not, making it incomplete for the agent to understand the tool's output. The tool is simple but the description omits essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100%. Since no parameters exist, the description does not need to add parameter detail. The baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get comprehensive information about the current Revit model' is vague. It does not specify what 'comprehensive information' includes, nor does it differentiate from sibling tools like 'analyze_model_statistics' or 'get_element_properties'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description lacks any context for appropriate use or exclusions, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_revit_statusA
Check if the Revit MCP API is active and responding
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes a read-only health check operation with no side effects, which is transparent. However, it does not specify the response format or what 'active' exactly means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It is appropriately concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and no output schema, the description is adequate but could be more complete by specifying the response (e.g., returns a boolean or status object). It lacks details on what 'active' entails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the baseline is 4. The description does not add parameter information, but none is needed as the schema already covers 100% of the (empty) parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks if the Revit MCP API is active and responding, which is a specific verb-resource combination. It distinguishes itself from sibling tools that perform creation, modification, or analysis tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly guide when to use this tool versus alternatives. However, its status-checking nature implies it should be used before other operations to verify connectivity, but this is not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_revit_viewC
Export a specific Revit view as an image
| Name | Required | Description | Default |
|---|---|---|---|
| view_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavior but only says 'export an image', omitting details on permissions, file format, resolution, or whether the view must be active.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence without wasted words, but lacks key details that could be added without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description provides minimal viable purpose but lacks details on output format, error handling, and prerequisites, leaving gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'view_name' has no description in schema or description; with 0% schema coverage, the description adds no meaning beyond the parameter name itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Export' and the resource 'a specific Revit view as an image', making it distinct from sibling tools like get_current_view_info or list_revit_views.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like export_document or get_current_view_info, nor any prerequisites or context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selected_elementsA
Get details of elements currently selected in the Revit UI.
Returns IDs, categories, types, and key parameters of all elements the user has selected in Revit. Returns an empty list if nothing is selected (not an error).
Args: ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description covers key behaviors: returns empty list on no selection (not an error), and indicates read-only nature. Could mention that an active Revit document is required, but still provides solid transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences with no filler. Each sentence adds value: purpose, return details, edge case behavior, and argument placeholder.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description adequately explains return values and empty behavior. Missing context: prerequisite of active selection or document, but still complete enough for a simple get tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, schema coverage is 100%. Per calibration, zero parameters achieve baseline 4. No additional parameter documentation needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets details of elements selected in the Revit UI, specifies exactly what is returned (IDs, categories, types, key parameters), and distinguishes from sibling tools like get_current_view_elements by focusing on current selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (when user has selected elements), but does not explicitly state when to use this vs. alternatives like get_element_properties or get_current_view_elements. No when-not or exclusion criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_fileA
Link or import an external file into the Revit model.
Supports DWG, DXF, DGN (CAD files) and RVT (Revit links). Linked files maintain a live connection; imported files are embedded.
Args: file_path: Path to the file (DWG, DXF, DGN, or RVT) mode: "link" (default, maintains connection) or "import" (embeds copy) position: Optional placement offset {"x", "y", "z"} in mm ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| mode | No | link | |
| position | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that linked files maintain a live connection and imported files are embedded, which is key behavioral info. However, it omits details about error handling, permissions, or what happens if the file path is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph with a clear list of arguments, making it scannable. It could be slightly more concise, but the information density is good and front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not explain return values or success/error indications. It covers file linking basics but lacks context on prerequisites, side effects, or error scenarios, which is a gap for a file I/O tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description effectively documents all three parameters: file_path (path to supported types), mode (link/import with defaults), and position (optional offset with units). This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it links or imports external files into Revit, lists supported formats (DWG, DXF, DGN, RVT), and distinguishes between link and import modes. This is specific and differentiates from sibling tools like export or creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two modes (link vs import) and their implications (live connection vs embedded). However, it does not explicitly state when to use this tool versus alternatives or provide exclusion criteria, leaving some ambiguity for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_category_parametersA
Get available parameters for elements in a category
This tool helps you discover what parameters are available for coloring by listing all parameters found on elements in the specified category.
Args: category_name: Name of the category to check parameters for (e.g., "Walls", "Doors") ctx: MCP context for logging
Returns: List of available parameters with their types and sample values
| Name | Required | Description | Default |
|---|---|---|---|
| category_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It clearly indicates a read-only operation (listing parameters) with no side effects, but does not explicitly state read-only, auth needs, or rate limits. The description is sufficient for a benign query tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is clear and well-structured with a purpose line, a contextual note about coloring, and an Args/Returns section. It is concise but could be slightly tighter by removing redundancy between the first sentence and the later note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema and no annotations, the description provides adequate context: it explains what the tool returns (list of available parameters with types and sample values) and gives an example input. It is sufficiently complete for an agent to understand and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning with 'Name of the category to check parameters for (e.g., 'Walls', 'Doors')', which provides context and examples not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Get available parameters for elements in a category' and specifies it helps discover parameters for coloring. The verb 'list' and resource 'parameters' are specific, distinguishing it from siblings that list families or categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing parameters for coloring but does not explicitly state when to use or not use this tool versus alternatives like ai_element_filter or set_parameter. No exclusions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_familiesB
Get a flat list of available family types in the current Revit model
| Name | Required | Description | Default |
|---|---|---|---|
| contains | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the output is a flat list, but does not mention performance, side effects, or data format. For a read-only query, this is adequate but could be more explicit about return structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with essential information only: verb, resource, and scope. No superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks detail about what is returned (e.g., names, IDs) and does not mention the filtering or limiting capabilities. Without output schema, more information is needed for the agent to understand the tool's full behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. However, it provides no information about the two parameters ('contains' and 'limit') or how they affect results. The description adds no value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('family types'), and the scope ('in the current Revit model', 'flat list'). It distinguishes from siblings like 'list_family_categories' which lists categories, not types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., 'list_family_categories' or 'analyze_model_statistics'). There is no mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_family_categoriesA
Get a list of all family categories in the current Revit model
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Get' implies a read-only operation with no destructive side effects. The description does not elaborate on performance, return size limits, or whether the list is static or dynamic, but for a simple retrieval, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the tool's function with no extraneous words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is largely sufficient. It could optionally mention that the return is a list of category names or IDs, but the current lack of detail does not hinder understanding for a simple read action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters and schema coverage is 100%. The description does not add extra semantics beyond what the schema already conveys (i.e., nothing to configure). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and clearly identifies the resource ('all family categories in the current Revit model'). It distinguishes from siblings like list_families (which returns families, not categories) and list_category_parameters (which returns parameters of a category).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, nor does it provide usage examples or prerequisites. However, the tool's simple nature and clear purpose imply its usage context without needing extra guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_levelsA
Get a list of all levels in the current Revit model
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears the burden. It states a read-only list operation but lacks details on return format, performance, or ordering. Minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no waste, perfectly concise and well-structured for front-loading the key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description adequately conveys the purpose. Minor improvement could mention return details (e.g., level names/elevations), but current is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 0 parameters with 100% schema coverage; the description correctly adds no parameter info, meeting the baseline for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Get a list'), the resource ('levels'), and the scope ('in the current Revit model'), distinguishing it from sibling tools like create_level or list_families.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or when to avoid this tool, nor alternatives are mentioned. However, the simple context makes the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_revit_viewsA
Get a list of all exportable views in the current Revit model
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description does not reveal behavioral details such as what 'exportable' means (e.g., views that are not templates or locked), performance implications, or side effects. However, for a simple listing operation with no parameters, the disclosure is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly conveys the tool's purpose with no redundant or extraneous words. It is optimally concise for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While adequate for a no-parameter tool, the description does not specify the format of the returned list (e.g., array of view names or IDs) or any constraints on the model state. Given the absence of an output schema, more detail would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters (100% schema coverage), the baseline is 4. The description adds value by specifying that the list is of 'exportable views', which clarifies what is being returned beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'list of all exportable views' within the scope 'in the current Revit model'. It distinguishes from siblings like 'get_current_view_elements' and 'create_view', making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it does not mention that this tool lists views suitable for export before using export tools, nor does it specify conditions like needing an active model or that views must be exportable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_elementA
Modify parameter values on a Revit element.
Changes one or more instance parameters on the specified element. Returns old and new values for confirmation.
Args: element_id: Revit element ID to modify parameters: Dictionary of parameter name to new value pairs e.g., {"Mark": "EW-01", "Comments": "Updated via MCP"} ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| element_id | Yes | ||
| parameters | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it modifies instance parameters and returns old and new values for confirmation. However, it does not mention error handling (e.g., non-existent parameters), permissions, or side effects. No annotations are provided, so the description carries full burden but is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise and front-loaded with the purpose. The docstring-style Args section adds structure but could be more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a nested parameters object and no output schema, the description partially explains the return value. It lacks details on formatting of old/new values and does not cover edge cases like modifying read-only parameters. Siblings include many similar tools, but the description does not fully differentiate context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description adds meaning by explaining element_id and parameters as a dictionary with example. However, it does not specify valid parameter types, case sensitivity, or constraints, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Modify parameter values on a Revit element' and 'Changes one or more instance parameters', using a specific verb and resource. It distinguishes from siblings like 'set_parameter' and 'delete_elements' by focusing on modifying multiple instance parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for modifying instance parameters but does not explicitly state when to use this tool versus alternatives like 'set_parameter' or 'transform_elements'. No when-not-to-use or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_familyC
Place a family instance at a specified location in the Revit model
| Name | Required | Description | Default |
|---|---|---|---|
| family_name | Yes | ||
| type_name | No | ||
| x | No | ||
| y | No | ||
| z | No | ||
| rotation | No | ||
| level_name | No | ||
| properties | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states a create action but omits side effects (e.g., whether coordinates are relative, if active view matters, or if duplicate instances are allowed). This is insufficient for an agent to predict behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 12‑word sentence, which is concise but too sparse for 8 parameters. While front‑loading is good, it omits necessary details, making it marginally adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no output schema, and no annotations, the description is incomplete. It does not explain required vs optional behavior, coordinate semantics, or the 'properties' object. The agent would need to guess many details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not explain any parameter (e.g., family_name meaning, coordinate system, or properties object). The parameter names are self‑descriptive but the description adds no extra meaning, leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('place') and resource ('family instance') and mentions the action occurs at a 'specified location in the Revit model'. It clearly distinguishes from sibling tools like 'list_families' (which lists) and system family creation tools like 'create_duct' or 'create_pipe'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as prerequisites (e.g., family must be loaded) or excluding situations (e.g., if family not found). No explicit context or when-not advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_active_viewA
Switch the active view in Revit to the specified view.
Changes which view is displayed in the Revit UI. Use list_revit_views first to find available view names.
Args: view_name: Name of the view to activate ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| view_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description alone must disclose behavior. It states it changes the UI display but does not mention that no model modification occurs or any potential side effects. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very concise, using only two sentences plus a docstring. Front-loaded with the primary action and includes prerequisite guidance without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers the core action and prerequisite adequately. Could mention failure cases (invalid view name) but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It only repeats the parameter name and says 'name of the view to activate,' lacking specifics like case sensitivity or match requirements. Minimal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it switches the active view in Revit to a specified view, differentiating it from sibling tools like list_revit_views (listing) and create_view (creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to use list_revit_views first to obtain valid view names, providing clear context for when to use this tool. Does not mention alternatives or when not to use, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_parameterA
Set a single parameter value on a Revit element.
Automatically detects the parameter's storage type (String, Integer, Double, ElementId) and converts the value accordingly. Returns old and new values for confirmation.
Args: element_id: Target element ID parameter_name: Name of the parameter to set (e.g., "Comments", "Mark") value: New value as a string — automatically converted to the correct type ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| element_id | Yes | ||
| parameter_name | Yes | ||
| value | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses automatic type conversion and return of old/new values, but lacks details on side effects, prerequisites, or failure modes. For a mutation tool, more behavioral context is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a front-loaded purpose sentence followed by a feature summary and argument list. Every sentence adds value, and there is no verbosity. Slight improvement possible by integrating the Args section more naturally.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description mentions return values but lacks output format details. It does not address error handling, invalid parameters, or active document requirements. For a data-modifying tool in a complex environment, more completeness is warranted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description's 'Args' section adds essential meaning to each parameter, including an example for parameter_name and the auto-conversion for value. This is a significant improvement over the bare schema, though element_id could benefit from more context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'parameter value on a Revit element', making the tool's purpose unambiguous. It also mentions automatic type detection and conversion, which distinguishes it from generic 'modify_element' sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for setting a single parameter but does not provide explicit when-to-use or when-not-to-use guidance. Given siblings like 'modify_element' that might also modify parameters, some exclusion or alternative mention would improve this score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag_elementsA
Tag elements with annotation symbols in a view.
Places tags on the specified elements. Tags display element properties like type name, mark, or room name/number. Works with walls, doors, windows, rooms, and other taggable categories.
Args: element_ids: List of element IDs to tag view_name: View to place tags in (defaults to active view) tag_type_name: Tag family type name (auto-detects appropriate tag if omitted) add_leader: Show leader line from tag to element (default: false) orientation: Tag orientation — "horizontal" or "vertical" (default: "horizontal") offset: Tag offset from element center {"x": float, "y": float} in mm ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| element_ids | Yes | ||
| view_name | No | ||
| tag_type_name | No | ||
| add_leader | No | ||
| orientation | No | horizontal | |
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses key behaviors: tags are placed on elements, auto-detects tag type if omitted, uses default active view, and explains parameters like offset in mm. It does not mention potential side effects or prerequisites (e.g., elements must exist in the view), but overall provides sufficient transparency for a non-destructive annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line purpose, a brief behavioral summary, then a clear list of parameters. Every sentence adds value, and the key information is front-loaded. The inclusion of 'ctx' is minor but acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers most aspects for a tool of this complexity: it explains all 6 parameters, works with common categories, and auto-detects tag types. However, it does not mention potential errors (e.g., invalid element_ids) or what the tool returns (no output schema). Slight gaps remain, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the tool's description fully compensates by detailing each parameter in the 'Args' section, including types, defaults, and units (e.g., offset as '{"x": float, "y": float} in mm'). This adds substantial meaning beyond the schema's titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Tag elements with annotation symbols in a view.' It specifies that it places tags displaying element properties like type name, mark, or room name/number, and works with specific categories (walls, doors, windows, rooms). This distinguishes it from the sibling 'tag_walls' tool, which presumably targets only walls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context by listing compatible element categories ('walls, doors, windows, rooms, and other taggable categories'), but it does not explicitly state when not to use this tool or mention alternatives like 'tag_walls'. Without such guidance, the agent may not know to choose the more specific tool when appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag_wallsA
Tag all untagged walls in the current Revit view.
Places wall tags on every wall visible in the active view that doesn't already have a tag. Tags are centered on each wall segment.
Args: use_leader: Whether to show leader lines (defaults to False) tag_type_name: Specific wall tag family type name (optional, uses first available) ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| use_leader | No | ||
| tag_type_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes behavioral details like centering tags, default tag type selection, and optionally showing leader lines. No annotations provided, but description provides sufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with core action first, followed by details and Args section. Slightly verbose with 'MCP context for logging' but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameters, and behavior. Lacks explicit description of return value or output, but this is likely non-essential for a tagging tool. No output schema, so description need not explain returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond schema: use_leader controls leader lines, tag_type_name specifies a specific tag family type. Schema coverage is 0%, but description fully explains both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'tag' and resource 'untagged walls in current Revit view', clearly distinguishing from siblings like tag_elements which tag selected elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states when to use (tag all untagged walls in current view), but does not explicitly mention alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transform_elementsA
Move, copy, rotate, or mirror elements in the Revit model.
Performs geometric transformations on one or more elements. All coordinates and distances are in millimeters, angles in degrees.
Args: element_ids: List of element IDs to transform operation: Transform type — "move", "copy", "rotate", or "mirror" vector: Translation vector {"x", "y", "z"} in mm (required for move/copy) axis_point: Rotation center {"x", "y", "z"} in mm (required for rotate) angle: Rotation angle in degrees (required for rotate) mirror_plane: Mirror definition (required for mirror): - origin (dict): {"x", "y", "z"} point on the mirror plane in mm - normal (dict): {"x", "y", "z"} plane normal direction ctx: MCP context for logging
| Name | Required | Description | Default |
|---|---|---|---|
| element_ids | Yes | ||
| operation | Yes | ||
| vector | No | ||
| axis_point | No | ||
| angle | No | ||
| mirror_plane | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose side effects (e.g., whether copy creates new elements or move modifies existing), authentication needs, or error states. The description only states the operation type without behavioral caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a title line, summary, and Args list. It is not overly verbose, though the Args section largely duplicates schema info while adding necessary context. The purpose is front-loaded, but the overall length is reasonable for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 params, nested objects, no output schema, no annotations), the description covers parameter usage well but lacks behavioral context (e.g., return value, side effects, error handling). The absence of output schema description leaves a gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description compensates by providing units (mm, degrees), conditional requirements (e.g., vector is required for move/copy), and structure for objects (e.g., mirror_plane has origin and normal). This adds significant meaning beyond the bare schema, though some parameters like 'mirror_plane' could be slightly clearer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Move, copy, rotate, or mirror elements in the Revit model.' It uses specific verbs and identifies the resource (elements). This distinguishes it from sibling tools like delete_elements or modify_element.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for geometric transformations but does not explicitly state when to use this tool versus alternatives like copy/move via modify_element. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
45 tool updates
v0.1.0- First observed
ai_element_filter - First observed
analyze_model_statistics - First observed
clear_colors - First observed
color_splash - First observed
create_detail_line - First observed
create_dimensions - First observed
create_duct - First observed
create_grid - First observed
create_level - First observed
create_line_based_element - First observed
create_mep_system - First observed
create_pipe - First observed
create_room - First observed
create_room_separation - First observed
create_schedule - First observed
create_sheet - First observed
create_structural_framing - First observed
create_surface_based_element - First observed
create_view - First observed
delete_elements - First observed
execute_revit_code - First observed
export_document - First observed
export_ifc - First observed
export_room_data - First observed
get_current_view_elements - First observed
get_current_view_info - First observed
get_element_properties - First observed
get_material_quantities - First observed
get_revit_model_info - First observed
get_revit_status - First observed
get_revit_view - First observed
get_selected_elements - First observed
link_file - First observed
list_category_parameters - First observed
list_families - First observed
list_family_categories - First observed
list_levels - First observed
list_revit_views - First observed
modify_element - First observed
place_family - First observed
set_active_view - First observed
set_parameter - First observed
tag_elements - First observed
tag_walls - First observed
transform_elements
TDQS
Most tools have distinct purposes, but a few overlap: `modify_element` and `set_parameter` both modify parameters with different interfaces, and `create_line_based_element` and `create_structural_framing` both create line-based elements (walls/beams vs. structural beams). Additionally, `get_current_view_elements` and `ai_element_filter` both retrieve elements, causing potential confusion.
The naming predominantly uses verb_noun in snake_case (e.g., `create_wall`, `delete_elements`), but there are inconsistencies: `ai_element_filter` is noun_noun, `color_splash` uses an informal verb, and `modify_element` vs. `set_parameter` have different verb choices for similar operations. The pattern is mostly consistent but has notable deviations.
With 45 tools, the server feels bloated. Many creation tools could be consolidated (e.g., `create_duct`, `create_pipe`, `create_line_based_element`, `create_structural_framing`, `create_surface_based_element` into a single tool with an element type parameter). Similarly, `modify_element` and `set_parameter` are redundant. The count is too high for the apparent scope.
The tool suite covers most Revit workflows: CRUD for elements, querying, filtering, tagging, exporting, view management, MEP, and documentation (schedules, sheets). Missing features include family editing, workset management, and advanced dimension styling, but these are minor gaps. Overall, the surface is comprehensive for typical modeling and documentation tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Related MCP Servers
- AlicenseAqualityFmaintenanceAllows AI to interact with Autodesk Revit via the MCP protocol, enabling retrieval of project data and automation of tasks like creating, modifying, and deleting elements.1391454MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for Autodesk Revit (BIM) with 705+ API endpoints. Enables AI agents to create walls, place doors/windows, generate sheets, manage views, and produce construction documents via the Model Context Protocol. Uses named pipes for zero-crash Revit integration.22MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Autodesk Revit 2024/2025/2026/2027 via pyRevit — 48 tools for building design, editing, analysis, clash detection, MEP, interop, documentation, and model persistence.MIT
- -licenseNot gradedqualityNot gradedmaintenanceConnects MCP clients like Claude, Codex, and Cursor to a running Autodesk Revit session for typed BIM queries, verified model edits, family authoring, exports, and Power BI workflows. It is open-source, Apache-2.0, and designed for reliable, verified outcomes.-
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Demolinator/revit-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server