MCP Connector for Revit Documentation
Complete guide to installing, configuring, and using MCP Connector for Revit - 416 MCP tools across 14 packs, including the 39 free read-only tools, driven by Claude Desktop, ChatGPT Desktop, Cursor, or Claude Code.
Supported Revit Versions
- Revit 2022
- Revit 2023
- Revit 2024
- Revit 2025
- Revit 2026
- Revit 2027
AI Applications
- Claude Desktop
- ChatGPT Desktop
- Cursor
- Claude Code
- VS Code (GitHub Copilot agent mode)
- Visual Studio 2022 17.14+ / 2026 (GitHub Copilot)
- GitHub Copilot CLI
- Grok Build (xAI CLI)
Installation
Make sure all running instances of Autodesk Revit are closed before starting the installation.
.exe file and follow the installation wizard. Select which Revit versions to install for and accept the licence agreement and privacy policy.
Enabling MCP Connector for Revit
After installation, click the MCP Connector button in the Add-Ins tab to open the connector dialog. Input your licence key and then toggle Enable MCP to start the connection.
The dialog shows the status of detected AI applications:
- Ready (Running) - The AI application is detected and the MCP server is active
- Not Detected - The AI application is not currently running
Configuration
MCP Connector for Revit includes one-click auto-configuration for supported AI applications. Click the MCP Connector for Revit button in the Add-Ins tab to open the configuration dialog.
Claude Desktop
Toggle Enable MCP and the connector writes its entry into your Claude Desktop configuration automatically. The config file is located at:
%APPDATA%\Claude\claude_desktop_config.json
The Microsoft Store build does not read %APPDATA%\Claude. Windows redirects that folder into a sandboxed package location, so auto-configuration writes a valid config the Store app never sees, and no tools appear. The redirected file lives here:
%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json
Recommended fix: uninstall the Store version and install Claude Desktop from claude.ai/download (the standalone installer), which uses the standard path. Then click Configure Claude Desktop again and restart.
Alternative: copy claude_desktop_config.json from %APPDATA%\Claude\ into the package folder above, then fully quit Claude from the system tray and reopen it.
ChatGPT / Codex
Toggle Enable MCP and the connector writes its entry into your ChatGPT Desktop configuration automatically. The entry appears in the dialog when ChatGPT Desktop, the Codex app, the Codex CLI or the Codex extension for VS Code is installed on your machine. The config file is located at:
%USERPROFILE%\.codex\config.toml
This file is shared with the Codex CLI, so configuring ChatGPT Desktop makes the Revit tools available in Codex CLI as well. After configuring, fully quit ChatGPT and reopen it. With Revit open and a model loaded, a quick test is to ask ChatGPT to "ping Revit".
Use Work, not Chat. ChatGPT Desktop loads MCP servers from this config file in its Work area only - regular Chat conversations cannot see the Revit tools. If ChatGPT replies that the Revit MCP is not connected, check you are in Work first, then start a fresh conversation - the MCP connection is per-conversation and drops after sitting idle.
Codex in VS Code and WSL. The same entry configures the Codex app, the Codex CLI and the Codex extension for VS Code. If the extension runs Codex inside WSL, the connector also writes the WSL-side ~/.codex/config.toml, pointing at the Bridge through its /mnt/c/... path - the Revit tools appear there with no manual editing.
Cursor
Toggle Enable MCP and the connector writes its entry into your Cursor MCP configuration automatically. The config file is located at:
%USERPROFILE%\.cursor\mcp.json
GitHub Copilot
Toggle Enable MCP and the connector writes its entry into your GitHub Copilot configuration for VS Code, Visual Studio, and the Copilot CLI automatically. The config files are located at:
%APPDATA%\Code\User\mcp.json
%USERPROFILE%\.mcp.json
%USERPROFILE%\.copilot\mcp-config.json
Grok Build
Toggle Enable MCP and the connector writes its entry into xAI's Grok Build CLI configuration automatically. The config file is located at:
%USERPROFILE%\.grok\config.toml
Grok Build also reads Claude Code's and Cursor's MCP config, so if you have already configured either of those the connector shows up in Grok Build with no extra step.
Claude Code & other MCP clients
MCP Connector for Revit exposes a standard MCP stdio server, so it also works with Claude Code and any other MCP-compatible client. Point your client at the MCP Connector for Revit server command shown in the connector dialog.
After configuring, you must restart your AI application (Claude Desktop, ChatGPT Desktop or Cursor) for the changes to take effect.
Claude Desktop Settings
MCP Connector for Revit exposes 421 tools - 416 across the packs below and five connection tools. In Claude Desktop, enable Load tools when needed so tools are loaded on demand rather than all at once.
Use Chat, not Cowork
Claude Desktop has a mode selector at the bottom of the message box: Chat and Cowork. MCP connectors run in Chat conversations. In Cowork, your Revit requests will not reach the connector and Claude behaves as if Revit is not connected - even though the connector is configured correctly. Before you start, check the selector is set to Chat.
Note this is the opposite way round to ChatGPT Desktop, where the Revit tools are available in Work rather than regular Chat.
Local AI Setup
Connect a local AI model to Revit through an MCP-compatible app. These steps are for Windows, on the same computer as Revit.
1. Prepare Revit
- Install MCP Connector for Revit and open a sample project.
- Open Add-Ins > MCP Connector and turn on Enable MCP. Keep Revit open.
- In your AI app, download or select a local model that supports tool calling.
2. Configure your app
Use this entry for Revit 2022 to 2026. For Revit 2027, replace C:\\ProgramData with C:\\Program Files in the JSON.
{
"mcpServers": {
"AUTOM8LABS_Revit": {
"command": "C:\\ProgramData\\Autodesk\\ApplicationPlugins\\AUTOM8LABS.MCPConnectorRevit.bundle\\Contents\\Bridge\\MCPConnector.Bridge.exe"
}
}
}
For separate fields, use AUTOM8LABS_Revit as the name, stdio as the transport, and the command path with single backslashes and no quotes. Leave Arguments blank for this example.
Edit an existing connector entry rather than adding a duplicate. Keep its arguments, environment and tool settings. In an existing JSON file, add only AUTOM8LABS_Revit inside mcpServers, preserving other entries.
Choose your app below. Connection tested means registration, tool discovery and reconnection were checked in that version. It does not mean every model or Revit operation was tested.
- Open Settings > Agent Skills once to create the configuration file.
- Click the app version number > Open storage. Open
plugins/anythingllm_mcp_servers.jsonand add the entry. - Return to Agent Skills and click Refresh. Check the connector is running.
- Start your test prompt with
@agent.
- Open MCP connections and look for
AUTOM8LABS_Revit, including paused entries. - Use that connection if present. Otherwise, add one using the name and command above.
- Enable the connection and choose your local model.
- Open Settings > MCP > MCP Servers > Add > Import from JSON.
- Paste the JSON, enable the server and check its tools appear.
- Open Work > your Agent's menu > Edit > MCP and enable the connector for that Agent.
- Select your local model and start a conversation with that Agent.
- Open Settings > MCP Servers > Add MCP Server.
- Select STDIO and enter the name and command above.
- Save, then enable the server. A green indicator confirms it is active.
- In the right sidebar, open Program > Install > Edit mcp.json.
- Add the connector inside
mcpServersand save. - Check the connector is available and enabled for your chat.
- Sign in to your local installation. Open MCP settings > Import JSON.
- Paste the JSON. The import applies immediately.
- Enable the connector and MCP tool use for your chat.
These steps apply to 2026.9.11. Other versions may differ. See Unsloth's current guide.
3. Test the connection
With your sample project open, ask:
Use the Revit connector to tell me the active model name and Revit version. Do not change anything.
In AnythingLLM, prefix this with @agent. Confirm a connector tool runs and the answer matches your open project.
Tool loading and model limits
If available, enable tool selection or on-demand loading and start with a few read-only tools. Large tool lists can exceed a local model's context. A larger context setting alone does not guarantee reliable tool use.
Operator Skill
MCP Connector for Revit ships with a free operator skill - a plain text playbook Claude reads before touching your model. It teaches Claude to use the connector efficiently: read in bulk instead of one element at a time, verify answers with counts, batch edits in one call, and say so instead of guessing when something cannot be done. The result is fewer calls, fewer dead chats, and far less of your usage allowance burned on a single question.
Install in Claude Desktop:
- Download the skill: revit-connector.zip
- In Claude Desktop, go to Settings > Skills > Add > Upload a skill and select the zip.
- That is it - Claude picks the skill up automatically in new chats. If you ever find it has not, mention it in your prompt, for example "Follow the revit-connector skill".
Using Claude Code or Cursor instead? Install steps for both are in the mcp-connector-skills repository, which also hosts free skills for the rest of the MCP Connector family.
Power BI Dashboards
Free dashboards for model reviews and tool-use records. MCP Connector Pro is required to export reviews or record audit logs.
Model Review dashboard
Review warnings, model checks and changes over time. Your review export supplies the results; an optional Autodesk Data Exchange adds the 3D model.
Download: Model Review v1.0.1 (.pbit). The 3D viewer is included.
Before you start
- Install Power BI Desktop for Windows (September 2026 or later) and MCP Connector for Revit Pro 3.8.0+.
- For 3D: close Power BI, install Autodesk Data Connector for Power BI 3.0+, then reopen Power BI. You need an Autodesk account with access to the exchange.
1. Export your review
Open your model in Revit and ask your AI assistant: "Export a model review to C:\AUTOM8LABS\ModelReview". Keep this folder path for step 3.
2. Create a Data Exchange (optional)
Skip this step for charts only. If you already have an exchange, open it in Autodesk Docs and copy its full address.
- Publish or upload the same Revit model (2023 or later) to Autodesk Docs, including the 3D view you want to show.
- In Files, open the model. Select Sheets & Views > 3D, choose your view, then open its More (...) > Create Data Exchange menu.
- Choose a folder, name the exchange and create it. Once ready, open the new exchange and copy its full browser address, including everything after the question mark.
Creating an exchange needs Create + Upload folder permission; loading it needs View + Download. Autodesk's illustrated steps.
3. Open the template
Open the downloaded .pbit file and fill in the setup prompt:
| Field | What to enter |
|---|---|
| ReviewData | C:\AUTOM8LABS\ModelReview, or your export folder. Use the parent folder, not a dated snapshot folder. |
| ExchangeUrl | Paste the exchange address from step 2, not the source RVT address. Leave blank for charts only. |
| Exchange | Normally blank. If your folder contains several models, enter the exact model name from your review export. |
Select Load, sign in to Autodesk if prompted, then save as a .pbix report.
Use and refresh
Click an issue chart segment or table row to isolate its elements. Colours match the issue class: red for Critical, orange for Warning, purple for Performance Adviser. Room and Space solids are hidden; their review data remains available.
Export another review into the same folder, then click Refresh. To change your folder or exchange link, use Transform data > Edit parameters.
Tool Use Audit dashboard
Review AI-assisted work in Revit using a browser dashboard or Power BI.
Requires: MCP Connector for Revit Pro 3.8.0+ and administrator rights to enable logging.
Download: Tool Use Audit v1.0.0 (.zip)
1. Enable logging
Logging is off by default. On each computer, open Registry Editor as administrator. Create this key if needed, then set its values:
HKEY_LOCAL_MACHINE\SOFTWARE\AUTOM8LABS\MCPConnectorRevit
| Value name | Type and setting |
|---|---|
AuditLog | DWORD (32-bit): 1 |
AuditLogFolder | String (REG_SZ): your log folder, e.g. C:\AuditLogs |
Create the log folder and give Revit users write access. For multiple computers, use a network share. Restart Revit.
2. Open a dashboard
Extract the ZIP to C:\AuditDashboard or another short path. Keep its files and folders together.
- Open
audit-dashboard.htmlin Chrome or Edge. - Select Open audit folder, choose your
AuditLogFolderand allow read access.
The dashboard reads files locally and refreshes automatically.
- Open
AUTOM8LABS Connector Audit.pbipin Power BI Desktop for Windows (September 2026 or later). - Under Transform data > Edit parameters, set AuditLogFolder to your log folder.
- Select OK > Apply changes > Refresh.
Select Refresh whenever you want the latest records.
3. Check logging works
Ask your AI assistant to run get_levels in your open Revit model. Wait around 30 seconds, then check for the call. Select Refresh in Power BI.
Time, user, computer, model, AI app, tool, read/write type and outcome, plus the first 300 characters of its arguments. Chat messages, full tool results and bridge-only connection calls are excluded.
Write means the tool can change a model; it does not prove a change occurred. Optional: set AuditReason (DWORD) to 1 in the same registry key, then restart Revit, to request a short explanation from the AI.
CSV files are saved locally, then copied to AuditLogFolder every 30 seconds and when Revit closes. Failed copies retry automatically for files updated within the last seven days.
Local copies are kept for 90 days. Files in your chosen folder are not automatically deleted. See the included README for more detail.
Want your company branding? Contact us.
Tool Reference
MCP Connector for Revit adds its full tool set across the packs below, including a read-only free tier that works without a licence. The Edition column shows whether each tool is in the free tier or needs Pro. Every tool name shown is the exact identifier exposed to your AI client. Under each description is an example prompt showing how to ask for it in natural language - click any prompt to copy it, paste it into your AI client, and adjust the names and numbers to suit your model.
Annotation Pack
Place and manage dimensions, tags, and text across one view or many - then audit them for clashes.
| Tool | Example prompt | Edition |
|---|---|---|
| Align or distribute tags, text notes, and dimensions in the active view to the selection bounds. | ||
align_annotations | Align the selected tags so they line up with the left edge of the selection | Pro |
| Dimension curtain wall panels in elevation, section, or plan views - one chained string per side, a separate dimension per segment, or a dimension across each individual panel, measuring grid line to grid line or mullion face to mullion face. | ||
auto_dimension_curtain_walls | Dimension the curtain wall panels in the South Elevation along the bottom, mullion face to mullion face, with the overall included | Pro |
| Auto-create linear dimension strings for orthogonal grids across plan and elevation views, with segment and overall dimensions. | ||
auto_dimension_grids | Auto dimension the grids in all floor plans and elevations with a -2000mm offset and include the overall dimensions | Pro |
| Dimension the compound structure layers of walls, floors, roofs, and ceilings where a view cuts them - one segment per layer plus an optional overall thickness, set out from the view's crop edge. | ||
auto_dimension_host_layers | Dimension the wall layers on every wall cut in the Typical Wall Section, with an overall thickness on each | Pro |
| Auto-create vertical dimension strings for levels in elevation views, placed on either side and excluding interior elevations. | ||
auto_dimension_levels | Dimension the levels on all elevations on the left side with a -3000mm offset | Pro |
| Set out windows and doors along exterior facade walls with plan dimension strings - to each opening's structural jambs (or centrelines), plus the wall ends and an optional overall span. | ||
auto_dimension_openings | Set out the windows and doors along the facade walls in the Level 1 plan with an overall span | Pro |
| Set out windows and doors in elevation and section views - a chained width string jamb to jamb across every opening, or a separate dimension per opening, with optional sill-to-head heights. | ||
auto_dimension_openings_in_elevation | Set out the windows in the North Elevation jamb to jamb and add a sill-to-head height on each opening | Pro |
| Dimension each room from its two longest walls - a width and a length string, inside or outside the room, breaking out the doors, windows, and openings by their jambs, with an optional overall total. Angled walls ignored. | ||
auto_dimension_rooms | Dimension every room on Level 1 with width and length strings placed inside each room | Pro |
| Detect overlapping dimensions, tags, and text notes, and optionally auto-reposition clashing tags to resolve overlaps. | ||
check_annotation_clashes | Check all floor plans for overlapping tags and dimensions and auto-fix the clashes | Pro |
| Draw detail lines, arcs and circles in a plan, section, elevation, drafting view, legend or sheet, with a line style and a fillet radius that rounds the corners of a run. | ||
create_detail_lines | Draw a 3000 x 2000mm rectangle of detail lines in the active view using the Medium Lines style, with 150mm rounded corners | Pro |
| Create linear dimensions in a view between element references or between two explicit points. | ||
create_dimensions | Create a dimension between grids 1 and 2 in the active view | Pro |
| Draw filled or masking regions from project loops, view-frame outlines, a crop band on chosen sides of the crop, or family work planes, across many views in one call. | ||
create_filled_region | Draw a masking region 25 mm inside the crop on the left and top of this view | Pro |
| Create a line pattern from dash, dot and space segments in millimetres, optionally overwriting an existing one. | ||
create_line_pattern | Create a dash-dot line pattern called Boundary with 6 mm dashes and 2 mm dots | Pro |
| Create a line style with colour, weight and pattern, or update an existing style's graphics. | ||
create_line_style | Add a line style called Setting Out in red, 3 pixels, using the Boundary pattern | Pro |
| Place spot elevations or spot coordinates on an element at a point, measuring its top, bottom or nearest surface, in plans, sections, elevations and orthographic 3D views. Works on elements of a linked model too. | ||
create_spot_dimensions | Place a spot elevation on the top of this floor at 4000,3000 in the Level 1 plan | Pro |
| Create one or more text notes in a view, optionally with a dead-straight leader. A leader always points at an element, and the note is refused if that element is not visible in the view - so a leader can never end up aimed at something off the drawing. | ||
create_text_note | Add a note saying Fire rated wall - refer to detail 5, with a leader pointing at wall 123456 in the Level 1 plan | Pro |
| Create a text note type by duplicating an existing one and setting its graphics - font, size, bold/italic/underline, width factor, colour, and background. | ||
create_text_style | Create a 3.5mm Arial text style called Notes Red with red text, duplicated from the type named 2.5mm Arial | Pro |
| Find view-specific elements manually hidden with Hide in View - detail items, detail lines, filled regions, text, tags, dimensions, view-specific DWGs - and delete them, with dry-run preview and optional selection in Revit for review. Model elements and category or filter hides are never touched. | ||
delete_hidden_annotations | Find everything manually hidden in all views - hidden text, detail lines, filled regions, tags - show me the count by category, then delete it all | Pro |
| Find and replace literal text across text notes, scoped to one view or the whole model, with case and whole-word options and a dry-run preview. | ||
find_replace_text | Replace ISSUED FOR TENDER with ISSUED FOR CONSTRUCTION in every text note - dry run first | Pro |
| Report elements of given categories that are visible in a view but have no tag there - a QA pre-check before issuing drawings, with an optional check for elements no dimension references. | ||
find_untagged_elements | Check Level 1 for doors, windows and rooms that have no tag before we issue | Pro |
| Make room tags fit their rooms in a plan view - rotate to the room's long axis, drop to a smaller type in the same family, or push onto a leader just outside the room, stopping at the first fix that works. | ||
fit_room_tags | Make the room tags fit their rooms on Level 1 - rotate them, drop to a smaller type, or leader out the ones that still do not fit | Pro |
| List dimension types in the document, optionally filtered by style, returning ID, name, and style type. | ||
get_dimension_types | List all the linear dimension types in this model | Pro |
| Read spot elevations, spot coordinates and spot slopes by view, by element or across the model: the text each one shows, its elevation in millimetres, and the element and point it measures. | ||
get_spot_dimensions | List the spot elevations in this view with the level each one shows | Pro |
| Read the tags in a view or on chosen elements: the text each one shows, its tag type, what it tags, its head point and leader, with blank and orphaned tags flagged. | ||
get_tags | List the tags in this view that show no text, with the element each one tags | Pro |
| Read text notes - content, owning view, type and position - filtered by view or by a case-insensitive text search. | ||
get_text_notes | Find every text note containing the word TENDER and tell me which views they sit in | Pro |
| List, retag or replace keynotes across views, and report tags pointing at entries missing from the keynote table. | ||
manage_keynotes | List the keynotes in this model and retag the ones pointing at removed entries | Pro |
| Change existing detail lines and arcs: move an end point, redraw an arc through a point, change the line style, or fillet the corner between two lines with a radius. | ||
modify_detail_lines | Fillet the corner between these two detail lines with a 200mm radius | Pro |
| Override the graphics of dimensions by their value - every dimension under 1 m (or 5 ft) in red, over a value, or within a band - across the active view, a sheet, chosen sheets or every view. Multi-segment dimensions match on any or all segments; a clear mode removes the overrides again; dry run lists the matches. | ||
override_dimensions_by_value | Colour every dimension under 1 m on this sheet red so I can check them | Pro |
| Delete dimensions, tags, and text notes from one or more views, with session-only scoping and dry-run preview. | ||
remove_annotations_in_view | Remove all the annotations this session created in the active view - dry run first | Pro |
| Delete tags whose displayed text is blank - the tag-all leftovers where the tagged parameter is empty - from one view or many, with dry-run preview and the tagged element reported for each. | ||
remove_empty_tags | Find and delete empty tags across all floor plans - dry run first | Pro |
| Switch grid and level heads between 3D and 2D extents per end across many views at once. | ||
set_datum_extents | Switch every grid head in the Level 2 plans to 2D extents | Pro |
| Add the leader jog to grid and level heads in a view, or read which heads already have one. | ||
set_datum_leaders | Add a leader jog to the grid heads on the north side of Level 1 | Pro |
| Tag exact elements by ID in any view, including assembly views, each with its own tag type, head position and leader, skipping an element that already carries that tag type. Works for any taggable category, including switches, wires, rebar and embeds. | ||
tag_elements | Tag these three light switches with the Switch ID tag, heads 400mm to the right, with leaders | Pro |
| Tag every instance of selected categories - rooms, doors, windows, walls, equipment, and more - across one or more views. | ||
tag_elements_in_view | Tag all the doors and windows in every floor plan, skipping anything already tagged | Pro |
Toggle/show/hide per-view bubbles or swap the two existing flags (state: "swap", side: "both"). Screen sides use the target view's axes and each grid's drawing direction; grid geometry is never reversed. Ambiguous curves and multi-segment grids are reported instead of guessed. Reads both native flags after commit; only verified changes count. A no-op is reported unchanged, and rendered visibility is explicitly unverified. | ||
toggle_grid_bubbles | Hide the grid bubbles at the bottom of the vertical grids in the active view | Pro |
| Update the text of existing text notes by element id. Each result carries the text read back from the model after the change, and dryRun previews without writing. | ||
update_text_notes | Update note 987654 to read Refer to the structural engineer's drawings | Pro |
Connection Tools
Tools for the connection itself rather than the model: choose between the Revit sessions that are running, start Revit, and check a call whose result could not be confirmed. They come with every edition and are in addition to the packs.
| Tool | Example prompt | Edition |
|---|---|---|
| After a call whose result could not be confirmed, record that the affected model has been checked so that work can carry on. The call is never repeated automatically. | ||
acknowledge_bridge_recovery | I have checked the model and the last change did go in - acknowledge it and carry on | Free |
| Read whether a call is waiting to be checked because its result could not be confirmed, and what to inspect first. It changes nothing. | ||
get_bridge_recovery | Did that last call finish? What should I check before carrying on? | Free |
| List the Revit sessions running on this computer: the Revit release, the model each one shows, whether the connector is enabled there, and which session this connection is using. | ||
list_revit_sessions | Which Revit sessions are open, and which one are you connected to? | Free |
| Send the following tool calls to another running Revit session, chosen by process, by Revit release or by the model it shows. | ||
select_revit_session | Switch to the Revit session that has the Site model open | Free |
| Start an installed Revit release on this computer, optionally opening one model, and wait for its connector. Any start-up question Revit asks is left for you to answer. | ||
start_revit_session | Start Revit 2026 and open the Office Block model | Free |
Coordination Pack
Run clash detection between disciplines and linked models, manage MEP penetrations, and set up dedicated review views.
| Tool | Example prompt | Edition |
|---|---|---|
| Detect clashes between two sets of element categories and report each clashing pair with its location. | ||
check_model_interferences | Check for clashes between structural framing and ducts in this model | Pro |
| Create or return a dedicated isometric 3D 'Clash Review' view and return its ID. | ||
create_clash_review_view | Create a clash review view for the clashes you just found | Pro |
| Place rectangular or circular opening family instances at penetration locations, sized automatically. | ||
create_mep_openings | Place opening families at the detected penetration groups, using my Rectangular Opening family for grouped services and my Circular Opening family for single round ones | Pro |
| Cut native rectangular openings directly into wall and floor hosts at penetration points, without placing a family. | ||
cut_mep_openings | Cut openings directly into the walls at the penetration points, minimum 100 x 100mm | Pro |
| Detect MEP services from linked models penetrating walls, floors, ceilings, and roofs, grouping them into sized openings. | ||
detect_mep_penetrations | Find every pipe and duct from the MEP link penetrating walls, with 50mm clearance, grouping services within 200mm of each other | Pro |
| Write clash results to a CSV file and return the row count and written path. | ||
export_clash_report | Export the clash results to C:\Project\Clashes.csv | Pro |
| Read the boundary sketch of floors, roofs, ceilings and walls with an edited profile as true curves in millimetres - lines, arcs with centre and radius, ellipses and splines - plus an element's location curve. | ||
get_boundary_curves | Give me the boundary of this floor as lines and arcs, with each arc's centre and radius | Pro |
| Return min, max, centre, and dimensions of element bounding boxes in millimetres, optionally view-specific. | ||
get_bounding_boxes | What are the bounding box sizes of the selected elements in millimetres? | Pro |
| Read an element's geometry in millimetres: its vertices, edges or faces, with a curved edge returned as the arc, ellipse or spline it is. | ||
get_element_geometry | What are the corner points of this floor slab in millimetres? | Pro |
| Find elements within a radius of a point or element, returning them sorted by distance with an optional category filter. | ||
get_elements_by_proximity | Find everything within 500mm of the selected column | Pro |
| Read an element, the document or the active view as the Revit API presents it: the value of every property and read method, with a path to step into what each one returns. It changes nothing. | ||
inspect_api_object | Show me every property of this wall as the Revit API gives it, then step into its location curve | Pro |
Data Pack
Read and write element parameters at scale, with full Excel round-trip and intelligent renumbering.
| Tool | Example prompt | Edition |
|---|---|---|
| Find elements by category and parameter rules, then write parameter values to every match. | ||
batch_modify_by_filter | For all walls where Fire Rating equals 60, set Comments to Fire rated - dry run first | Pro |
| Set one parameter to the same value across many elements in a single transaction, reporting per-element results. | ||
batch_set_parameters | Set Comments to Checked on all the selected elements | Pro |
| Swap many element instances to a different type in one transaction - by type ID or name, matched within each element's own family first - with per-element results and a dry-run preview. | ||
change_element_type | Swap the selected doors to the 838 x 2038mm type - dry run first | Pro |
| Clear current selection | ||
clear_selection | Clear my current selection | Free |
| Create a project parameter bound to categories with a data type, group and instance or type scope. | ||
create_project_parameter | Add a text project parameter called Fire Zone to walls and doors, instance, under Identity Data | Pro |
| Duplicate any element type under a new name and set its type parameters in one step - framing sections, curtain wall and mullion types, doors, walls. | ||
duplicate_element_type | Duplicate the 910 x 2110mm door type as 1010 x 2110mm and set its Width to 1010 mm | Pro |
| Export element parameters to an .xlsx file, one row per element, ready for editing and re-import. | ||
export_parameters_to_excel | Export the door Mark, Level, and Fire Rating parameters to C:\Project\Doors.xlsx | Pro |
| Find and replace text parameter values across a category using exact, contains, starts/ends-with, or regex modes. | ||
find_replace_parameter | Replace STORE with Storage in every room name | Pro |
| Get all categories | ||
get_categories | List the model categories with element counts | Free |
| Get detailed element info by ID | ||
get_element_by_id | Get the details for element 123456 | Free |
| Count elements by category | ||
get_element_count | How many doors and windows are in the model? | Free |
| Get all parameters for an element | ||
get_element_parameters | Show me all the parameters on the selected door, including the type parameters | Free |
| List the ElementIds behind an element set handle (ES-xxxx) returned by get_elements or search_elements; paginated. | ||
get_element_set | Show me the first 50 elements in set ES-0001 | Free |
| Query elements by category, family, type, level | ||
get_elements | List all the doors on Level 1 with their parameters | Free |
| Get loaded families by category | ||
get_families | List the loaded door families and their types | Free |
| Get types for a family | ||
get_family_types | What types does the Single-Flush door family have? | Free |
| Read a specific parameter value across all elements in a category | ||
get_parameter_values_by_category | List the Mark value of every door in the model | Free |
| List parameters on a category's elements with name, storage type, and instance/type level, for discovering valid names. | ||
get_parameters_for_category | List all the parameters on walls, instance and type, with their storage types | Pro |
| Get currently selected elements | ||
get_selected_elements | What do I have selected? | Free |
| Write parameter values from an .xlsx file onto elements matched by an ElementId column, skipping blanks and read-only fields. | ||
import_parameters_from_excel | Import the parameter values from C:\Project\Doors.xlsx back onto the elements - dry run first | Pro |
| Copy parameter values from a source element to target elements - all writable parameters or a named subset. | ||
match_element_properties | Copy the Head Height and Comments values from the first selected door onto the rest of the selection | Pro |
| Recall, list, or delete selection sets | ||
recall_selection_set | Recall the selection set called Fire Doors | Free |
| Renumber elements by view reading order, selection, or path, with level/building prefixes and zero-padding. | ||
renumber_elements | Renumber the doors on Level 1 in view reading order with prefix D- starting at 101 | Pro |
| Save current selection as a named set | ||
save_selection_set | Save the current selection as Fire Doors | Pro |
| Search for elements by text across names, type names, family names, marks, and comments | ||
search_elements | Search the model for anything named riser | Free |
| Set selection by element IDs | ||
select_elements | Select elements 123456 and 123789 | Free |
| Set one parameter value on a single element, auto-detecting storage type and rejecting read-only parameters. | ||
set_parameter | Set the Mark of element 123456 to D-101 | Pro |
Family Editor Pack
Author loadable families end to end without leaving the conversation - start from a template or an existing family, build the reference-plane rig, label it with parameters, flex it to prove it, model extrusions and revolves (tracing imported CAD drawings where you have them), then load the result straight into your project.
| Tool | Example prompt | Edition |
|---|---|---|
| Add a family parameter - length, area, volume, angle, number, integer, text, yes/no, or material - instance or type, with an optional formula and default value. | ||
add_family_parameter | Add an instance length parameter called Seat Height with a default of 450mm | Pro |
| Assign a material to family geometry, optionally through a material family parameter so it stays swappable per type. | ||
assign_material | Assign the Walnut material to the seat and legs, linked through a material parameter so it can be swapped per type | Pro |
| Link an element or nested instance parameter to a family parameter so it flexes with the type. | ||
associate_family_parameter | Link the extrusion depth to the family parameter Depth | Pro |
| Capture the family session as an image - isometric, plan, or front elevation - to check the result after geometry changes. | ||
capture_family_view | Show me the family in 3D so we can check the geometry | Pro |
| End the family editing session - save to the source file, save as a new path, or discard changes. | ||
close_family | Save the family as Ply Chair.rfa in my Families folder and close it | Pro |
| Copy reference planes, dimensions, geometry or parameters from one family into another. | ||
copy_family_elements | Copy the reference planes and dimensions from the Base family into this one | Pro |
| Create a solid or void blend between two sketched profiles in a family. | ||
create_blend | Create a blend from the 600 mm square at the base to the 300 mm circle at 1200 mm | Pro |
| Create one exact solid in the family editor from two forms combined by a boolean: the shape both share, one minus the other, or the two together. No void and no cut relationship is left behind. | ||
create_boolean_solid | Make one solid from the overlap of the barrel section extruded 600mm and the rounded plan outline extruded 200mm | Pro |
| Draw a curve through reference points in a conceptual mass or adaptive family. | ||
create_curve_by_points | Draw a spline through the reference points I just placed | Pro |
| Create a solid or void extrusion from closed profile loops, with holes, profile edges locked to reference planes, and top and base bound to length parameters so the solid flexes with the rig. | ||
create_extrusion | Extrude the seat profile 25mm thick from 430mm, locked to the reference planes | Pro |
| Start a family editing session from a template - the template decides category and hosting behaviour, and an unmatched name returns the available templates. | ||
create_family | Create a new Furniture family called Ply Chair | Pro |
| Add duct, pipe, cable tray, conduit or electrical connectors to family faces with sizes and flow settings. | ||
create_family_connectors | Add a 100 mm duct connector on the top face and a 22 mm pipe connector on the back | Pro |
| Add flip controls to a family so instances can be mirrored in the project. | ||
create_family_controls | Add flip controls for both directions to this family | Pro |
| Draw model or symbolic lines in a family on a reference plane or level. | ||
create_family_curves | Draw the symbolic plan outline for this family as model lines on the reference level | Pro |
| Dimension between two named reference planes, optionally labelled with a length parameter so the planes move when the parameter changes, or locked. | ||
create_family_dimension | Dimension Left to Right and label it with the Width parameter | Pro |
| Create or refresh a clean embedded preview - reference planes and sketch clutter hidden - shown in Revit's family browser and Windows Explorer. | ||
create_family_thumbnail | Give the family a clean thumbnail preview before we save | Pro |
| Create or update named types in the open family with parameter values - one type per finish or size - converting each value by the parameter's own unit and setting materials by name. Identity fields included; formula-driven values are reported rather than overwritten. | ||
create_family_types | In the open family make five types, one per finish: Oak, Walnut, Ash, Black and White, with the manufacturer and model filled in | Pro |
| Create a form from profiles or points in a conceptual mass: extrusion, loft, revolve or surface. | ||
create_form | Create a solid form from the three profiles in this conceptual mass | Pro |
| Create materials with shading colour, transparency, and a render appearance from the built-in library, singly or in batches. | ||
create_material | Create a material called Walnut with a dark brown colour and a wood appearance from the library | Pro |
| Create named reference planes at offsets from the family origin - the skeleton the parameters and geometry hang from. | ||
create_reference_planes | Create Left and Right reference planes 300mm either side of the origin | Pro |
| Create a solid or void revolve from a radial profile about a vertical or inclined axis - the proper form for turned and splayed pieces. | ||
create_revolve | Revolve the traced leg profile 360 degrees about its raked centreline | Pro |
| Sweep a profile along a path to create a solid or void in a family. | ||
create_sweep | Sweep the skirting profile along the selected path | Pro |
| Create a title block family for a sheet size with border, logo and label layout. | ||
create_title_block | Create an A1 title block family with our logo top right and a revision table | Pro |
| Search the Revit library folders for a family by name or category. | ||
find_library_family | Find a single flush door family in the library | Pro |
| Flex the family - set test values, switch through every type, regenerate, and report exactly what breaks. All changes are rolled back. | ||
flex_family | Flex Width at 600, 900 and 1200mm and tell me what breaks | Pro |
| Report the family session's structure - category, types, parameters, named reference planes, geometry inventory, and nested families. | ||
get_family_info | What parameters, reference planes and geometry does this family have? | Pro |
| Import a DWG or DXF into a plan or elevation view of the family session as a tracing underlay - drawings sharing an origin line up across views. | ||
import_cad_underlay | Import chair-elevation.dwg into the front view as a tracing underlay | Pro |
| Join solids in the family editor so they read as one solid, unjoin them, or list what is joined, with each join read back off the family. | ||
join_family_geometry | Join the shaft and the head so they read as one solid | Pro |
| Load a family file into the project, replacing parameters and types when asked. | ||
load_family | Load the door family from C:\Library\Doors\Single Flush.rfa into this project | Pro |
| Load the session family into the project, overwriting the loaded copy if one exists. | ||
load_family_into_project | Load the family into the project and keep the session open | Pro |
| List, add, rename or restyle subcategories in a family or project. | ||
manage_object_styles | List the subcategories in this family and add one called Hidden Lines | Pro |
| Rename a family parameter, change its group, formula, tooltip or default, or convert between type and instance. | ||
modify_family_parameter | Rename the Width parameter to Overall Width and give it a formula of Panel Width + 100 mm | Pro |
| Start a family editing session from an existing family - a file path, or a family loaded in the active project. | ||
open_family | Open the Single-Flush door family from this project for editing | Pro |
| Place a nested family inside the open family and align it to reference planes. | ||
place_nested_family | Nest the handle family into this door and align it to the leaf reference plane | Pro |
| Read the curves out of a CAD import or link, grouped by layer with coordinates in millimetres - lines, arcs, circles, and polylines - to drive extrusion and revolve profiles. | ||
read_cad_geometry | Read the curves on the PROFILE layer so we can trace the revolve | Pro |
| Set detail-level and view-direction visibility on family geometry - the Family Element Visibility Settings dialog as a tool. | ||
set_family_element_visibility | Show the simple solid at Coarse only and the detailed profile at Medium and Fine | Pro |
| Set the photometric properties of a light family: colour temperature, distribution, beam angle and intensity. | ||
set_family_light_properties | Set this light family to a 3000 K spot with a 40 degree beam | Pro |
| Mark a nested family as shared, or unshare it, so it schedules and tags on its own. | ||
set_family_shared | Make this nested family shared so it schedules on its own | Pro |
| Change the tile pattern, rotation and indent of a divided surface. | ||
set_tile_pattern | Change the divided surface to a hexagon tile pattern | Pro |
| Switch the family session or active document between metric and imperial display units, with an optional explicit length unit. | ||
set_units | Switch this family to imperial so the dimensions read in inches | Pro |
Issue Pack
Export the model for sharing, handover, or coordination - PDF, DWG, IFC, NWC, images, and data, with parameter-based naming.
| Tool | Example prompt | Edition |
|---|---|---|
| Export views or sheets to DWG or DXF with layer mapping standards, line scaling, units, and property overrides. | ||
export_dwg | Export sheets A101 to A105 to C:\Exports as DWG using the BS1192 layer standard | Pro |
| Export the model to IFC with full option coverage: version, property sets, mapping tables, and header metadata. | ||
export_ifc | Export the model to IFC4 Reference View with base quantities to C:\Exports | Pro |
| Export the model to NWC for Navisworks with full option coverage, including scope, conversion, and faceting controls. | ||
export_nwc | Export the Navisworks Export 3D view to NWC in C:\Exports | Pro |
Sheets to PDF with parameter-based naming, all existing ISO/ANSI/ARCH paper sizes, colour and sheet selectors. Default scale 100%; optional exact zoomPercentage (e.g. 50) or fitToPage, never both. Exact scaling needs a supported paperSize; explicit 100 without one keeps original sheet size. Reports actual zoom and anchor fallbacks; nominal A1 at 50% is 420.5 x 297 mm versus A3 420 x 297 mm, so may clip. Combined sheets with differing offsets are centred. | ||
export_pdf | Export sheets A101 to A116 to C:\Exports as individual PDFs named with the sheet number and name | Pro |
| Export rooms with chosen parameters to CSV or JSON, filtered by level or phase; returns inline if no path is given. | ||
export_room_data | Export the Level 1 rooms with name, number, and area to C:\Exports\Rooms.csv | Pro |
| Export a schedule view to a CSV file, optionally including column headers. | ||
export_schedule | Export the Door Schedule to C:\Exports\Doors.csv with headers | Pro |
| Export a view to a PNG or JPG image at a chosen pixel size and quality. | ||
export_view_image | Export the Level 1 plan as a 4000 pixel PNG to C:\Exports | Pro |
MEP Pack
Model and interrogate mechanical, electrical and plumbing services - draw ducts, pipes, cable tray and conduit, build systems and circuits, create spaces, and check what is actually connected.
| Tool | Example prompt | Edition |
|---|---|---|
| Add insulation to ducts and pipes, or lining to ducts, by type and thickness, across runs, fittings and accessories. Each one is read back from the model. | ||
add_mep_insulation_lining | Add 25mm pipe insulation to the selected chilled water pipes and their fittings | Pro |
| Add sizes to a pipe segment's or a conduit standard's size table, so a run can take a diameter the table lacks. | ||
add_mep_sizes | Add a 65mm nominal size to the Copper pipe segment, 63.6mm inside and 66.7mm outside diameter | Pro |
| Cap every open end of the given ducts, pipes and fittings with the cap from the type's routing preferences, with a dry run that lists the open ends first. | ||
cap_mep_open_ends | Cap the open ends on the selected ductwork and tell me any that could not be capped | Pro |
| Find open MEP connectors and orphaned elements across the model, one level, or one domain. Each finding carries the element id, category, type, level, domain and the connector position in millimetres. | ||
check_disconnected_mep | Check the whole model for disconnected pipework and list the open connectors by level | Pro |
| Connect two MEP elements through their nearest compatible unconnected connectors - direct where they already meet, otherwise an elbow, transition or union fitting. Anything beyond a single fitting fails with the measured reason rather than forcing the geometry, and both connectors are read back from the model afterwards. Set dryRun to preview the route without touching the model. | ||
connect_mep_elements | Preview connecting these pipe pairs, then make the connections on the ones that come back routable | Pro |
| Create a cable tray run through ordered points - one straight segment per leg, with an elbow fitting attempted at each interior vertex. Every joint is read back from the model. | ||
create_cable_tray | Run a 300mm cable tray from 0,0,3200 across to 12000,0,3200 and then to 12000,8000,3200 | Pro |
| Create a conduit run through ordered points - one straight segment per leg, with an elbow fitting attempted at each interior vertex. Every joint is read back from the model. | ||
create_conduit | Run 25mm conduit from the panel at 2000,1500,3000 across to 9000,1500,3000 | Pro |
| Create straight ducts, each between two points or between two existing connectors so the joint is real rather than coincidental. Every joint is read back from the model. | ||
create_duct | Add a 400x250 supply duct from 1000,2000,3400 to 8000,2000,3400 on Level 2 | Pro |
| Create a named mechanical duct system from a base equipment connector plus the member element connectors. | ||
create_duct_system | Create a supply air system called SA-01 with AHU-1 as the base equipment and every diffuser on Level 3 | Pro |
| Circuit the given fixtures or equipment to a named panel, then read the circuit back off the model - requested against actually circuited, with Revit's own reason for anything it refused. | ||
create_electrical_circuit | Circuit all the lighting fixtures on Level 2 to panel LP-2 and tell me which ones failed and why | Pro |
| Create flex duct or flex pipe through a run of points, by flex type and system type, with an optional size. The ends stay free until they are connected. | ||
create_flex_duct_or_pipe | Draw a 200mm round flex duct on the Supply Air system through these three points at 3000mm | Pro |
| Create MEP Spaces from a linked model's rooms, the host model's areas, or explicit points. The source number and name are mapped onto each Space so schedules reconcile against the architectural model. | ||
create_mep_spaces | Create MEP spaces from the architectural link's rooms on Level 1 and carry their numbers and names across | Pro |
| Create straight pipes, each between two points or between two existing connectors so the joint is real rather than coincidental. Every joint is read back from the model. | ||
create_pipe | Add a 50mm domestic cold water pipe from 0,0,3000 to 6000,0,3000 | Pro |
| Create a named piping system from a base equipment connector plus the member element connectors. | ||
create_pipe_system | Create a domestic cold water system called DCW-01 based on the booster set with all the Level 1 fixtures | Pro |
| Draw electrical wires in a floor or ceiling plan through the points given, with either end connected to a device's electrical connector. | ||
create_wires | Draw a wire from this switch to the light fitting, arcing through 2500,1800 | Pro |
| List cable trays with width, height, level, length and service type. Filter by level, type, service or size - a miss returns the available values rather than an empty list. | ||
get_cable_trays | List all the cable trays on Level 3 with their sizes and lengths | Pro |
| List ducts with size, system, level, length and airflow. Filter by level, system, type or size - a miss returns the available values rather than an empty list. | ||
get_ducts | List the ducts on Level 2 with their sizes, systems and airflow | Pro |
| Read circuits live from the model - circuit number, panel name, load name, breaker rating, apparent load in VA and the connected element ids. | ||
get_electrical_circuits | Show me every circuit on panel LP-1 with its breaker rating and connected load | Pro |
| Read every connector on the given elements: index, domain, shape, size and origin in millimetres, flow direction, whether it is connected and the element on the other end. Connection state is read from the model's own connector data, never inferred from proximity. | ||
get_mep_connectors | Show me the open connectors on these pipe fittings and what each connected one joins to | Pro |
| Read the size tables in millimetres: each pipe segment's sizes with the pipe types that use it, each conduit standard's sizes with bend radius, and the project's duct and cable tray sizes. | ||
get_mep_sizes | What pipe sizes are available on the Copper segment? | Pro |
| List MEP spaces with number, name, level, zone, area and the airflow, load and occupancy figures Revit exposes. | ||
get_mep_spaces | List the MEP spaces on Level 4 with their areas and design airflow | Pro |
| List duct, piping and electrical systems with classification, system type, member counts and the flow or load totals Revit exposes. | ||
get_mep_systems | List all the piping systems in this model with their member counts and flow totals | Pro |
| Per-panel summary read live from the model - distribution system, every circuit with its load name and apparent load, and the connected-load totals. | ||
get_panel_schedule | Give me the panel schedule for LP-2 with the connected load totals | Pro |
| List pipes with diameter, system, level, length, flow and slope. Filter by level, system, type or size - a miss returns the available values rather than an empty list. | ||
get_pipes | List the domestic cold water pipes on Level 1 with their diameters and lengths | Pro |
| Read the fittings that duct, pipe, cable tray and conduit types route with - elbows, junctions, crosses, transitions, unions and caps - with their size ranges. | ||
get_routing_preferences | Which elbow and tee does the Standard pipe type route with? | Pro |
| Walk one MEP system's members - base equipment first, then the elements in connection order where the connectors allow it, with any unordered remainder labelled as such rather than silently mixed in. | ||
get_system_elements | Walk the Domestic Cold Water 1 system from the base equipment and show me the order | Pro |
| Resize existing ducts - width and height for rectangular, diameter for round, all in millimetres. The achieved size is read back off the model, because Revit can round to the duct type's size catalogue. | ||
resize_duct | Resize these ducts to 500x300 and confirm the sizes Revit actually applied | Pro |
| Resize existing pipes to a given diameter. Revit may round to the pipe type's size catalogue, so the achieved diameter is read back off the model. | ||
resize_pipe | Resize the selected pipes to 65mm and tell me the sizes Revit actually used | Pro |
| Set the system type of existing ducts and pipes by name, reading back the system each one ends up in. | ||
set_mep_system_type | Change the selected pipes to the Domestic Cold Water system type | Pro |
| Set the fittings a duct, pipe, cable tray or conduit type routes with, so corners and branches join when runs are drawn. | ||
set_routing_preferences | Set the Default rectangular duct type to route with a mitred elbow and a tee junction | Pro |
| Re-sync MEP Spaces against their source - a linked model's rooms or the host model's areas - reporting what was added, removed, renamed, moved and resized, matched on space number. | ||
update_mep_spaces | Re-sync the MEP spaces against the architectural link and show me everything that changed | Pro |
Model Management Pack
Audit, purge, compact, and maintain model health - plus worksharing, links, design options, and file operations.
| Tool | Example prompt | Edition |
|---|---|---|
| List the open documents and bring one of them to the front. | ||
activate_document | List the open documents and bring the site model to the front | Pro |
| Move model elements onto a target workset by explicit IDs, category, level, or current selection; creates the workset if new. | ||
assign_elements_to_worksets | Move all the furniture on Level 2 onto the FF&E workset | Pro |
| Run a full model health audit across every section, including rooms, families, and CAD imports: warnings, element counts by category, unplaced rooms, unused families, imported CAD, and file metrics. | ||
audit_model_health | Run a full model health audit across every section, including rooms, families, and CAD imports | Pro |
| Compare the shared coordinates of every link against the host and report mismatches. | ||
audit_shared_coordinates | Check that the shared coordinates of every linked model match this one | Pro |
| Link every CAD file (DWG, DXF, DGN) in a folder into the model with shared import settings. | ||
batch_link_cad | Link every DWG in C:\Project\Surveys into the model in black and white, origin to origin | Pro |
| Math calculations | ||
calculate | Work out 14 risers at 175mm - what is the total rise? | Free |
| Close the active document, optionally saving first and optionally exiting Revit afterwards. | ||
close_document | Save and close this model | Pro |
| Save the model with compaction to reduce file size, reporting before and after sizes; optionally save the compacted copy elsewhere. | ||
compact_model | Compact the model and tell me the file size before and after | Pro |
| Copy elements of a category, or given ids, from a loaded link into the host model in place using the link's transform. Types the host lacks come across, existing host types win on a name clash, and anything Revit renamed to avoid a clash is reported. Dry run counts by type first. | ||
copy_from_link | Copy the grids and the structural columns from the structural link into this model, in place | Pro |
| Create a model or drafting fill pattern from a sized preset, lines drawn in the view, explicit segments, or a .pat file, with dry-run preview. | ||
create_fill_pattern | Create a 600x100 herringbone floor pattern and call it Herringbone Oak | Pro |
| Group model or detail elements into a new named group instance. | ||
create_group | Group the selected walls and doors and name the group Flat Type A | Pro |
| Create one or more new Revit projects from a named template, a template file or Revit's default template, and save them. | ||
create_model | Create a new project called Site Model from the Architectural template and save it in the Projects folder | Pro |
| Create a 3D view per workset, isolating each workset's visibility, in workshared models. | ||
create_workset_views | Create a 3D view for each workset so I can review them | Pro |
| Delete targeted leftovers that a standard purge does not catch - empty elevation tags, imported line patterns, unreferenced scope boxes, unused reference planes, unplaced legends, and more - dry run by default. | ||
deep_purge | Dry-run a deep purge of unused reference planes, empty tags and leftover scope boxes | Pro |
| Delete elements by ID from the project or the open family session, reporting every dependent Revit removes with them. | ||
delete_elements | Delete that extrusion we just created, and anything tagged to it | Pro |
| Delete unplaced, unenclosed, or redundant rooms, areas, or MEP spaces. | ||
delete_unplaced_rooms_areas_spaces | Delete all the unplaced and redundant rooms - dry run first | Pro |
| Edit elements inside a group in one atomic call - ungroup, move, change type, or delete members, regroup, and optionally push the edit to every instance. | ||
edit_in_group | In the Flat Type A group, change the corridor wall to the 200mm type and push the change to every instance | Pro |
| Convert a non-workshared model to workshared, creating a grids/levels workset and a default workset. | ||
enable_worksharing | Enable worksharing with a Shared Levels and Grids workset and save as central at C:\Project\Central.rvt | Pro |
| Save a model review snapshot as tables for Power BI or other reporting - every warning and Performance Adviser result with its Element IDs, the model checker figures and element counts - for the open model or every model in a folder. Each run adds a snapshot, so trends build up over time. | ||
export_model_review | Export a model review snapshot of this model to the Model Review folder | Pro |
| List every design option set in the model, showing each set's options and which is primary. | ||
get_design_options | List the design option sets and which option is primary in each | Pro |
| Get document title, path, project info, phases | ||
get_document_info | Get the document information | Free |
| Get all document warnings with severity filter | ||
get_document_warnings | Show me all the warnings in this model grouped by type | Free |
| Report worksharing history for elements - creator, current owner, last user to change, and workset - with per-user tallies. Workshared documents only. | ||
get_element_history | Who created these walls, and who last changed them? | Pro |
| List model and detail group types with their placed instances, member counts, and placement points. | ||
get_groups | List every group in the model with its instances and what each one contains | Pro |
| Get linked RVT, CAD, IFC files | ||
get_linked_files | What files are linked into this model? | Free |
| Create a new RVT link by full local/UNC file path, origin-to-origin or by shared coordinates. One new type and instance in one transaction; defaults to overlay. Refuses an existing link, self-link and a newer-Revit file. Shared placement never falls back to origin. Returns committed IDs, loaded document and actual transform. | ||
link_revit_model | Link the RVT at C:\Projects\Site.rvt using shared positioning | Pro |
| List the image files materials use as textures, slot by slot, with the stored path and whether each file is found there, found only by name, or missing. | ||
get_material_textures | Which materials in this model have missing texture images? | Pro |
| Describe the dialog Revit is showing: its title, its text and its buttons. It changes nothing and presses nothing. | ||
get_open_dialog | Is Revit showing a dialog? What does it say? | Free |
| Get project phases | ||
get_phases | List the phases in this project | Free |
| Get project unit settings | ||
get_project_units | What units is this project using? | Free |
| Get Revit version, username, memory usage | ||
get_session_info | What Revit version am I running, and is there a document open? | Free |
| Get worksets (workshared docs) | ||
get_worksets | List the worksets with how many elements are on each | Free |
| Load, unload, reload, remove, or repath linked Revit models, in batches across multiple links. | ||
manage_links | Unload the structural link and reload the MEP link | Pro |
| Acquire or publish shared coordinates with a linked model or DWG, or set the project base and survey points. | ||
manage_shared_coordinates | Acquire coordinates from the survey DWG link | Pro |
| Create, rename, or delete worksets in a workshared model, supporting multiple operations in one call. | ||
manage_worksets | Create worksets called Core, Shell, and Interiors | Pro |
| A model review report in one call: views, sheets, warnings with a critical count, CAD imports and links, families, text, groups, materials, Performance Adviser rules, unused views, import line patterns, empty elevation markers and the Area and Volume Computations setting, with review flags. Writes an .xlsx and a history row for Power BI. | ||
model_checker_report | Run a model checker report on this model and save it as an Excel file on my Desktop | Pro |
| Open a model from cloud (ACC/BIM 360) or local/network path, with options to detach, audit, unload links, and guard against version upgrades. | ||
open_model | Open C:\Project\Model.rvt detached and discard the worksets | Pro |
| Test connection to Revit | ||
ping | Ping Revit | Free |
| Place a face-hosted family on a face of a linked model element. | ||
place_family_on_linked_face | Place the wall light on the linked wall face at the marked point | Pro |
| Place instances of a group type at points in millimetres - repeated-layout and typical-flat workflows. Model groups only. Optional terrainId and terrainOffsetMm place intact model groups at sampled terrain heights; XY-only points, bounded sampling and verified locations. No continuing terrain association. | ||
place_group_instances | Place two more instances of Flat Type A at 25m and 30m along from the origin on this level | Pro |
| Press one named button on the dialog Revit is showing. No button is ever chosen for you. | ||
press_dialog_button | Press Cancel on that Revit dialog | Pro |
| Delete all non-primary design options and their elements, preserving primary geometry with original IDs. | ||
prune_design_options | Delete all the non-primary design options - dry run first | Pro |
| Purge inside loaded families - open each one, delete unused nested types, materials, orphaned assets and images, then reload it into the project. Reports the size saved per family, with a dry run available first. | ||
purge_families | Purge inside all the loaded families and show me the file size saved on each - dry run first | Pro |
| Purge unused families, types, view templates, filters, materials, patterns, and imported CAD in iterative passes; supports dry-run. | ||
purge_unused | Purge all the unused elements from the model - show me a dry run first | Pro |
| Relinquish ownership of all worksets and elements without syncing, for detached models saved as a new central. | ||
relinquish_all | Relinquish everything I own without syncing | Pro |
| Remove linked files: Revit links, CAD links, PDF and image links, point-cloud links, each with all its instances. Imported CAD is left alone unless asked for, and can be removed on its own. The first call lists what would go and changes nothing. | ||
remove_links | Remove all the CAD links from the model but leave the Revit links in place | Pro |
| Take missing texture images off materials, leaving each slot its plain colour or value. A texture whose file is found is never touched. The first call lists what would be removed and changes nothing. | ||
remove_missing_material_textures | Show me which missing texture images would be taken off the materials in this model | Pro |
| Delete the images in Manage Images that nothing uses: placed in no view and set as no image parameter. The first call lists what would be deleted and changes nothing. | ||
remove_unused_images | List the images in Manage Images that nothing in this model uses | Pro |
| Delete view templates that no view references, filling the gap purge_unused leaves. | ||
remove_unused_view_templates | Delete any view templates that no view is using - dry run first | Pro |
| Rename elements by ID - materials, reference planes, types, anything with a writable name - with per-element results. | ||
rename_elements | Rename those two materials to Steel - Brushed and Timber - Walnut | Pro |
| Rename families and family types using search-and-replace rules, with scope, type-inclusion, case-sensitivity, and preview options. | ||
rename_families | Rename every family containing OLD_ to use ARC_ instead - preview first | Pro |
| Point material textures at where their image files are now: by exact replacement, by swapping the start of a path for a renamed server or a moved library, or by searching folders by file name. The first call lists what would change and changes nothing. | ||
repath_material_textures | The texture library moved from P:\Library to Q:\Library. Show me which material textures would be re-pathed | Pro |
| Save the active document to a new path, with options for maximum backups, compaction, clearing the transmitted flag, and disabling worksharing. | ||
save_as | Save this model as C:\Project\Model_DETACHED.rvt with compaction | Pro |
| Save any open document in place, not just the active one. | ||
save_document | Save the structural model that is open in the background | Pro |
| Change the Area and Volume Computations settings - Areas only or Areas and Volumes, and the room and space area basis - and report before and after. | ||
set_area_volume_computation | Switch Area and Volume Computations to Areas only to speed the model up | Pro |
| Switch linked Revit models' reference path between absolute and relative in bulk. | ||
set_link_path_type | Switch all the Revit links to relative paths | Pro |
| Switch group instances to a different group type - propagate a layout variant or standardise mixed instances. | ||
swap_group_type | Swap the selected group instances from Flat Type A to Flat Type B | Pro |
| Synchronise a workshared model with central and optionally relinquish all worksets, with comment and compaction options. | ||
sync_and_relinquish | Sync with central, relinquish everything, and add the comment End of day | Pro |
| Undo the most recent operation(s) in Revit - the same as pressing Ctrl+Z - with multi-step support and redo. The safety net when a change was not what you wanted. | ||
undo | Undo that last change | Pro |
Modelling Pack
Author core building geometry from coordinates and room boundaries - walls, grids, levels, floors, roofs, ceilings, finishes, and skirting - and read or edit the layer build-up of wall, floor, roof, and ceiling types.
| Tool | Example prompt | Edition |
|---|---|---|
| Attach or detach the top or base of walls to a roof, floor, ceiling, toposolid or another wall in one call, naming the target or letting each wall find the nearest element above or below it, with the edge elevation before and after. Revit 2026 and later. | ||
attach_walls | Attach the tops of all the Level 1 external walls to the roof | Pro |
| Auto-place rooms in every enclosed region on the given levels, skipping regions that already have a room. | ||
auto_place_rooms | Place rooms in every enclosed region on Level 1 and Level 2, numbering from 101 | Pro |
| Copy an element by a translation vector, optionally producing multiple equally spaced copies. | ||
copy_element | Copy the selected desk 5 times at 1800mm spacing along X | Pro |
| Create a named area scheme - GIA, GEA, NIA - ready for area boundary lines and areas to measure against. | ||
create_area_scheme | Create a GIA area scheme so we can measure gross internal areas | Pro |
| Create a ceiling from a closed polygon of boundary points on a chosen level and ceiling type. | ||
create_ceiling | Create a ceiling on Level 1 over a 5000 x 4000mm rectangle at the origin using the Plain ceiling type | Pro |
| Create ceilings inside selected rooms from their boundaries, set at a height offset above each room's level. | ||
create_ceilings_from_rooms | Create ceilings 2700mm above the floor in every room on Level 2 | Pro |
| Create wall, floor, roof or ceiling types from spec build-ups in one call: layers with function, material and thickness, exterior first, core flagged. Missing materials are created first, an existing name is updated in place, and Revit's own layer rules (membranes at 0 mm, shell layers in priority order) are checked and explained per layer, with an option to fix the order. Dry run previews every stack. | ||
create_compound_types | Create a wall type called EXT_Brick_102.5 from this build-up: 102.5 brick, 50 cavity, 100 insulation, 100 block, 12.5 plasterboard. Create any materials we do not have yet | Pro |
| Create a floor from a closed polygon of boundary points on a chosen level and floor type. | ||
create_floor | Create an 8000 x 6000mm floor at the origin on Level 1 using the Generic 150mm type | Pro |
| Create horizontal and vertical grid lines with named labels, uniform or variable spacing, and a chosen origin. | ||
create_grids | Create grids A to F at 6000mm spacing and grids 1 to 5 at 4500mm spacing | Pro |
| Add a fascia or gutter along a roof's edges, or a slab edge along a floor's edges, with the edges taken from the host's own geometry. | ||
create_hosted_sweep | Add a gutter along the outer eaves of this roof | Pro |
| Create levels at given elevations, optionally auto-generating each level's floor plan view. | ||
create_levels | Create Level 1 to Level 3 at 3000mm intervals and generate a floor plan for each | Pro |
| Assign mass floors to placed conceptual masses at chosen levels so area and volume schedules populate. | ||
create_mass_floors | Create mass floors on every level for the selected mass | Pro |
| Draw model lines, arcs and circles as real 3D lines on one level, several levels or every level, with a line style and rounded corners. | ||
create_model_lines | Draw the site boundary as model lines on Level 1 through these points | Pro |
| Create parts from the selected walls, floors, roofs or ceilings so their layers can be divided and scheduled. | ||
create_parts | Divide the selected floor into parts | Pro |
| Create named reference planes in a project from two points, standing vertically through every level, with an option to pin them. | ||
create_project_reference_planes | Create a reference plane called Setting Out A from 0,0 to 12000,0 and pin it | Pro |
| Create arc and spoke grids about a centre point with set angles and radii. | ||
create_radial_grids | Create radial grids about the atrium centre: 6 spokes at 30 degrees and 3 arcs at 5 m spacing | Pro |
| Create railings. With hostId (a stair or ramp) and no pathMm: railings on all its sides, on the treads or the stringers. With pathMm: one railing along the path (lines and true arcs, millimetres) at levelName + baseOffsetMm, optionally hosted on hostId so it follows the slope. Configure the railing type with edit_railing_type. Optional terrainId enables a strict straight-path terrain-hosted route, checking terrain coverage and the native railing host; unsupported terrain paths are refused without changing the existing path/host defaults. | ||
create_railing | Add a railing along this path on Level 2 using the 1100mm guardrail type | Pro |
| Create a straight ramp between two points with a set width and rise, built as a sloped floor, with optional railings on both long edges. | ||
create_ramp | Create a 1500mm wide ramp rising 600mm from 0,0 to 7200,0 on Level 1, with railings on both sides | Pro |
| Place reference points in a conceptual mass or adaptive family at given coordinates or along a curve. | ||
create_reference_points | Place reference points along the curve at 2 m intervals | Pro |
| Create a footprint roof from a closed polygon of boundary points on a chosen level and roof type. | ||
create_roof | Create a footprint roof on the Roof level over an 8000 x 6000mm rectangle at the origin | Pro |
| Create floor and wall finishes inside rooms from their boundaries, with optional joining to structural walls. | ||
create_room_finishes | Create floor and wall finishes in rooms 101 to 116 using the Ceramic Tile floor and 12mm Plaster wall types, joined to the structure | Pro |
| Create a native Revit stair between two levels from straight and spiral runs, with automatic or sketched landings. | ||
create_stairs | Create a stair from Level 1 to Level 2 with two straight runs of 9 risers, 250mm treads and a half landing | Pro |
| Create a Toposolid from a linked CAD survey - reads 3D contours and survey points, or numeric spot-height labels, straight from the DWG/DXF (with the survey's own units: m, mm, ft and more), positioned by matching the file to the link, with layer filtering and a dry-run placement check. Toposolid on Revit 2024+, topography surface on older versions. | ||
create_toposolid_from_dwg | Create a toposolid from the linked topo survey DWG, reading the contours in metres | Pro |
| Create native terrain from an explicit concave XYZ boundary, holes and interior points, retaining the supplied outline without hull or padding. Absolute project heights in mm; required level/type; preview by default. Revit 2024+. | ||
create_toposolid | Preview a Toposolid from this concave boundary and courtyard hole, using the supplied absolute heights in millimetres | Pro |
| Create a concave material region with optional holes wholly inside a Toposolid. Preview by default. Revit 2024/25 uses instance material and positive offset; 2026+ supports signed offsets/types and duplicates a type for an explicit material, preserving shared types. | ||
create_toposolid_subdivision | Preview a material subdivision inside this Toposolid using the supplied boundary | Pro |
| Inspect or add/move/delete/set absolute heights by current XYZ coordinates. Preserves untouched points, boundary corners and user split lines; preview by default. Revit 2024+; add/move needs 2024.2, delete needs 2024.1. | ||
edit_toposolid_points | Inspect the shape points of this Toposolid before changing their heights | Pro |
| Preview sampled pad/batter grading from a level elevation or floor level-plus-offset snapshot. Applying copies the source by default and reports all copied IDs. Requires Revit 2024.2+ and straight host boundaries; refuses unresolved daylight, boundary/hole intersections and point limits. Approximate triangulated surface, without native Graded Region/cut-fill-volume or ongoing floor association. | ||
grade_toposolid | Preview a graded pad against Level 0 with the supplied boundary and batter slope, preserving the original terrain | Pro |
| Fit an existing floor to sampled terrain heights plus an optional offset, retaining its sketch outline, holes and user split-line positions. Preview by default; bounded point sampling and verified elevations. The surface between samples is approximate and has no continuing terrain association. | ||
fit_floor_to_terrain | Preview fitting this floor to the selected terrain with a 50 mm offset, keeping its courtyard hole | Pro |
| Create new straight Basic wall/fence profiles along an XY path, with a constant vertical height above sampled terrain. Preview by default; triangle crossings retain slope changes and terrain gaps are refused. Existing curved, slanted or attached walls are not edited; joins are disabled and profiles are static. | ||
create_terrain_walls | Preview a straight Basic wall fence along this path, 1800 mm above the terrain | Pro |
| Batch-create walls from centreline segments with a shared base level, top constraint, and wall type, plus per-wall type and height overrides and a dry-run preview. | ||
create_walls | Draw a 6m by 4m room enclosure on Level 1 in the Generic - 100mm wall type, 3m high | Pro |
| Divide parts along grid lines, reference planes or sketched lines. | ||
divide_parts | Divide these parts along grid lines B and C | Pro |
| Divide a curve into equally spaced nodes for adaptive components. | ||
divide_path | Divide the selected curve into 12 equal nodes | Pro |
| Divide a mass face into a U by V grid ready for panels. | ||
divide_surface | Divide the mass face into a 1.5 m by 3 m grid | Pro |
| Edit a wall, floor, roof, or ceiling type's layer build-up: resize layers, change materials, add or remove layers - core boundaries preserved, with a dry-run preview and the option to edit a duplicate of the type instead. | ||
edit_compound_structure | Make the structural layer of the selected wall type 100mm and add two layers of 12.5mm plasterboard on the inside | Pro |
| Edit a curtain wall's grid: add vertical and horizontal grid lines at set positions, clear existing ones, and set the mullions. | ||
edit_curtain_grid | Put vertical grid lines every 1500mm along this curtain wall and a horizontal line at 2100mm | Pro |
| Replace the boundary of an existing floor or foundation slab in place, keeping its ID, type, level and parameters, with openings and the footprints of other floors cut out. | ||
edit_floor_boundary | Extend this floor's boundary 1200mm to the east and cut a 900 x 900mm opening at 4000,3000 | Pro |
| Extend, trim or replace an existing railing's path, re-host it on a stair, ramp, floor or wall, or reset a stair railing to its default path. | ||
edit_railing_path | Extend this railing 600mm past the end of the stair | Pro |
| Configure a railing type - top rail, handrails, horizontal rails and balusters - with an option to duplicate the type first. | ||
edit_railing_type | Duplicate this railing type as Guardrail 1100 and set the top rail height to 1100mm | Pro |
| Get an area's boundary loops and segments - start and end points, lengths, and the bounding element for each segment. | ||
get_area_boundaries | Show me the boundary segments of area 12 and what bounds them | Free |
| Get areas with scheme, level, number, name, and area in sq ft and sq m, plus per-scheme totals. Areas are separate from rooms. | ||
get_areas | List the GIA areas on Level 1 with the scheme totals | Free |
| Read the layer build-up of a wall, floor, roof, or ceiling type - function, material, thickness, core and structural layers - plus how many elements use the type. | ||
get_compound_structure | Show me the build-up of the selected floor type | Pro |
| Read the project base point, survey point, and rotation from true north, and check whether shared coordinates are usable, before placing anything by Easting and Northing. | ||
get_coordinate_system | Where are the project base point and survey point, and can I place by Easting and Northing in this model? | Pro |
| Read the grid layout, pattern and node count of a divided surface. | ||
get_divided_surface | What is the grid layout on the divided surface of the tower mass? | Pro |
| Get all grids | ||
get_grids | List all the grids in the model | Free |
| Get all levels with elevations | ||
get_levels | List the levels with their elevations and element counts | Free |
| Read materials with their thermal asset, physical asset, identity fields and chosen custom parameters - scoped by name, by use in wall, floor, roof and ceiling types, or to those missing an asset. Writes an .xlsx when asked. | ||
get_material_properties | List the materials used in wall and floor types with their thermal conductivity and density, and flag any without a thermal asset | Pro |
| List the reference planes of a project or family with their ends, direction and normal in millimetres, plus pinned state and scope box. | ||
get_reference_planes | List the reference planes in this project with their positions | Pro |
| Get room area summary grouped by level, department, or room name | ||
get_room_areas | Give me the room areas grouped by level | Free |
| Return a room's boundary loops and segments with start/end points, lengths, and bounding element details. | ||
get_room_boundaries | Get the boundary of the Meeting Room with the length of each wall | Pro |
| Get rooms with area, volume, boundaries | ||
get_rooms | List all the rooms on Level 1 with their areas | Free |
| List available wall sweep types (cornices) for skirting, baseboards, and mouldings, with ID, name, and family. | ||
get_wall_sweep_types | What wall sweep types do I have for skirting? | Pro |
| Join or unjoin geometry between pairs of elements, with the cutting order set explicitly. | ||
join_geometry | Join the selected walls to the floor they sit on | Pro |
| Merge adjacent parts of the same material back into one. | ||
merge_parts | Merge the selected parts back into one | Pro |
| Mirror elements about a named reference plane or any origin-and-normal plane, keeping the originals or flipping them in place. | ||
mirror_elements | Mirror the two legs about the Centre reference plane and keep the originals | Pro |
| Move elements by a millimetre offset in X, Y, and Z, in projects and in the family editor, with dry-run preview. | ||
move_elements | Move those chairs 500mm in X and 250mm in Y - dry run first | Pro |
| Offset the faces of parts inwards or outwards by a distance. | ||
offset_part_faces | Offset the top face of the selected parts down by 20 mm | Pro |
| Paint the reveal faces inside window and door openings - jambs, head and sill - across many walls in one call, scoped by wall IDs, a wall type name, or the current selection, with dry run and paint removal. | ||
paint_opening_reveals | Paint the window reveals on every External Brick wall with the Plaster material - dry run first | Pro |
| Place adaptive components on divided surface nodes or explicit point sets. | ||
place_adaptive_components | Place the curtain panel adaptive component on every node of the divided surface | Pro |
| Place area boundary lines in an area plan - trace the level's exterior walls at the inside face, outside face, or centreline, or draw explicit loops, optionally placing an area in each closed loop. | ||
place_area_boundary_lines | Trace Level 1's exterior walls at the inside face on the GIA area plan and close the loops | Pro |
| Place areas at points in an area plan, each inside a region enclosed by area boundary lines, with optional names and numbers. | ||
place_areas | Place an area in each closed region on the Level 1 GIA area plan and number them from 01 | Pro |
| Place family instances in bulk from an .xlsx or .csv coordinate table - one row per instance, mixing families, types, levels, and rotations, in project or shared survey coordinates. | ||
place_families_from_excel | Place the trees from tree-schedule.xlsx by Easting and Northing with units in metres - dry run first | Pro |
| Place loaded family types at points. Doors/windows automatically select walls that fit the opening elevation and width; ambiguous hosts return candidate IDs. Checks explicit hosts and stored sill heights. Revit warning/error batches roll back with native diagnostics. Supports survey coordinates, rotation and flips; target=family places nested families in the open family session. Optional terrainId samples native terrain Z at XY for unhosted project families, with terrainOffsetMm; explicit Z/host and nested-family terrain placement are refused. Placement is static and verified, including Planting offsets. | ||
place_family_instances | Place the Armchair type at these three points on Level 1, rotated 90 degrees | Pro |
| Place wall-sweep skirting along the base of room-bounding walls on the interior face, cut at openings. | ||
place_skirting_in_rooms | Place skirting in every room on Level 1 using the Base Simple sweep type | Pro |
| Rename wall, floor, roof and ceiling types to a naming standard from a template with tokens for category, function, structural material, width and layer stack, with code and material-alias overrides. Clashes get a numeric suffix; dry run shows the old and new names. | ||
rename_compound_types | Rename all the wall types to AML_WAL_{FUNC}_{MATERIAL}_{WIDTH} and show me the old and new names first | Pro |
| Renumber grids by position and levels by elevation with a naming rule, avoiding name collisions. | ||
renumber_datums | Renumber the grids left to right as A to K and the levels bottom to top as L00 upwards | Pro |
| Rotate elements by an angle about a vertical axis through a point, an arbitrary axis, or the centre of the set. | ||
rotate_elements | Rotate the selected desks 45 degrees about the centre of the group | Pro |
| Apply or change the colour fill scheme on an area plan. | ||
set_area_color_fill | Apply a colour fill by department to the Level 1 area plan | Pro |
| Set the 3D extents of grids and levels: a grid's vertical range, a plan rectangle for level lines and straight grids, or exact ends for one grid. | ||
set_datum_3d_extents | Stretch all the grids to run from the lowest level to the roof, with a 2000mm margin | Pro |
| Set a material's physical and thermal assets, identity fields and custom parameters, singly or in batch; strip assets, delete orphaned ones, or apply one set of values to every material matching a filter. | ||
set_material_properties | Set Concrete, Cast-in-Place to conductivity 1.8, specific heat 880 and density 2400, with a concrete physical asset at 32 MPa | Pro |
| Exclude parts from the model or bring them back. | ||
set_parts_excluded | Exclude the selected parts from the model | Pro |
| Show parts, the original element, or both in a view. | ||
set_parts_visibility | Show parts instead of the original in this view | Pro |
| Resize reference planes to one length or match a chosen plane, with an align option to line parallel planes up into a single band. | ||
set_reference_plane_extents | Make all the reference planes the same length as the one I have selected and line their ends up with it | Pro |
| Set upper limit, limit offset and base offset on rooms in bulk, and the computation height of levels. | ||
set_room_extents | Set every room on Level 2 to an upper limit of Level 3 with a 0 offset | Pro |
| Make walls vertical, slanted (one angle from vertical) or tapered (an inward angle per face, on a type with a variable-width layer), optionally setting the doors and windows they host to follow the lean, with the angles and top and bottom widths read back. | ||
set_wall_cross_section | Slant the selected walls 10 degrees outward and make their doors and windows follow the wall | Pro |
| Set the location line of walls - wall or core centreline, finish or core faces - controlling which face holds still when the type's thickness changes and how the wall flips. | ||
set_wall_location_line | Change the selected walls' location line to finish face exterior | Pro |
| Ungroup model or detail group instances, releasing their members in place. | ||
ungroup_elements | Ungroup every instance of the Furniture Layout group and delete the group type if it ends up empty | Pro |
Reporting Pack
Manage revisions and the drawing register, run quantity and finish takeoffs, compare elements, and produce analysis reports.
| Tool | Example prompt | Edition |
|---|---|---|
| Add one or more revisions to selected sheets, by sheet number, ID, or all sheets. | ||
add_revision_to_sheets | Add revision P01 to sheets A101 to A116 | Pro |
| Read a company drawing register / issue sheet template (.xlsx) and detect its header row and column layout, ready for update_drawing_register. | ||
analyze_drawing_register | Read my drawing register template at C:\Project\Register.xlsx and work out its column layout | Pro |
| Compare two or more elements side-by-side, showing parameter differences, matching values, and type variations. | ||
compare_elements | Compare the two selected doors and show me the parameter differences | Pro |
| Create a new revision row in the Sheet Issues/Revisions table with description, date, issuer, visibility, and numbering sequence. | ||
create_revision | Create a new revision dated today with the description Issued for Planning, issued by JG | Pro |
| Delete revision clouds by view, sheet or revision. | ||
delete_revision_clouds | Delete every revision cloud on sheet A201 | Pro |
| Write sheet and revision data to an .xlsx drawing register - simple one-row-per-sheet list format, into a template workbook or a new workbook. | ||
export_drawing_register | Export a drawing register for all the A-series sheets to C:\Project\Register.xlsx | Pro |
| Export model warnings to a CSV or JSON health-check report with descriptions, counts, severity, and affected element IDs. | ||
export_warnings_report | Export all the model warnings to a CSV health report at C:\Project\Warnings.csv | Pro |
| Aggregate material volume and area across model elements for takeoff, filtered by category or material and grouped flexibly. | ||
get_material_quantities | Total up the material volumes for walls and floors, grouped by material | Pro |
| Report revision settings and available numbering sequences to find the correct sequence ID before creating revisions. | ||
get_revision_settings | What revision numbering sequences does this model use? | Pro |
| List all revisions in the document with sequence number, date, description, and issued status. | ||
get_revisions | List all the revisions in the model with their dates | Pro |
| Report room finish data including wall, floor, and ceiling finishes, bounding elements, and contained furniture counts. | ||
get_room_finishes | Report the wall, floor, and ceiling finishes for the rooms on Level 1 | Pro |
| Get schedule data as structured JSON | ||
get_schedule_data | Show me the data in the Door Schedule | Free |
| List all schedules | ||
get_schedules | List all the schedules in this model | Free |
| List sheets with their assigned revisions and current revision details, for drawing issue registers. | ||
get_sheet_revisions | Which revisions are on sheets A101 to A116? | Pro |
| Remove a revision from selected sheets, optionally deleting associated revision clouds and the revision itself. | ||
remove_revision_from_sheets | Remove revision P01 from sheet A105 and delete its revision clouds | Pro |
| Fill a matrix-style drawing issue sheet (one row per drawing, one column per revision with date headers) from sheet and revision data, using your company's own .xlsx template - the AI maps the columns, no fixed layout assumed. | ||
update_drawing_register | Update my drawing issue sheet at C:\Project\Issue Sheet.xlsx in place with the current sheet and revision information, overwriting the template | Pro |
| Edit, issue, unlock or delete a revision: description, date, issued by and to, numbering and visibility. | ||
update_revision | Issue revision 3 and lock it | Pro |
Selection Pack
Pin and unpin elements to lock down or release your selection.
| Tool | Example prompt | Edition |
|---|---|---|
| Pin the selected elements (or a passed elementIds set) so they can't be moved or accidentally deleted. Skips already-pinned, reports un-pinnable elements, and previews with dryRun. | ||
pin_selection | Pin the selected grids so nobody can move them | Pro |
| Unpin the selected elements (or a passed elementIds set) so they can be moved or edited again. Previews with dryRun. | ||
unpin_selection | Unpin the selected elements | Pro |
Structural Pack
Frame the building - beams, beam systems, columns, braces and foundations - then cope the framing, cut slab openings, and read the analytical model for handoff.
| Tool | Example prompt | Edition |
|---|---|---|
| Sweep for structural elements with no support found - framing ends, column bases and floor undersides. Geometric probing within a tolerance plus the analytical model, so treat the output as a list to review rather than a verdict. | ||
check_structural_supports | Check the model for unsupported beams and columns and list what needs looking at | Pro |
| Apply Revit's coping cut where structural framing meets columns or other beams, scoped by element ids or by level. | ||
cope_framing | Cope the beams against the columns on Level 3 | Pro |
| Create a beam system filling a bay. The boundary comes from points or four grid lines, with the direction and spacing set from a grid or given explicitly. | ||
create_beam_system | Create a beam system in the bay between grids A, B, 1 and 2 spanning north to south at 2400mm centres | Pro |
| Create straight structural beams on a reference level. Each entry is a point pair, a column pair, or a run along a grid between two crossing grids. | ||
create_beams | Add beams along grid B between grids 1 and 5 on Level 2 | Pro |
| Create structural braces between two levels, with each end given as a grid intersection or a millimetre point. | ||
create_braces | Add braces from Level 1 to Level 2 between grids A1 and A2 | Pro |
| Create isolated footings under structural columns, or at explicit points on a named level. Under a column the footing takes that column's base level and position. | ||
create_foundations | Add isolated footings under every structural column on the Foundation level | Pro |
| Cut rectangular, rounded or round openings through the web or flanges of beams and braces using Revit's own beam opening, with no void family. | ||
create_framing_openings | Cut a 300mm diameter opening through the web of this beam, 1500mm from its start | Pro |
| Cut a rectangular opening through a structural floor, given either a centre with width and depth or two opposite corners. | ||
create_slab_openings | Cut a 1200 x 800 opening through the Level 2 slab centred at 4500,3000 | Pro |
| Create vertical structural columns at points and at grid intersections, between a base and a top level. | ||
create_structural_columns | Place 300x300 concrete columns at every grid intersection from Level 1 to Level 2 | Pro |
| Read the structural analytical model for handoff to analysis - each analytical element, the physical element it belongs to, and the member line endpoints or panel boundary loops. | ||
get_analytical_model | Read the analytical model for the frame so I can hand it to the engineer | Pro |
| Read structural framing, columns, foundations, structural floors and structural walls - family, type, level, structural material, structural usage and key geometry. | ||
get_structural_elements | List the structural framing on Level 3 with sizes, materials and lengths | Pro |
| Batch parameter writes on structural framing - z and y offsets in millimetres, plus z and y justification. | ||
set_framing_parameters | Set the selected beams to top justification with a -50mm z offset | Pro |
Sustainability Pack
Store carbon factors on materials, calculate embodied carbon per element and per material, find the hotspots, compare constructions, and present it as a coloured view, a schedule or a report. Quantities are scoped like a Revit schedule: main model plus primary design options, elements present at the end of the last phase.
| Tool | Example prompt | Edition |
|---|---|---|
| Calculate embodied carbon per element and per material for a category, level or selection, scoped like a schedule. | ||
calculate_embodied_carbon | Calculate the embodied carbon of the structure on Levels 1 to 5 | Pro |
| Report how much existing fabric is retained versus demolished by area and mass. | ||
calculate_existing_retention | How much of the existing fabric is retained by area and mass? | Pro |
| Calculate the glazing ratio of an elevation, orientation or the whole envelope. | ||
calculate_glazing_ratio | What is the glazing ratio of the north elevation? | Pro |
| Compare the embodied carbon of two constructions or type substitutions over the same elements. | ||
compare_construction_carbon | Compare the carbon of the external wall type against a timber frame alternative | Pro |
| Create a 3D view coloured by embodied carbon per element. | ||
create_carbon_analysis_view | Create a 3D view coloured by embodied carbon per element | Pro |
| Create a schedule of embodied carbon by category, type or material with totals. | ||
create_carbon_schedule | Create a schedule of embodied carbon by category with totals | Pro |
| Write the embodied carbon results to an xlsx or csv file and return the path. | ||
export_carbon_report | Export the carbon report to C:\Reports\carbon.xlsx | Pro |
| Rank elements, types or materials by embodied carbon and return the top of the list. | ||
find_carbon_hotspots | Which ten elements carry the most embodied carbon? | Pro |
| Break an element down by material with volume, mass and carbon. | ||
get_element_material_breakdown | Break down the selected wall by material, volume, mass and carbon | Pro |
| Read the carbon factors stored on materials and list the materials without one. | ||
get_material_carbon_data | Which materials in this model have no carbon factor? | Pro |
| Store an embodied carbon factor, density and source on a material, singly or in batch. | ||
set_material_carbon_data | Set the embodied carbon factor on Concrete C35 to 0.12 kgCO2e per kg with a density of 2400 | Pro |
Views & Sheets Pack
Build out the documentation set - create views and sheets, place and align viewports, manage templates, scope boxes, and sheet sets.
| Tool | Example prompt | Edition |
|---|---|---|
| Adjust viewport title-line length to match the title text width or a fixed length across sheets. | ||
adjust_viewport_title_line | Set the viewport title line length to 60mm on sheets A101 to A116 | Pro |
| Align viewport positions across target sheets to match a chosen reference sheet. | ||
align_viewports | Align the viewports on sheets A102 to A110 to match sheet A101 | Pro |
| Audit RVT link display across views - which views show a link By Linked View or Custom, and which view from the linked model is displayed. (Revit 2024+) | ||
analyze_linked_view_usage | Which views show the structural link By Linked View or with a custom setting? | Pro |
| Diagnose why elements are not visible in a view, checking categories, filters, phases, view range, and more. Select the elements in a view where they show (the default 3D view works well), or pass IDs from get_elements. | ||
analyze_visibility | I have selected a door in the 3D view - why is it not showing in the Level 1 floor plan? | Pro |
| Apply a scope box to specified views so their crop follows the box. | ||
apply_scope_box | Apply the Block A scope box to all the Level 1 and Level 2 floor plans | Pro |
| Apply or remove a view template across specified views, view types, or name-matched views. | ||
apply_view_template | Apply the Architectural Plan template to every floor plan with WIP in the name | Pro |
| Put grids, levels and reference planes into a named scope box. | ||
assign_scope_box | Put grids A to F and Levels 1 to 4 in the Block A scope box | Pro |
| Set parameters across multiple sheets using literals, formulas, view-derived values, and scale calculations. | ||
batch_fill_sheet_parameters | On sheets A101 to A116 set Drawn By to JG, Checked By to AB, and Sheet Issue Date to today in dd/MM/yy format | Pro |
| Build a chip-and-label legend from a view's filter overrides or from custom entries, creating the legend view when it is new. | ||
build_legend | Build a legend from the fire rating filters in this view with a colour chip and label for each | Pro |
| Capture the active or named view as a PNG image so a vision-capable AI can inspect the model. | ||
capture_view | Capture the active view as an image and tell me what you can see | Pro |
| Compare view templates and report where their settings differ - scale, detail level, hidden categories, overrides, filters, and controlled parameters - grouped by view type, with common vs only-in breakdowns. | ||
compare_view_templates | Compare all my floor plan view templates and show me where they are inconsistent | Pro |
| Copy view-specific elements at the same position into other views, sheets or another open project, creating a drafting view or legend there when needed. | ||
copy_view_elements | Copy the detail lines and text from this callout into its drafting view at the same position | Pro |
| Copy view filters and their graphic overrides from a source view to target views. | ||
copy_view_filter | Copy the view filters from the Level 1 plan to all the other floor plans | Pro |
| Copy scale, template, detail level, display style, discipline, phase, and crop from one view to others. | ||
copy_view_setup | Copy the scale, detail level, and crop settings from the Level 1 plan to the Level 2 and Level 3 plans | Pro |
| Copy view templates between two open documents, with their view filters and visibility settings travelling with them. | ||
copy_view_templates | Copy the RCP and elevation view templates from this model into the Phase 2 model I have open | Pro |
| Create an assembly from a set of elements, named and typed, ready for assembly views. | ||
create_assembly | Make an assembly from the selected precast panel and its connections and name it PCP-01 | Pro |
| Generate the standard view set - 3D, detail sections, part list, and per-category schedules - for an assembly, optionally on an assembly sheet. | ||
create_assembly_views | Create the standard view set and an assembly sheet for the selected assembly | Pro |
| Create multiple sheets in bulk with auto-incrementing numbers, prefixes, suffixes, and zero-padding. | ||
create_batch_sheets | Create 10 sheets numbered A201 to A210 called Working Sheet using the A1 title block | Pro |
| Create front, back, left, right, and top section views oriented to selected elements. | ||
create_element_sections | Create front and left section views through the selected wall at 1:20 | Pro |
| Create an empty legend view at a given scale and return its ID. | ||
create_legend | Create a legend view called Wall Types at 1:20 | Pro |
| Create interior elevations, 3D views, plans, and RCPs for selected rooms, optionally laying them out on sheets. | ||
create_room_elevations | Create four interior elevations for every room on Level 1 at 1:20 and place each room's views on its own sheet in a 2x2 grid | Pro |
| Create a regular, key, material takeoff, sheet list, view list, note block or keynote legend schedule with fields, filters, sorting, formatting, header image and text styles in one call. | ||
create_schedule | Create a door schedule with Mark, Level, Width, Height and Fire Rating, sorted by Level then Mark | Pro |
| Create a scope box by duplicating an existing one (optionally offset and renamed), or at exact dimensions from an origin and width/depth/height or min/max corners. | ||
create_scope_box | Create a scope box called Block B by copying Block A and offsetting it 20000mm in X | Pro |
| Auto-create longitudinal and transverse section views centred on each selected room. | ||
create_section_by_room | Create longitudinal and transverse sections through the Meeting Room | Pro |
| Create one or more sheets with a title block, optionally placing views at given positions. | ||
create_sheets | Create sheet A301 called Details using the A1 title block | Pro |
| Create sheets in bulk from a drawing-register .xlsx - sheet number, name, title block, and optional view and scale per row - in one pass, with a dryRun preview. | ||
create_sheets_from_excel | Create sheets from the drawing register at C:\Project\Register.xlsx - dry run first | Pro |
| Create a named rule-based view filter from categories and parameter rules (equals, contains, greater, less, has value...), combined with AND or OR, optionally applied to views with visibility and graphic overrides. | ||
create_view_filter | Create a view filter called Fire Rated for walls where Fire Rating has a value and colour them red in the active view | Pro |
| Create a named view template from an existing view - captures its visibility, filters, scale, and detail level - and optionally assign it to views. | ||
create_view_template | Create a view template called Working Plan from the Level 1 plan and assign it to all floor plans | Pro |
| Create floor plans, reflected ceiling plans, and 3D views with level, scope box, scale, and template options. | ||
create_views | Create a floor plan and a ceiling plan for Level 3 at 1:50 | Pro |
| Create a named saved perspective from internal-origin eye/target millimetres, horizontal FOV and aspect ratio. Verifies native camera metadata after commit; activate and capture the view to check actual model visibility. | ||
create_perspective_view | Create a perspective named Site camera from eye [20000, -30000, 12000] toward [0, 0, 2000], with a 60 degree horizontal field of view and 16:9 aspect | Pro |
| Update an existing 3D camera, converting to perspective where permitted. Preserves existing far/section clipping unless explicitly changed, protects locked/template-controlled views, and distinguishes saved camera state from rendered visibility. | ||
set_view_camera | Update Site camera to a 45 degree horizontal field of view while retaining its clipping settings | Pro |
| Delete sheets by name or number (or all except a keep-list), preserving the active sheet. | ||
delete_sheets | Delete every sheet except A101 and A102 | Pro |
| Delete views, by default keeping views placed on sheets and the active view; templates and schedules optional. | ||
delete_views | Delete all the views that are not placed on sheets - dry run first | Pro |
| Duplicate existing sheets, optionally copying their views onto the new sheets. | ||
duplicate_sheets | Duplicate sheets A101 to A104 including the views on them | Pro |
| Duplicate one or more views - plain, with detailing, or as dependents - with up to 20 copies per view, name patterns, and a dry-run preview. | ||
duplicate_views | Duplicate the Level 1 plan three times with detailing, named Level 1 - Study {n} | Pro |
| Find which views and sheets graphically show given elements, scanning sheet-placed views first, with view-type filters and a time budget for large models. | ||
find_element_locations | Which views and sheets show these selected elements? | Pro |
| Find missing model elements without knowing their IDs. Narrow with categories, e.g. Doors. Searches across document levels and outside the view range; auto scope prioritises the plan level without excluding others. Results distinguish diagnostic candidates from confirmed hidden elements, include vertical-range evidence, and report scan/analysis limits. | ||
find_hidden_elements | Find everything hidden in this view and explain why each one is hidden | Pro |
| Get current active view details | ||
get_active_view | What view am I in right now? | Free |
| Read the project browser organisation for views and sheets, including grouping and sorting rules. | ||
get_browser_organization | How is the project browser organised for views and sheets? | Pro |
| Get visible elements in active view | ||
get_current_view_elements | List the doors visible in the active view with their Mark values | Free |
| List scope boxes with their extents and optionally the views each is applied to. | ||
get_scope_boxes | List the scope boxes in the model and which views each one is applied to | Pro |
| List all sheets with viewport info | ||
get_sheets | List all the sheets and the views placed on each one | Free |
| List project, sheet, and title block parameters usable as naming placeholders in export tools. | ||
get_title_block_info | What parameters are available on sheet A101 that I could use in export filenames? | Pro |
| List sections and elevations with where each one cuts the model: a point on the cut plane, the direction the view looks and its far clip. | ||
get_view_cut_planes | Where does Section 3 cut the model, and which way does it look? | Pro |
| List view filters applied to a view, with their visibility state, graphic overrides, and rules. | ||
get_view_filters | What filters are applied to the Level 1 plan and what do they override? | Pro |
| Read a view template's settings: scale, detail level, display style, discipline, phase filter, view range, controlled vs not-controlled parameters, hidden categories, overrides, and applied filters. | ||
get_view_template_settings | What settings does the 1:50 Plan view template control? | Pro |
| List view family types, levels, title blocks, scope boxes, and existing view names for the project. | ||
get_view_types | List the view types, levels, and title blocks available in this project | Pro |
| List the viewport types in the project (Title w Line, No Title, Title Only...) with their title settings and how many viewports use each. | ||
get_viewport_types | What viewport types does this project have, and how many viewports use each? | Pro |
| List views (floor plans, sections, elevations, 3D, etc.) | ||
get_views | List all the elevation views in the model | Free |
| Hide, isolate, or reset element visibility | ||
hide_isolate_elements | Isolate the selected elements in the active view | Free |
| Rearrange existing viewports on a sheet using grid, row, column, or auto layouts to avoid overlaps. | ||
layout_sheet_viewports | Rearrange the viewports on sheet A105 into a two column grid with 10mm spacing | Pro |
| Manage sheet sets: list, create, delete, rename, add or remove sheets, and export to PDF. | ||
manage_sheet_sets | Create a sheet set called Planning Issue with sheets A101 to A110 and export it as a single PDF | Pro |
| Manage viewport Saved Positions so Revit enforces the same layout on every sheet - list, create, capture a placed viewport's layout, assign a position to views, clear, or delete, with dry-run preview. (Revit 2026+) | ||
manage_view_positions | Save this viewport layout as a position called GA Standard and assign it to all the level plans so every sheet uses it | Pro |
| Edit a schedule's fields, headings, widths, units, filters, sorting, appearance, header rows, logo, phase and segments, or read it back. | ||
modify_schedule | On the Room Schedule hide Level, rename Number to No. and total the Area column | Pro |
| Move the cut plane of a section or elevation by an offset along its viewing direction, or so that it passes through a point. | ||
move_view_cut_plane | Move Section 3's cut plane 500mm further into the building | Pro |
| Orient and zoom the active 3D view onto specified elements, setting a section box around them. Set orientToFace with a wall or face to rotate the section box square-on (parallel) to it, fitted around the element. | ||
orient_view_to_elements | Zoom the 3D view onto the selected stair and put a section box around it | Pro |
| Apply graphic overrides (colour, line weight, transparency, halftone) to elements in a view, colour-code elements by a parameter's value with an auto legend, or clear overrides. | ||
override_element_graphics | Colour the walls in the active view by their Fire Rating value and add a legend | Pro |
| Place views on sheets with auto-layout that sizes viewports to prevent overlaps. | ||
place_views_on_sheets | Place all the room elevation views on sheets grouped by room, numbered sequentially from A201 rather than by room number | Pro |
| Refit existing interior elevations to the room as it is now after a resize: crop width and height to the room, view depth to the furthest wall face, sheets and viewports untouched. Dry run reports the before and after per view. | ||
refit_room_elevations | Room 203 has been resized - refit its elevations to the new room, 300 mm above and below, and show me the before and after first | Pro |
| Duplicate a set of sheets with views and detailing as a new drawing issue: renumber, suffix names, set status, strip old revisions and stamp a new one. | ||
reissue_sheets | Reissue sheets A101 to A110 as Tender issue: duplicate with views, suffix names with -T, add revision T1 | Pro |
| Clear a scope box from views or delete the scope box element from the model. | ||
remove_scope_box | Remove the scope box from the Level 1 and Level 2 floor plans | Pro |
| Rename views by stripping copy/duplicate suffixes or rewriting from a per-view-type naming template. | ||
rename_views | Strip the Copy suffixes from all view names - preview first | Pro |
| Renumber sheets with a prefix and a zero-padded incrementing sequence, ordered by current number or name. | ||
renumber_sheets | Renumber all the sheets from A100 upwards in steps of 1, ordered by their current number | Pro |
| Renumber viewport detail numbers with zero-padding, ordered by position, name, or existing number. | ||
renumber_viewport_detail_numbers | Renumber the detail numbers on sheets A101 to A116 by position, starting at 1 | Pro |
| Reset temporary hide/isolate state in the active view | ||
reset_temporary_hide_isolate | Reset the temporary hide and isolate in this view | Free |
| Switch active view by ID or name | ||
set_active_view | Switch to the Level 2 floor plan | Free |
| Set a view's crop region to a rectangle in project coordinates so only that area draws - the way to plan one building out of several. | ||
set_crop_region | Crop the Level 1 plan so only Block B draws | Pro |
| Set a view's display style (wireframe, hidden_line, shaded, shaded_with_edges, consistent_colors, realistic, realistic_with_edges) and optionally its detail level (coarse, medium, fine). Display style is a view property set_parameter cannot reach. A 3D view must be in hidden_line to export as vector line work to PDF; shaded views rasterise. Optional shadow/sunlight intensity, fixed sun angles or UTC still study, and sky/solid/gradient/image backgrounds protect shared sun settings and template controls. Cast/ambient-shadow enable and background None have no supported public setter. | ||
set_view_display_style | Set the 3D Working Model view to hidden line at fine detail | Pro |
| Set the viewport type on every viewport of the chosen sheets in one call - the active sheet, all sheets, specific sheets or explicit viewports - optionally limited to certain view types or detail numbers. | ||
set_viewport_type | Set every viewport on sheets A501 and A502 to No Title, except detail 01 | Pro |
| Assign a view template to many views at once, matched by view type, name substring, or explicit view IDs. | ||
standardize_view_templates | Make sure every section view uses the Section view template | Pro |
| Clear the permanent per-view element hide override (Hide in View, Elements) so hidden elements show again - specific elementIds, or every hidden element in the view. | ||
unhide_elements_in_view | Unhide everything that has been hidden in the active view | Pro |
| Update a view template in place - scale, detail level, display style, discipline, phase filter, hidden categories, filters, and which parameters it controls - applying instantly to every assigned view. | ||
update_view_template | In the RCP template, hide Furniture and set the detail level to Fine | Pro |
Warnings Pack
Automated resolvers for Revit's most common warning types - fix every warning matching a pattern in a single call.
| Tool | Example prompt | Edition |
|---|---|---|
| Fix identical-instances-in-the-same-place warnings by deleting duplicates, keeping either the original or the newest element. | ||
resolve_duplicate_instances | Resolve the identical instances warnings, keeping the original elements | Pro |
| Fix duplicate instance Mark warnings by clearing or renumbering marks, with filters, patterns, and batched processing. | ||
resolve_duplicate_marks | Resolve the duplicate Mark warnings on doors by renumbering them | Pro |
| Fix duplicate Type Mark warnings by clearing or renumbering type marks, with configurable patterns and numbering scope. | ||
resolve_duplicate_type_marks | Resolve the duplicate Type Mark warnings by clearing the values | Pro |
| Fix joined-but-do-not-intersect warnings by unjoining the highlighted elements. | ||
resolve_joined_not_intersecting | Resolve the elements joined but do not intersect warnings | Pro |
| Fix multiple-areas-in-the-same-enclosed-region warnings by selecting or deleting redundant areas by a chosen rule. | ||
resolve_multiple_areas_same_region | Fix the multiple areas in the same region warnings by keeping the original area in each and deleting the rest | Pro |
| Fix multiple-rooms-in-the-same-enclosed-region warnings by selecting or deleting redundant rooms by a chosen rule. | ||
resolve_multiple_rooms_same_region | Fix the multiple rooms in the same region warnings, keeping the original room in each | Pro |
| Fix 'Area Boundary line is slightly off axis' warnings by snapping to clean angles. | ||
resolve_off_axis_area_boundary | Fix the off axis area boundary line warnings | Pro |
| Fix 'Grid is slightly off axis' warnings by snapping grids to clean angles. | ||
resolve_off_axis_grids | Snap the slightly off axis grids back to true | Pro |
| Fix 'Line is slightly off axis' warnings for model and detail lines. | ||
resolve_off_axis_lines | Fix the off axis warnings on model and detail lines | Pro |
| Fix 'Reference Plane is slightly off axis' warnings. | ||
resolve_off_axis_reference_planes | Fix the off axis reference plane warnings | Pro |
| Fix 'Room separation line is slightly off axis' warnings. | ||
resolve_off_axis_room_separation | Fix the off axis room separation line warnings | Pro |
| Fix 'Line in Sketch is slightly off axis' warnings in floor, ceiling, and wall sketches. | ||
resolve_off_axis_sketch_lines | Resolve the line in sketch is slightly off axis warnings | Pro |
| Fix 'slightly off axis' wall warnings by snapping walls to the nearest clean angle. | ||
resolve_off_axis_walls | Resolve all the off axis walls in the model | Pro |
| Read the room volumes overlap warnings and cap each lower room at the upper room's base. | ||
resolve_room_volume_overlap | Fix the room volumes overlap warnings by capping the lower rooms | Pro |
| Select and isolate elements that have warnings, optionally creating a dedicated 'Warnings Review' 3D view, filterable by warning type. | ||
select_warning_elements | Isolate the elements with warnings in a 3D view | Pro |
Troubleshooting
Connection Issues
If Claude Desktop, ChatGPT Desktop or Cursor cannot connect to Revit:
- Ensure Revit is running and has a document open
- Restart your AI application after configuring
- Check that the Bridge executable is not blocked by antivirus
- Try running the
pingtool to test connectivity - Claude Desktop: make sure the message box is set to Chat, not Cowork - connectors are not available in Cowork (see Claude Desktop Settings)
- ChatGPT Desktop: run your prompt in Work, not a regular Chat conversation - only Work loads MCP servers
- ChatGPT Desktop: if a conversation reports the Revit MCP is not connected, start a new conversation - the MCP session is per-conversation and drops after sitting idle
Claude Desktop may need to be restarted by closing it in the system tray, then reopening it. The same applies to ChatGPT Desktop - both apps only read their config files at launch.
Tools Not Appearing
If MCP tools are not visible in your AI application:
- Verify the configuration file was updated correctly
- Restart your AI application completely (not just refresh)
- Check the MCP server logs for errors
- Check the bridge is running in Claude Desktop
Frequently Asked Questions
MCP Connector for Revit works with the active document in Revit. Whichever project is in the foreground is what your AI assistant will interact with. To work with a different document, click on it in Revit to make it active, or name the model in your request - every tool can act on any open document by name. If more than one Revit is running, ask your AI assistant to list the Revit sessions and switch to the one you want, by the model it shows. With no session chosen, the connector stays with the Revit instance it first connected to.
MCP Connector for Revit adds 416 MCP tools across 14 packs - Annotation; Coordination; Data; Family Editor; Issue/export; MEP; Model Management; Modelling; Reporting; Selection; Structural; Sustainability; Views & Sheets; and Warnings. These include the 39 free read-only tools for querying and reading model data.
The most common cause is having the Microsoft Store version of Claude Desktop installed. The Store build does not read the standard %APPDATA%\Claude config folder - Windows redirects it into a sandboxed package location that auto-configuration never writes to, so no tools load. Install the standalone build from claude.ai/download and re-run Configure Claude Desktop, or copy your config file into the redirected package folder. Otherwise, make sure Revit is running with a document open and that you fully quit and reopened Claude Desktop from the system tray after configuring.
Yes. When the ChatGPT Desktop app is installed, it appears in the connector dialog and Configure ChatGPT / Codex sets it up in one click. The configuration is written to %USERPROFILE%\.codex\config.toml, which ChatGPT shares with the Codex CLI - so Codex CLI picks up the Revit tools too. Fully quit ChatGPT and reopen it after configuring, then ask it to "ping Revit" with a model open to confirm the connection. Note that the Revit tools are available in ChatGPT's Work area, not in regular Chat, and the connection is per-conversation - if ChatGPT reports the Revit MCP is not connected, start a new conversation in Work.
Changelog
- Live licence discovery. The Bridge gets tool availability from the running plug-in, so a stale Free manifest no longer hides tools from a licensed Pro session. The local manifest remains the fallback when the host cannot be reached.
- Licence enforcement. Improved consistency when licence state changes. Paid operations still require entitlement in the native plug-in; tool discovery does not grant it. Existing signed offline allowances remain supported.
- Tool catalogue. Large live tool lists load correctly, including the new terrain and camera tools.
- Visibility diagnostics. Category searches can find model elements above or below a plan view range without requiring a known element ID. Reports distinguish vertical range, crop and other possible causes; collector membership is not proof that an element is drawn.
- Grid bubbles. Choose the displayed side consistently even when grids were drawn in opposite directions. Swapping checks the saved bubble state without reversing grid geometry.
- Dimensions and links. Clear and overall wall dimensions select the appropriate faces. CAD link reports separate loaded cached geometry from a missing source file. The new Pro
link_revit_modeltool supports origin or shared positioning. - PDF scaling. Original-size 100% remains the default. An optional exact
zoomPercentage, including 50%, is separate from automatic fit. Title-block registration is retained when it fits; centred fallback and possible clipping are reported. A nominal A1 sheet at exactly 50% is 0.5 mm wider than A3. - Warnings and approval hints. Optional per-call policies can accept explicitly named warning IDs or roll back instead of waiting for a modal response. Interactive handling remains the default. File and session side effects are reflected in tool annotations.
- Native Toposolids. Create explicit concave boundaries with holes, subdivisions, point edits and sampled pad/batter grading. Revit 2024+ is required, with update-specific checks for point operations. Grading preserves the source by default and does not create native cut/fill or a continuing level association.
- Terrain following. Optional family/group placement, floor shape fitting, straight wall/fence profiles and supported terrain-hosted railing paths. Sampling is bounded; static results do not imply a continuing terrain association.
- Perspective cameras. Create and update eye/target, horizontal field of view and aspect ratio, with verified native readback and separate clipping controls. Optional display settings respect template and API restrictions.
Removal tools preview first and wait for your go-ahead, permissions can be set by person through Group Policy, and tags, spot elevations and geometry reach into linked models
- Removal tools preview first.
remove_links,purge_unused,prune_design_optionsandpurge_familieslist what would go and change nothing on a plain call. The AI is asked to show you the list and wait for your go-ahead before it calls again withdryRunfalse. - CAD links and CAD imports.
remove_linkstells a CAD import from a CAD link. Imports are left alone unlesscadImportsis set, and can be removed on their own. The preview gives the file each CAD link points to. - A question in Revit before a removal. An administrator can have Revit ask Allow or Refuse before any tool that deletes, removes, purges or ungroups runs. The question names the tool, the AI app, the model and the elements, and only you can answer it. It is off unless the policy switches it on.
- Permissions by person. The administrator policy is also read from Group Policy, for a computer or for chosen users, so a tool can be blocked for some people and not for others. Where more than one policy applies, the stricter one holds. A Group Policy template is in the install folder, and
get_session_infosays where each setting came from. - Revit's warnings in every reply. Whichever tool makes a change, its reply lists the warnings Revit raised, any step that was not saved, and any step saved after your answer in Revit.
- Several Revit sessions. With more than one Revit open, calls go only to the session you choose.
list_revit_sessionsshows every model each session has open or linked,select_revit_sessiontakes a model by file name, title or path, and every reply names the session it came from. - Tags in linked models and in more views.
tag_elements,tag_elements_in_viewandget_tagstakelinkIdto tag and read the elements and rooms of a linked model. The view sweep works in sections, elevations, detail views and drafting views, takes any category that has a tag of its own, and names the tag type it used for each category. Keynote tags show their keynote, where the model already holds one element keynote tag. A leader is optional, withleaderOffsetin the model's own units. A tag the view does not draw is taken out and reported. - Spot elevations and spot coordinates.
create_spot_dimensionsplaces them on the top, bottom or nearest surface of an element, in plans, sections, elevations and orthographic 3D views, in the open model or a link.get_spot_dimensionsreads them back with the text each one shows. - Geometry of linked elements.
get_element_geometryandget_boundary_curvestakelinkIdand return every point in the open model's coordinates. - What a view draws.
get_elementswith a view andget_current_view_elementssay where each element lies against the crop region, andget_active_viewgives the crop region and the annotation crop.create_text_noteandcreate_dimensionstake out and report a note or dimension the view does not draw. - Material textures and images.
get_material_textureslists the image files materials use and which are missing.repath_material_texturespoints them at where the files are now,remove_missing_material_texturestakes off images that cannot be found, andremove_unused_imagesdeletes images nothing uses. The three that change the model preview first. - API object reader.
inspect_api_objectreads an element, the document or the active view as the Revit API presents it, property by property, and steps into whatever a property returns. It changes nothing. - Captured views as pictures.
capture_view,capture_family_viewandcreate_family_thumbnailreturn a picture the AI can look at. - Parameters that share a name.
set_parameterandbatch_set_parameterstakeid:orguid:in place of a name to pick exactly one parameter. A write by name says when more than one parameter has that name and which one was written. - Tool hints. Every tool that changes the model is marked either as one that only adds or as one that can overwrite or delete, checked tool by tool.
- Smaller changes.
export_pdftakes the page orientation of a sheet with a hidden title block from the title block frame, and reports the page sizes of the written PDF.place_area_boundary_linesseats each area inside its traced loop.batch_link_cadat origin puts the link's origin at model height zero when the host view has no level.create_dimensionsbetween two points takes the wall facesspanModenames.create_toposolid_from_dwgcounts an elevation offset already given when it advises on heights.divide_partsreports the parts it cut and the parts it left.purge_unusedtakesonlyto keep a purge to unused materials (Revit 2024 and later), and on Revit 2022 and 2023 uses Revit's own check for unused families and types.remove_linkscounts a CAD link as removed once it has gone from the model. The batch parameter tools leave a level's Name to the tools that rename a level.get_gridsandget_area_boundariesgive millimetres beside feet. - Connection. When no call can be sent, the bridge says which is the case: Revit is not running, the connector is switched off, or no session is chosen. A timeout and a lost connection are two separate messages.
Revit's warnings and errors are yours to answer, and the warning fixers leave grouped elements alone
- Revit asks you, not the AI. When a tool's change makes Revit raise a warning or an error, Revit shows its own message and waits for your answer, as it does when you make the change by hand. The AI cannot answer it. The reply says whether the step was saved.
- Warning fixers leave groups alone. The off-axis fixers,
resolve_duplicate_instances,resolve_multiple_rooms_same_regionandresolve_multiple_areas_same_regionskip anything inside a group and list it with the group's name, to be changed in Edit Group mode. - Warnings are reported. Every reply lists the warnings Revit raised while the tool ran, with the elements they name.
- Area boundary lines keep their dimensions.
resolve_off_axis_area_boundaryno longer removes dimensions attached to a line.removeConstraintsis off by default. When on, only locked dimensions and constraints are removed, and each one is listed. - Plain words for what a tool does.
deep_purgesays thatsingle_instance_detail_groupsungroups detail groups placed only once, leaving the linework, and counts them as ungrouped. The room and area fixers say that every action except the default deletes, and list only what was deleted. A move, rotate or delete refused inside a group now points toedit_in_group.
Exact tagging, detail lines and wires, stairs, railings and ramps, MEP sizes and fittings, geometry read back as true curves, dialogs the AI can read and answer, sessions and documents chosen by name, an administrator policy with an audit log, and a model review export
- Tagging by element.
tag_elementstags exact elements by ID in any view, including assembly views, each with its own tag type, head position and leader, and leaves alone an element that already carries that tag type. Switches and other electrical devices, wires, rebar and embeds can be tagged.get_tagsreads the text each tag shows, its type, host, head and leader, and flags blank and orphaned tags.tag_elements_in_viewkeeps each tag inside the view's crop region. - Detail and model lines.
create_detail_linesdraws lines, arcs and circles in a view with a line style and rounded corners;modify_detail_linesmoves ends, redraws arcs, changes the style and fillets two lines;create_model_linesdraws the same shapes as real 3D lines on one level or on every level. - Wires, sizes and fittings.
create_wiresdraws electrical wires through points and onto a device's connector.get_mep_sizesandadd_mep_sizesread and extend pipe and conduit size tables;get_routing_preferencesandset_routing_preferencesread and set the fittings each type routes with;create_flex_duct_or_pipe,add_mep_insulation_lining,cap_mep_open_endsandset_mep_system_typefinish a run. - Stairs, railings and ramps.
create_stairsbuilds a native stair from straight and spiral runs;create_railing,edit_railing_pathandedit_railing_typeplace, re-route and configure railings, with the path, rails and extents read back;create_rampmakes a straight ramp with optional railings.create_hosted_sweepadds fascias, gutters and slab edges;edit_curtain_gridsets grid lines and mullions;create_framing_openingscuts beam openings;edit_floor_boundaryreshapes a floor in place;duplicate_element_typemakes a new type with its parameters set. - Geometry as it is.
get_element_geometryreturns vertices, edges and faces in millimetres, andget_boundary_curvesreturns sketch boundaries and location curves as true lines, arcs, ellipses and splines.get_view_cut_planesandmove_view_cut_planeread and move where a section or elevation cuts.get_reference_planes,create_project_reference_planesandset_datum_3d_extentscover reference planes and the 3D extents of grids and levels.get_bounding_boxesandget_element_by_idtakefullPrecisionfor unrounded values. - Family editor. Dimensions and locks to a family level, sketch locks on sweeps, blends and revolves, and radius, diameter and angular dimensions through
create_family_dimension.create_boolean_solidmakes one solid from two forms andjoin_family_geometryjoins solids. A void that removes nothing is reported as failed,flex_familyreports a size the rig cannot reach, and new families are kept in a working folder rather than on the Desktop. - Dialogs. A call that Revit holds behind one of its own dialogs is answered with the dialog's title, text and buttons instead of timing out, and a call made while a dialog is open is refused naming it.
get_open_dialogreads the dialog andpress_dialog_buttonpresses the button you choose. Renaming a level throughrename_elements,renumber_datumsorset_parameterno longer stops on Revit's prompt:viewsFollowLeveldecides whether the plans follow, and the reply lists the views renamed. - Sessions and documents. With more than one Revit open,
list_revit_sessionsshows each session with the model it has in front andselect_revit_sessionswitches by process or by model, andstart_revit_sessionstarts an installed Revit release when none is running. If the chosen session closes, calls fail and say so rather than moving to another Revit. Every tool takes an optionaldocumentnaming the open model to act on.undoandredoreport which steps ran.create_modelmakes a new project from a template,save_documentandsave_asreport the file as it is on disk, andopen_modelwithcheckOnlysays whether a long open has finished. - Administrator policy and audit log. An administrator can switch packs off and block or allow named tools for every user of a computer, alongside the existing read-only lock; the connector dialog shows what is locked. An audit log, off unless an administrator turns it on, keeps one line per tool call - time, user, computer, model, AI app, tool, whether it reads or writes, the outcome and the start of its arguments - with a copy to a folder the administrator names. Both need Pro. Two ready-made views of the log are under Power BI Dashboards.
- Model review export.
export_model_reviewsaves a snapshot of the open model, or of every model in a folder, as tables for Power BI or any other reporting tool: warnings and Performance Adviser results with their Element IDs, model checker figures and element counts. Each run adds a snapshot, so trends build up over time. A ready-made Power BI dashboard charts them. - Tool hints. Every tool is marked as read-only or not, and as destructive or not, so an AI app that asks for approval before each call can let reads through.
- Fixes and smaller changes. Sections are created on Revit 2022, 2023 and 2024 by
create_views,create_element_sectionsandcreate_section_by_room.mirror_elementsno longer removes a hosted door or window, and takesflipHostedto flip it in place.place_family_instancesandplace_families_from_excelcorrect a family that doubles its height above the level.divide_partsdivides an element again after a first division. A blank DWG, DXF or PDF export is reported as failed, and DWG and DXF replies carry an entity count.export_pdftakesfitToPage.batch_link_cadreports each link's level and height and takesoriginZMmorlevelName.create_wallsandcreate_floortakeunitsin millimetres, andcreate_floortakesopenings.create_filled_regionsubtracts holes from the area it reports.attach_wallsandjoin_geometryread the result back off the model before reporting success.set_parameterreports a change Revit rolled back as a failure, and a parameter name a tool does not know is reported rather than ignored.capture_viewcan frame chosen elements, a rectangle or the current viewport. - Connection. The bridge never repeats a call whose outcome it could not confirm: it says so, and
get_bridge_recoveryshows what to check first. "Empty response from Revit" is replaced by a plain statement of what is wrong.
Sustainability pack, schedules with a house style placed on sheets, filled and masking regions, a legend builder, and drawing reissue in one call
- Sustainability pack (11 tools). Carbon factors stored on materials with
set_material_carbon_dataand read back withget_material_carbon_data;calculate_embodied_carbonandget_element_material_breakdowngive a deterministic figure per element and per material;find_carbon_hotspots,compare_construction_carbon,create_carbon_analysis_view,create_carbon_scheduleandexport_carbon_report(xlsx or csv) present it;calculate_glazing_ratioandcalculate_existing_retentioncover the fabric checks. Quantities are scoped the way a Revit schedule scopes them: main model plus primary design options, elements present at the end of the last phase, withincludeDemolishedandincludeNonPrimaryOptionsas opt-ins, and every reply says what was counted.get_material_quantitiesuses the same scope. - Schedules with a house style.
create_scheduleandmodify_scheduletakeheaderImage(a logo in its own row above the title),headerStyle(background, text colour, font, size, bold, alignment and border line style for the title row and the column heading rows),headerRows(insert, write, merge, clear and delete rows in the header),unitsper column (the Format Unit button: unit, accuracy, symbol, trailing zeros, digit grouping),phaseandphaseFilter,splitinto segments, and striped rows with both colours and a sheet-only switch. Reading a schedule back now lists its header rows, units, phase and segments. - Schedules on sheets.
place_views_on_sheetsplaces schedules, which Revit refuses as viewports, one instance per segment side by side, and reports the drawn size. Views and schedules sit inside the title block's drawing area, read from the block's own border lines and title column, with the sheet size taken from the placed title block rather than the family's parameters, so imperial blocks without them no longer lay out as A1. - Filled and masking regions.
create_filled_regiondraws project loops with holes, view-frame outlines, a crop band hugging chosen sides of the crop, and regions in a family; fill by type name, by a colour that creates a solid type, or as a masking region, across many views in one call.build_legendmakes chip-and-label legends from a view's filters or from custom entries. - Drawing reissue.
reissue_sheetsduplicates a set of sheets with their views and detailing as a new issue: renumber by rule, suffix sheet and view names, set status parameters on the sheet or title block, strip inherited revisions and clouds, and stamp one new revision, with a dry run and one undo step per call.update_revisionedits, issues, unlocks or deletes a revision anddelete_revision_cloudsclears clouds by view, sheet or revision.duplicate_sheetsfalls back to duplicating with detailing when Revit refuses the with-views option. - Smaller changes. Cell border line styles are accepted with or without Revit's angle brackets.
attach_wallsneeds Revit 2026 or later and says so on 2025 instead of failing.
Paste aligned across views and projects, background documents, true dimension lines, schedule editing, datum tools, and survey placement that refuses rather than shifts
- Paste aligned to selected views. The new
copy_view_elementscopies view-specific elements at the same position into other views or sheets - a callout's detail lines into its drafting view, a generic annotation stamp onto a list of sheet numbers - and into another open project, creating the drafting view or legend there when it is missing. Sketch internals are filtered out, a mixed set falls back per category and per element, and the rename notice Revit raises on a cross-project paste is captured instead of left in a dialog. - Background documents.
save_documentsaves any open document in place;save_asandclose_documenttake adocumentTitle;activate_documentlists the open documents and brings one to the front. - The dimension line itself. Every dimension read now carries
dimensionLineMm(start, end, direction) and the text positions, separate from the bounding box that also spans the witness lines and text. The distance between two dimension lines is now the real distance, andmove_elementsshifts a line by a vector. - Linked openings in elevation.
auto_dimension_openings_in_elevationtakeslinkId, so every auto-dimension tool now works on a loaded link. - Schedules edited, not just created.
modify_scheduleadds, removes and reorders fields, sets headings, column widths, hidden columns, alignment, totals and min/max, per-column bold, font, size and colour, grouped column headers, filters, sorting, appearance, title/header/body text styles, combined-parameter columns and the name, and reads a schedule back.create_scheduletakes the same blocks. A filter on a Level, Phase or Type field now takes the element's name. Formula and percentage fields and conditional formatting are not exposed by the Revit API and are said so in the tool. - Grids and levels.
set_datum_extentsswitches heads between 3D and 2D per end across many views;set_datum_leadersadds the jog to a grid or level head;assign_scope_boxputs grids, levels and reference planes into a scope box;create_radial_gridsmakes arc and spoke grids about a centre;renumber_datumsrenames grids by position and levels by elevation without name collisions. - Rooms.
set_room_extentssets upper limit, limit offset and base offset in bulk and the computation height of levels;resolve_room_volume_overlapreads Revit's "Room volumes overlap" warnings and caps the lower room at the upper room's base. - Survey placement.
create_toposolid_from_dwgmatches the file's linework to the imported linework on the same entities and only accepts a fit that agrees to within 10 mm; anything else is refused with the numbers rather than shifted. The boundary is the convex hull of the accepted points, lifted to survey level, so Revit no longer drops hull points, and the result reports retained and lost points.manage_shared_coordinatesacquires from a linked DWG.export_dwgreports file size and entity count and flags a blank export. - Annotation clashes.
check_annotation_clashesmeasures a dimension by its line and text, not its witness lines, and tests door tags against the door's swing.
Practice template tools, a Parts pack, nested-family placement, and title block labels copied from a master
- Schedules. The new
create_schedulebuilds regular, key, material takeoff, sheet list, view list, note block and keynote legend schedules. Columns, sorting and filters are named by field, checked against the category's own schedulable fields, and a filter on a measurable field takes a unit ("900 mm") or reads a bare number in the project's display unit. - Project standards.
create_project_parametermakes a shared parameter and binds it to categories, extending an existing binding rather than refusing it, and puts the shared parameter file back where it found it.create_line_pattern,create_line_style,create_legend,manage_keynotesandget_browser_organizationcover the rest of a practice template checklist. - Templates saved as templates.
save_aswrites a.rte;open_familyandclose_familytake.rft, so a family template is authored and saved as one with no rename afterwards. - Title blocks per sheet size.
create_title_blockscaffolds one family per size from the installed templates, reading the sheet extent from the paper-edge linework. Revit has no API for labels, socopy_family_elementscopies them from a master title block into every other size with their parameter bindings intact, aligned on a sheet corner. - Nested families placed, not just loaded.
place_nested_family(andplace_family_instanceswithtargetset to family) places a nested component inside the open family - by point, on a named reference plane, or in a view, following the nested family's own placement type. It works from a background session with no project open.set_family_sharedturns a family's Shared flag on so it schedules on its own. - Library search.
find_library_familysearches the library places Revit is configured with, plus any folders you add, and loads a single match - refusing to overwrite a loaded family of the same name unless told to. - Parts.
create_parts,divide_parts(by levels, grids and reference planes, or by curves, with a gap),set_parts_excluded,offset_part_faces,merge_partsandset_parts_visibility. - Assemblies from the start.
create_assemblymakes the assembly thatcreate_assembly_viewsneeded you to make by hand. - Multi-category and keynote tags.
tag_elements_in_viewtakes atagFamilyto tag every chosen category with one tag type. - Fewer tokens for content authors. A Family-pack-only profile now keeps nested placement, so a content author can switch every other pack off - about a sixth of the full tool list.
Gross internal area through phased openings, elevation crops, a fixed sheet anchor, and the linked-model tools
- Gross internal area survives phased openings. Putting a door or window into a wall of a different phase makes Revit generate an infill wall: a real wall carrying the host's whole location line while its solid covers only the opening.
place_area_boundary_lineswas tracing it as a wall in its own right, laying a second boundary line over the host's and committing a slither of the real area. Walls sharing a centreline now collapse to the one that physically spans it, and every excluded wall comes back with its phase and its span so the trace can be checked - No more waiting on a dialog nobody can see. An overlap or an unenclosed region used to open Revit's own modal warning behind the call, where it sat until the client gave up. Area boundary work now carries a failure handler: warnings come back as data, errors roll the whole transaction back, and every reply says plainly whether it committed or rolled back
- Loops are checked before anything is written. A closed area loop needs three distinct vertices, a measurable area and no revisited point. Segments that would be drawn on top of one another are refused outright, with their coordinates, because that is what raises the overlap warning. Re-running a scheme needs an explicit
existingLineschoice instead of quietly stacking a second set of lines, and an area already sitting in the region is kept rather than duplicated - Elevation and section crops. A project X/Y rectangle cannot say how high to crop an elevation, so both corners landed at the same height and Revit clamped the result to a strip.
set_crop_regiontakesviewLocalMinandviewLocalMaxinstead, in millimetres across and up the view itself, and reports the crop in both frames along with the far clip - Sheets stop moving when a title block is hidden. Forcing a paper size centred whatever was currently printing, so hiding the title block re-centred the drawing and moved it.
export_pdfnow anchors on the title block's own frame, which a graphic override cannot move. Measured across a hidden and visible pair: 0.078 mm, against 15.4 mm before - Honest visibility counts. The auto-dimension tools were inferring visibility from three dozen speculative checks and reporting dimensions as hidden that were plainly on the drawing. Membership of the view's own element set is now the answer, and the diagnostic engine is only asked why afterwards. Fixes the count across every
auto_dimension_*tool - Say which face to measure.
create_dimensionstakes aspanModeof clear for the internal span or overall for the external one, so the same two walls no longer answer differently depending on how the request was phrased - Linked models.
manage_linkssets a link's reference type between Attachment and Overlay, moves a link instance, and repaths one - which is how a link is swapped for a different model while keeping its position and every instance.get_linked_filesreports the reference type and path type alongside each link - Shared coordinates. The new
audit_shared_coordinatesanswers whether each link is on shared coordinates or reads <Not Shared>, with its offset and rotation from the host origin. The newmanage_shared_coordinatesacquires a grid from a link, publishes this model's into one, or resets it. Publishing writes into the linked file, so it refuses without an explicit confirmation - Host families on a linked model. The new
place_family_on_linked_faceplaces face-based families on the faces of elements inside a link, without copying the linked geometry in. A point that misses is pulled to the nearest face with the distance reported, and a dry run lists every face's extent so a point can be aimed. Wall-hosted families such as doors and windows cannot host on a linked wall at all, which Revit does not allow, and that is refused with the reason
Slanted and tapered walls, roofs, hosted doors and windows, external elevations, and a batch of fixes
- Slanted and tapered walls.
create_wallstakes acrossSectionof slanted or tapered with the angles per wall or shared, and the newset_wall_cross_sectionchanges existing walls and can set the doors and windows they host to follow the lean. Dimensions to a leaning wall reference its cut line, gross internal area traces follow the real face at the level, and hosted placement takes ahostOrientationof match. Draw exterior walls clockwise: the exterior face sits to the left of the drawing direction and the lean, taper and door facing follow it - Attach top and base in batch. The new
attach_wallsattaches the top or base of any set of walls to a roof, floor, ceiling, toposolid or wall, finding the nearest one above or below each wall when no target is named, and detaches on request. Revit 2025 and later - Native roofs.
create_roofbuilds footprint roofs again on every roof type, withslope(rise over run) andslopeEdgesfor mono-pitch, dual-pitch and hipped roofs,overhangfor eaves,baseOffset, aunitsparameter, and a read-back of every edge's slope and the roof's elevation range. A roof type name that matches nothing is an error listing the types, never a silent substitute - Hosted doors, windows and rooflights.
place_family_instancesandplace_families_from_excelplace wall-hosted families on the nearest wall to each point, or an explicithostElementId, withsillHeightMm,flipHandandflipFacing, and report the host and the sill each instance ended up with - External elevations and sections.
create_viewscreates elevations from a marker atoriginMmin a plan view, one direction or all four on one marker, and sections from a start and end point with depth and height - Dimensions between walls.
create_dimensionsreferences wall side faces perpendicular to the dimension, runs the line throughlinePoint, refuses two references that resolve to the same wall, and names the element and face behind every reference - PDF paper size honoured.
export_pdfappliespaperSizeat 100% centred, and every export reports the sheet outline, the page it produced and why, with a warning when a hidden title block leaves the sheet with no size - Faithful sheet duplication.
duplicate_sheetscarries sheet-level text, lines, regions, legends and schedules, viewport types and label positions, and title block parameters, and reports anything it could not copy - Gross internal area on any wall direction.
place_area_boundary_linespicks the inside or outside face from the enclosed side of the loop rather than the wall's drawn direction, warns on mixed loops, and returns the traced loops with vertices, perimeter and area for checking - Room preview matches placement.
auto_place_roomsdry run reads the same plan topology the placement uses and reports a read failure instead of zero regions - Unit-safe room export.
export_room_datawrites the room Name and Number from their own parameters and quantities in the project's display units with the unit in the column header - Discovery.
pingandget_session_inforeport the connector version, edition, tool count and unit conventions - Grok Build. One-click setup for xAI's Grok Build CLI alongside Claude Desktop, ChatGPT / Codex, Cursor and GitHub Copilot
- Fixes. A JSON-encoded string in a
walls,typesorboundaryPointsarray is parsed, and anything else is named per item instead of failing the call or returning an empty failure list
Wall types from the spec, a model checker, and material assets
- New tool:
create_compound_types. Wall, floor, roof and ceiling types from a spec build-up in one call: give it the layers (function, material, thickness, exterior first) and it duplicates a base type, replaces the stack, creates any material the project lacks, and reports the result per type. Revit's layer rules are checked before the type is built and explained per layer when they bite - membrane layers must be 0 mm thick, and outside the core the layers must step up in priority as they move outward (Structure, Substrate, Thermal/Air, Finish 1, Finish 2) - with afixShellOrderoption that reorders or re-functions the layers for you - Vertically compound walls can be edited. Every wall type in Revit reports as vertically compound, so
edit_compound_structurewas refusing all of them. It now only stops when the type carries split regions, sweeps or reveals, tells you what it would drop, and replaces the structure only with your say-so. Layers can be set in full, re-ordered, re-functioned and given a priority; wall sweeps and reveals survive a layer change and can be added to a type; andwallPositionImpactpluskeepFaceshow which face of every wall would move and pin the one you choose, on edits, type updates andchange_element_type - New tool:
rename_compound_types. Rename types to a naming standard from a template with tokens for category, function, structural material, width and layer stack. Dry run shows every old and new name;get_compound_structurewithlistAllaudits every type in one call - New tool:
model_checker_report. A model review in one call - views, sheets, warnings with a critical count, imports and links, families, text, groups, materials, Performance Adviser rules, unused views, import line patterns, empty elevation markers and the Area and Volume Computations setting - written to an .xlsx with a history row for Power BI.set_area_volume_computationswitches Areas only / Areas and Volumes and the area basis - New tools:
set_material_propertiesandget_material_properties. Thermal and physical assets (isotropic or orthotropic), identity fields and custom parameters such as an embodied carbon factor, read and written singly or in batch, with an .xlsx export and a scan for materials missing an asset - New tool:
override_dimensions_by_value. Every dimension under, over or between given values coloured across a view, a sheet or every view, and cleared again - New tool:
copy_from_link. Elements of a category, or chosen ids, copied from a loaded link into the host model in place. Host types win on a name clash, and Revit's own "renamed to avoid conflicts" notices no longer roll the copy back - New tool:
create_family_types. One type per finish or size in the open family, with parameter values converted by their own units, materials by name and identity fields filled. Family authoring also gained straight profile segments that snap onto an axis increate_revolveandcreate_extrusion, reference planes whose extents match in every view, and a colour-only fallback increate_materialwhen no appearance asset matches - Sheet annotation batch.
set_viewport_typeandget_viewport_typesswitch every viewport on chosen sheets to No Title or Title w Line in one call;align_annotationsworks per sheet and per view, measures tags the way the ribbon does on Revit 2025 and later, and can align in columns so notes on the other side of a detail stay put;adjust_viewport_title_linefits and aligns title lines to the measured label;renumber_viewport_detail_numbersorders by position in rows - Fixes.
close_documentwith save off no longer saves;auto_dimension_gridskeeps its stack inside an elevation's crop; imperial projects can give thicknesses and offsets in inches and fractions;purge_unusedanddeep_purgereach the open family session
Two new tools, and Codex everywhere
- New tool:
create_fill_pattern. Model and drafting fill patterns, named as you specify. Ask for a sized preset - herringbone, chevron, running bond, stack bond, basketweave, hexagon, lines or crosshatch, all in millimetres - or draw the pattern in any view, put a rectangle round it to mark the repeat tile, select the lines and turn the drawing into a pattern: angles are snapped to the nearest repeating angle and every correction is reported, drafting patterns come out at the drawn size via the view scale, and flips, rotation and a scale multiplier are there when you need them. Import from a .pat file (or search a whole folder of them by name), and every pattern comes back as .pat text you can save or export straight to a file - New tool:
paint_opening_reveals. Paint the jamb, head and sill faces inside window and door openings across many walls in one call - scope by wall IDs, a wall type name or the current selection, choose which faces, dry-run to count the faces first, and strip it all off again withremovePaint - Startup fix for recent Codex builds. Newer ChatGPT / Codex releases read the tool list strictly and refused a draft-specification field the Bridge included, failing the whole connection at startup with "Unexpected response type". The field is gone. The Bridge also now answers the handshake immediately and looks for the Revit session in the background, so a client that starts its first conversation quickly still sees every tool
- One-click setup covers Codex everywhere. The dialog entry is now ChatGPT / Codex: it detects ChatGPT Desktop, the Codex app, the Codex CLI and the Codex extension for VS Code - and when Codex runs inside WSL, the connector writes the WSL-side configuration too, so the tools appear there without any manual editing
Room elevations that follow the room
- New tool:
refit_room_elevations. Revit fits an interior elevation to its room once, when the marker is placed, and never again - resize the room and every elevation stays cropped to the old one. This tool finds the existing elevations for a room (by the marker sitting inside it, or by the view name pattern they were created with) and re-crops them to the room as it is now: width and height to the room, view depth to the furthest wall face. Sheets and viewports are left where they are. Optional crop offsets per side, and a dry run that reports the before and after of every view without changing the model - Far clip lands on the furthest wall.
create_room_elevationsused to set the view depth from a single line through the room centre, which on an L-shaped room stopped at the inner corner rather than the far wall. Both tools now sample the depth across the full crop width and clip past the deepest face, with the margin exposed asfarClipMargin(300 mm by default)
Two fixes to MEP connection preview and view capture
connect_mep_elementspreview no longer writes to the model. The dry run used to make each connection for real and roll it back. Every rollback queues Revit's own background MEP network calculation on a worker thread, and across a large batch that work could collide with a following read and bring the session down. The preview is now a read-only classification - it measures the connector geometry and names the route it would take, creating nothing. It also flags two pairs in the same batch competing for the same open connector, which the old preview could not seecapture_viewfixed on shaded views. Revit selects the image format from two separate settings, one for hidden line and wireframe views and one for shaded views. Only the first was being set, so a shaded 3D view was written as a JPG while the tool looked for a PNG and reported a failure on a capture that had actually succeeded. Both are now set, and the written file is found whatever Revit named it - which also covers localised view-type names on non-English installs- A dry run is now a prediction rather than a proof of execution. It reports the route the connection would take, but Revit can still refuse at execution - for example where the routing preferences hold no fitting family for that size. The live run is verified exactly as before, with both connectors read back from the model
- Preview response renamed.
connect_mep_elementsin dry run now reportsroutableandnotRoutable, where v3.6.0 and v3.6.1 reportedconnectedandfailed. The old names read as though the connection had been made, which was never true of a preview. Anything reading the preview response directly needs a small update
Linked-model queries, and point-mode dimensions that snap to datums
- Query tools reach inside loaded Revit links.
get_elementsandsearch_elementsnow take alinkId, so you can find elements inside a linked model and dimension them directly without opening the link as its own document. Link results return their ids inline rather than as an element-set handle, because a handle resolves against the host model and would point at the wrong elements - Point-mode dimensions now snap to grids and levels.
create_dimensionsin point mode previously skipped datums entirely - grids and levels carry no location point or curve, so nothing was found at the point given. Datums are now measured against their view-projected curve
MEP and Structural packs, display style control, and text notes
- New MEP pack. Draw ducts, pipes, cable tray and conduit, build duct and piping systems, circuit fixtures to panels, create and re-sync MEP spaces from a linked model's rooms, and read panel schedules. Connection state is read from the model's own connector data rather than inferred from proximity, so
check_disconnected_mepandget_mep_connectorsreport what is actually joined - New Structural pack. Beams, beam systems, columns, braces and foundations, plus framing coping, slab openings, framing parameter writes, a support check, and analytical model read-out for handoff to analysis
- New tool:
set_view_display_style. Display style is a view property rather than a parameter, soset_parametercould never reach it - which also meant 3D views stayed shaded and vector PDF export could not fire - New tools for text:
create_text_notewith a leader that must point at an element visible in the view, plusget_text_notes,update_text_notesandfind_replace_text - New tool:
purge_families. Purges inside loaded families and reloads them, reporting the file size saved on each export_dwghonoursformat: "dxf", and confirms the file exists on disk before reporting the pathexport_view_imageacceptsimageWidthas an alias forpixelSize, and reports the path Revit actually wrote rather than the one requestedset_parameterandbatch_set_parametersaccept unit suffixes such as "150 mm", andget_parameter_values_by_categorygained offset paginationtag_elements_in_viewcovers MEP categories
Units parity, cleaner auto-dimension replace, and on-sheet visibility reporting
- Auto-dimension replace fixed on templated views. All seven
auto_dimension_*tools now detect existing dimensions even when the view template hides them, so replace and skip behave correctly instead of leaving an orphan dimension per run - Visibility reported beside created counts. The auto-dimension tools now report
visibleInViewwith ahiddenReasonfor each result - what was created in the model and what actually shows on the sheet are both explicit get_element_by_idunits parity. Full unit labels, metric twins and rounded values matchingget_elements, plus the element's bounding box in millimetresfit_room_tagsreporting split.stillNotFittingbecomesstillTooBigandoutsideTheirRoom, separating tags too large for their room from tags sitting outside itget_bounding_boxesmeasures view-specific annotations in their owning view, and a missing box now says the element exists and names its category instead of returning an empty result
Working with groups, viewport alignment that lines the drawing up, and reference plane setout
- Groups become a first-class workflow. Five new tools:
get_groups(inventory of group types, instances and members),create_group,edit_in_group(move, retype or delete elements inside a group in one atomic call - the legal ungroup, modify, regroup loop handled for you, with the type name preserved and an option to push the edit to every instance),place_group_instancesandswap_group_type - Clear guidance instead of dead ends on grouped elements. Move, rotate, mirror, delete and type-change tools now explain exactly why a group member is blocked and which route works, naming the containing group - no more misleading unpin advice or unanswerable Revit dialogs
align_viewportsrebuilt. Viewports match their originals by view name, then detail number, then position - so sheets with several views of the same type pair correctly - and matched pairs align by the drawing content itself, so crop or annotation differences cannot shift the layout. View titles come along too- New tool:
set_reference_plane_extents. Set reference planes to one length or match a selected plane, withalignEndsto line parallel planes up into a single band - and it finds a view each plane is visible in by itself - New tool:
copy_view_templates. Copy view templates between two open models in one call, filters and settings included - Saved Positions support (Revit 2026+). New
manage_view_positionstool - list, create, capture a viewport's layout, and assign positions so Revit itself enforces the layout across sheets.create_sheetsandalign_viewportsunderstand position-controlled views instead of fighting them, and sheet placement is measured from the title block corner in millimetres or inches delete_elementsnow protects group members: deleting one removes it from every instance of the group, so it asks for explicit confirmation firstungroup_elementsreliably deletes emptied group types when asked
Dimension into linked models, and every write verified
- Dimension to linked models. All seven dimension tools can now reference elements inside loaded Revit links.
create_dimensionstakes an{elementId, linkId}pair per reference, and theauto_dimension_*tools take alinkId- so a structural grid or an MEP element in a link can be dimensioned from the host model - Verified writes. Every write tool now checks its own work after Revit commits, reporting what was requested against what was actually created - a silent partial failure is no longer possible
- Dimensions now use the project's default dimension style instead of the first type found
- New tool:
set_crop_region- set a view's crop to a rectangle in project coordinates, the way to plan one building out of several - New tool:
fit_room_tags- make room tags fit their rooms by rotating them, dropping to a smaller type, or pushing them onto a leader, with the action taken reported per tag auto_dimension_roomsgainssidePreferenceto control which side of the room the strings land onplace_views_on_sheetsnow accepts asheetId, so views can be placed on an existing sheet directly- Wrong parameter names now fail loudly with a suggestion of the nearest valid name, instead of being silently ignored
- CSV exports now write a UTF-8 byte order mark, so they open correctly in non-English versions of Excel
- Measurements in tool responses now carry explicit unit labels
Tool pack toggles, area plans, and batch family authoring
- New Tool Packs section in the connection dialog: enable only the packs you need, so your AI client sees a smaller, sharper tool list. Changes apply live in supporting clients - no restart needed
- New tools:
get_areasandget_area_boundaries- read area schemes, placed areas and their boundary loops. Included in the free tier - New tools:
create_area_scheme,place_area_boundary_linesandplace_areasin Modelling - trace a level's exterior walls at the inside face, outside face or centreline for gross and net internal area plans, close the loops, and place an area in each - New tools:
move_elements,rotate_elementsandmirror_elementsin Modelling - batch move by a millimetre offset, rotate about any axis, and mirror about a named reference plane or any origin-and-normal plane, in projects and in the family editor. Model one raked leg, mirror it, get all four - Batch family authoring:
create_revolve,create_extrusion,add_family_parameterandcreate_materialnow accept arrays - several solids, parameters or materials in one call, with per-item results. Parameters are created in order, so a formula can reference one defined earlier in the same call - New tools:
delete_elementsandrename_elements- delete or rename elements, views and materials by ID, so the AI can correct its own work cleanly - New tool:
set_family_element_visibility- choose which detail levels each piece of family geometry shows at, for example a simple stand-in at Coarse and the full profile at Medium and Fine - Family editor refinements: labelled dimensions now place themselves clear of the geometry, and imported CAD underlays can be nudged into position after import
- Families created with
create_familynow save to your Desktop instead of the connector's application data folder, so your work survives an uninstall or upgrade
Bulk family placement from a spreadsheet, and shared licences
- New tool:
place_families_from_excel. Place family instances in bulk from an .xlsx or .csv coordinate table, one row per instance. X and Y are the only required columns; Z, Family, Type, Level and Rotation are optional, so one file can place a single family across a site or many different families in a single pass - Place in project coordinates or in shared survey coordinates, reading Easting and Northing straight from the file, with units in millimetres, centimetres, metres or feet
- New tool:
get_coordinate_system. Read the model's project base point, survey point and rotation from true north, and check whether shared coordinates are usable, before placing anything by Easting and Northing - Reads European spreadsheet exports directly: semicolon separators and decimal commas are detected automatically. Where a value is genuinely ambiguous the tool stops and names it rather than placing everything a hundred times out
- Write any spreadsheet column onto the placed instances as a parameter value, for example Mark or Comments
- Every instance is placed in a single transaction, so one undo straight afterwards removes the whole placement
- Floating licences. A licence can now be shared across a team as a pool of concurrent seats. A seat returns to the pool when that machine closes Revit, so there is no need to deactivate one machine before working on another
- New Licences In Use view under Manage Licence, listing the machines currently using the licence, when each took a seat, and when each was last seen
- Update notifications: the connector now tells you when a newer build is available
- Fixed: an AI client could be reported as configured when the application was not actually installed
Curtain wall dimensioning
- New tool:
auto_dimension_curtain_walls. Dimension curtain wall panels in elevation and section views - one chained string reading every panel, a separate dimension per segment, or a dimension across each individual panel, edge to edge - Measure gridline to gridline, or to the mullion faces for alternating mullion width and clear glass width
- Place strings on any side - top and bottom for panel widths, left and right for panel heights - with overall dimensions and wall-end terminations included
- Set how far per-panel dimensions sit from the panel edge, or leave them running through the middle
create_dimensionsnow resolves curtain grid line references, so passing grid line IDs directly works
Family Editor pack, 30 new tools, and multi-conversation connections
- New Family Editor pack: 15 tools for authoring loadable families end to end - create from a template or open an existing family, build a named reference-plane rig, label it with parameters, flex it to prove it, model extrusions and revolves, trace imported CAD drawings, generate clean thumbnails, and load the result into your project
- New tool:
place_family_instances. Place loaded family types at given points on a level, with per-placement rotation - New tools:
duplicate_views,find_element_locations, andfind_hidden_elementsin Views & Sheets - duplicate views in bulk, find every view and sheet that shows an element, and explain why elements are not displaying - New tool:
find_untagged_elements. QA pre-check for untagged doors, windows, rooms, and more before issuing drawings - New tools:
deep_purgeandget_element_historyin Model Management - targeted cleanup beyond a standard purge, and per-element worksharing history - New tool:
change_element_type. Swap many instances to a different type in one transaction, with a dry-run preview - New tools:
get_compound_structureandedit_compound_structurein Modelling - read and edit the layer build-up of wall, floor, roof, and ceiling types: resize the structural layer, swap materials, add or remove finish layers, all with a dry-run preview and the option to edit a duplicate of the type - New tools:
set_wall_location_lineandcreate_wallsin Modelling - change walls' location line (centrelines, finish faces, core faces) and batch-create walls from centreline segments - New tool:
undo. Post Revit's native Undo or Redo, up to 10 steps - revert an unwanted change straight from the chat - New tools:
get_view_template_settings,compare_view_templates, andupdate_view_templatein Views & Sheets - read what a template controls, find inconsistent settings across templates, and fix them in place - Connection reliability: the connector now serves multiple AI client connections at once - every new ChatGPT Desktop conversation connects instantly, and Claude Desktop and ChatGPT Desktop can drive the same Revit session side by side
- Documentation links across the installer and connector dialog now point at this docs page
Tool accuracy and safety patch
- Example prompts added to every tool in the reference tables - click any prompt to copy it
create_section_by_roomnow asks for specific rooms (or an explicit all-rooms confirmation) instead of silently sectioning every room in the modelcreate_sheetsreports an error listing the available title blocks when a requested title block ID does not resolve, instead of silently substituting the project's first title blockcheck_model_interferencesnow states clearly that clash detection runs within the current model - linked models are listed for context, not clash-testedget_session_infonow reports the Revit build number, username, and memory usage as documented
One product: free tier plus Pro licence
- The free and Pro editions are unified into a single product: the 37 free read-only tools work out of the box, and a Pro licence key unlocks the full 170+ tool set in place - no separate download, no reinstall
- New Buy Pro Licence and Activate Key buttons in the connection dialog; the dialog title and licence controls follow your tier
- One identity everywhere: the connector registers as
AUTOM8LABS_Revitin your AI apps. Upgrading migrates your settings and cleans up the oldAUTOM8LABS_Revit_Proentry from every AI app configuration automatically - Installed bundles from earlier editions (website Pro and App Store Pro) are removed automatically on upgrade
- Programs and Features entry renamed to "MCP Connector for Revit"
ChatGPT Desktop support and smarter AI app setup
- ChatGPT Desktop is now a fully supported AI app: the Enable MCP toggle configures it automatically alongside Claude Desktop and Cursor
- The setup dialog now shows only the AI apps detected on your machine
- The Microsoft Store build of Claude Desktop is configured automatically - no manual config copying
- More reliable first conversations: the connector now tells the AI it is operating a live Revit session, so requests run as tool calls instead of mock-ups
- Installer improvements: prompts to quit running AI apps before setup, and uninstalling now removes the connector's entries from every AI app configuration
Views, drawing registers, and warning resolvers - 15 new tools
- New tool:
create_view_filter. Create rule-based view filters from categories and parameter rules, and apply them to views with visibility and graphic overrides - New tool:
create_view_template. Capture an existing view's settings as a named view template and assign it to views - New tool:
override_element_graphics. Colour, line weight, transparency, and halftone overrides per view, plus colour-coding by parameter value with an auto legend - New tool:
analyze_linked_view_usage. Audit how RVT links display across views, and which linked view each one shows (Revit 2024+) - New tools:
analyze_drawing_register,update_drawing_register, andexport_drawing_register. Read your company's own drawing issue-sheet template, then fill it from live sheet and revision data - including non-destructive updates to an already-populated register - New tools: seven automated resolvers for 'slightly off axis' warnings, covering walls, grids, lines, reference planes, room separation lines, sketch lines, and area boundaries
- New tool:
create_toposolid_from_dwg. Build a toposolid straight from a linked CAD survey's contours or spot heights - Drawing register upgrades: composite document numbers, extra parameter columns, distribution block fill, and multi-worksheet templates
- Fixes across per-sheet revision numbering, linked-view analysis, and toposolid placement
Licensing platform and element sets
- New tool:
get_element_set. Page through the element IDs behind the compact element-set handles (ES-xxxx) that query tools return for large result sets - Query tools now return element-set handles for large result sets, and bulk tools accept them directly
- Moved to the shared AUTOM8LABS licensing platform for more reliable activation and seat management
- Clearer tool descriptions across the export tools
Fixes and new tools
- New tool:
create_sheets_from_excel. Build a whole set of sheets in one pass from an Excel drawing register, with sheet number, name, title block, and an optional view and scale per row - New tool:
unhide_elements_in_view. Reveal elements that are permanently hidden in a view, one at a time or all at once - Orient the active 3D view's section box square-on to a selected wall or face, fitted neatly around it
- Create scope boxes at exact dimensions, from an origin and size or from min and max corners
- Revision tools now fully support per-sheet revision numbering, not just per-project
- More reliable IFC export
- MEP opening tools now resolve their host wall or floor correctly when cutting or placing openings
- Faster model-health audit on large models
- Remove PDF, image, and point-cloud links, not just Revit and CAD links
- More accurate worksharing relinquish reporting, including what still needs a sync
- Smarter file-path handling so exports land where you expect
- Dry-run previews added to more bulk-modify tools
- Reliability fixes across sheet sets, section views, view capture, dimensioning, and room finishes
Coordination and polish
- Added the Coordination pack: clash detection, MEP penetration detection, openings, and dedicated clash review views
- Grew the tool set and refined how the packs are organised
- Reliability and performance improvements across the packs
Initial Release
- 160+ MCP tools across 10 packs, including the 36 free read-only tools
- Create, modify, audit, coordinate, and export
- Supports Claude Desktop, Cursor, and Claude Code