Revit Model MCP
Connect MCP clients to live Revit to inspect, validate, visualize, modify, export, and batch-process models safely, including remote workflows.
Read and inspect Revit: ping, list documents/instances, document info, UI state, views, schedules, elements, relations, and warnings.
Query and analyze: catalogs, aggregation, element queries/details, parameter fill checks, family audits, model health, links, and shared coordinates.
Compare/align datums between host and linked models.
Visualize and capture: activate views, select/show/isolate elements, override graphics, export view PNGs, and capture highlighted elements.
Modify safely: move, rotate, copy, mirror, delete, change types, set/update parameters, create walls/MEP, place/load/edit families, views, sheets, tags, and schedules with undo, dry-run, and confirmation gates.
Manage documents: open, create, activate, close, save, and sync documents, including confirmations for irreversible actions.
Run custom C# against the live Revit API with confirmation and dry-run options.
Export files: PDF, DWG, IFC, schedule CSV, and Navisworks NWC.
Batch-process many models: run actions, exports, saves, and C# over folders or paths.
Collect read-only snapshots, build Excel reports, and create issue registers with element snapshots.
Manage long-running jobs: list, wait for, and cancel action jobs.
Work locally, over SSH from macOS/Linux, or over HTTP with bearer-token security.
Enforce safety: read-only mode, path redaction, dry runs, confirmation tokens, and verification summaries.
Connects to live Autodesk Revit projects to query, review, and modify BIM models. It supports reading model information, elements, views, schedules, warnings, links, and coordinates; editing elements, parameters, families, sheets, and views; exporting PDF/DWG/IFC/CSV/NWC; and performing model health checks and batch operations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Revit Model MCPWhat model is open, and which level has the most room area?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Model MCP for Autodesk® Revit® connects Claude Desktop, Claude Code or any MCP client that starts a stdio server to a live Revit project. Ask questions about the model, check it, and change it in plain language. Every change is one named undo entry in Revit, and read-only mode is one switch away.
Claude Desktop runs on a Mac and connects to Revit 2026 on a Windows workstation. Actions are enabled in this recording.
"What model is open in Revit right now?" The client reads the document, levels and room counts.
"Which level has the most room area? Find the largest room and show it to me." The client aggregates room areas by level and queries the largest room.
revit_showopens a matching plan and selects the room."Isolate that room, place a Chair-Breuer at its centre and move it 800 mm along X."
revit_isolate, thenrevit_place_familyat the room'sroomCenterMm, thenrevit_move. Each mutation is its own Revit transaction.Cleanup afterwards is one more sentence: reset the view, delete the chair.
Quick start
You need two parts: the add-in inside Revit on Windows, and the server next to your MCP client. Details and requirements are in requirements and installation. Tested with Claude Desktop and Claude Code; other clients are listed on the tested clients page.
1. Install the add-in.
On the Windows machine with Revit, download RevitModelMcp-<version>-SingleUser.msi (current user) or RevitModelMcp-<version>-MultiUser.msi (all users) from the latest release.
Install only one of them.
Alternatively, install with WinGet:
winget install Sharafutdinov.RevitModelMcpKeep Revit closed during installation, then start Revit and open a model. Revit asks whether to load the add-in, because release builds are not code-signed yet.
2. Add the server to your MCP client. In Revit, Add-ins > MCP > Connect AI app registers the bundled server in Claude Desktop, Cursor, VS Code or Codex; Claude Code gets a copy-paste command. The MSI includes the server executable, so this path needs no separate Python or uv installation.
If you prefer the PyPI server: Install uv, then register the server. For Claude Code on the same Windows machine:
claude mcp add revit-model-mcp -e REVIT_MCP_HOST=local -e REVIT_MCP_REDACT_PATHS=1 -- uvx revit-model-mcpFor Claude Desktop, open the revit-model-mcp-<version>.mcpb bundle from the latest release, or add this to its MCP configuration:
{
"mcpServers": {
"revit-model-mcp": {
"command": "uvx",
"args": ["revit-model-mcp"],
"env": {
"REVIT_MCP_HOST": "local",
"REVIT_MCP_REDACT_PATHS": "1"
}
}
}
}On macOS or Linux, use a remote workstation instead of REVIT_MCP_HOST=local.
The Claude Desktop bundle page explains its settings form.
3. Ask a first question.
Restart the client, keep a model open in Revit and ask: "Call revit_ping, then tell me which model is open."
success: true means both parts are connected.
From a clone, uv run --directory server revit-model-mcp runs the same server without installing the package.
For updates, the release add-in checks GitHub daily and notifies by default; the PyPI server checks PyPI, or install the newer MSI (updates). Report bugs in Issues, ask questions in Discussions, and report vulnerabilities through SECURITY.md.
Related MCP server: revit-mcp
Why Model MCP
Safe by design. Each change is one named undo entry in Revit, and one setting makes the whole server read-only.
Confirmation first. Saving, syncing and other irreversible steps wait for your explicit approval.
Installs like normal software. MSI installers, with deployment guides for SCCM, Intune and Group Policy.
Works from a Mac. MCP stdio runs through SSH to the Windows workstation, so no port opens.
Try these prompts
Paste any of these into your MCP client with a model open in Revit. The last column names the tools each prompt uses.
Goal | Prompt | Tools |
Review | "Give me an overview of the open model: levels, element counts by category, links and the biggest problems." |
|
Health check | "Run a health check before we issue this model and list what fails." |
|
Find and show | "Find the doors on this floor and show me where they are in 3D." |
|
Highlight | "Colour those doors red on the L2 plan and fade everything else." |
|
Change, then undo | "Move the selected elements 500 mm along X. Preview it first, then do it, then undo it." |
|
Batch over a folder | "Collect read-only snapshots of every model in this folder and tell me which ones have parameters left empty." |
|
ISO 19650 register | "Check this model against our EIR and write an issue register to Excel with element snapshots." |
|
Export | "Export the L2 plan as PDF, and a Navisworks file of the whole model." |
|
Run from a Mac | "Call revit_ping and tell me which model is open on the workstation." |
|
What it can do
The tables list every tool by name; the tool reference has arguments, units and limits.
Review a model
Read the model, find problems and show them in Revit.
Reads change nothing in the document.
Exported pictures are the PNG files saved by revit_export_view; the image below is one of them, untouched.
Task | Tools |
Check the connection and open documents |
|
Find and count elements |
|
Read views and schedules |
|
Read warnings |
|
Check model quality |
|
Get a picture |
|
Point at things in Revit |
|
Coordinate links and datums
Compare and align grids and levels with linked models, inspect links and shared coordinates, and prepare CAD and Navisworks hand-overs.
Task | Tools |
Inspect links and coordinates |
|
Compare and align datums |
|
Work with CAD links |
|
Remove links |
|
Navisworks export |
|
Change the model safely
Edit elements, families, views and sheets. Each change is one named undo entry, and the riskiest calls wait for your confirmation. See safety.
Task | Tools |
Edit elements |
|
Run many steps as one undo |
|
Create elements |
|
Work with families |
|
Work with views and sheets |
|
Tag elements and create schedules |
|
Open, save and close documents |
|
Export files |
|
Run C# in Revit |
|
Undo |
|
Process many models at once
Run the same checks, edits, exports and saves over a folder of models, or collect read-only snapshots from many models in a persistent run.
Long jobs return a jobId that survives client restarts.
Task | Tools |
Open, change, export and save many models |
|
Collect snapshots without changing models |
|
Follow and cancel long jobs |
|
Write an issue register with snapshots
Review a model against your requirements and write an Excel register with severity totals, element rows and element snapshots. Snapshots also let you audit models later without Revit running.
Task | Tools |
Take a snapshot of a model |
|
Write an issue register |
|
Build a report from snapshots |
|
Prompts and skills
The prompts and coordinator guide describe read-only model review workflows.
For Claude Code, copy skills/revit-model-coordinator into ~/.claude/skills/.
For Claude Desktop, zip that skill folder and upload it as a skill.
The hand-written ISO 19650 issue register skill reviews a model against EIR/BEP requirements and writes an Excel register with element snapshots.
Install it the same way: copy skills/iso19650-issue-register into ~/.claude/skills/, or zip the folder and upload it in Claude Desktop.
Safety
Actions are on by default. Set
REVIT_MCP_READ_ONLY=1in the server environment, or create the workstationread-onlyfile, to refuse every action. Action tools stay listed and returnerrorCode: "read_only"instead of running.One undo per change. A committed action is one named Revit undo entry, shown in Revit's Undo list and in the add-in's "MCP activity" pane.
revit_undo_lastundoes it while it is still Revit's last change.Confirmation tokens for irreversible actions. Saving, synchronizing, removing links and running C# always need one. Closing with changes, deleting more than 500 elements, overwriting existing export files and in-place saves in batch runs need one too. The first call changes nothing and returns the text to show you; the retry needs your explicit agreement. A token is single use and expires after five minutes.
Dry runs. Model-changing tools such as
revit_move,revit_delete,revit_run_actions,revit_exportandrevit_process_modelsacceptdry_runto preview the result without committing it.A readable summary. Every action returns
verificationand a one-sentencesummaryof what changed.Path redaction.
REVIT_MCP_REDACT_PATHS=1hides directories in response path fields. Names, parameter values and errors stay visible.Unreachable workstation.
errorCode: "transport_unavailable"withretryable: truemeans Revit or the workstation is unreachable and the call did not run. Retry when the workstation or tunnel is back. See errors and refusals.HTTP. Direct HTTP callers need the bearer token and are refused while the workstation read-only file is present.
For unattended runs, switch on read-only mode. A confirmation token guards against mistakes and injected instructions, but a client that confirms by itself can send it back. See actions for gates, exceptions and verification failures, security details for authentication and privacy boundaries, and SECURITY.md to report a vulnerability.
Remote workstations
Local Windows clients use REVIT_MCP_HOST=local under the Revit user's account.
Remote clients run the whole server on the workstation over SSH, as the same Windows user that runs Revit.
Install it there once with uv tool install revit-model-mcp, then register ssh as the command:
{
"mcpServers": {
"revit-model-mcp": {
"command": "ssh",
"args": ["revit-pc", "revit-model-mcp", "--redact-paths"]
}
}
}Replace revit-pc with the workstation's SSH host alias.
MCP stdio flows through the SSH session and the remote server uses the named pipe, so no port opens.
REVIT_MCP_HOST=ssh:<alias> (file channel over SSH) and HTTP through an SSH tunnel remain available; HTTP requires a bearer token except for /health and binds to loopback by default.
See transport setup.
Compatibility
Revit 2022 to 2027 on Windows 10 and 11.
The add-in targets .NET Framework 4.8 for Revit 2022-2024, .NET 8 for 2025 and 2026, and .NET 10 for 2027.
Every year builds, installs and runs live reads and actions.
The MSI bundles a server executable for Windows that needs no separate Python or uv installation.
The PyPI server needs Python 3.11 or newer and runs on Windows, macOS or Linux; uv can start it with uvx revit-model-mcp.
See validation evidence for dates and limits, and known gaps.
Privacy
Model MCP returns requested model data to the selected MCP client.
The bundle enables response path redaction by default.
The project has no telemetry.
The privacy policy covers collection, update checks, the AI client data flow, storage, retention and contact information.
The server checks for a newer stable release once a day; set REVIT_MCP_NO_UPDATE_CHECK=1 to opt out.
For administrators
The deployment guide covers silent MSI installs, SCCM, Intune, Group Policy, offline server installs and proxies. The policy reference lists every setting and its precedence. For security reviews, use the security whitepaper and the questionnaire answers. See also the MCP specifications, the tested clients and what Model MCP deliberately does not do.
Code signing policy
Release builds are not code-signed yet, so Revit asks whether to load the add-in after install and after each update.
Verify downloads with SHA256SUMS.txt and the build provenance attestation; see the code signing policy and download verification.
See automatic updates for update modes and installation.
Contributing and support
Documentation covers setup, tools and transport. Start with CONTRIBUTING.md, ask questions in Discussions, or report bugs and request features through the issue forms. CI runs the C# and Python test suites and builds the supported Revit configurations. If Model MCP saves you time, a :star: on GitHub helps other Revit users find it.
License
MIT, maintained by Dinar Sharafutdinov. See third-party notices for dependency licenses.
Trademarks
Autodesk and Revit are registered trademarks or trademarks of Autodesk, Inc., and/or its subsidiaries and/or affiliates in the USA and/or other countries. Model MCP is an independent project and is not affiliated with or endorsed by Autodesk.
Available Tools
79 toolsrevit_activate_documentActivate DocumentBDestructive
Activate an already open document by title or path reference.
| Name | Required | Description | Default |
|---|---|---|---|
| document | Yes | ||
| process_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=true, so the safety profile is nominally covered. The description adds the meaningful 'already open' precondition, but it never explains why an activation is flagged destructive, nor what happens if the named document cannot be found. Notably, the destructive flag is hard to reconcile with an operation described purely as bringing a document to the foreground.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, correctly leading with the verb and resource. It is arguably too terse for a tool whose annotation profile and second parameter need explanation, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, for a tool annotated destructive with an undocumented process_id and no failure behavior for an unopened document, the description leaves real gaps an agent would want closed before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden. It usefully clarifies that the required 'document' argument accepts either a title or a path reference, but the optional 'process_id' parameter is unexplained in both schema and description, leaving the agent unable to know when to supply it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Activate') and resource ('document'), plus the identifier forms accepted ('title or path reference'). The phrase 'already open' implicitly distinguishes it from revit_open_document and revit_close_document, though neither sibling is named, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The precondition 'already open' implies this is for switching focus among a session's open documents, but there is no explicit when-to-use statement, no guidance on erroring when the document is not open, and no named alternative such as revit_open_document for the not-yet-open case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_activate_viewActivate ViewCDestructive
Activate a non-template view. Zoom to fit, preserve zoom, or frame element IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | ||
| zoom | No | fit | |
| document | No | Target document title or path reference. | |
| view_type | No | ||
| process_id | No | ||
| activate_document | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=false and destructiveHint=true, so the agent already knows this is a mutating, non-idempotent operation. The description adds no context on what state changes (UI focus, document activation, any prior view state lost) or why the tool is flagged destructive, which is the main behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the core action leads and the zoom options follow. It is terse to the point of underspecification, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a 6-parameter mutating tool with near-zero schema coverage the description is far too thin: it omits four parameters, activation semantics, and the destructive behavior the annotations flag.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (only 'document' is documented), so the description must compensate. It loosely gestures at the zoom parameter ('fit', 'preserve zoom', 'frame element IDs') but leaves view_type, process_id, activate_document, and the element-ID array format entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Activate a non-template view') and adds a scoping qualifier that separates it from revit_activate_document and revit_list_views. It is clear what the tool does, though it does not name the sibling it is being distinguished from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists zoom modes but never says when an agent should activate a view versus opening/activating a document, nor any precondition (e.g. view must not be a template is asserted but not framed as guidance). No when-not or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_aggregate_elementsAggregate ElementsARead-onlyIdempotent
Summarize matching elements by one or two fields, with optional sum and average. Lengths use mm, areas m2, volumes m3. For area totals, group by level and select the area scheme. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Exact non-template view name; limits the search to that view. | |
| level | No | ||
| phase | No | ||
| family | No | ||
| workset | No | ||
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| group_by | Yes | One or two distinct fields (e.g. category, family, type, level) or exact localized parameter names. | |
| sum_field | No | Numeric field or parameter name to sum and average per group; lengths in mm, areas m2, volumes m3. | |
| type_name | No | Exact type name, case-insensitive. | |
| categories | No | ||
| process_id | No | Revit process ID; takes precedence over document. | |
| area_scheme | No | Exact area-scheme name, case-insensitive. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| parameter_filters | No | AND-combined filters: parameter (exact localized name), operator (equals, contains, greater, less, empty, not-empty, exists) and value. Numbers use mm, m2, m3 or display units. | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), but the description adds genuinely new behavioral context: unit conventions (mm, m2, m3) and, importantly, result-completeness semantics — a non-empty skipped list means the result is incomplete and skippedCount counts all skipped entries. That is exactly the kind of caveat an agent needs and cannot get from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, all front-loaded with the core operation first, then units, then the area-scheme special case, then the completeness caveat. No filler and every sentence carries actionable content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter aggregation tool with an output schema, the description covers the operation, units, the area-totals path, and result completeness, which is the essential context. Minor gaps remain around how parameter_filters interacts with group_by and the document/process_id precedence, but these are secondary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 67% schema description coverage, the schema documents several params, but the description adds meaning the schema lacks: the mm/m2/m3 unit convention tied to sum_field, the rule linking area_scheme to level-based area totals, and the one-or-two-field constraint on group_by. It does not explain the timeout or document/process_id precedence relationships, so it is not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (summarize/aggregate) and resource (matching elements) plus the aggregation mechanism (one or two group-by fields with optional sum/average). It is clearly distinct from listing tools like revit_query_elements or revit_view_elements, though it never names a sibling to sharpen the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete conditional rule: 'For area totals, group by level and select the area scheme.' That is useful procedural guidance, but there is no explicit statement of when to prefer this tool over revit_query_elements or revit_schedule_data, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_align_link_datumsAlign Link DatumsBDestructive
Align host grids and levels to a loaded link, with optional creation and rollback preview. Does not create a monitor relationship.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | ||
| kinds | No | ||
| prefix | No | ||
| suffix | No | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| name_map | No | ||
| grid_type | No | ||
| level_type | No | ||
| tolerance_mm | No | ||
| create_missing | No | ||
| include_pinned | No | ||
| plan_view_type | No | ||
| reuse_matching | No | ||
| level_offset_mm | No | ||
| timeout_seconds | No | ||
| create_plan_views | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the mutation and non-idempotent nature is known. The description adds two genuinely new facts beyond the annotations: an optional creation step and a rollback preview, plus the monitor-relationship exclusion. It says nothing about what is destroyed or undone, which is thin for a 17-param destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences, with the core action front-loaded and the scope caveat last. No filler, though the brevity is arguably wrong for a tool of this complexity (a completeness issue, not a conciseness one).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, 17-parameter mutation tool with 6% schema coverage, the description leaves most parameters and most behavioral risk unexplained. An output schema exists so return values need not be described, but the parameter and safety picture is largely absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 6% (just the 'document' parameter is documented), so nearly all 16 remaining parameters carry no meaning in either the schema or the description. The description merely implies 'optional creation' (create_missing) and 'rollback preview' (dry_run) without mapping them to parameters, leaving the burden unmet.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: aligning host grids and levels to a loaded link. It is distinguishable from the sibling revit_compare_link_datums by the verb 'align' versus 'compare', though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'with optional creation and rollback preview' implies the dry-run path, and 'Does not create a monitor relationship' is a useful scope boundary. However, no alternative tool is named and no when-to-use trigger (e.g. prefer compare first, or when a monitor is desired) is given, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_apply_view_templateApply View TemplateCDestructive
Apply a matching view template to one or more views.
| Name | Required | Description | Default |
|---|---|---|---|
| views | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| template | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds only batch scope ('one or more views') and does not disclose what gets overwritten, whether changes are reversible, how dry_run behaves, or whether the operation requires an active document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of waste, but it is arguably too terse for a destructive four-parameter tool with low schema coverage. It reads as under-specification rather than deliberate conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, for a destructive mutation with a dry_run option, document scoping, and only 25% schema description coverage, the description omits critical context needed to invoke the tool safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, with only the 'document' parameter documented. The description does not explain the 'views', 'template', or 'dry_run' parameters, their formats, or required matching behavior, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: apply a view template to one or more views. Clear enough to distinguish from sibling view operations like revit_set_view_visibility or revit_activate_view, but it does not explicitly name alternatives or scope limitations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives, prerequisites, or when not to use it. The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_batch_cancelCancel batch collectionCRead-only
Persist cancellation and prevent unstarted models from running.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=true, but the description claims side effects: 'Persist cancellation and prevent unstarted models from running' is a state-changing, queue-altering operation, not a read. This directly contradicts the readOnlyHint, and no additional behavioral context (partial cancel semantics, already-finished runs, idempotency) is offered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the key effect front-loaded and no filler. It is appropriately sized, though it omits detail that a one-parameter mutation tool would benefit from.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be explained, but for a cancellation operation the description leaves out relevant behavior: what happens if the run already completed, whether cancellation is gradual, and what identifies the run. Combined with the annotation conflict, the definition is not complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required run_id, and the description never mentions it or its expected format. The parameter name is reasonably self-explanatory, but the description does nothing to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (cancel a batch) and its consequences: 'Persist cancellation and prevent unstarted models from running.' An agent can tell this controls an in-flight batch job rather than a document. It does not, however, distinguish itself from the sibling revit_cancel_job or explicitly name the batch run it operates on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. With siblings like revit_cancel_job, revit_batch_status, revit_batch_start, and revit_batch_fetch, the description never says when this tool is the right choice versus those alternatives, nor any precondition (e.g., run must be active).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_batch_fetchFetch batch snapshotsCRead-only
Download completed snapshots to new local files without overwriting.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| output_dir | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=false, covering the safety profile. The description adds one genuinely useful trait — that files land in new local files "without overwriting" — but says nothing about what happens if the run is incomplete, how many files are produced, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the non-overwrite constraint is placed where it reads. It is efficient, though the terseness comes at the cost of the detail noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but for a two-parameter tool with zero schema coverage the description omits parameter meaning, preconditions (run must be complete), and multi-file output expectations. Too thin for the complexity involved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither parameter is documented in either place. The description does not clarify what run_id identifies (a batch run id) or that output_dir is the local destination directory, leaving both required parameters semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a verb and resource ("Download completed snapshots"), which is more specific than the title alone, but "snapshots" is ambiguous next to siblings like revit_model_snapshot and revit_batch_status, and nothing ties it to the batch workflow implied by the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit statement of when to call this versus revit_batch_status, revit_batch_cancel, or revit_model_snapshot. "Completed" weakly implies it should follow a finished batch run, but the agent must infer the workflow sequencing entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_batch_startStart batch collectionBRead-only
Start a persistent, read-only run over local, UNC or RSN models. open_timeout_minutes is the per-model open deadline (default 30, 45 when upgrading in memory).
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | ||
| years | No | ||
| folder | No | ||
| recursive | No | ||
| parameter_rules | No | ||
| open_timeout_minutes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds useful operational context: the run is persistent, targets local/UNC/RSN models, and open_timeout_minutes defaults to 30 (45 when upgrading in memory). It does not discuss idempotency or job lifecycle, but adds meaningful behavior beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and then a parameter detail. There is no filler or repetition, and the structure is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter batch-start tool with no required fields and no schema parameter descriptions, the description is far too sparse. It omits what is being collected, how to specify input scopes, and the meaning of most parameters, though the existence of an output schema means return values need not be explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are 6 parameters, so the description carries the burden of explaining them. It only explains open_timeout_minutes, leaving paths, years, folder, recursive, and parameter_rules completely undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Start') and resource ('persistent, read-only run over local, UNC or RSN models'), making the tool's purpose clear. It does not explicitly differentiate itself from sibling tools such as revit_batch_status or revit_batch_cancel, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance, prerequisites, or alternatives. It only implies usage by saying it starts a batch run, leaving the agent to infer when this should be chosen over revit_process_models or the other batch lifecycle tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_batch_statusBatch collection statusBRead-only
Read durable run and model status after the initiating client exits.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine value by noting the status is durable and readable after the initiating client exits, but it says nothing about what the status contains, whether it is a snapshot vs. live, or why idempotentHint is false for a read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the read action is stated immediately. It is arguably too terse rather than padded, so conciseness is not the problem.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the safety profile is in annotations. What is still missing is the relationship to the other batch tools and any hint about the run_id's origin, which matters for a polling-style status endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for the undocumented run_id parameter, and it does not — no format, source, or lifecycle for the id is given. The name is self-suggestive, but nothing in the definition tells the agent where run_id comes from or what happens if it is stale.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Read') and resource ('run and model status'), and 'durable' hints that the run survives client exit, which is meaningful for a batch tool. It does not, however, differentiate itself from close siblings such as revit_batch_fetch or revit_batch_start, so an agent must infer the division of labor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies a timing condition — check status 'after the initiating client exits' — which implies when it is useful. But it names no alternatives (revit_batch_fetch, revit_batch_cancel) and gives no exclusion about when this is the wrong tool to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_build_reportBuild Snapshot ReportARead-onlyIdempotent
Build a local Excel report from snapshots without contacting Revit.
| Name | Required | Description | Default |
|---|---|---|---|
| findings | No | Optional findings with model, severity, rule, element_ids (or elementIds), and recommendation. | |
| output_path | Yes | New .xlsx file path on the MCP client machine; existing files are never replaced. | |
| previous_dir | No | Optional directory of earlier snapshots matched by model title for the Changes sheet. | |
| snapshots_dir | Yes | Directory of schema-version-1 JSON snapshots on the MCP client machine. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds that the report is built locally from snapshots without contacting Revit, which is useful behavioral context, though it doesn't mention auth needs, rate limits, or file-overwrite behavior (the latter is in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action and output type. No wasted words; appropriately sized for a simple report-building tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations cover safety, the description provides enough context for correct invocation. It could mention optional sheets (Changes) or findings, but the schema documents those, so no critical gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are fully documented in the schema. The description adds no parameter-level syntax or format details beyond what the schema already provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Build') and resource ('local Excel report from snapshots') and distinguishes itself from Revit-contacting siblings via 'without contacting Revit.' It doesn't name an alternative sibling explicitly, but the scope is clear enough for selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when offline snapshots exist and Revit contact is undesirable, but gives no explicit when-to-use, when-not-to-use, or named alternative. The condition 'without contacting Revit' provides some context but not full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_cancel_jobCancel Action JobADestructive
Request cancellation of an action jobId. Process-models stops before the next model and marks unstarted models cancelled; a single running Revit operation finishes, and completed changes stay committed.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| process_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses exactly which phases stop ('process-models stops before the next model'), what state unstarted models end in ('marked cancelled'), the non-interruptible boundary ('a single running Revit operation finishes'), and the durability guarantee ('completed changes stay committed'). This is the operational detail needed when the destructiveHint alone would be ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, the imperative action front-loaded and the three behavioral consequences packed into one semicolon-separated clause. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the behavioral narrative plus destructive/idempotency annotations cover the safety profile well. The remaining gap is parameter meaning (process_id, document) and routing against revit_batch_cancel, which leaves the definition slightly short of fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% — only the optional 'document' parameter carries a description, and 'job_id' and 'process_id' are bare. The description gives a clue that job_id identifies an 'action job' but says nothing about process_id's role or how document interacts with a job cancellation, leaving most parameters undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Request cancellation of an action jobId', which is precise about what is cancelled. However, it never distinguishes itself from the close sibling revit_batch_cancel (nor revit_process_models / revit_run_actions), so an agent cannot tell the two cancellation entry points apart from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description explains what happens when cancellation is requested, which helps an agent judge the consequences, but it names no condition for choosing this tool over revit_batch_cancel or waiting for revit_batch_status/revit_jobs. No when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_capture_elementsCapture ElementsARead-onlyIdempotent
Render a highlighted PNG that marks 1 to 500 elements, for issue evidence. Supports 3d or plan mode over local or SSH transport. The temporary view is rolled back. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 3d | |
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| padding_mm | No | ||
| pixel_size | No | PNG size in pixels along the fitted dimension, 32 to 4000 (default 1600); Revit rejects smaller images. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| element_ids | Yes | ||
| output_path | No | New PNG path on the MCP client machine; an existing file is an error. Default null downloads to a temporary directory and returns localPath. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly, idempotent, non-destructive), and the description adds real behavioral context: the temporary view is rolled back (no persistent model change), mode/transport options, and how the skipped list/skippedCount signals an incomplete result. It stops short of 5 only because nothing is said about permissions, rate limits, or auth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and output, then constraints and side-effect notes in dense, purposeful sentences. The final sentence about the skipped list/skippedCount is slightly cramped but earns its place by explaining the incomplete-result signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description rightly explains key result behavior (skipped list, skippedCount, rollback). Combined with annotations covering the safety profile and schema covering most params, an agent has enough to call this correctly. It is only marginally thin on the remaining undocumented parameter (padding_mm).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is moderate (57%). The description adds meaning the schema lacks: the 1-500 bounds on element_ids (schema sets no min/max) and the valid mode values "3d or plan" (schema has no enum, only a default). It does not cover padding_mm, and leans on the schema for document/process_id/output_path/pixel_size, but it contributes genuine value beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Render) and resource (highlighted PNG marking elements) plus scope (1 to 500 elements) and intent (issue evidence). An agent immediately knows what the tool produces. It does not, however, name or contrast itself with adjacent siblings like revit_export_view or revit_show, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"for issue evidence" implies the context of use, but there is no explicit when-to-use-vs-alternative guidance and no exclusions (e.g. when to prefer revit_export_view or revit_show instead). Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_change_typeChange Element TypeADestructive
Change each element to one compatible type; family resolves duplicate type names. dry_run rolls back. Group members are reported in skipped.inGroup; the call is refused if every element is a group member.
| Name | Required | Description | Default |
|---|---|---|---|
| family | No | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| type_name | Yes | ||
| element_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: how duplicate type names are resolved via 'family', that dry_run rolls back, that group members land in skipped.inGroup, and that the call is refused if all elements are group members. Annotations only supply the generic destructive/not-idempotent flags; the description supplies the actual mutation semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences with the core action front-loaded and no filler. Density is high; each sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be restated, and the description still flags the skipped.inGroup behavior. The main gap is that it never defines what makes a type 'compatible' or what happens on partial failure mid-batch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20%, so the description must compensate. It explains 'family' (duplicate-name disambiguation) and 'dry_run' (rollback), but says nothing about 'element_ids' semantics, the 'type_name' matching rules, or the 'document' disambiguation parameter. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource+scope: 'Change each element to one compatible type', which distinguishes it from parameter-editing siblings like revit_set_parameter or revit_update_parameters. It does not name an explicit alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives useful operating conditions (dry_run rolls back, group-member refusal) but never states when to choose this tool over siblings such as revit_set_parameter or revit_load_family. Usage is implied by the mutation scope rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_close_documentClose DocumentBDestructive
Close a background document. Needs confirm_token from a first call, which changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | ||
| document | Yes | ||
| process_id | No | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered. The description adds genuine context beyond that: a two-call confirmation pattern where the first call 'changes nothing'. It still doesn't disclose what happens to unsaved changes or whether the save parameter triggers a commit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler, purpose front-loaded ahead of the confirmation requirement. The phrasing 'which changes nothing' is slightly ambiguous but the structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the confirm-token flow is covered. However, for a destructive mutation with 0% parameter documentation, the description omits what 'save' does and the consequence of closing with unsaved work.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 4 parameters, so the description must carry the load. It only explains confirm_token, leaving save, document, and process_id undocumented in both schema and description — roughly one of four parameters covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Close a background document'), and the 'background' qualifier narrows scope meaningfully against siblings like revit_open_document and revit_save_document. It stops short of explicitly naming which sibling it contrasts with, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies a required two-step flow ('Needs confirm_token from a first call'), which tells the agent how to invoke it, but gives no explicit when-to-use vs. alternatives such as revit_save_document or revit_close_views. The invocation prerequisite is useful but not full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_close_viewsClose ViewsCDestructive
Close open UI views in the active document.
| Name | Required | Description | Default |
|---|---|---|---|
| views | No | ||
| process_id | No | ||
| keep_active | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description adds no behavioral context beyond 'close' – it does not say whether unsaved view state is lost, whether the active view is protected, or how the process_id/keep_active options affect the outcome.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words, which is structurally clean. But the brevity reflects under-specification rather than effective economy given the tool's three parameters and destructive nature.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and annotations cover safety. Yet with three undocumented parameters, a default of keep_active=true, and no explanation of what gets closed, the description is too thin for the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and all three parameters (views, process_id, keep_active) are undocumented in both schema and description. The description does not explain that views accepts a list of view names, what null means, or what keep_active defaults to, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (close) and resource (open UI views) scoped to the active document, which is enough to separate it from revit_close_document. However, it does not clarify whether it can close all views, a subset, or only the active view, leaving the resource boundary slightly fuzzy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives such as revit_activate_view or revit_close_document, and no preconditions. The description only says what happens, not when an agent should reach for it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_compare_link_datumsCompare Link DatumsARead-onlyIdempotent
Compare host grids and levels with one loaded Revit link. Changes nothing. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | ||
| kinds | No | ||
| prefix | No | ||
| suffix | No | ||
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| name_map | No | ||
| process_id | No | Revit process ID; takes precedence over document. | |
| tolerance_mm | No | ||
| reuse_matching | No | ||
| level_offset_mm | No | ||
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description still adds genuinely new behavioral context: partial results are possible, signalled by a non-empty skipped list, and skippedCount counts every skipped entry. That is real disclosure about failure/partial-completion semantics. It omits timeout behavior and matching/tolerance effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler, front-loaded with the core action followed by the mutation guarantee and the result-completeness caveat. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description is not obliged to explain return values, yet it usefully clarifies skipped/skippedCount semantics. The gap is on the input side: for a comparison tool, tolerance_mm and reuse_matching materially change results and are undocumented anywhere in prose. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (document, process_id, timeout_seconds, pickup_timeout_seconds). Twelve parameters exist and the description explains none of them, including the required 'link' and behavior-shaping options like tolerance_mm, reuse_matching, prefix/suffix, kinds and name_map. With coverage this low, the description is expected to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource pair: compare host grids and levels with one loaded Revit link, with a scope limit (one link). The phrase 'Changes nothing' implicitly separates it from the read/modify sibling revit_align_link_datums, but that sibling is never named, so the differentiation is inferential rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Changes nothing' clause implies this is the inspection-only counterpart to align_link_datums, which suggests when to use it versus the mutating alternative. However, no prerequisite (link must already be loaded) or explicit when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_copyCopy ElementsADestructive
Create 1 to 100 successive copies at multiples of the model-axis offset in mm. dry_run rolls back. Group members are reported in skipped.inGroup; the call is refused if every element is a group member.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| dx_mm | Yes | ||
| dy_mm | Yes | ||
| dz_mm | No | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| element_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered, and the description adds real value beyond them: dry_run performs a rollback, group members surface in skipped.inGroup, and the call is refused when every element is a group member. These are concrete post-conditions an agent cannot derive from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, no filler, with the core copy behavior front-loaded and the edge-case handling (dry_run, group refusal) trailing. Every sentence carries distinct actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return-shape explanation is unnecessary, and the description covers the mutation's key side effects well. However, with three required parameters and low schema coverage, an agent still lacks clarity on element_ids selection, the document target, and dz handling, so it is only minimally complete for a destructive batch operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14%, so the description carries most of the load. It usefully clarifies the count range (1-100), the mm offset/multiple behavior, and dry_run rollback semantics, but element_ids, dz_mm, and the document selector remain unexplained in both places, leaving meaningful gaps for a 7-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create 1 to 100 successive copies') with the offset semantics front-loaded, so an agent immediately knows this produces duplicated geometry along an axis. It does not explicitly distinguish itself from neighbors like revit_move or revit_mirror, which also reposition geometry, so selection still requires inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how the tool behaves but never states when to prefer it over alternatives such as revit_move or revit_mirror, nor any prerequisites for choosing it. The only contextual cue is the group-member refusal, which is a constraint rather than when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_create_mep_runCreate MEP RunADestructive
Create connected duct, pipe, cable tray or conduit segments from model mm points. A missing Z uses the level elevation plus the kind's default offset. Unplaceable elbows are reported as unjoined pairs.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| level | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| width_mm | No | ||
| height_mm | No | ||
| offset_mm | No | ||
| points_mm | Yes | ||
| type_name | No | ||
| connect_to | No | ||
| diameter_mm | No | ||
| system_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotent, so safety is covered. The description adds genuine behavioral context beyond that: how a missing Z is resolved (level elevation + kind's default offset) and how failed elbows surface as unjoined pairs. It omits the dry_run preview behavior, which is a relevant behavioral trait for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: action first, then two behavioral notes. No filler, and the core purpose is front-loaded before the edge-case details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a 12-parameter destructive creation tool the definition is thin. It never clarifies the width/height vs diameter split by kind, how connect_to behaves, or what dry_run does, leaving substantial gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 8% (one of twelve params), so the description must carry the load but does not. It explains points_mm Z handling and the offset default, yet leaves width_mm, height_mm, diameter_mm, system_type, type_name, connect_to and dry_run entirely undefined in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create') plus the exact resource ('connected duct, pipe, cable tray or conduit segments'), and the four-kind enumeration maps directly to the kind enum. It is clearly distinguishable from siblings like revit_create_wall without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (build MEP runs from model points) but never states when to use this tool versus alternatives such as revit_create_wall or a generic run/action tool, and gives no prerequisites or exclusions. Context is inferable from the name but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_create_scheduleCreate ScheduleADestructive
Create a schedule for one category with the named fields in the given order, using Revit UI names such as Mark, Level or Count. filters keep rows by field, operator and value; sort orders and, with header or footer, groups rows. Lengths in mm, areas in m2, volumes in m3. itemized=false collapses identical rows. Returns viewId and the resolved fields; unknown names are listed in skipped. dry_run rolls back.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| sort | No | ||
| fields | Yes | ||
| dry_run | No | ||
| filters | No | ||
| category | Yes | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| itemized | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, destructive, non-idempotent operation, and the description is consistent with that. It adds genuinely useful behavioral context beyond the annotations: 'dry_run rolls back', 'itemized=false collapses identical rows', 'unknown names are listed in skipped', and the implicit unit system (mm, m2, m3).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a dense but waste-free paragraph, front-loading the purpose before parameter behavior details. Semicolon-packed clauses make it slightly run-on, but every sentence carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation with an output schema (so return format needn't be re-explained), the description covers the key behavioral facets — ordering, filters, sorting/grouping, units, itemized collapsing, dry_run rollback, and skipped names. Minor gaps around 'name' and 'category' semantics keep it short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13% (just 'document'), so the description must carry the load, and it largely does: it explains fields (ordered, Revit UI names like Mark/Level/Count), filters (field/operator/value row selection), sort (ordering plus header/footer grouping), itemized=false collapsing, and dry_run rollback. Only 'name' and 'category' are left implicit, so this meaningfully compensates for the sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource — 'Create a schedule for one category' — and clarifies the field ordering and naming convention. This clearly separates it from read-oriented siblings like revit_schedule_data and from other creation tools such as revit_create_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the phrasing (create a schedule from a category and fields), but there is no explicit statement of when to prefer this over revit_schedule_data or other creation tools, and no prerequisites or exclusions are given. Adequate context, but the agent must infer the trigger conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_create_sheetCreate SheetCDestructive
Create a sheet with the first loaded or a named title block.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| number | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| title_block | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=true, so the agent knows this mutates the model. The description adds genuine context beyond that by disclosing the default title-block selection behavior. However it says nothing about the dry_run preview path, undo/irreversibility, or duplicate sheet-number handling, so it remains thin for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the title-block default is stated where it matters. It is efficient, though arguably too terse given the undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a destructive document-mutating tool the definition omits the dry_run preview contract, sheet number/name constraints, and any note that the sheet is added to the currently active document.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (only 'document' is documented), so the description must compensate. It partially covers title_block by describing the named-vs-first-loaded default, but 'name', 'number' and especially 'dry_run' receive no explanation of format, uniqueness, or preview semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a sheet') and adds the meaningful scope detail that it uses the first loaded or a named title block. It does not explicitly distinguish itself from near neighbors such as revit_place_views_on_sheet or revit_create_view, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative is given. There is no mention of prerequisites such as an active/open document, nor of how this differs from other sheet- or view-creation tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_create_viewCreate ViewBDestructive
Create a plan, section, 3D or drafting view. Unbounded 3D views show the whole model, shaded, fine detail. Box coordinates are model mm.
| Name | Required | Description | Default |
|---|---|---|---|
| box | No | ||
| kind | Yes | ||
| name | No | ||
| level | No | ||
| scale | No | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| template | No | ||
| element_ids | No | ||
| detail_level | No | ||
| display_style | No | ||
| view_family_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and idempotentHint=false, so the safety profile is covered structurally. The description usefully adds behavior beyond that: unbounded 3D views render the whole model shaded at fine detail, and box values are in model millimetres. It still omits what the dry_run flag does and whether creation permanently alters the document, so it adds moderate rather than rich context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, then the 3D-view default, then the box unit convention. No filler and nothing repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter destructive creation tool with 8% schema coverage, the description is far too thin. Although an output schema exists so return values need no explanation, the absence of usage guidance, dry_run semantics, and per-parameter meaning leaves the agent under-informed for a non-idempotent, destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 8% across 12 parameters, so the description bears most of the burden and fails to carry it. It clarifies only box units (mm) and the 3D default rendering; level, scale, template, element_ids, detail_level, display_style, view_family_type, dry_run, name and document are never explained beyond their schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Create') plus resource ('view') and enumerates the supported kinds (plan, section, 3D, drafting), which matches the 'kind' enum. However, it does not distinguish itself from view-creating siblings such as revit_duplicate_view or revit_apply_view_template, so an agent must infer which creation path to take.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this versus alternatives like revit_duplicate_view or revit_create_schedule, and no stated prerequisites (e.g., an open document). The only conditional hint is implicit: that a 3D view with no box is unbounded. No exclusions or routing to sibling tools are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_create_wallCreate WallBDestructive
Create a straight wall on a named level. XY endpoints and height are in mm; a null wall_type uses the first basic type.
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes | ||
| end_mm | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| start_mm | Yes | ||
| height_mm | No | ||
| wall_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=false, so the safety profile is known. The description adds genuinely useful behavior beyond that: units are mm, and a null wall_type silently falls back to the first basic type. However, it says nothing about the dry_run flag, which is the key safety affordance for a destructive creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler, with the core action front-loaded before the unit and default-type caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the essential geometry/units are covered. But for a destructive 7-parameter mutation tool, the undocumented dry_run flag and the multi-document selection requirement leave meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14% (just the document param), so the description carries real weight and does explain start_mm/end_mm as XY in mm, height in mm, and the null wall_type fallback. It leaves dry_run's meaning and the level-matching semantics of the 'level' string unexplained, so compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a straight wall'), plus the placement constraint (on a named level) and unit conventions. It does not distinguish itself from the closest sibling, revit_walls_from_cad, which also produces walls, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this over revit_walls_from_cad, revit_place_family, or batch alternatives, and no statement of prerequisites such as which document must be active. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_deleteDelete ElementsADestructive
Delete elements and their Revit dependencies; the count includes dependents. dry_run returns the count. Above 500 elements including dependents a confirm_token from a first call is needed; revit_run_actions refuses such deletions.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| element_ids | Yes | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds meaningful context beyond them: deletion cascades to Revit dependencies, the reported count includes dependents, and a >500 threshold gates execution behind a confirm_token. It stops short of stating whether the operation is undoable or what permissions it needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the core action and cascade behavior, then the dry_run and confirmation mechanics. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description correctly focuses on the destructive cascade and confirmation flow. For a destructive tool with low schema coverage it is largely complete, though element_ids semantics and undo/reversibility guidance are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only 'document' is described), so the description must compensate. It clarifies dry_run and confirm_token semantics well, but leaves the required element_ids undocumented (beyond an intuitive name) and adds nothing about the document parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (delete) and resource (elements and their Revit dependencies), and signals scope by noting the count includes dependents. This clearly distinguishes it from sibling mutation tools like revit_remove_links or revit_change_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the conditional workflow: dry_run returns a count, and above 500 elements a confirm_token from a first call is required, while revit_run_actions refuses such deletions. It does not, however, say when to prefer this over alternatives such as revit_undo_last or how it relates to revit_remove_links.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_document_infoDocument InfoARead-onlyIdempotent
Read the active model's file name, Revit version, levels (elevations in mm), area schemes, worksets and view count. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description earns credit for adding context that structured fields do not: partial-result semantics via the skipped list and skippedCount, and the unit convention (elevations in mm). It still says nothing about how the document/process_id targeting behaves in multi-instance scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero filler: the returned fields come first, then the partial-result caveat. Everything an agent needs at a glance is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value structure need not be described; the description instead covers the one non-obvious output trait (incompleteness signaled by the skipped list). For a zero-required-parameter read tool with full schema coverage, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including the document/process_id precedence and both timeouts. The description adds no parameter-level detail beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Read) plus an enumerated set of resources (file name, Revit version, levels in mm, area schemes, worksets, view count) scoped explicitly to the 'active model'. That scoping distinguishes it from siblings like revit_documents and revit_view_info without the agent opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'active model' and the read-only nature, so an agent can infer this is the metadata lookup for the current document. However, it never names an alternative (e.g. revit_documents for enumerating all open documents) or states when not to use it, so no explicit routing guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_documentsOpen DocumentsARead-onlyIdempotent
List every open document in one Revit process, including background documents. Linked documents are listed only when include_linked is set. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| include_linked | No | ||
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so the safety profile is covered. The description adds genuine behavioral context beyond that: background documents are included, linked documents are excluded unless include_linked is set, and the skipped/skippedCount fields signal a possibly incomplete result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, purpose front-loaded and no filler. The final sentence about skipped/skippedCount slightly overlaps the output schema, costing a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the tool's optional-parameter, read-only nature is well covered. The only real gap is the absence of sibling routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80% (baseline 3), and the description compensates for the one undocumented parameter by explaining that include_linked controls whether linked documents appear. It also frames the 'one Revit process' scoping that motivates document vs process_id selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('List every open document in one Revit process') and adds scope detail ('including background documents') that separates it from single-document tools like revit_document_info. It does not explicitly name which sibling to prefer, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no alternative is named despite close siblings such as revit_document_info or revit_list_instances. The include_linked clause describes a parameter's effect, not when to choose this tool over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_duplicate_viewDuplicate ViewCDestructive
Duplicate a view, optionally with detailing or as a dependent view.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | duplicate | |
| name | No | ||
| view | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=true, covering the safety profile, so the description needed to add context such as what a dependent view inherits, that duplication persists new elements to the model, or how the auto-generated name is chosen. It adds none of this, essentially restating the mode enum.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is efficient, though its brevity comes at the cost of the missing behavioral and parameter detail noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema and annotations relieve the description of return-value and safety obligations, but for a destructive 5-parameter tool it omits the name defaulting behavior, the purpose of dry_run, and what "dependent" implies for view hierarchy. An agent can invoke it, but not confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (just the document param), so the description must carry the semantic load for view, mode, name and dry_run. It only hints at mode semantics via "with detailing or as a dependent view" and says nothing about name defaulting to an auto-generated value or what dry_run does for a destructive operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Duplicate a view") and names the two non-default variants (with detailing, dependent), so an agent can tell it apart from revit_create_view. It does not, however, clarify how it relates to sibling view-creation tools beyond the word "duplicate".
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to duplicate vs. use revit_create_view, no prerequisites (view must be active/valid, document must be open), and no mention of when to prefer a dependent view over a full duplicate. The optional variants are named but their selection criteria are not explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_edit_familiesEdit FamiliesADestructive
Edit an open family in place, or named project families (exact names or ["*"]), one load cycle each. A dry run rolls back all changes. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| families | No | ||
| operations | Yes | ||
| stop_on_error | No | ||
| timeout_seconds | No | ||
| overwrite_parameter_values | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag destructive=true and idempotent=false; the description goes substantially further by disclosing that a dry run rolls back all changes, that a long action can return status=running with a jobId while possibly having already mutated the model, that revit_jobs retrieves the finished result, and that resubmission repeats the action. That partial-application warning and the non-idempotency restatement are exactly the behavioral context an agent needs before firing a destructive batch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the scope statement front-loaded and zero filler. "one load cycle each" is slightly cryptic jargon and would benefit from a word of unpacking, but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the async/jobId behavior is handled well. For a tool with four distinct operation types and seven parameters, though, the description leaves the entire operation vocabulary and the remaining five flags undocumented, which is thin for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14% (one of seven parameters documented), so the description carries the burden and largely fails to pick it up. It explains the families wildcard convention and dry_run's semantics, but says nothing about operations (the op discriminator and its four variants), stop_on_error, timeout_seconds, overwrite_parameter_values, or document targeting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Edit ... families") and distinguishes the two targeting modes: the currently open family edited in place versus named project families addressed by exact name or ["*"]. It does not, however, name or differentiate itself from near siblings such as revit_family_audit, revit_load_family, or revit_place_family, so the reader must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the dry_run clause and the running/jobId handoff, but there is no explicit statement of when to choose this tool over alternatives (e.g. revit_update_parameters, revit_load_family) or what preconditions must hold. The families wildcard syntax is the only concrete targeting guidance offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_element_detailsElement DetailsARead-onlyIdempotent
Read parameters and geometry of an element by Revit ID, with its type parameters and related warnings. Geometry is in model mm; roomCenterMm is a point inside the room. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| element_id | Yes | Revit element ID from revit_query_elements or revit_view_elements. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuinely useful context beyond that: geometry units (model mm), the meaning of roomCenterMm, and crucially the semantics of an incomplete result ('non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries'). That is real behavioral disclosure, though it omits document-vs-process targeting behavior and timeout expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact, front-loaded sentences with no filler; the core action leads and the result-semantics caveat follows. It is dense rather than wasteful, though the geometry/roomCenter clause could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description need not explain return values, and it still adds units, incompleteness signaling, and room-containment semantics. Only the absence of document/process targeting guidance and any timeout expectations keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented, and the description adds only the implied 'by Revit ID' mapping to element_id. Per the rubric, full schema coverage sets the baseline at 3 with no compensating detail needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read parameters and geometry of an element by Revit ID') plus the scope of what is returned (type parameters, related warnings, roomCenterMm). This reads clearly as a single-element detail fetch, distinguishing it from the aggregate/list siblings like revit_query_elements, revit_aggregate_elements, and revit_view_elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (fetch details for one element ID obtained elsewhere) but the description never states when to prefer this over siblings such as revit_model_snapshot, revit_view_info, or the element-listing tools, nor any prerequisites. Adequate but with a clear guidance gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_execute_codeExecute C# CodeADestructive
Compile and run C# against the live Revit API on the Revit thread. Accepts a method body or a public static Script class with Execute(ScriptContext ctx). Auto mode owns one transaction and undo entry; transaction="none" is refused by default. Needs confirm_token from a first call, which runs nothing; dry_run needs none. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| transaction | No | auto | |
| confirm_token | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, and the description materially extends that: it explains transaction ownership and the undo entry, that transaction="none" is refused by default, that a long action may return status=running with a jobId *after possibly mutating the model*, and that resubmitting repeats the action. These are exactly the side-effect, recoverability, and non-idempotency details an agent needs and cannot get from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose clause is front-loaded and each following clause carries distinct, non-redundant behavioral information with no filler. It is dense to the point of being a run-on of semicolon-joined fragments, which slightly hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-risk code-execution tool with an output schema (so return values need no explanation), the description covers the full call lifecycle: code format, transaction semantics, the confirmation handshake, dry-run safety, and the async job handoff to revit_jobs. Nothing an agent needs to invoke it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 17% schema description coverage across 6 params, the description carries the load and mostly delivers: it specifies the two accepted forms of `code` (method body vs. Script class with Execute(ScriptContext ctx)), the meaning of `transaction` (auto vs. none and the default refusal), when `confirm_token` is required, and that `dry_run` needs no token. It only gestures at `timeout_seconds` via 'wait budget' and relies on the schema for `document`, so a small gap remains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Compile and run C# against the live Revit API') and pins down where it executes ('on the Revit thread'). The 'execute arbitrary code' framing clearly separates it from the numerous narrow siblings like revit_run_actions, revit_update_parameters, and revit_batch_start without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description is rich on *how* to invoke (two-step confirm_token flow, dry_run needing no token, resubmission behavior) and routes results to revit_jobs, but it never states *when* to prefer this escape hatch over the many purpose-built sibling tools. It implies usage through mechanism rather than giving explicit when-to-use/when-not guidance or an alternative, so it lands at the implied-usage level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_exportExport Model FilesADestructive
Export PDF, DWG, IFC or schedule CSV files on the Revit workstation; dry_run returns planned file names. Replacing existing files (overwrite=true) needs a confirm_token from a first call. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.
| Name | Required | Description | Default |
|---|---|---|---|
| views | No | ||
| format | Yes | ||
| sheets | No | ||
| dry_run | No | ||
| options | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| overwrite | No | ||
| sheet_set | No | ||
| all_sheets | No | ||
| output_dir | No | ||
| confirm_token | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructive/non-idempotent annotations it discloses the two-phase confirm flow for overwrites, the partial-completion hazard ('may already have changed the model'), the status=running/jobId return shape, and that resubmitting repeats the action. That is exactly the behavioral detail an agent needs before invoking a destructive export.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the core capability before the confirmation and async caveats. Each sentence carries distinct information, though the run-on delivery of the job-status clause is slightly compressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, 12-parameter export tool the description covers the risky paths (overwrite confirmation, async job handoff, partial mutation). An output schema exists so return values need not be restated, yet the unaddressed selection parameters remain a gap in an otherwise complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 8%, the description carries most of the burden, and it does explain dry_run, overwrite, and confirm_token meaningfully. However, views, sheets, sheet_set, all_sheets, options, output_dir, document, and timeout_seconds are left entirely undocumented, so nearly two thirds of the parameters gain no meaning from either source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource and enumerates the four export formats (PDF, DWG, IFC, schedule CSV), which pins down scope well. It stops short of distinguishing itself from close siblings like revit_export_view or revit_export_nwc, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete conditional guidance: use dry_run to preview planned file names, and supply a confirm_token from a first call when overwrite=true. It also routes the agent to revit_jobs when a run outlives the wait budget. No explicit when-not or sibling-alternative guidance is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_export_nwcExport Navisworks NWCADestructive
Export NWC on the Revit workstation; needs the Navisworks exporter. settings_xml applies exporter XML values, explicit arguments take precedence. Replacing an existing file (overwrite=true) needs a confirm_token from a first call. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| view | No | ||
| scope | No | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| overwrite | No | ||
| parameters | No | ||
| coordinates | No | ||
| element_ids | No | ||
| export_urls | No | ||
| export_links | No | ||
| export_parts | No | ||
| settings_xml | No | ||
| confirm_token | No | ||
| convert_lights | No | ||
| faceting_factor | No | ||
| timeout_seconds | No | ||
| export_element_ids | No | ||
| export_room_geometry | No | ||
| find_missing_materials | No | ||
| divide_file_into_levels | No | ||
| export_room_as_attribute | No | ||
| convert_element_properties | No | ||
| convert_linked_cad_formats | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructiveHint, idempotentHint=false): it discloses the exporter dependency, the two-step confirm_token flow for overwriting files, the async job pattern (status=running + jobId, result retrievable via revit_jobs), the fact the model may already have been modified, and that resubmission repeats the action. That last point is consistent with idempotentHint=false, not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five dense sentences, each front-loaded and carrying distinct information (dependency, precedence, confirm flow, async behavior, resubmission risk) with no filler. Slightly packed, but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the operational mechanics well, and the output schema means return values need no explanation. But for a 24-parameter export tool, the bulk of the configuration surface is unexplained in both description and schema, leaving an agent guessing how to drive view/scope/element_ids/export flags.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 4% (just `document`), so the description must carry the load. It explains settings_xml precedence and the overwrite/confirm_token pairing, but leaves ~20 parameters (view, scope, dry_run, element_ids, parameters, coordinates, all the export_*/convert_* flags, faceting_factor, timeout_seconds) wholly undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (export NWC) and adds the key precondition (requires the Navisworks exporter), which helps distinguish it from sibling revit_export and revit_export_view. It never names those siblings explicitly, so differentiation is present but not airtight.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives operational conditions: overwrite=true requires a confirm_token from a first call, settings_xml is overridden by explicit arguments, and long runs may return status=running. However it never says when to choose this over revit_export / revit_export_view, so the when-to-use guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_export_viewExport View to PNGARead-onlyIdempotent
Export a selected view to a PNG file on the MCP client. Does not change the active view or the model. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | Exact non-template view name from revit_list_views, or a view ID as a decimal string. | |
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| pixel_size | No | PNG size in pixels along the fitted dimension, 32 to 4000 (default 1600); Revit rejects smaller images. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| output_path | No | New PNG path on the MCP client machine; an existing file is an error. Default null downloads to a temporary directory and returns localPath. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and idempotentHint already declared, the bar is lower, and the description still adds real context: it confirms the active view and model are untouched, and it explains partial-success semantics (a non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries). That partial-result disclosure is the kind of behavior annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no repetition or filler; the core action and its non-mutating nature come first, followed by the failure-mode caveat. Every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, and annotations cover the safety profile; the description covers scope, non-mutation, and partial results. The remaining gap is the absence of routing guidance among the export siblings (revit_export, revit_export_nwc), which would help an agent pick correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the view name format, document vs process_id precedence, pixel_size range, and the output_path/existing-file rule, so the schema does the heavy lifting. The description adds no parameter-level detail beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Export a selected view to a PNG file') and locates the output ('on the MCP client'), which distinguishes it from file-format siblings like revit_export and revit_export_nwc. It does not, however, name any sibling explicitly, so the differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose (use this when you want a raster image of a view), and the schema's 'view' parameter points to revit_list_views as the source of valid names. There is no explicit when-to-use versus revit_export / revit_export_nwc guidance and no stated prerequisites, so an agent must infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_family_auditAudit FamiliesARead-onlyIdempotent
Audit an open family or named project families without saving or loading changes. Project mode takes exact family names or ["*"]; family mode takes none. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| families | No | ||
| process_id | No | Revit process ID; takes precedence over document. | |
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses that the audit neither saves nor loads changes (a meaningful constraint for a family operation) and explains the incompleteness signal: a non-empty skipped list means the result is incomplete, with skippedCount tallying all skipped entries. This adds real behavioral context the annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, with the read-only scoping constraint and mode semantics front-loaded and no filler. Dense but each clause carries information; readable and efficiently sized for a 4-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value detail is unnecessary, and the description covers the operational modes, the no-save/no-load guarantee, and the skipped/skippedCount incompleteness semantics. Only the timeout and process_id/document precedence are left undocumented in prose, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, so the description must compensate, and it does for the key `families` parameter: exact names or the ["*"] wildcard in project mode, none in family mode (implying it is optional). The document/process_id precedence and timeout parameter are left to the schema, which documents the former but not timeout_seconds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('audit ... families') and disambiguates the two operating modes (open family vs named project families). It also implicitly separates itself from mutating siblings like revit_edit_families and revit_load_family via 'without saving or loading changes', though it never names an alternative tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the two usage modes and what each expects: 'Project mode takes exact family names or ["*"]; family mode takes none.' That is clear contextual guidance on when each mode applies, but there is no explicit when-not or named alternative among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_isolateIsolate ElementsBIdempotent
Temporarily isolate element IDs in the active view; an empty list resets.
| Name | Required | Description | Default |
|---|---|---|---|
| reset | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| element_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false). The description usefully adds that the effect is temporary/view-scoped and that it can be cleared, which the annotations do not convey. It stops short of saying whether the isolation persists in the saved file or affects other users' views.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states scope first and the reset caveat second, with no filler. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the operation is conceptually simple. However, with an undocumented 'reset' parameter and no differentiation from the visibility-setting sibling, the definition leaves gaps an agent must guess through.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description carries more burden than usual. It does explain element_ids and its empty-list reset behavior, but it never mentions the separate 'reset' boolean parameter, leaving an agent to wonder whether reset=true or an empty list is the intended way to clear isolation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (isolate) and resource (element IDs) scoped to the active view, plus a reset behavior. It is clear on its own, but it never distinguishes itself from the closely related sibling revit_set_view_visibility, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no preconditions (e.g. an active document/view must exist), and no named alternative. The word 'Temporarily' is the only signal that this is a transient visual state rather than a persistent change, leaving selection of this tool vs. set_view_visibility to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_issue_registerIssue RegisterBRead-onlyIdempotent
Write a new local .xlsx issue register with element snapshots and review documents. Takes 1 to 60 issues; captures at most 25 snapshots (by severity) within a 210-second budget, and failed snapshots become cell notes. Snapshots need local or SSH transport. Existing output files are refused. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| issues | Yes | ||
| project | Yes | ||
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| pixel_size | No | PNG size in pixels along the fitted dimension, 32 to 4000 (default 1600); Revit rejects smaller images. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| output_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says the tool writes a new .xlsx file and refuses existing output files, but the annotations declare readOnlyHint=true and idempotentHint=true. Writing a new file modifies the environment and a second run would fail rather than repeat idempotently, directly contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded, packing operational limits and edge cases into about five sentences. It is efficient, though the run-on structure could be organized more scannably.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex write tool with nested parameters and an output schema, the description covers important operational limits and failure behavior. However, it omits parameter details for half the schema and its contradiction with the read-only annotation leaves a critical gap in an agent's understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, so the description must compensate. It adds the 1–60 issue limit and output-file refusal, which relate to issues and output_path, but it does not explain the project, document, process_id, or pixel_size parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: write a local .xlsx issue register with element snapshots and review documents. It is clear what the tool produces, but it does not differentiate itself from sibling reporting tools such as revit_build_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through constraints (1–60 issues, 25 snapshots, local/SSH transport, existing output refused), but it never explicitly says when to choose this tool over alternatives. No when-not guidance or sibling routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_jobsList Revit JobsARead-onlyIdempotent
List recent jobs, or wait up to wait_seconds (0 to 50, default 40) for the result of an action jobId. Results stay on the workstation for 24 hours, across server restarts. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | ||
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| wait_seconds | No | Seconds to wait, 0 through 50. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description is free to add the behavioral details that matter: the 24-hour result retention 'across server restarts' and the skipped-list/skippedCount semantics for incomplete results. This is substantial, non-obvious context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences cover the primary purpose, the key parameter, and result interpretation semantics. Every sentence carries information, though the result-retention and skipped-list details could be more tightly integrated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description needn't explain return values, and it correctly focuses on behavioral traits (retention, incomplete results). It is nearly complete for a listing/polling tool, though it lacks explicit routing guidance to the batch siblings, which are the most likely alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so most parameters are already documented in the schema. The description nonetheless adds value by restating the wait_seconds range and default, and by explaining the semantic meaning of a non-empty skipped list and skippedCount for interpreting results. It does not, however, explain the distinction between wait_seconds, timeout_seconds, and pickup_timeout_seconds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('List recent jobs'), immediately distinguishing it from the many mutation/view tools in the sibling set. It also maps to its true function of polling for a jobId's result, which no other sibling (aside from revit_batch_status/fetch) does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('wait up to wait_seconds for the result of an action jobId'), which gives some context about when to call it. However, it never explicitly names alternatives like revit_batch_status or revit_batch_fetch, nor does it clarify when to poll vs. list, or when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_link_cadLink CAD DrawingBDestructive
Link or import a DWG into a plan view on the Revit workstation. Returns CAD layers and extents in mm.
| Name | Required | Description | Default |
|---|---|---|---|
| link | No | ||
| path | Yes | ||
| view | No | ||
| level | No | ||
| units | No | auto | |
| layers | No | ||
| origin | No | internal | |
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, destructive, non-idempotent operation, so the safety profile is covered. The description adds that CAD layers and extents (in mm) are returned, but says nothing about what gets modified in the model, dry_run behavior, or the timeout implication for a long-running job.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that lead with the action and then the return payload. Zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter destructive mutation with almost no schema documentation, the description is far too thin. It does not need to restate the output schema, but the parameter behavior, prerequisites, and link/import distinction should have been covered here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 10% (just the 'document' param), yet the description explains none of the 10 parameters: the link-vs-import semantics of 'link', the meaning of 'auto' units, layer filtering, origin modes, or dry_run. It fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (link or import a DWG) and the target context (a plan view on the Revit workstation). It is distinguishable from siblings like revit_walls_from_cad or revit_remove_links, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to link versus import, when to prefer this over revit_walls_from_cad, or what prerequisites (open document, plan view) must hold. The 'link' parameter defaults to true but the description never explains the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_links_statusLinks StatusARead-onlyIdempotent
Read RVT, CAD and image link status. Each list is capped at 100 entries; summary counts cover all links. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuinely useful behavioral context the annotations cannot: per-list cap of 100 entries, summary counts spanning all links, and that a non-empty skipped list signals an incomplete result with skippedCount totalling all skipped entries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler, front-loading the core action before the truncation semantics. Every sentence carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description only needs to add the truncation/incompleteness semantics, which it does. It is close to complete, though it could note the targeting requirement when multiple Revit instances run.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so document, process_id, and both timeout parameters are fully documented in the schema. The description adds no parameter-level meaning, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read RVT, CAD and image link status'), which clearly separates it from write-oriented siblings such as revit_remove_links, revit_link_cad, and revit_compare_link_datums. It is precise but does not explicitly name or contrast any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives (e.g., revit_compare_link_datums or revit_document_info), nor any prerequisites or exclusions. Usage must be inferred entirely from the purpose sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_list_catalogList CatalogARead-onlyIdempotent
List catalog names for one section: categories, family-types, levels, area-schemes, views, worksets, phases or parameters. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| section | Yes | ||
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavioral context: results may be incomplete, signalled by a non-empty skipped list, and skippedCount tallies skipped entries. That is useful disclosure beyond the structured fields, though nothing is said about pagination or truncation limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with no filler; the enumeration and the skipped-result caveat are both front-loaded and each earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be restated, and the description covers section scope plus the skipped/skippedCount interpretation. For a five-parameter read-only listing tool with strong annotations this is close to complete, though it could say a word about how the document/process_id targeting interacts with the listing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80% and the document/process_id/timeout parameters are already documented in the schema. The description's contribution is enumerating the legal 'section' values, which the schema leaves as a bare string with no enum - that is meaningful added semantics for the one required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (catalog names) and enumerates the eight valid sections, which scopes the tool precisely enough to separate it from revit_list_views, revit_list_instances, and revit_list_relations. It does not, however, explicitly name any sibling or contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the section enumeration (you call it when you need to know what categories, levels, worksets, etc. exist), but there is no statement of when to prefer this over revit_document_info, revit_list_views, or revit_query_elements, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_list_instancesList InstancesARead-onlyIdempotent
List Revit processes with documentName, documentPath, revitVersion, processId and pluginResponding. Busy or unresponsive processes stay listed with pluginResponding=false. HTTP mode reports only its connected process.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuine non-obvious behavior: busy or unresponsive processes remain listed with pluginResponding=false, and HTTP mode returns only the connected process — real edge-case context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what is listed, then the edge-case behavior. Little waste; the field enumeration is slightly redundant with the output schema but still readable and helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need no explanation, and annotations cover safety. The description complements these with edge-case and mode-specific behavior, leaving only usage routing unaddressed for a simple read-only list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the sole optional 'document' parameter is fully documented in the schema itself. The description enumerates output fields (documentName, processId, etc.) rather than adding meaning to the input parameter, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('Revit processes'), plus the exact fields returned (documentName, documentPath, revitVersion, processId, pluginResponding). This distinguishes it from document-oriented siblings like revit_documents, but it never explicitly names an alternative, so sibling differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, nor any named alternative such as revit_documents or revit_jobs. The only hint at context is the schema note about 'needed when several Revit instances run', which lives in the parameter, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_list_relationsList RelationsARead-onlyIdempotent
Read model object membership or dependencies. relation is level-rooms, area-scheme-elements or view-template-dependents (with source_name), or group-elements or nested-family (with source_id). A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| relation | Yes | ||
| source_id | No | Revit ID of the source group (group-elements) or family instance (nested-family). | |
| process_id | No | Revit process ID; takes precedence over document. | |
| source_name | No | Source name, case-insensitive: a level (level-rooms), area scheme (area-scheme-elements) or view template (view-template-dependents). | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description goes further by disclosing incompleteness semantics ('a non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries'), which is exactly the kind of partial-result behavior an agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no filler; the core purpose comes first and the operational caveat last. The enumeration is telegraphic rather than prose, which is efficient here but slightly terse for a seven-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, yet the description still explains the skipped/skippedCount fields that signal partial results. Relation values and their source parameter pairings are covered; only cross-tool routing guidance is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 86%, so the baseline is 3. The description earns above baseline by supplying the valid values for the otherwise undocumented, enum-less 'relation' parameter and by mapping each value to its required companion parameter (source_name vs source_id).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete read verb and resource ('Read model object membership or dependencies') and enumerates the five supported relation types, so an agent knows exactly what retrieves. It stops short of naming which sibling tools it supersedes or complements (e.g. revit_query_elements, revit_list_views), so sibling differentiation relies on inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical pairings ('with source_name', 'with source_id') give conditional guidance on which companion parameter each relation value requires, which is genuinely useful. However, there is no statement of when to prefer this tool over alternatives like revit_query_elements or revit_view_elements, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_list_viewsList ViewsBRead-onlyIdempotent
List non-template views with id, name, type, level, scale and template. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| view_type | No | English ViewType name such as FloorPlan or ThreeD, case-insensitive. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| name_contains | No | Case-insensitive substring of the view name. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only/idempotent profile, so the safety burden is off the description. It does add one genuinely useful behavioral caveat: a non-empty skipped list signals an incomplete result, and skippedCount counts skipped entries. That is beyond structured data, but it is a single trait and leaves auth, rate limits, and failure modes unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the field list front-loaded and the incompleteness caveat second. Minor oddity: 'template' is listed as a returned field even though the tool only returns non-template views.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape needn't be explained, and the skipped-list note covers partial results. However, with 47 siblings and 6 optional parameters, the definition gives no selection context, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six filter/timeout parameters are already documented in the schema. The description adds no syntax, format, or interaction details (e.g., precedence between document and process_id) beyond what the schema states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list views) and enumerates returned fields (id, name, type, level, scale, template) while scoping to non-template views. It is clear on its own, but never distinguishes itself from close siblings like revit_view_info, revit_view_summary, or revit_close_views.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is offered, and no alternatives are named. With siblings such as revit_view_info and revit_view_summary present, the agent must infer which view-listing tool to pick, and nothing in the text helps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_list_warningsList WarningsARead-onlyIdempotent
Group model warnings by description text. warning_text with include_elements=true returns the elements of one group. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| warning_text | No | Exact warning description from revit_list_warnings, case-insensitive; an unmatched text is an error. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| include_elements | No | Include affected elements (ID, category, name) per group. Default false returns counts only. | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, and the description adds genuinely new behavioral context beyond them: a non-empty skipped list signals an incomplete result and skippedCount totals the skipped entries. This is useful failure-mode disclosure, though it doesn't mention permissions, rate limits, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with the core purpose front-loaded and no filler. It is efficient, though the second and third sentences pack two distinct topics (drill-down and partial results) into a compact block that could be marginally clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description doesn't need to explain return values, and it correctly focuses on the result-incompleteness nuance and the grouped-to-elements workflow. Minor gaps remain around instance targeting (document vs process_id), which the schema already documents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description rises above it by explaining the interaction between warning_text and include_elements (the two must be combined to fetch a group's elements). That coupling is not obvious from the schema fields alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Group model warnings by description text'), which is precise and distinguishable from the similarly named sibling revit_view_warnings. However, it never explicitly differentiates itself from that sibling or explains the grouping scope, so an agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear drill-down pattern: 'warning_text with include_elements=true returns the elements of one group,' telling the agent how to move from a grouped summary to element detail. It lacks any explicit when-not guidance or named alternative sibling, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_load_familyLoad FamiliesADestructive
Load workstation .rfa files in one undo entry. Existing families are skipped unless overwrite is true.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| overwrite | No | ||
| timeout_seconds | No | ||
| overwrite_parameter_values | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety bar is lowered. The description still adds meaningful behavior beyond them: the whole load collapses into 'one undo entry' (atomicity/reversibility) and the skip-vs-overwrite rule explains the non-idempotent semantics. It omits the dry_run preview path and timeout_seconds behavior, so it isn't complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the primary action is front-loaded and the conditional rule follows immediately. Nothing is redundant with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations carry the destructive profile. But for a destructive, 6-parameter batch-mutation with 17% schema coverage, the description is thin: it says nothing about dry_run as the safe preview path, document disambiguation when multiple files are open, or timeout behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (just the `document` param), so the description must compensate. It adds real semantics for `overwrite` (skip-existing behavior) and clarifies the nature of `paths` (workstation .rfa files), but leaves dry_run, timeout_seconds, and overwrite_parameter_values unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: loads .rfa family files into Revit, with the scope qualifier 'workstation .rfa files'. That distinguishes it implicitly from siblings like revit_place_family/revit_place_families (instance placement) and revit_edit_families (modification), but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Existing families are skipped unless overwrite is true' is a real conditional rule that guides invocation. However, no alternatives are named and no when-not-to-use case (e.g. use place_family after loading, or family_audit to inspect) is given, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_mirrorMirror ElementsADestructive
Mirror across a model X or Y parallel line through point_mm; copy keeps originals. dry_run rolls back. Group members, pinned, hosted and constrained elements are reported in skipped.inGroup, skipped.pinned, skipped.hosted and skipped.constrained and are not changed; the call is refused if every element is a group member.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | Yes | ||
| copy | No | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| point_mm | Yes | ||
| element_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, and the description adds substantial context on top: exact skip categories and their output keys (skipped.inGroup, skipped.pinned, skipped.hosted, skipped.constrained), the guarantee those elements are unchanged, the all-group-members refusal condition, and dry_run rollback. This is precisely the behavioral disclosure a destructive tool needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core operation and axis constraint are front-loaded in the first clause, and the remaining sentences are dense with non-redundant specifics about skipping, refusal, and rollback. It is terse and slightly run-on but every sentence carries operational weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with an output schema, the description covers the critical unknowns: what is left untouched, when the call fails outright, and how dry_run behaves. Only minor gaps remain, such as document-scoping requirements and whether the operation applies model-wide versus to the active view.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (only document is documented in the schema), so the description carries the burden and does so for most parameters: axis is constrained to x/y, point_mm is the point the mirror line passes through, copy retains originals, and dry_run rolls back. element_ids and document semantics are left to the schema, which mildly undersells the required element list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (mirror), the resource (elements), and the precise geometric constraint (a model X or Y parallel line through point_mm), which immediately distinguishes it from sibling mutations like revit_move, revit_rotate, and revit_copy. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage through mode semantics – dry_run rolls back and copy keeps originals – so an agent can infer a safe-preview path versus a mutating path. However, it never states when to reach for revit_mirror rather than revit_copy or revit_rotate, and gives no prerequisites for when a document must be specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_model_healthModel Health CheckARead-onlyIdempotent
Read model quality counts: project metadata, file size, counts, units and the ten most frequent warning groups. Unavailable metrics are null and listed in skipped. output_path also writes an .xlsx health report with up to five snapshots. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| output_path | No | New .xlsx health report path on the MCP server machine; parent must exist and existing files are refused. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description correctly spends its budget elsewhere: it discloses that unavailable metrics come back null, that they are enumerated in skipped, that skippedCount totals skipped entries, and that a non-empty skipped list means the result is incomplete. It also notes output_path writes an .xlsx with up to five snapshots. It does not mention auth requirements or performance cost of scanning large models.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler, front-loaded on what is read before moving to the optional side effect and the incompleteness caveat. Dense but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description still supplies the crucial interpretive rule for skipped/skippedCount. Combined with the annotation-covered safety profile and fully documented parameters, an agent has what it needs to call this correctly; only selection against sibling tools is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the schema already documents document, process_id, output_path, and both timeouts including precedence rules. The description adds only one increment of meaning — that output_path produces an .xlsx with up to five snapshots — beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific read operation and enumerates exactly what is returned (project metadata, file size, counts, units, ten most frequent warning groups), so an agent knows the scope without opening the schema. It does not, however, distinguish itself from adjacent siblings such as revit_document_info or revit_list_warnings, which overlap on metadata and warning data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never states when to reach for this tool versus alternatives like revit_document_info (metadata), revit_list_warnings (warnings) or revit_model_snapshot (snapshots). The only conditional content is about interpreting results (non-empty skipped = incomplete), which is output semantics rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_model_snapshotModel SnapshotARead-onlyIdempotent
Read a schema version 1 project snapshot for batch audits. Closed worksets can make the result incomplete. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| parameter_rules | No | ||
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavioral context: closed worksets can degrade results and a non-empty skipped list / skippedCount signals an incomplete snapshot.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with the core purpose front-loaded and no filler. The incomplete-result caveat is repeated in two variants (skipped list and skippedCount), which is slightly redundant but justified by the different output signals.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description is not required to explain return values, yet it usefully flags the incompleteness signal an auditor needs. Combined with 80% parameter coverage and full annotations, an agent has enough to invoke this correctly; no explicit sibling routing is the only gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents document, process_id, and the timeouts adequately; baseline 3 applies. The description explains output concepts (skipped list, skippedCount) rather than adding meaning to any input parameter such as parameter_rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read a schema version 1 project snapshot') and adds a scope qualifier ('for batch audits'), which is more than a restatement of the name. It does not, however, explicitly distinguish itself from batch-oriented siblings like revit_batch_fetch or revit_batch_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for batch audits' implies the context in which this tool applies, but there is no explicit when-to-use guidance, no when-not, and no named alternative. The agent must infer the boundary between this and other batch tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_moveMove ElementsADestructive
Move elements by dx_mm, dy_mm and dz_mm on model axes. dry_run rolls back and returns the verification block. Group members, pinned, hosted and constrained elements are reported in skipped.inGroup, skipped.pinned, skipped.hosted and skipped.constrained and are not changed; the call is refused if every element is a group member.
| Name | Required | Description | Default |
|---|---|---|---|
| dx_mm | Yes | ||
| dy_mm | Yes | ||
| dz_mm | No | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| element_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint/readOnlyHint annotations: it discloses that dry_run rolls back and returns a verification block, enumerates exactly which element classes are skipped (inGroup, pinned, hosted, constrained) and where they are reported, and states the refusal condition when every element is a group member. This is the kind of outcome-level detail an agent needs before committing a destructive transform.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the core action before the dry_run and skip-reporting details. No filler, though the skipped.* field enumeration is a long clause that could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be re-explained, and the description still names the verification block and skip buckets. A destructive mutation tool with annotations and an output schema is covered adequately; only the element_ids semantics remain thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (document only), so the description must compensate. It does explain the axis semantics of dx_mm/dy_mm/dz_mm, the dz default behavior implied by omission, and dry_run's effect, but says nothing about element_ids or how document selection interacts with the move.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Move) and resource (elements) plus the exact displacement axes (dx_mm, dy_mm, dz_mm on model axes). It is distinguishable from siblings like revit_rotate, revit_copy and revit_mirror by naming the transform explicitly, though it never names those siblings by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the parameter semantics and the dry_run/refusal notes, but there is no explicit 'use this instead of revit_rotate/copy/align when...' guidance. The conditions described are edge-case behaviors rather than selection criteria against alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_new_documentNew DocumentCDestructive
Create a project or family from a template on the Revit workstation.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | project | |
| name | No | ||
| save_as | No | ||
| activate | No | ||
| template | No | ||
| process_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered without the description. The description adds only that creation is template-based and workstation-local, but says nothing about what is destroyed, whether activation implies UI focus, or how save_as interacts with the new document. Minimal added value beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no padding — the key verb and resource lead. Its brevity is efficient rather than wasteful, though it borders on under-specification for a six-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a destructive, non-idempotent creation tool with 6 parameters at 0% coverage the description is too thin. An agent lacks the information to set name, save_as, activate, or process_id correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, so the description must compensate and does not. Only 'project or family' (the kind enum) and 'template' are hinted at; name, save_as, activate, and process_id remain entirely undocumented, and even the hinted parameters get no format or behavior detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Create a project or family') and adds the platform scope ('on the Revit workstation'), which is enough for an agent to distinguish it from open_document or load_family. It stops short of naming siblings explicitly, so it does not reach the top tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this over open_document or load_family, nor on prerequisites such as whether a template must exist or whether creation is the intended alternative to opening an existing file. The description provides no when-to-use context at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_nwc_settings_checkCheck NWC SettingsARead-onlyIdempotent
Parse a Navisworks exporter XML file on the Revit workstation without exporting. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| settings_xml | Yes | ||
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the read-only, idempotent, non-destructive profile. The description adds genuine extra context: parsing occurs on the Revit workstation without triggering an export, and it warns that a non-empty skipped list makes the result incomplete with skippedCount counting skipped entries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly scoped sentences with zero filler, and the core purpose is front-loaded. The second sentence concerns output semantics, which is slightly tangential but still earns its place as a correctness warning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 80% parameter coverage, the definition needn't restate return values, yet it still adds the critical caveat about incomplete results via the skipped list. For a read-only inspection tool this is essentially complete, missing only explicit sibling routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents document, process_id, and the timeout parameters. The description contributes no additional parameter meaning, only output semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (parse) and resource (Navisworks exporter XML on the Revit workstation), and the phrase 'without exporting' implicitly contrasts it with export-oriented siblings. It does not name revit_export_nwc explicitly, so sibling differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Without exporting' hints at the use context (inspecting settings rather than performing an export), which implies when an agent would prefer this over revit_export_nwc. However, there is no explicit when-to-use, when-not, or prerequisite guidance, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_open_documentOpen DocumentADestructive
Open a local, UNC or RSN model. Central models open detached by default. Cloud paths are unsupported. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | detached | |
| path | Yes | ||
| audit | No | ||
| activate | No | ||
| worksets | No | all | |
| process_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey destructiveHint, non-idempotency and non-read-only, so the bar is lower; the description still adds real value by disclosing that central models open detached by default and that long actions can return status=running with a jobId while possibly having already modified the model. The 'resubmitting repeats the action' line largely restates idempotentHint=false, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four front-loaded sentences, each carrying distinct information: supported paths, detached default, cloud exclusion, async/idempotency caveat. Dense but no filler; the async caveat is appropriately placed last.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the async job behavior is well covered. However, for a 6-parameter tool with zero schema descriptions, the near-total absence of guidance on mode, worksets, audit, activate and process_id leaves invocation decisions underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, yet it addresses only the 'detached' default for mode and the path constraint. Four parameters (audit, activate, worksets, process_id) and three of the four mode enum values receive no explanation anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Open a ... model') and defines the accepted scope precisely: local, UNC and RSN models, with cloud paths explicitly excluded. This scope boundary implicitly separates it from revit_new_document and revit_close_document without the agent needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use context (local/UNC/RSN models) and a when-not exclusion (cloud paths unsupported), plus names revit_jobs as the tool to poll a long-running result. It stops short of naming a preferred alternative for the cloud case, so it lands just under full explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_override_graphicsHighlight ElementsBDestructive
Colour elements in selected model views; reset restores overrides saved in this Revit session.
| Name | Required | Description | Default |
|---|---|---|---|
| fill | No | ||
| color | No | #FF0000 | |
| reset | No | ||
| views | No | active | |
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| element_ids | Yes | ||
| line_weight | No | ||
| transparency | No | ||
| halftone_others | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, and the description usefully adds that reset only restores overrides saved in this Revit session (session-scoped state that is lost otherwise). It does not disclose that overrides mutate view graphics irreversibly for elements not reset, nor mention the dry_run preview parameter despite it existing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight clauses with the purpose front-loaded and zero filler. It is efficient, though arguably under-specified for a 10-parameter mutation tool rather than genuinely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, but for a destructive 10-parameter tool the description omits applicability conditions, the dry_run escape hatch, and most parameter meaning. It covers the core action and the reset semantics but is thin overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 10% (only `document`), so the description must carry the burden and largely fails to. It hints at color, reset, views and element_ids, but leaves fill, transparency, halftone_others, line_weight, dry_run and the views enum values ("active"/"all") undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Colour elements in selected model views") plus the reset behavior, so the agent knows this applies graphic overrides rather than selection or visibility. It does not name or distinguish itself from near-neighbours like revit_isolate or revit_set_view_visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing says when to prefer an override over isolate/select/set_view_visibility, nor that element_ids and a document must already be selected/known. The only conditional information (reset) is about a parameter, not about choosing the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_parameter_fill_checkParameter Fill CheckARead-onlyIdempotent
Count filled, empty and missing parameters per parameter and category, with samples of empty and missing element IDs. Numeric zero counts as filled. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Exact non-template view name; limits the search to that view. | |
| level | No | ||
| workset | No | ||
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| categories | Yes | Category names (1 to 20) from the categories catalog; matches any listed category. | |
| parameters | Yes | Exact localized parameter names (1 to 30); names that do not match count as missing. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| sample_limit | No | Maximum sampled element IDs per empty and missing list, 1 to 100 (default 20); counts always cover all elements. | |
| include_types | No | ||
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely useful semantics beyond them: zero counts as filled, a non-empty skipped list signals an incomplete result, and skippedCount aggregates all skipped entries. It does not discuss scope limits (category/parameter caps) or performance, but the interpretation rules are the key behavioral context here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and result shape, followed by the two interpretation rules an agent most needs. No filler or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure need not be described, and the description supplies the result-interpretation rules (zero, skipped, skippedCount) that the schema cannot. Minor gap: it says nothing about the category/parameter caps or the document/process disambiguation, which live only in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 73%, with parameters like level, workset, and include_types undocumented in both places, so the description does not fully compensate. It does add value the schema lacks (numeric zero treated as filled; exact localized name mismatch counts as missing), which is the right kind of semantic addition but leaves gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (count) and resource (filled/empty/missing parameters per parameter and category) plus the return shape of samples. It is clearly distinguishable from write siblings like revit_set_parameter or revit_update_parameters, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to reach for this audit versus, say, revit_query_elements, revit_aggregate_elements, or revit_family_audit, and no prerequisites or exclusions. Usage has to be inferred from the counting semantics alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_pingCheck Revit ConnectionARead-onlyIdempotent
Check the connection to Revit without reading the model. Returns data="pong", even when no document is active. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral context: it succeeds with no active document, and it explains how to read partial results (non-empty skipped list = incomplete, skippedCount totals them). The 'data=pong' detail is largely redundant with the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, purpose front-loaded, no filler. The 'Returns data=pong' sentence is mostly redundant given the output schema, which slightly dilutes an otherwise tight phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple probe with annotations and an output schema, the definition covers purpose, no-document behavior, and partial-result interpretation. It does not mention the job-queue aspect implied by pickup_timeout_seconds, a minor omission that the schema largely absorbs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents document, process_id, and both timeouts with defaults and precedence. The description adds no parameter guidance beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (check the connection to Revit) plus a scope qualifier (without reading the model) that separates it from model-reading siblings like revit_model_snapshot or revit_documents. An agent can tell what it does and what it does not do at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: a lightweight connectivity probe, valid even when no document is active. It never says when to prefer this over revit_documents, revit_ui_state, or any other status check, and names no alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_place_familiesPlace FamiliesCDestructive
Load optional families and place instances in one transaction and undo entry.
| Name | Required | Description | Default |
|---|---|---|---|
| load | No | ||
| dry_run | No | ||
| at_rooms | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| placements | No | ||
| stop_on_error | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered. The description usefully adds that everything happens in one transaction and one undo entry, but it omits the notable dry_run parameter and stop_on_error behavior, which materially affect what the call actually does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted words, which is good structure. But the brevity here reflects under-specification rather than economy, since core behaviors and parameters go unmentioned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, 7-parameter batch placement tool with nested placement objects, the description is too thin. It could reassure the agent about dry_run safety, document targeting, and atomic rollback, but instead leaves most operational detail to a schema that is only 14% documented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14% across 7 parameters, so the description must carry the load, and it largely does not. 'Load optional families' gestures at the load parameter and 'place instances' at placements, but dry_run, document, stop_on_error, timeout_seconds, and the at_rooms/placements structure are entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource set: optionally loading family definitions and then placing family instances. However, it never distinguishes this batch tool (families, plural) from the very similar sibling revit_place_family, leaving the agent to infer the batch nature from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. an open document), and no routing to alternatives such as revit_place_family or revit_load_family. The agent gets no signal about when this is the correct tool versus its near-duplicate sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_place_familyPlace FamilyADestructive
Place a loaded unhosted family on a named level. family is a name or Family: Type; a null type_name uses the embedded or first type. XY is in mm, rotation in degrees.
| Name | Required | Description | Default |
|---|---|---|---|
| x_mm | Yes | ||
| y_mm | Yes | ||
| level | Yes | ||
| family | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| type_name | Yes | ||
| rotation_deg | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the mutation risk is covered structurally. The description adds useful context on unit conventions and type resolution, but says nothing about what the placement modifies, failure/rollback behavior, or how it interacts with revit_undo_last.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action, then format details in priority order. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the required 'level' parameter is understandable from 'named level'. But for an 8-parameter destructive tool with 13% schema coverage, the silence on dry_run and on the single-vs-batch sibling choice leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13% (only 'document' is documented), so the description carries most of the burden. It does clarify the 'Family: Type' string format for family and the null type_name fallback, which are genuinely non-obvious. It omits dry_run entirely, which matters for a destructive tool, and the mm/degree notes largely restate the _mm/_deg parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource+scope: 'Place a loaded unhosted family on a named level.' It also implicitly distinguishes hosted vs unhosted placement. However, it never differentiates itself from the obvious sibling revit_place_families (batch variant), leaving the agent to infer the singular/plural split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'loaded' hints that revit_load_family must run first, but the description never says so explicitly, nor does it point to revit_place_families for multiple placements. No when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_place_views_on_sheetPlace Views on SheetCDestructive
Place views and schedules on a sheet. Coordinates are sheet mm.
| Name | Required | Description | Default |
|---|---|---|---|
| sheet | Yes | ||
| views | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the mutating profile is covered. The description adds only the coordinate unit; it says nothing about what happens if a view is already placed, whether placement can be undone, or that dry_run exists — meaningful behavioral context for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the primary action front-loaded and the unit clarification following. Nothing is redundant and nothing pads.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent tool with four parameters, this is thin: no prerequisites, no failure modes, no mention of dry_run for safe previewing. An output schema exists, so return values need not be described, but the operational context an agent needs before calling it is largely absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (just `document`), so the description must compensate. 'Coordinates are sheet mm' usefully disambiguates x_mm/y_mm units, but `sheet`, `views`, and especially `dry_run` — a preview flag critical for a destructive tool — are left unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (place) and resource (views and schedules on a sheet), plus the coordinate unit used by the operation. It does not, however, distinguish itself from nearby siblings such as revit_create_sheet or revit_place_family, so an agent must still infer which placement tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus revit_create_sheet (to make the sheet first) or revit_place_family. No prerequisites or preconditions (an open document, an existing sheet, unplaced views) are stated anywhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_process_modelsProcess Many ModelsADestructive
Open each model in the interactive session, run steps and C# code, export, save as requested, and close. In-place saves and code need a confirm_token from the preview response. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| open | No | ||
| save | No | ||
| paths | No | ||
| steps | No | ||
| folder | No | ||
| dry_run | No | ||
| exports | No | ||
| pattern | No | *.rvt | |
| recursive | No | ||
| process_id | No | ||
| confirm_token | No | ||
| stop_on_error | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive=true and idempotent=false, but the description adds real behavior beyond them: the confirm_token gate for in-place writes, the async status=running + jobId return when the wait budget expires, the risk that the model was already modified, and the non-idempotent resubmit warning. This is substantive transparency for a long-running destructive batch job.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the pipeline in the first sentence, then layered with the gating, async, and resubmit notes. Four dense sentences with no filler. Slightly overloaded, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, yet the description still usefully flags the status=running/jobId shape. For a 14-parameter, destructive, 500-model batch tool it omits dry_run guidance and any sibling differentiation against revit_run_actions/revit_batch_start, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load and only partially does. It explains confirm_token's provenance and that code/in-place saves require it, and implicitly covers open/save/exports via the pipeline sentence. It says nothing about dry_run, paths, folder, pattern, recursive, stop_on_error, process_id, or timeout_seconds, and the self-documenting nested enums (mode, format) do not close that gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (many models) and enumerates the pipeline it runs: open, run steps and C# code, export, save, close. An agent immediately knows this is a multi-model batch executor. It does not, however, distinguish itself from close siblings like revit_run_actions or revit_batch_start, which cover overlapping ground.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a concrete prerequisite (confirm_token from the preview response for in-place saves and code) and warns that resubmitting repeats the action. But there is no explicit when-to-use vs revit_run_actions, revit_execute_code, or revit_batch_start, nor any guidance on dry_run. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_query_elementsQuery ElementsBRead-onlyIdempotent
Read a page of matching element rows. Lengths use mm, areas m2, volumes m3; optional geometry is in model mm. roomCenterMm is a point inside the room, a bounding-box centre can lie outside it. hasMore=true means further pages exist. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Exact non-template view name; limits the search to that view. | |
| level | No | ||
| limit | No | ||
| phase | No | ||
| family | No | ||
| fields | No | ||
| offset | No | ||
| workset | No | ||
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| type_name | No | Exact type name, case-insensitive. | |
| categories | No | ||
| process_id | No | Revit process ID; takes precedence over document. | |
| sort_field | No | System field (e.g. id, category, level) or exact localized parameter name to sort by; default id. | id |
| area_scheme | No | Exact area-scheme name, case-insensitive. | |
| sort_direction | No | asc (default) or desc, case-insensitive. | asc |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| include_geometry | No | Include location, boundingBox and roomCenterMm in model mm. Default false; true enlarges the response. | |
| parameter_filters | No | AND-combined filters: parameter (exact localized name), operator (equals, contains, greater, less, empty, not-empty, exists) and value. Numbers use mm, m2, m3 or display units. | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent and non-destructive, so the bar is low, and the description still adds real behavior: unit conventions (mm, m2, m3, model mm for geometry), the semantic distinction between roomCenterMm and a bounding-box centre, and pagination/completeness signals (hasMore, skipped/skippedCount). It does not disclose timeout/long-running job behavior even though two timeout parameters exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then a series of short factual clauses; each sentence carries distinct information. The dense notation (roomCenterMm, skippedCount) is efficient though terse, and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be described, and the description usefully explains paging and incompleteness semantics. However, for a 19-parameter, zero-required-parameter query tool, it leaves the agent without guidance on filter construction, document targeting or timeout trade-offs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 19 parameters and only 58% schema description coverage, several inputs (level, phase, family, fields, workset, categories, limit/offset) carry no meaning in either place. The description's unit conventions partly help interpret geometry and parameter_filters values, but it adds no guidance on filters, targeting (document/process_id) or sort semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read a page of matching element rows') and makes the paginated nature explicit. It does not differentiate this tool from close siblings such as revit_view_elements, revit_aggregate_elements or revit_element_details, so an agent must infer which query tool fits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternative query tools (e.g. revit_view_elements, revit_aggregate_elements) or when this paged tool is preferable to them. Only result-interpretation hints (hasMore, skipped list) are given, which is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_remove_linksRemove LinksADestructive
Delete selected link types and their instances; dry_run previews. Cannot be undone in Revit. Needs confirm_token from a first call, which changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| kinds | No | ||
| links | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| confirm_token | No | ||
| include_imported_cad | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real value beyond the annotations by disclosing irreversibility ('Cannot be undone in Revit') and the confirm-token safety gate. Annotations already flag destructiveHint=true and idempotentHint=false, so the description builds on that rather than repeating it. It omits auth requirements and the scope of the deletion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses, front-loaded with the action and followed by the two safety-critical facts. No filler; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, multi-parameter tool, the description covers the essential safety workflow and irreversibility, and an output schema exists so return values need no explanation. The gap is undocumented parameter detail rather than missing behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, so the description must carry the param load but does not. dry_run and confirm_token are covered, yet the required links format and the '*' wildcard, the kinds enum values, and include_imported_cad are all left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (link types and their instances), which is more precise than the generic sibling revit_delete. It does not explicitly name a sibling to route against, but the resource scope is distinctive enough that an agent can place it correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context: dry_run for preview, and the two-step confirm_token flow with the note that the first call 'changes nothing.' It does not compare against revit_links_status or revit_delete, so the routing guidance is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_rotateRotate ElementsADestructive
Rotate elements about a vertical axis through center_mm, or through their combined bounding box center. dry_run rolls back. Group members, pinned, hosted and constrained elements are reported in skipped.inGroup, skipped.pinned, skipped.hosted and skipped.constrained and are not changed; the call is refused if every element is a group member.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| angle_deg | Yes | ||
| center_mm | No | ||
| element_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (destructive=true, idempotent=false), and the description goes well beyond them: it names exactly which element categories are left unchanged (group members, pinned, hosted, constrained), reports where they surface (skipped.inGroup/pinned/hosted/constrained), states the full-refusal edge case, and discloses that dry_run performs a rollback.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and pivot definition, then a dry_run note, then skip semantics. Every clause carries information, though the final sentence chains four skip categories plus a refusal rule into one dense run-on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with annotations and an output schema (which the skipped.* references align with), the description covers pivots, preview/rollback, skip behavior and refusal conditions. It omits any note about document targeting or angle units, but overall an agent has what it needs to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (document is the sole documented parameter), so the description must compensate. It does clarify the two highest-value parameters: center_mm's axis/pivot meaning including the default of using the combined bounding box center, and dry_run's rollback semantics. angle_deg and element_ids units/constraints remain unspecified, so it stops short of full compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (rotate) plus the resource (elements) and even the precise rotation axis and pivot semantics. This cleanly distinguishes it from siblings like revit_move and revit_mirror without the agent needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied rather than stated: the description explains dry_run rollback and skip/refusal conditions, but never says when to prefer revit_rotate over revit_move, revit_mirror or revit_copy, nor what prerequisites exist (e.g. an open/active document). Guidance is adequate but leaves selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_run_actionsRun ActionsADestructive
Execute up to 50 actions with one undo step; the whole batch rolls back on its first failure. dry_run rolls back and returns the verification block.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the 50-action cap, that the batch commits as a single undo step, that the whole batch rolls back on the first failure, and what dry_run actually does (roll back and return the verification block). The annotations only flag destructive/non-idempotent; the atomicity and rollback semantics are the crucial behavior an agent needs before mutating a Revit model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the most consequential fact (atomic rollback) is front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the description covers the risky batch semantics well. What is missing is routing context against the many sibling action/batch tools, which matters given how crowded this namespace is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description should carry more weight, and it does explain dry_run's real behavior and the 50-step ceiling for `steps`. However, the `document` parameter (targeting among multiple open documents) is left entirely to the schema and gets no treatment in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: execute a batch of up to 50 model actions in one atomic step. The scope (batch execution) is clear enough to separate it from the single-action siblings like revit_move or revit_delete, but it never explicitly names those alternatives or the batch-job siblings (revit_batch_start).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer 'use this when you have multiple actions to apply atomically,' but the description never says when to prefer this over the single-action tools or over revit_batch_start/revit_execute_code. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_save_documentSave DocumentBDestructive
Save a document. Needs confirm_token from a first call, which changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| compact | No | ||
| save_as | No | ||
| document | Yes | ||
| overwrite | No | ||
| process_id | No | ||
| confirm_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and non-idempotent. The description adds valuable behavioral detail beyond those hints by disclosing the two-step confirmation flow and clarifying that the first call is a no-op. It still does not explain the destructive overwrite risk or what happens to unsaved changes, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loads the core action, and immediately follows with the confirmation requirement. There is no filler or redundancy, and every sentence contributes to understanding the tool's behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters, zero schema description coverage, and an output schema, the description is far too sparse. It covers the confirmation token but omits the meaning of the document parameter and all optional save behaviors (compact, save_as, overwrite, process_id), leaving the agent unable to invoke the tool correctly in many cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all six parameters. It only mentions confirm_token, leaving document, compact, save_as, overwrite, and process_id completely unexplained; this is a severe gap for a save operation with multiple optional modifiers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Save') and resource ('a document'), which is more specific than a tautology and distinguishes it from siblings like open, close, or new document. However, it does not differentiate 'save' from potentially overlapping siblings such as revit_sync_document or revit_save_document's save_as behavior, so it falls short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a critical prerequisite: a confirm_token from a first call that changes nothing. This is useful workflow guidance, but it does not explain when to use this tool versus alternatives like revit_sync_document, nor does it mention any exclusions or contexts for saving.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_schedule_dataRead Schedule DataARead-onlyIdempotent
Read displayed schedule header and body cell text, with paging. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| max_rows | No | ||
| schedule | Yes | Exact schedule name or decimal Revit view ID. | |
| process_id | No | Revit process ID; takes precedence over document. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description goes further by disclosing that results can be partial: a non-empty skipped list means incompleteness and skippedCount aggregates all skipped entries. That is genuinely useful context an agent needs to interpret the response, though it says nothing about rate limits or how paging interacts with mutation of the underlying schedule.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The core action leads, and the incomplete-result caveat follows immediately, so the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return structure need not be re-explained, yet the description usefully annotates the skipped/skippedCount semantics. Identification of the target schedule and document/process resolution are left to the schema, which is acceptable; nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%; document and process_id carry their own descriptions (including precedence), but offset and max_rows have no schema descriptions at all. The phrase 'with paging' acknowledges that paging exists without explaining offset/max_rows semantics, so the description only partially compensates for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reading header and body cell text of a schedule, plus the paging nature of the read. It is distinguishable from siblings like revit_create_schedule, revit_view_summary, or revit_query_elements, though it never names or contrasts with any of them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the word 'displayed' (read what the schedule currently shows) and by the paging note. There is no statement of when to prefer this over sibling reads such as revit_view_info or revit_query_elements, and no exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_selectSelect ElementsAIdempotent
Select element IDs for inspection in Revit; an empty list clears the selection.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| element_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, telling the agent this mutates UI state safely and repeatably. The description usefully adds the edge case that an empty list clears the selection, but it does not clarify whether a non-empty list replaces or appends to the existing selection — a real behavioral ambiguity for a selection tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words; the action and the key edge case both land immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 params, one required), an output schema exists so return values need no explanation, and the description covers the action and the clear-on-empty edge case. The only material gap is the replace-vs-append question for the selection set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the 'document' parameter is documented in the schema, while 'element_ids' is not. The description compensates by explaining the empty-list semantics of element_ids, which is meaningful added value, but says nothing about the document parameter or the integer IDs' expected form. Baseline 3 for a partially covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Select') and resource ('element IDs') plus the purpose ('for inspection in Revit'), so the operation is unambiguous. However, it does not distinguish itself from related UI siblings like revit_show or revit_isolate, which an agent might otherwise consider for the same 'make elements visible' intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for inspection in Revit' implies the context of use (visual/UI inspection), but there is no explicit when-to-use, when-not-to-use, or named alternative (e.g. revit_isolate). Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_set_parameterSet ParameterADestructiveIdempotent
Set one instance or type parameter. parameter_id selects by BuiltInParameter name, shared GUID or ParameterElement ID; otherwise parameter takes a localized UI name, BuiltInParameter name or English alias, and ambiguous matches are refused. Value is a string, integer or number by storage type; lengths in mm, areas in m2. Group members fail with a clear message. dry_run rolls back and returns the verification block.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| parameter | Yes | ||
| element_id | Yes | ||
| parameter_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true and destructive=true, so safety is partly covered; the description adds real value beyond them by disclosing that ambiguous matches are refused, group members fail with a clear message, and dry_run rolls back and returns a verification block. It stops short of 5 because it never states that an existing parameter value is overwritten or whether the change is undoable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then packs resolution, typing/units, failure modes and dry_run into three tight sentences. Dense but every clause carries information; slightly overstuffed with semicolons rather than truly wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and annotations cover the safety profile; the description fills in the remaining behavioral gaps (ambiguity refusal, group-member failure, dry-run rollback, unit conventions). Only cross-tool routing and overwrite/undo semantics are missing, which is a minor gap for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at only 17%, the description must carry the load, and it does for the two hardest parameters: it explains the three resolution modes for parameter_id (BuiltInParameter name, shared GUID, ParameterElement ID) versus localized/alias name resolution for parameter, plus value typing and unit conventions (mm, m2). element_id and document receive no added explanation, leaving a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Set one instance or type parameter') and scopes it to a single parameter, which implicitly contrasts with the plural sibling revit_update_parameters. It does not explicitly name or differentiate itself from revit_update_parameters or revit_parameter_fill_check, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful selection logic for the 'parameter' vs 'parameter_id' arguments, but never states when to prefer this tool over sibling setters like revit_update_parameters (bulk) or revit_parameter_fill_check. Usage is implied by scope rather than stated, matching a 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_set_view_visibilitySet View VisibilityBDestructive
Change category, workset and filter visibility in one view; dry_run previews. Categories accept the Revit UI name, the BuiltInCategory name (OST_StructuralColumns), the English name or an ID.
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | ||
| dry_run | No | ||
| filters | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| worksets | No | ||
| template_mode | No | ||
| hide_categories | No | ||
| show_categories | No | ||
| category_classes | No | ||
| hide_categories_by_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered. The description adds genuinely useful context that dry_run produces a preview and that categories can be supplied in several notations. However, it is silent on the impactful template_mode enum (detach/edit_template/duplicate_view) and on what exactly is destroyed or requires a worksharing-enabled model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, zero filler, with the core action front-loaded before the dry_run and naming details. Every clause carries information an agent can use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, 10-parameter tool with 10% schema coverage, this description is materially incomplete: template_mode, filters, worksets, category_classes and hide_categories_by_type are all unexplained. An output schema exists so return values need not be covered, but the input surface is largely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 10% against 10 parameters, so the description carries the burden and falls well short. It explains accepted category notations (a real value-add for hide_categories/show_categories) but says nothing about worksets structure, category_classes, hide_categories_by_type, the filters object shape, or template_mode semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Change category, workset and filter visibility in one view'. This is concrete and scoped ('in one view'), and clearly distinct from sibling mutation tools like revit_isolate or revit_override_graphics. It stops short of explicitly naming a sibling alternative, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage hint is 'dry_run previews'. There is no guidance on when to use this tool versus revit_isolate, revit_apply_view_template, revit_override_graphics, or revit_view_info, and no exclusions or prerequisites are stated. An agent cannot infer the boundary conditions from this text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_showShow ElementsBIdempotent
Display elements in Revit, optionally selecting them; opens a level plan or 3D view when needed.
| Name | Required | Description | Default |
|---|---|---|---|
| select | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| element_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description usefully explains why it is not read-only (it opens a level plan or 3D view) but omits details such as what happens to the current selection or view focus.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core action front-loaded and secondary behaviors trailing. No wasted words, though it is arguably too terse given the gaps elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the annotations carry the safety profile. However, with 3 parameters and low description coverage, the definition does not fully equip an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only 'document' is documented), so the description must compensate. It hints at the 'select' behavior but says nothing about element_ids format or the document parameter, leaving most parameters undocumented across both sources.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (display) plus resource (elements in Revit) and clarifies the optional selection behavior and the automatic view opening. It is clear, though it does not explicitly distinguish itself from close siblings like revit_select or revit_isolate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance or named alternative. The agent is not told when to prefer this over revit_select, revit_isolate, or revit_view_elements, so routing must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_sync_documentSynchronize DocumentBDestructive
Synchronize a workshared document with central. Needs confirm_token from a first call, which changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | ||
| compact | No | ||
| document | Yes | ||
| process_id | No | ||
| relinquish | No | all | |
| confirm_token | No | ||
| save_local_after | No | ||
| save_local_before | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is partly covered. The description adds genuinely useful context beyond them: the first call is a no-op that yields a token. It still says nothing about what the destructive sync actually does (e.g., relinquish semantics or how local files are affected).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the core action is front-loaded ahead of the token caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a destructive, non-idempotent mutation with 8 fully undocumented parameters and a required confirm_token flow, this description leaves far too much unspecified for an agent to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description must compensate and largely does not. It explains only confirm_token's role; the required 'document' and 'comment' parameters, plus relinquish, compact, process_id and the save_local_before/after flags, are entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Synchronize a workshared document with central'), which is distinguishable from siblings like revit_save_document and revit_close_document. It does not explicitly name or contrast an alternative sibling, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Needs confirm_token from a first call, which changes nothing' sentence conveys a required two-phase invocation pattern, which is real procedural guidance. However, it gives no when-to-use vs alternatives (save_document, close_document) and no prerequisites such as worksharing being enabled.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_tag_elementsTag ElementsADestructive
Tag elements in a view, chosen by category names or by element IDs (exactly one of the two). Returns created tag IDs in createdElementIds; already tagged elements are skipped unless skip_tagged is false, and untaggable inputs are listed in skipped. tag_type matches a tag type name, a family name or "Family: Type"; the default tag type is used otherwise. Room tags need a plan view. dry_run rolls back and returns the tags that would be created.
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | ||
| leader | No | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| tag_type | No | ||
| categories | No | ||
| element_ids | No | ||
| orientation | No | horizontal | |
| skip_tagged | No | ||
| max_elements | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (readOnly=false, destructive=true, idempotent=false); the description goes further by disclosing that already-tagged elements are skipped by default, untaggable inputs land in 'skipped', dry_run rolls back, and an unnamed tag type falls back to the default. It omits preconditions such as needing a loaded tag family or permissions, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core operation and the exclusivity constraint before edge-case behavior. Density is high but each sentence carries distinct information; the 'Returns created tag IDs in createdElementIds' clause is mildly redundant with the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters, an output schema, and full annotation coverage, the description supplies the behavioral and semantic glue an agent needs: selection-mode exclusivity, skip/dry_run behavior, and tag-type resolution. The unaddressed leader/orientation/max_elements parameters keep it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 10%, so the description must compensate, and it does for the highest-value parameters: the categories/element_ids mutual exclusivity (not encoded in the schema), tag_type matching rules ('name', 'family', 'Family: Type'), skip_tagged, dry_run, and the plan-view requirement for view. It says nothing about leader, orientation, or max_elements, leaving ~3 parameters unexplained anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Tag elements in a view') and names the two selection modes (category names or element IDs), which is precisely what the tool does. No sibling tool in the list performs tagging, so it is inherently distinguishable without explicit sibling naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real operating constraints: exactly one of categories/element_ids, room tags require a plan view, and skip_tagged controls re-tagging. It does not name an alternative tool or state when-not-to-use, but no competing tag/annotation tool exists in the sibling set, so the gap is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_ui_stateRevit UI StateARead-onlyIdempotent
Read the active document, open views, selection and open documents. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| process_id | No | Revit process ID; takes precedence over document. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavioral context: a non-empty 'skipped' list means the result is incomplete, and skippedCount totals all skipped entries — a partial-result caveat not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the core purpose is front-loaded in the opening verb+resource clause. Slightly terse and unsegmented, but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value structure need not be explained, and annotations cover the safety profile. The description still supplies the one thing an agent needs to interpret a partial response correctly (the skipped/skippedCount meaning), making it essentially complete for a single-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (process_id) and schema description coverage is 100%, so the schema already documents it including its precedence over 'document'. The description does not mention process_id at all, so it adds nothing on parameters; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') with a concrete resource set: active document, open views, selection, and open documents. It is distinguishable from narrower siblings like revit_document_info or revit_list_views, though it never names those siblings to clarify the overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The description never says when to prefer this aggregate UI-state read over revit_document_info, revit_list_views, or revit_view_summary, nor any exclusion condition. The agent must infer the use case from the resource list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_undo_lastUndo Last ActionADestructive
Undo the last MCP action through Revit's own undo command. Runs only when the target document is active, no command is pending and Revit's last undo entry is the one this session recorded; otherwise the result carries a refusal reason.
| Name | Required | Description | Default |
|---|---|---|---|
| document | No | Title or file name substring of the target open document; needed when several are open. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotent, but the description adds non-obvious behavior: the undo only targets entries this session recorded, and failures return a refusal rather than erroring. That scoping constraint is real added value beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the verb and resource before the precondition clause. Efficient, though the clause list is packed and could be marginally easier to scan as separate sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile and an output schema covering returns, the description supplies the remaining important context: preconditions and refusal semantics. Undo scope limitations are disclosed adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One optional parameter with 100% schema description coverage, so the schema fully documents the document selector. The description adds nothing about parameter usage, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Undo') and resource ('the last MCP action'), plus the mechanism ('through Revit's own undo command'). This is clearly distinguishable from siblings like revit_delete or revit_execute_code, which are not session-scoped single-step reversals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the conditions under which it runs (active document, no pending command, matching undo entry) and that failures surface a refusal reason, which tells the agent when the call is viable. It stops short of naming an alternative route (e.g. execute_code) when the preconditions fail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_update_parametersUpdate ParametersADestructive
Update a parameter on elements matching the same filters as revit_query_elements. Group members are reported in skipped.inGroup instead of failing the call; dry_run predicts this.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| dry_run | No | ||
| filters | Yes | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| parameter | Yes | ||
| max_elements | No | ||
| parameter_id | No | ||
| include_type_parameters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, so the mutation profile is covered. The description adds real value beyond that: group members are reported in skipped.inGroup rather than failing the call (partial-failure semantics), and dry_run predicts the outcome. It omits scope/limits detail such as the max_elements cap, but the failure-handling disclosure is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with zero filler, and the core action plus the query_elements filter reference is front-loaded. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the skipped.inGroup behavior is covered. However, for a destructive batch update touching up to 20000 elements with 8 mostly undocumented parameters, the description leaves scope limits, parameter_id, and include_type_parameters unexplained, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13% (effectively just 'document'), and 8 parameters exist. The description names filters, dry_run, parameter and value only in passing, leaving max_elements, parameter_id, include_type_parameters and the accepted value types undocumented in both description and schema. It does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Update) and resource (a parameter on elements) and anchors the filter semantics to the sibling revit_query_elements. It does not, however, distinguish itself from revit_set_parameter, which appears in the sibling list and is the most likely source of agent confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies a workflow by pointing to revit_query_elements for filter behavior and mentions dry_run as a preview, which is genuinely useful guidance. But there is no explicit when-to-use / when-not-to-use statement, and the relationship to revit_set_parameter or revit_parameter_fill_check is left for the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_view_elementsView ElementsARead-onlyIdempotent
Read one page of elements in a selected view, with IDs, category, family, type, level and measurements (mm, m2, m3). A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | Exact non-template view name from revit_list_views, or a view ID as a decimal string. | |
| limit | No | ||
| offset | No | ||
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| categories | No | ||
| process_id | No | Revit process ID; takes precedence over document. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: results are paged, a non-empty skipped list signals incompleteness, and skippedCount counts all skipped entries. It stops short of stating what causes entries to be skipped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero padding, with the core operation stated first and the caveat about incomplete results following. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-field explanations are not required, yet the description still clarifies the skipped/skippedCount semantics. Combined with the view-scoped fields and pagination note, an agent has enough to invoke it correctly; the only gap is filtering semantics for categories and view scoping.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 63%, so several parameters (limit, offset, categories) carry no description there. The description compensates partially by implying pagination ("one page") and giving measurement units, but it does not explain what 'categories' filters or the meaning of limit/offset defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ("Read one page of elements in a selected view") plus an enumeration of returned fields (IDs, category, family, type, level, measurements). Clear on its own, but it never distinguishes itself from overlapping siblings such as revit_query_elements, revit_capture_elements, or revit_element_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance. With many similar read tools in the catalog (query_elements, aggregate_elements, capture_elements, element_details), the agent gets no signal about why it should pick this one for per-view element listing rather than those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_view_infoView InfoARead-onlyIdempotent
Inspect one view's template, display, categories, worksets, filters and links. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | Exact non-template view name from revit_list_views, or a view ID as a decimal string. | |
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only, idempotent, non-destructive behavior, so the description only needs to add what they don't cover. It does exactly that by explaining the skipped-list contract: a non-empty skipped list means the result is incomplete and skippedCount tallies all skipped entries. No permission, timing, or failure-mode context beyond that, but the important caveat is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero filler, and the capability statement is front-loaded ahead of the result-caveat sentence. Nothing repeats the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it still adds the skipped/skippedCount caveat that clarifies result completeness. Only the absence of any relationship to the overlapping view-inspection siblings keeps it short of full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all five parameters (view, document, process_id, timeout_seconds, pickup_timeout_seconds) are described in the schema, including precedence between process_id and document. The description adds no parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names a specific verb and resource ('Inspect one view's') and enumerates exactly what facets are returned: template, display, categories, worksets, filters and links. It never differentiates itself from the sibling revit_view_summary, so an agent must infer which inspector to pick, but the scope is otherwise unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no reference to alternatives, even though revit_view_summary, revit_view_elements, revit_view_warnings and revit_list_views all overlap in the view-inspection space. The only routing hint ('from revit_list_views') lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_view_summaryView SummaryARead-onlyIdempotent
Read element categories and counts for a selected view. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | Exact non-template view name from revit_list_views, or a view ID as a decimal string. | |
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful behavioral context about result completeness (non-empty skipped list implies incomplete results, skippedCount semantics), which is valuable beyond the annotations. However, it doesn't describe auth needs, rate limits, or the shape of the primary result (only the skipped-list caveat).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The main purpose is front-loaded, and the completeness caveat about skipped lists follows immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a 5-parameter schema, an output schema present, and full annotation coverage, the description only needs to clarify the result semantics. It does so for the skipped-list case, which is the subtle part an agent needs to interpret the output correctly. It could be stronger by noting alternatives, but is close to complete given the structured fields carry the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the schema with meaning (view name/ID format, document substring, process_id precedence, timeouts). The description adds no parameter-level semantics beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('element categories and counts') scoped to a selected view. An agent can immediately tell this is a per-view category breakdown, distinct from siblings like revit_view_info or revit_view_elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description (read category counts for a view), but there is no explicit when-to-use guidance, no mention of alternatives (e.g., revit_view_elements for individual elements, revit_model_snapshot for the whole model), and no prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_view_warningsView WarningsARead-onlyIdempotent
Read warnings involving elements present in a selected view. A warning may also involve elements outside the view. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | Exact non-template view name from revit_list_views, or a view ID as a decimal string. | |
| document | No | Title or file name substring of the target document; needed when several Revit instances run. | |
| process_id | No | Revit process ID; takes precedence over document. | |
| timeout_seconds | No | Seconds to wait for a result (default 120). | |
| pickup_timeout_seconds | No | Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/no-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context the annotations cannot: that a warning may reference elements outside the requested view, and that a non-empty 'skipped' list signals an incomplete result. These caveats materially affect how an agent interprets the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and scope, then the two interpretation caveats. Every sentence carries information; minor telegraphing ('skipped list', 'skippedCount') assumes prior knowledge of the output shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be enumerated, and all five parameters are documented in the schema. With annotations covering safety and the description covering the view-scope caveat and incompleteness signal, an agent has enough to call it correctly; only the sibling routing is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (view, document, process_id, timeouts are all documented inline), so the baseline is 3. The description adds no parameter-level detail; its 'skipped list'/'skippedCount' references describe output fields, not inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Read warnings') plus a clear scope qualifier ('involving elements present in a selected view'). It implicitly distinguishes itself from revit_list_warnings by scoping to a view, but it never names that sibling, so an agent must infer the difference between the two warning tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The view-scoped framing implies when this tool is appropriate relative to a model-wide warning query, but there is no explicit when-to-use/when-not statement and no mention of the obvious alternative revit_list_warnings. Usage is inferable, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revit_walls_from_cadBuild Walls from CADBDestructive
Bridge openings, pair parallel CAD lines and join basic walls in one undo entry. Dimensions are mm. Joins Revit rejects are left out and reported as unjoinedEnds with unjoinedReasons; dry_run reports the same join numbers.
| Name | Required | Description | Default |
|---|---|---|---|
| join | No | ||
| level | Yes | ||
| cad_id | Yes | ||
| layers | Yes | ||
| dry_run | No | ||
| document | No | Title or file name substring of the target open document; needed when several are open. | |
| height_mm | No | ||
| wall_type | No | ||
| max_gap_mm | No | ||
| min_length_mm | No | ||
| timeout_seconds | No | ||
| max_thickness_mm | No | ||
| min_thickness_mm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and non-idempotent, and the description adds genuine value beyond them: it states the operation is a single undo entry, that Revit-rejected joins are omitted and surfaced as unjoinedEnds/unjoinedReasons, and that dry_run returns the same join numbers. This discloses failure handling and reversibility granularity not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two to three front-loaded sentences: the action leads, followed by unit convention and error/dry-run behavior. Compact and mostly waste-free, though the geometric jargon is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the description usefully covers undo scope and rejected-join reporting. However, for a 13-parameter mutation tool with 8% schema coverage, the near-total absence of parameter documentation leaves a substantial gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 8%, so the description carries the burden, yet it explains almost nothing. It gives only the global unit convention ('Dimensions are mm') and the dry_run behavior, leaving 13 parameters including layers, cad_id, level, wall_type, max_gap_mm, min/max thickness and height unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name/title plus 'pair parallel CAD lines and join basic walls' make it clear this builds Revit walls from CAD geometry. The mechanical verb phrasing is a bit jargon-heavy, and it does not explicitly differentiate itself from the sibling revit_create_wall, but the action is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or named alternative versus revit_create_wall or revit_link_cad. The mention that dry_run 'reports the same join numbers' faintly implies a preview-first workflow, but no real usage routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
80 tool updates
v0.10.0- Changed
revit_activate_document4 fields changed- removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / titleRemoved value: -"revit_activate_documentArguments" - removed
Output schema / titleRemoved value: -"revit_activate_documentDictOutput"
- Changed
revit_activate_view8 fields changed- removed
Input schema / properties / activate_document / titleRemoved value: -"Activate Document" - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / properties / view_type / titleRemoved value: -"View Type" - removed
Input schema / properties / zoom / titleRemoved value: -"Zoom" - removed
Input schema / titleRemoved value: -"revit_activate_viewArguments" - removed
Output schema / titleRemoved value: -"revit_activate_viewDictOutput"
- Changed
revit_aggregate_elements29 fields changed- changed
Input schema / properties / area_scheme / descriptionPrevious value: -"Exact area-scheme name from the area-schemes catalog, matched case-insensitively. Default null applies no scheme filter; selecting a scheme restricts results to its areas and combines with the other filters."New value: +"Exact area-scheme name, case-insensitive." - removed
Input schema / properties / area_scheme / titleRemoved value: -"Area Scheme" - removed
Input schema / properties / categories / titleRemoved value: -"Categories" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / family / titleRemoved value: -"Family" - changed
Input schema / properties / group_by / descriptionPrevious value: -"Required list of one or two distinct system fields (e.g. category, family, type, level) or exact localized parameter names from the catalog; no default. Each combination produces a count, with numeric totals added by sum_field."New value: +"One or two distinct fields (e.g. category, family, type, level) or exact localized parameter names." - added
Input schema / properties / group_by / maxItemsAdded value: +2 - added
Input schema / properties / group_by / minItemsAdded value: +1 - removed
Input schema / properties / group_by / titleRemoved value: -"Group By" - removed
Input schema / properties / level / titleRemoved value: -"Level" - changed
Input schema / properties / parameter_filters / descriptionPrevious value: -"AND-combined objects with an exact localized parameter name in parameter, an operator (equals, contains, greater, less, empty, not-empty, exists), and value for comparisons; default null applies no parameter filters. Numeric values use mm, m2, m3 or other document display units; contains requires text, and empty/not-empty/exists need no value."New value: +"AND-combined filters: parameter (exact localized name), operator (equals, contains, greater, less, empty, not-empty, exists) and value. Numbers use mm, m2, m3 or display units." - removed
Input schema / properties / parameter_filters / titleRemoved value: -"Parameter Filters" - removed
Input schema / properties / phase / titleRemoved value: -"Phase" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / sum_field / descriptionPrevious value: -"Numeric system field or exact localized parameter name to sum and average within each group. Default null omits numeric aggregation; lengths use mm, areas m2, volumes m3, and other quantities use the returned unit."New value: +"Numeric field or parameter name to sum and average per group; lengths in mm, areas m2, volumes m3." - removed
Input schema / properties / sum_field / titleRemoved value: -"Sum Field" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - changed
Input schema / properties / type_name / descriptionPrevious value: -"Exact type name to match, case-insensitively, combined with the other model filters. Default null applies no type filter; discover names with the family-types catalog."New value: +"Exact type name, case-insensitive." - removed
Input schema / properties / type_name / titleRemoved value: -"Type Name" - changed
Input schema / properties / view / descriptionPrevious value: -"Exact non-template view name from the views catalog, matched case-insensitively, to restrict the element collector. Default null searches the document without a view filter; combines with the other model filters."New value: +"Exact non-template view name; limits the search to that view." - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / properties / workset / titleRemoved value: -"Workset" - removed
Input schema / titleRemoved value: -"revit_aggregate_elementsArguments" - removed
Output schema / titleRemoved value: -"revit_aggregate_elementsDictOutput"
- Changed
revit_align_link_datums21 fields changed- removed
Input schema / properties / create_missing / titleRemoved value: -"Create Missing" - removed
Input schema / properties / create_plan_views / titleRemoved value: -"Create Plan Views" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / grid_type / titleRemoved value: -"Grid Type" - removed
Input schema / properties / include_pinned / titleRemoved value: -"Include Pinned" - removed
Input schema / properties / kinds / titleRemoved value: -"Kinds" - removed
Input schema / properties / level_offset_mm / titleRemoved value: -"Level Offset Mm" - removed
Input schema / properties / level_type / titleRemoved value: -"Level Type" - removed
Input schema / properties / link / titleRemoved value: -"Link" - removed
Input schema / properties / name_map / titleRemoved value: -"Name Map" - removed
Input schema / properties / plan_view_type / titleRemoved value: -"Plan View Type" - removed
Input schema / properties / prefix / titleRemoved value: -"Prefix" - removed
Input schema / properties / response_timeout_sRemoved value: -{ - "default": 600, - "maximum": 3600, - "minimum": 30, - "title": "Response Timeout S", - "type": "integer" -} - removed
Input schema / properties / reuse_matching / titleRemoved value: -"Reuse Matching" - removed
Input schema / properties / suffix / titleRemoved value: -"Suffix" - added
Input schema / properties / timeout_secondsAdded value: +{ + "default": 600, + "maximum": 3600, + "minimum": 30, + "type": "integer" +} - removed
Input schema / properties / tolerance_mm / titleRemoved value: -"Tolerance Mm" - removed
Input schema / titleRemoved value: -"revit_align_link_datumsArguments" - removed
Output schema / titleRemoved value: -"revit_align_link_datumsDictOutput"
- Changed
revit_apply_view_template7 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / template / titleRemoved value: -"Template" - removed
Input schema / properties / views / titleRemoved value: -"Views" - removed
Input schema / titleRemoved value: -"revit_apply_view_templateArguments" - removed
Output schema / titleRemoved value: -"revit_apply_view_templateDictOutput"
- Removed
revit_batch - Changed
revit_batch_cancel3 fields changed- removed
Input schema / properties / run_id / titleRemoved value: -"Run Id" - removed
Input schema / titleRemoved value: -"revit_batch_cancelArguments" - removed
Output schema / titleRemoved value: -"revit_batch_cancelDictOutput"
- Changed
revit_batch_fetch6 fields changed- removed
Input schema / properties / dest_dirRemoved value: -{ - "title": "Dest Dir", - "type": "string" -} - added
Input schema / properties / output_dirAdded value: +{ + "type": "string" +} - removed
Input schema / properties / run_id / titleRemoved value: -"Run Id" - changed
Input schema / requiredPrevious value: -[ - "run_id", - "dest_dir" -]New value: +[ + "run_id", + "output_dir" +] - removed
Input schema / titleRemoved value: -"revit_batch_fetchArguments" - removed
Output schema / titleRemoved value: -"revit_batch_fetchDictOutput"
- Changed
revit_batch_start8 fields changed- removed
Input schema / properties / folder / titleRemoved value: -"Folder" - removed
Input schema / properties / open_timeout_minutes / titleRemoved value: -"Open Timeout Minutes" - removed
Input schema / properties / parameter_rules / titleRemoved value: -"Parameter Rules" - removed
Input schema / properties / paths / titleRemoved value: -"Paths" - removed
Input schema / properties / recursive / titleRemoved value: -"Recursive" - removed
Input schema / properties / years / titleRemoved value: -"Years" - removed
Input schema / titleRemoved value: -"revit_batch_startArguments" - removed
Output schema / titleRemoved value: -"revit_batch_startDictOutput"
- Changed
revit_batch_status3 fields changed- removed
Input schema / properties / run_id / titleRemoved value: -"Run Id" - removed
Input schema / titleRemoved value: -"revit_batch_statusArguments" - removed
Output schema / titleRemoved value: -"revit_batch_statusDictOutput"
- Changed
revit_build_report6 fields changed- removed
Input schema / properties / findings / titleRemoved value: -"Findings" - removed
Input schema / properties / output_path / titleRemoved value: -"Output Path" - removed
Input schema / properties / previous_dir / titleRemoved value: -"Previous Dir" - removed
Input schema / properties / snapshots_dir / titleRemoved value: -"Snapshots Dir" - removed
Input schema / titleRemoved value: -"revit_build_reportArguments" - removed
Output schema / titleRemoved value: -"revit_build_reportDictOutput"
- Changed
revit_cancel_job6 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / job_id / titleRemoved value: -"Job Id" - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / titleRemoved value: -"revit_cancel_jobArguments" - removed
Output schema / titleRemoved value: -"revit_cancel_jobDictOutput"
- Changed
revit_capture_elements13 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - added
Input schema / properties / output_pathAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "New PNG path on the MCP client machine; an existing file is an error. Default null downloads to a temporary directory and returns localPath." +} - removed
Input schema / properties / padding_mm / titleRemoved value: -"Padding Mm" - changed
Input schema / properties / pixel_size / descriptionPrevious value: -"PNG size in pixels along the fitted image dimension, an integer from 1 to 4000. Default 1600 fits the view at that size while preserving its aspect ratio."New value: +"PNG size in pixels along the fitted dimension, 32 to 4000 (default 1600); Revit rejects smaller images." - changed
Input schema / properties / pixel_size / minimumPrevious value: -1New value: +32 - removed
Input schema / properties / pixel_size / titleRemoved value: -"Pixel Size" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / save_toRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "New PNG file path on the MCP client machine, not the Revit host; an existing destination causes an error. Default null downloads to a local temporary directory and returns localPath.", - "title": "Save To" -} - removed
Input schema / titleRemoved value: -"revit_capture_elementsArguments"
- Changed
revit_change_type8 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / properties / family / titleRemoved value: -"Family" - removed
Input schema / properties / type_name / titleRemoved value: -"Type Name" - removed
Input schema / titleRemoved value: -"revit_change_typeArguments" - removed
Output schema / titleRemoved value: -"revit_change_typeDictOutput"
- Changed
revit_close_document6 fields changed- removed
Input schema / properties / confirm_token / titleRemoved value: -"Confirm Token" - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / save / titleRemoved value: -"Save" - removed
Input schema / titleRemoved value: -"revit_close_documentArguments" - removed
Output schema / titleRemoved value: -"revit_close_documentDictOutput"
- Changed
revit_close_views5 fields changed- removed
Input schema / properties / keep_active / titleRemoved value: -"Keep Active" - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / views / titleRemoved value: -"Views" - removed
Input schema / titleRemoved value: -"revit_close_viewsArguments" - removed
Output schema / titleRemoved value: -"revit_close_viewsDictOutput"
- Changed
revit_compare_link_datums18 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / kinds / titleRemoved value: -"Kinds" - removed
Input schema / properties / level_offset_mm / titleRemoved value: -"Level Offset Mm" - removed
Input schema / properties / link / titleRemoved value: -"Link" - removed
Input schema / properties / name_map / titleRemoved value: -"Name Map" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - removed
Input schema / properties / prefix / titleRemoved value: -"Prefix" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / reuse_matching / titleRemoved value: -"Reuse Matching" - removed
Input schema / properties / suffix / titleRemoved value: -"Suffix" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / properties / tolerance_mm / titleRemoved value: -"Tolerance Mm" - removed
Input schema / titleRemoved value: -"revit_compare_link_datumsArguments" - removed
Output schema / titleRemoved value: -"revit_compare_link_datumsDictOutput"
- Changed
revit_copy10 fields changed- removed
Input schema / properties / count / titleRemoved value: -"Count" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / dx_mm / titleRemoved value: -"Dx Mm" - removed
Input schema / properties / dy_mm / titleRemoved value: -"Dy Mm" - removed
Input schema / properties / dz_mm / titleRemoved value: -"Dz Mm" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / titleRemoved value: -"revit_copyArguments" - removed
Output schema / titleRemoved value: -"revit_copyDictOutput"
- Changed
revit_create_mep_run15 fields changed- removed
Input schema / properties / connect_to / titleRemoved value: -"Connect To" - removed
Input schema / properties / diameter_mm / titleRemoved value: -"Diameter Mm" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / height_mm / titleRemoved value: -"Height Mm" - removed
Input schema / properties / kind / titleRemoved value: -"Kind" - removed
Input schema / properties / level / titleRemoved value: -"Level" - removed
Input schema / properties / offset_mm / titleRemoved value: -"Offset Mm" - removed
Input schema / properties / points_mm / titleRemoved value: -"Points Mm" - removed
Input schema / properties / system_type / titleRemoved value: -"System Type" - removed
Input schema / properties / type_name / titleRemoved value: -"Type Name" - removed
Input schema / properties / width_mm / titleRemoved value: -"Width Mm" - removed
Input schema / titleRemoved value: -"revit_create_mep_runArguments" - removed
Output schema / titleRemoved value: -"revit_create_mep_runDictOutput"
- Added
revit_create_schedule - Changed
revit_create_sheet8 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / name / titleRemoved value: -"Name" - removed
Input schema / properties / number / titleRemoved value: -"Number" - removed
Input schema / properties / title_block / titleRemoved value: -"Title Block" - removed
Input schema / titleRemoved value: -"revit_create_sheetArguments" - removed
Output schema / titleRemoved value: -"revit_create_sheetDictOutput"
- Changed
revit_create_view17 fields changed- removed
Input schema / $defs / ViewBox / properties / max_mm / titleRemoved value: -"Max Mm" - removed
Input schema / $defs / ViewBox / properties / min_mm / titleRemoved value: -"Min Mm" - removed
Input schema / $defs / ViewBox / titleRemoved value: -"ViewBox" - removed
Input schema / properties / detail_level / titleRemoved value: -"Detail Level" - removed
Input schema / properties / display_style / titleRemoved value: -"Display Style" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / properties / kind / titleRemoved value: -"Kind" - removed
Input schema / properties / level / titleRemoved value: -"Level" - removed
Input schema / properties / name / titleRemoved value: -"Name" - removed
Input schema / properties / scale / titleRemoved value: -"Scale" - removed
Input schema / properties / template / titleRemoved value: -"Template" - removed
Input schema / properties / view_family_type / titleRemoved value: -"View Family Type" - removed
Input schema / titleRemoved value: -"revit_create_viewArguments" - removed
Output schema / titleRemoved value: -"revit_create_viewDictOutput"
- Changed
revit_create_wall10 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / end_mm / titleRemoved value: -"End Mm" - removed
Input schema / properties / height_mm / titleRemoved value: -"Height Mm" - removed
Input schema / properties / level / titleRemoved value: -"Level" - removed
Input schema / properties / start_mm / titleRemoved value: -"Start Mm" - removed
Input schema / properties / wall_type / titleRemoved value: -"Wall Type" - removed
Input schema / titleRemoved value: -"revit_create_wallArguments" - removed
Output schema / titleRemoved value: -"revit_create_wallDictOutput"
- Changed
revit_delete7 fields changed- removed
Input schema / properties / confirm_token / titleRemoved value: -"Confirm Token" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / titleRemoved value: -"revit_deleteArguments" - removed
Output schema / titleRemoved value: -"revit_deleteDictOutput"
- Changed
revit_document_info10 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / titleRemoved value: -"revit_document_infoArguments" - removed
Output schema / titleRemoved value: -"revit_document_infoDictOutput"
- Changed
revit_documents11 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / include_linked / titleRemoved value: -"Include Linked" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / titleRemoved value: -"revit_documentsArguments" - removed
Output schema / titleRemoved value: -"revit_documentsDictOutput"
- Changed
revit_duplicate_view8 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - removed
Input schema / properties / name / titleRemoved value: -"Name" - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / titleRemoved value: -"revit_duplicate_viewArguments" - removed
Output schema / titleRemoved value: -"revit_duplicate_viewDictOutput"
- Changed
revit_edit_families30 fields changed- removed
Input schema / $defs / AddSharedParameters / properties / op / titleRemoved value: -"Op" - removed
Input schema / $defs / AddSharedParameters / properties / parameters / titleRemoved value: -"Parameters" - removed
Input schema / $defs / AddSharedParameters / properties / replace_family_parameter / titleRemoved value: -"Replace Family Parameter" - removed
Input schema / $defs / AddSharedParameters / properties / shared_parameter_file / titleRemoved value: -"Shared Parameter File" - removed
Input schema / $defs / AddSharedParameters / titleRemoved value: -"AddSharedParameters" - removed
Input schema / $defs / Purge / properties / op / titleRemoved value: -"Op" - removed
Input schema / $defs / Purge / titleRemoved value: -"Purge" - removed
Input schema / $defs / RemoveParameters / properties / include_shared / titleRemoved value: -"Include Shared" - removed
Input schema / $defs / RemoveParameters / properties / names / titleRemoved value: -"Names" - removed
Input schema / $defs / RemoveParameters / properties / op / titleRemoved value: -"Op" - removed
Input schema / $defs / RemoveParameters / titleRemoved value: -"RemoveParameters" - removed
Input schema / $defs / SetShared / properties / op / titleRemoved value: -"Op" - removed
Input schema / $defs / SetShared / properties / shared / titleRemoved value: -"Shared" - removed
Input schema / $defs / SetShared / titleRemoved value: -"SetShared" - removed
Input schema / $defs / SharedParameter / properties / group / titleRemoved value: -"Group" - removed
Input schema / $defs / SharedParameter / properties / guid / titleRemoved value: -"Guid" - removed
Input schema / $defs / SharedParameter / properties / instance / titleRemoved value: -"Instance" - removed
Input schema / $defs / SharedParameter / properties / name / titleRemoved value: -"Name" - removed
Input schema / $defs / SharedParameter / titleRemoved value: -"SharedParameter" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / families / titleRemoved value: -"Families" - removed
Input schema / properties / operations / titleRemoved value: -"Operations" - removed
Input schema / properties / overwrite_parameter_values / titleRemoved value: -"Overwrite Parameter Values" - removed
Input schema / properties / response_timeout_sRemoved value: -{ - "default": 1800, - "maximum": 3600, - "minimum": 30, - "title": "Response Timeout S", - "type": "integer" -} - removed
Input schema / properties / stop_on_error / titleRemoved value: -"Stop On Error" - added
Input schema / properties / timeout_secondsAdded value: +{ + "default": 1800, + "maximum": 3600, + "minimum": 30, + "type": "integer" +} - removed
Input schema / titleRemoved value: -"revit_edit_familiesArguments" - removed
Output schema / titleRemoved value: -"revit_edit_familiesDictOutput"
- Changed
revit_element_details13 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / element_id / descriptionPrevious value: -"Required positive integer Revit element ID from revit_query_elements or revit_view_elements; no default. The ID must exist in the target document."New value: +"Revit element ID from revit_query_elements or revit_view_elements." - added
Input schema / properties / element_id / minimumAdded value: +1 - removed
Input schema / properties / element_id / titleRemoved value: -"Element Id" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / titleRemoved value: -"revit_element_detailsArguments" - removed
Output schema / titleRemoved value: -"revit_element_detailsDictOutput"
- Changed
revit_execute_code10 fields changed- removed
Input schema / properties / code / titleRemoved value: -"Code" - removed
Input schema / properties / confirm_token / titleRemoved value: -"Confirm Token" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / response_timeout_sRemoved value: -{ - "default": 600, - "maximum": 3600, - "minimum": 30, - "title": "Response Timeout S", - "type": "integer" -} - added
Input schema / properties / timeout_secondsAdded value: +{ + "default": 600, + "maximum": 3600, + "minimum": 30, + "type": "integer" +} - removed
Input schema / properties / transaction / titleRemoved value: -"Transaction" - removed
Input schema / titleRemoved value: -"revit_execute_codeArguments" - removed
Output schema / titleRemoved value: -"revit_execute_codeDictOutput"
- Changed
revit_export17 fields changed- removed
Input schema / properties / all_sheets / titleRemoved value: -"All Sheets" - removed
Input schema / properties / confirm_token / titleRemoved value: -"Confirm Token" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / folderRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Folder" -} - removed
Input schema / properties / format / titleRemoved value: -"Format" - removed
Input schema / properties / options / titleRemoved value: -"Options" - added
Input schema / properties / output_dirAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - removed
Input schema / properties / overwrite / titleRemoved value: -"Overwrite" - removed
Input schema / properties / response_timeout_sRemoved value: -{ - "default": 1800, - "maximum": 3600, - "minimum": 30, - "title": "Response Timeout S", - "type": "integer" -} - removed
Input schema / properties / sheet_set / titleRemoved value: -"Sheet Set" - removed
Input schema / properties / sheets / titleRemoved value: -"Sheets" - added
Input schema / properties / timeout_secondsAdded value: +{ + "default": 1800, + "maximum": 3600, + "minimum": 30, + "type": "integer" +} - removed
Input schema / properties / views / titleRemoved value: -"Views" - removed
Input schema / titleRemoved value: -"revit_exportArguments" - removed
Output schema / titleRemoved value: -"revit_exportDictOutput"
- Changed
revit_export_nwc28 fields changed- removed
Input schema / properties / confirm_token / titleRemoved value: -"Confirm Token" - removed
Input schema / properties / convert_element_properties / titleRemoved value: -"Convert Element Properties" - removed
Input schema / properties / convert_lights / titleRemoved value: -"Convert Lights" - removed
Input schema / properties / convert_linked_cad_formats / titleRemoved value: -"Convert Linked Cad Formats" - removed
Input schema / properties / coordinates / titleRemoved value: -"Coordinates" - removed
Input schema / properties / divide_file_into_levels / titleRemoved value: -"Divide File Into Levels" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / properties / export_element_ids / titleRemoved value: -"Export Element Ids" - removed
Input schema / properties / export_links / titleRemoved value: -"Export Links" - removed
Input schema / properties / export_parts / titleRemoved value: -"Export Parts" - removed
Input schema / properties / export_room_as_attribute / titleRemoved value: -"Export Room As Attribute" - removed
Input schema / properties / export_room_geometry / titleRemoved value: -"Export Room Geometry" - removed
Input schema / properties / export_urls / titleRemoved value: -"Export Urls" - removed
Input schema / properties / faceting_factor / titleRemoved value: -"Faceting Factor" - removed
Input schema / properties / find_missing_materials / titleRemoved value: -"Find Missing Materials" - removed
Input schema / properties / overwrite / titleRemoved value: -"Overwrite" - removed
Input schema / properties / parameters / titleRemoved value: -"Parameters" - removed
Input schema / properties / path / titleRemoved value: -"Path" - removed
Input schema / properties / response_timeout_sRemoved value: -{ - "default": 1800, - "maximum": 3600, - "minimum": 30, - "title": "Response Timeout S", - "type": "integer" -} - removed
Input schema / properties / scope / titleRemoved value: -"Scope" - removed
Input schema / properties / settings_xml / titleRemoved value: -"Settings Xml" - added
Input schema / properties / timeout_secondsAdded value: +{ + "default": 1800, + "maximum": 3600, + "minimum": 30, + "type": "integer" +} - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / titleRemoved value: -"revit_export_nwcArguments" - removed
Output schema / titleRemoved value: -"revit_export_nwcDictOutput"
- Changed
revit_export_view13 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - added
Input schema / properties / output_pathAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "New PNG path on the MCP client machine; an existing file is an error. Default null downloads to a temporary directory and returns localPath." +} - changed
Input schema / properties / pixel_size / descriptionPrevious value: -"PNG size in pixels along the fitted image dimension, an integer from 1 to 4000. Default 1600 fits the view at that size while preserving its aspect ratio."New value: +"PNG size in pixels along the fitted dimension, 32 to 4000 (default 1600); Revit rejects smaller images." - changed
Input schema / properties / pixel_size / minimumPrevious value: -1New value: +32 - removed
Input schema / properties / pixel_size / titleRemoved value: -"Pixel Size" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / save_toRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "New PNG file path on the MCP client machine, not the Revit host; an existing destination causes an error. Default null downloads to a local temporary directory and returns localPath.", - "title": "Save To" -} - changed
Input schema / properties / view / descriptionPrevious value: -"Required exact, case-sensitive non-template view name from revit_list_views, or its Revit view ID as a decimal string; no default. An exact name takes precedence over interpreting a numeric string as an ID."New value: +"Exact non-template view name from revit_list_views, or a view ID as a decimal string." - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / titleRemoved value: -"revit_export_viewArguments" - removed
Output schema / titleRemoved value: -"revit_export_viewDictOutput"
- Changed
revit_family_audit9 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / families / titleRemoved value: -"Families" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / response_timeout_sRemoved value: -{ - "default": 600, - "maximum": 3600, - "minimum": 30, - "title": "Response Timeout S", - "type": "integer" -} - added
Input schema / properties / timeout_secondsAdded value: +{ + "default": 600, + "maximum": 3600, + "minimum": 30, + "type": "integer" +} - removed
Input schema / titleRemoved value: -"revit_family_auditArguments" - removed
Output schema / titleRemoved value: -"revit_family_auditDictOutput"
- Changed
revit_isolate6 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / properties / reset / titleRemoved value: -"Reset" - removed
Input schema / titleRemoved value: -"revit_isolateArguments" - removed
Output schema / titleRemoved value: -"revit_isolateDictOutput"
- Changed
revit_issue_register12 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / issues / titleRemoved value: -"Issues" - removed
Input schema / properties / output_path / titleRemoved value: -"Output Path" - changed
Input schema / properties / pixel_size / descriptionPrevious value: -"PNG size in pixels along the fitted image dimension, an integer from 1 to 4000. Default 1600 fits the view at that size while preserving its aspect ratio."New value: +"PNG size in pixels along the fitted dimension, 32 to 4000 (default 1600); Revit rejects smaller images." - changed
Input schema / properties / pixel_size / minimumPrevious value: -1New value: +32 - removed
Input schema / properties / pixel_size / titleRemoved value: -"Pixel Size" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / project / titleRemoved value: -"Project" - removed
Input schema / titleRemoved value: -"revit_issue_registerArguments" - removed
Output schema / titleRemoved value: -"revit_issue_registerDictOutput"
- Changed
revit_jobs14 fields changed- removed
Input schema / properties / cancel_job_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Cancel Job Id" -} - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / job_id / titleRemoved value: -"Job Id" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / properties / wait_sRemoved value: -{ - "default": 40, - "description": "Seconds to wait, 0 through 50.", - "maximum": 50, - "minimum": 0, - "title": "Wait S", - "type": "integer" -} - added
Input schema / properties / wait_secondsAdded value: +{ + "default": 40, + "description": "Seconds to wait, 0 through 50.", + "maximum": 50, + "minimum": 0, + "type": "integer" +} - removed
Input schema / titleRemoved value: -"revit_jobsArguments" - removed
Output schema / titleRemoved value: -"revit_jobsDictOutput"
- Changed
revit_link_cad14 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / layers / titleRemoved value: -"Layers" - removed
Input schema / properties / level / titleRemoved value: -"Level" - removed
Input schema / properties / link / titleRemoved value: -"Link" - removed
Input schema / properties / origin / titleRemoved value: -"Origin" - removed
Input schema / properties / path / titleRemoved value: -"Path" - removed
Input schema / properties / response_timeout_sRemoved value: -{ - "default": 600, - "maximum": 3600, - "minimum": 30, - "title": "Response Timeout S", - "type": "integer" -} - added
Input schema / properties / timeout_secondsAdded value: +{ + "default": 600, + "maximum": 3600, + "minimum": 30, + "type": "integer" +} - removed
Input schema / properties / units / titleRemoved value: -"Units" - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / titleRemoved value: -"revit_link_cadArguments" - removed
Output schema / titleRemoved value: -"revit_link_cadDictOutput"
- Changed
revit_links_status10 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / titleRemoved value: -"revit_links_statusArguments" - removed
Output schema / titleRemoved value: -"revit_links_statusDictOutput"
- Changed
revit_list_catalog11 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / section / titleRemoved value: -"Section" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / titleRemoved value: -"revit_list_catalogArguments" - removed
Output schema / titleRemoved value: -"revit_list_catalogDictOutput"
- Changed
revit_list_instances4 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / titleRemoved value: -"revit_list_instancesArguments" - removed
Output schema / titleRemoved value: -"revit_list_instancesDictOutput"
- Changed
revit_list_relations15 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / relation / titleRemoved value: -"Relation" - changed
Input schema / properties / source_id / descriptionPrevious value: -"Positive integer Revit ID of the source group for group-elements or family instance for nested-family. Default null is valid for name-based relations; these two ID-based relations require a value."New value: +"Revit ID of the source group (group-elements) or family instance (nested-family)." - removed
Input schema / properties / source_id / titleRemoved value: -"Source Id" - changed
Input schema / properties / source_name / descriptionPrevious value: -"Exact, case-insensitive source name: a level for level-rooms, area scheme for area-scheme-elements, or view template for view-template-dependents. Default null is valid for ID-based relations; name-based relations require a value from the catalog."New value: +"Source name, case-insensitive: a level (level-rooms), area scheme (area-scheme-elements) or view template (view-template-dependents)." - removed
Input schema / properties / source_name / titleRemoved value: -"Source Name" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / titleRemoved value: -"revit_list_relationsArguments" - removed
Output schema / titleRemoved value: -"revit_list_relationsDictOutput"
- Changed
revit_list_views14 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / name_contains / descriptionPrevious value: -"Case-insensitive substring of the view name. Default null applies no name filter; combines with view_type and excludes templates."New value: +"Case-insensitive substring of the view name." - removed
Input schema / properties / name_contains / titleRemoved value: -"Name Contains" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - changed
Input schema / properties / view_type / descriptionPrevious value: -"English Revit ViewType name, such as FloorPlan or ThreeD, matched case-insensitively. Default null includes all non-template view types; combines with name_contains."New value: +"English ViewType name such as FloorPlan or ThreeD, case-insensitive." - removed
Input schema / properties / view_type / titleRemoved value: -"View Type" - removed
Input schema / titleRemoved value: -"revit_list_viewsArguments" - removed
Output schema / titleRemoved value: -"revit_list_viewsDictOutput"
- Changed
revit_list_warnings14 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / include_elements / descriptionPrevious value: -"Whether warning groups include affected elements with ID, category and name. Default false returns counts without element rows; combine true with warning_text to inspect one group."New value: +"Include affected elements (ID, category, name) per group. Default false returns counts only." - removed
Input schema / properties / include_elements / titleRemoved value: -"Include Elements" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - changed
Input schema / properties / warning_text / descriptionPrevious value: -"Exact warning description from revit_list_warnings, matched case-insensitively. Default null includes all warning groups; an unmatched supplied text raises an error."New value: +"Exact warning description from revit_list_warnings, case-insensitive; an unmatched text is an error." - removed
Input schema / properties / warning_text / titleRemoved value: -"Warning Text" - removed
Input schema / titleRemoved value: -"revit_list_warningsArguments" - removed
Output schema / titleRemoved value: -"revit_list_warningsDictOutput"
- Changed
revit_load_family10 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / overwrite / titleRemoved value: -"Overwrite" - removed
Input schema / properties / overwrite_parameter_values / titleRemoved value: -"Overwrite Parameter Values" - removed
Input schema / properties / paths / titleRemoved value: -"Paths" - removed
Input schema / properties / response_timeout_sRemoved value: -{ - "default": 600, - "maximum": 3600, - "minimum": 30, - "title": "Response Timeout S", - "type": "integer" -} - added
Input schema / properties / timeout_secondsAdded value: +{ + "default": 600, + "maximum": 3600, + "minimum": 30, + "type": "integer" +} - removed
Input schema / titleRemoved value: -"revit_load_familyArguments" - removed
Output schema / titleRemoved value: -"revit_load_familyDictOutput"
- Changed
revit_mirror9 fields changed- removed
Input schema / properties / axis / titleRemoved value: -"Axis" - removed
Input schema / properties / copy / titleRemoved value: -"Copy" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / properties / point_mm / titleRemoved value: -"Point Mm" - removed
Input schema / titleRemoved value: -"revit_mirrorArguments" - removed
Output schema / titleRemoved value: -"revit_mirrorDictOutput"
- Changed
revit_model_health12 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - added
Input schema / properties / output_pathAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "New .xlsx health report path on the MCP server machine; parent must exist and existing files are refused." +} - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / save_toRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "New .xlsx health report path on the MCP server machine; parent must exist and existing files are refused.", - "title": "Save To" -} - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / titleRemoved value: -"revit_model_healthArguments" - removed
Output schema / titleRemoved value: -"revit_model_healthDictOutput"
- Changed
revit_model_snapshot14 fields changed- removed
Input schema / $defs / ParameterRule / properties / category / titleRemoved value: -"Category" - removed
Input schema / $defs / ParameterRule / properties / parameter / titleRemoved value: -"Parameter" - removed
Input schema / $defs / ParameterRule / titleRemoved value: -"ParameterRule" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / parameter_rules / titleRemoved value: -"Parameter Rules" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / titleRemoved value: -"revit_model_snapshotArguments" - removed
Output schema / titleRemoved value: -"revit_model_snapshotDictOutput"
- Changed
revit_move9 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / dx_mm / titleRemoved value: -"Dx Mm" - removed
Input schema / properties / dy_mm / titleRemoved value: -"Dy Mm" - removed
Input schema / properties / dz_mm / titleRemoved value: -"Dz Mm" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / titleRemoved value: -"revit_moveArguments" - removed
Output schema / titleRemoved value: -"revit_moveDictOutput"
- Changed
revit_new_document8 fields changed- removed
Input schema / properties / activate / titleRemoved value: -"Activate" - removed
Input schema / properties / kind / titleRemoved value: -"Kind" - removed
Input schema / properties / name / titleRemoved value: -"Name" - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / save_as / titleRemoved value: -"Save As" - removed
Input schema / properties / template / titleRemoved value: -"Template" - removed
Input schema / titleRemoved value: -"revit_new_documentArguments" - removed
Output schema / titleRemoved value: -"revit_new_documentDictOutput"
- Changed
revit_nwc_settings_check11 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / settings_xml / titleRemoved value: -"Settings Xml" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / titleRemoved value: -"revit_nwc_settings_checkArguments" - removed
Output schema / titleRemoved value: -"revit_nwc_settings_checkDictOutput"
- Changed
revit_open_document8 fields changed- removed
Input schema / properties / activate / titleRemoved value: -"Activate" - removed
Input schema / properties / audit / titleRemoved value: -"Audit" - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - removed
Input schema / properties / path / titleRemoved value: -"Path" - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / worksets / titleRemoved value: -"Worksets" - removed
Input schema / titleRemoved value: -"revit_open_documentArguments" - removed
Output schema / titleRemoved value: -"revit_open_documentDictOutput"
- Changed
revit_override_graphics13 fields changed- removed
Input schema / properties / color / titleRemoved value: -"Color" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / properties / fill / titleRemoved value: -"Fill" - removed
Input schema / properties / halftone_others / titleRemoved value: -"Halftone Others" - removed
Input schema / properties / line_weight / titleRemoved value: -"Line Weight" - removed
Input schema / properties / reset / titleRemoved value: -"Reset" - removed
Input schema / properties / transparency / titleRemoved value: -"Transparency" - removed
Input schema / properties / views / titleRemoved value: -"Views" - removed
Input schema / titleRemoved value: -"revit_override_graphicsArguments" - removed
Output schema / titleRemoved value: -"revit_override_graphicsDictOutput"
- Changed
revit_parameter_fill_check21 fields changed- changed
Input schema / properties / categories / descriptionPrevious value: -"Required list of 1-20 category names from the categories catalog; no default. Matches any listed category and combines with level, workset and view filters."New value: +"Category names (1 to 20) from the categories catalog; matches any listed category." - removed
Input schema / properties / categories / titleRemoved value: -"Categories" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / include_types / titleRemoved value: -"Include Types" - removed
Input schema / properties / level / titleRemoved value: -"Level" - changed
Input schema / properties / parameters / descriptionPrevious value: -"Required list of 1-30 exact localized parameter names; no default. Each name uses the first LookupParameter match, with type fallback controlled by include_types; missing names are counted as missing."New value: +"Exact localized parameter names (1 to 30); names that do not match count as missing." - removed
Input schema / properties / parameters / titleRemoved value: -"Parameters" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / sample_limit / descriptionPrevious value: -"Maximum element IDs sampled per parameter for each empty and missing list, an integer from 1 to 100. Default 20 limits samples only; all matching elements contribute to counts."New value: +"Maximum sampled element IDs per empty and missing list, 1 to 100 (default 20); counts always cover all elements." - removed
Input schema / properties / sample_limit / titleRemoved value: -"Sample Limit" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - changed
Input schema / properties / view / descriptionPrevious value: -"Exact non-template view name from the views catalog, matched case-insensitively, to restrict the element collector. Default null searches the document without a view filter; combines with the other model filters."New value: +"Exact non-template view name; limits the search to that view." - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / properties / workset / titleRemoved value: -"Workset" - removed
Input schema / titleRemoved value: -"revit_parameter_fill_checkArguments" - removed
Output schema / titleRemoved value: -"revit_parameter_fill_checkDictOutput"
- Changed
revit_ping10 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / titleRemoved value: -"revit_pingArguments" - removed
Output schema / titleRemoved value: -"revit_pingDictOutput"
- Changed
revit_place_families28 fields changed- removed
Input schema / $defs / FamilyPlacement / properties / family / titleRemoved value: -"Family" - removed
Input schema / $defs / FamilyPlacement / properties / host_id / titleRemoved value: -"Host Id" - removed
Input schema / $defs / FamilyPlacement / properties / level / titleRemoved value: -"Level" - removed
Input schema / $defs / FamilyPlacement / properties / parameters / titleRemoved value: -"Parameters" - removed
Input schema / $defs / FamilyPlacement / properties / rotation_deg / titleRemoved value: -"Rotation Deg" - removed
Input schema / $defs / FamilyPlacement / properties / type_name / titleRemoved value: -"Type Name" - removed
Input schema / $defs / FamilyPlacement / properties / x_mm / titleRemoved value: -"X Mm" - removed
Input schema / $defs / FamilyPlacement / properties / y_mm / titleRemoved value: -"Y Mm" - removed
Input schema / $defs / FamilyPlacement / properties / z_mm / titleRemoved value: -"Z Mm" - removed
Input schema / $defs / FamilyPlacement / titleRemoved value: -"FamilyPlacement" - removed
Input schema / $defs / RoomPlacement / properties / family / titleRemoved value: -"Family" - removed
Input schema / $defs / RoomPlacement / properties / level / titleRemoved value: -"Level" - removed
Input schema / $defs / RoomPlacement / properties / parameters / titleRemoved value: -"Parameters" - removed
Input schema / $defs / RoomPlacement / properties / rooms / titleRemoved value: -"Rooms" - removed
Input schema / $defs / RoomPlacement / properties / rotation_deg / titleRemoved value: -"Rotation Deg" - removed
Input schema / $defs / RoomPlacement / properties / type_name / titleRemoved value: -"Type Name" - removed
Input schema / $defs / RoomPlacement / properties / z_mm / titleRemoved value: -"Z Mm" - removed
Input schema / $defs / RoomPlacement / titleRemoved value: -"RoomPlacement" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / load / titleRemoved value: -"Load" - removed
Input schema / properties / placements / titleRemoved value: -"Placements" - removed
Input schema / properties / response_timeout_sRemoved value: -{ - "default": 600, - "maximum": 3600, - "minimum": 30, - "title": "Response Timeout S", - "type": "integer" -} - removed
Input schema / properties / stop_on_error / titleRemoved value: -"Stop On Error" - added
Input schema / properties / timeout_secondsAdded value: +{ + "default": 600, + "maximum": 3600, + "minimum": 30, + "type": "integer" +} - removed
Input schema / titleRemoved value: -"revit_place_familiesArguments" - removed
Output schema / titleRemoved value: -"revit_place_familiesDictOutput"
- Changed
revit_place_family11 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / family / titleRemoved value: -"Family" - removed
Input schema / properties / level / titleRemoved value: -"Level" - removed
Input schema / properties / rotation_deg / titleRemoved value: -"Rotation Deg" - removed
Input schema / properties / type_name / titleRemoved value: -"Type Name" - removed
Input schema / properties / x_mm / titleRemoved value: -"X Mm" - removed
Input schema / properties / y_mm / titleRemoved value: -"Y Mm" - removed
Input schema / titleRemoved value: -"revit_place_familyArguments" - removed
Output schema / titleRemoved value: -"revit_place_familyDictOutput"
- Changed
revit_place_views_on_sheet11 fields changed- removed
Input schema / $defs / SheetPlacement / properties / view / titleRemoved value: -"View" - removed
Input schema / $defs / SheetPlacement / properties / x_mm / titleRemoved value: -"X Mm" - removed
Input schema / $defs / SheetPlacement / properties / y_mm / titleRemoved value: -"Y Mm" - removed
Input schema / $defs / SheetPlacement / titleRemoved value: -"SheetPlacement" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / sheet / titleRemoved value: -"Sheet" - removed
Input schema / properties / views / titleRemoved value: -"Views" - removed
Input schema / titleRemoved value: -"revit_place_views_on_sheetArguments" - removed
Output schema / titleRemoved value: -"revit_place_views_on_sheetDictOutput"
- Changed
revit_process_models39 fields changed- added
Input schema / $defs / ActionStepAdded value: +{ + "additionalProperties": false, + "properties": { + "action": { + "enum": [ + "move", + "rotate", + "copy", + "mirror", + "change_type", + "update_parameters", + "place_family", + "load_family", + "create_wall", + "create_mep_run", + "set_parameter", + "delete", + "select", + "isolate", + "create_view", + "duplicate_view", + "apply_view_template", + "create_sheet", + "override_graphics" + ], + "type": "string" + }, + "args": { + "additionalProperties": true, + "type": "object" + } + }, + "required": [ + "action", + "args" + ], + "type": "object" +} - removed
Input schema / $defs / BatchStepRemoved value: -{ - "additionalProperties": false, - "properties": { - "action": { - "enum": [ - "move", - "rotate", - "copy", - "mirror", - "change_type", - "update_parameters", - "place_family", - "load_family", - "create_wall", - "create_mep_run", - "set_parameter", - "delete", - "select", - "isolate", - "create_view", - "duplicate_view", - "apply_view_template", - "create_sheet", - "override_graphics" - ], - "title": "Action", - "type": "string" - }, - "args": { - "additionalProperties": true, - "title": "Args", - "type": "object" - } - }, - "required": [ - "action", - "args" - ], - "title": "BatchStep", - "type": "object" -} - removed
Input schema / $defs / ProcessCode / properties / code / titleRemoved value: -"Code" - removed
Input schema / $defs / ProcessCode / properties / transaction / titleRemoved value: -"Transaction" - removed
Input schema / $defs / ProcessCode / titleRemoved value: -"ProcessCode" - removed
Input schema / $defs / ProcessExport / properties / all_sheets / titleRemoved value: -"All Sheets" - removed
Input schema / $defs / ProcessExport / properties / folderRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Folder" -} - removed
Input schema / $defs / ProcessExport / properties / format / titleRemoved value: -"Format" - removed
Input schema / $defs / ProcessExport / properties / options / titleRemoved value: -"Options" - added
Input schema / $defs / ProcessExport / properties / output_dirAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - removed
Input schema / $defs / ProcessExport / properties / overwrite / titleRemoved value: -"Overwrite" - removed
Input schema / $defs / ProcessExport / properties / sheet_set / titleRemoved value: -"Sheet Set" - removed
Input schema / $defs / ProcessExport / properties / sheets / titleRemoved value: -"Sheets" - removed
Input schema / $defs / ProcessExport / properties / views / titleRemoved value: -"Views" - removed
Input schema / $defs / ProcessExport / titleRemoved value: -"ProcessExport" - removed
Input schema / $defs / ProcessOpen / properties / audit / titleRemoved value: -"Audit" - removed
Input schema / $defs / ProcessOpen / properties / mode / titleRemoved value: -"Mode" - removed
Input schema / $defs / ProcessOpen / properties / worksets / titleRemoved value: -"Worksets" - removed
Input schema / $defs / ProcessOpen / titleRemoved value: -"ProcessOpen" - removed
Input schema / $defs / ProcessSave / properties / compact / titleRemoved value: -"Compact" - removed
Input schema / $defs / ProcessSave / properties / mode / titleRemoved value: -"Mode" - removed
Input schema / $defs / ProcessSave / properties / output_dir / titleRemoved value: -"Output Dir" - removed
Input schema / $defs / ProcessSave / properties / overwrite / titleRemoved value: -"Overwrite" - removed
Input schema / $defs / ProcessSave / titleRemoved value: -"ProcessSave" - removed
Input schema / properties / confirm_token / titleRemoved value: -"Confirm Token" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / exports / titleRemoved value: -"Exports" - removed
Input schema / properties / folder / titleRemoved value: -"Folder" - removed
Input schema / properties / paths / titleRemoved value: -"Paths" - removed
Input schema / properties / pattern / titleRemoved value: -"Pattern" - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / recursive / titleRemoved value: -"Recursive" - removed
Input schema / properties / response_timeout_sRemoved value: -{ - "default": 14400, - "maximum": 14400, - "minimum": 30, - "title": "Response Timeout S", - "type": "integer" -} - changed
Input schema / properties / steps / anyOfPrevious value: -[ - { - "items": { - "$ref": "#/$defs/BatchStep" - }, - "maxItems": 50, - "minItems": 1, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "$ref": "#/$defs/ActionStep" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / steps / titleRemoved value: -"Steps" - removed
Input schema / properties / stop_on_error / titleRemoved value: -"Stop On Error" - added
Input schema / properties / timeout_secondsAdded value: +{ + "default": 14400, + "maximum": 14400, + "minimum": 30, + "type": "integer" +} - removed
Input schema / titleRemoved value: -"revit_process_modelsArguments" - removed
Output schema / titleRemoved value: -"revit_process_modelsDictOutput"
- Changed
revit_query_elements34 fields changed- changed
Input schema / properties / area_scheme / descriptionPrevious value: -"Exact area-scheme name from the area-schemes catalog, matched case-insensitively. Default null applies no scheme filter; selecting a scheme restricts results to its areas and combines with the other filters."New value: +"Exact area-scheme name, case-insensitive." - removed
Input schema / properties / area_scheme / titleRemoved value: -"Area Scheme" - removed
Input schema / properties / categories / titleRemoved value: -"Categories" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / family / titleRemoved value: -"Family" - removed
Input schema / properties / fields / titleRemoved value: -"Fields" - changed
Input schema / properties / include_geometry / descriptionPrevious value: -"Whether each query row includes available location, boundingBox and placed-room roomCenterMm coordinates in model millimetres, rounded to one decimal. Default false omits geometry; true increases the response size."New value: +"Include location, boundingBox and roomCenterMm in model mm. Default false; true enlarges the response." - removed
Input schema / properties / include_geometry / titleRemoved value: -"Include Geometry" - removed
Input schema / properties / level / titleRemoved value: -"Level" - added
Input schema / properties / limit / minimumAdded value: +1 - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - added
Input schema / properties / offset / minimumAdded value: +0 - removed
Input schema / properties / offset / titleRemoved value: -"Offset" - changed
Input schema / properties / parameter_filters / descriptionPrevious value: -"AND-combined objects with an exact localized parameter name in parameter, an operator (equals, contains, greater, less, empty, not-empty, exists), and value for comparisons; default null applies no parameter filters. Numeric values use mm, m2, m3 or other document display units; contains requires text, and empty/not-empty/exists need no value."New value: +"AND-combined filters: parameter (exact localized name), operator (equals, contains, greater, less, empty, not-empty, exists) and value. Numbers use mm, m2, m3 or display units." - removed
Input schema / properties / parameter_filters / titleRemoved value: -"Parameter Filters" - removed
Input schema / properties / phase / titleRemoved value: -"Phase" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / sort_direction / descriptionPrevious value: -"Sort order: asc or desc, case-insensitively; default asc means ascending. Applies to sort_field before offset and limit."New value: +"asc (default) or desc, case-insensitive." - removed
Input schema / properties / sort_direction / titleRemoved value: -"Sort Direction" - changed
Input schema / properties / sort_field / descriptionPrevious value: -"System field (e.g. id, category, level) or exact localized parameter name to sort before pagination; default id sorts by Revit element ID. Uses sort_direction, with element ID breaking ties for other fields."New value: +"System field (e.g. id, category, level) or exact localized parameter name to sort by; default id." - removed
Input schema / properties / sort_field / titleRemoved value: -"Sort Field" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - changed
Input schema / properties / type_name / descriptionPrevious value: -"Exact type name to match, case-insensitively, combined with the other model filters. Default null applies no type filter; discover names with the family-types catalog."New value: +"Exact type name, case-insensitive." - removed
Input schema / properties / type_name / titleRemoved value: -"Type Name" - changed
Input schema / properties / view / descriptionPrevious value: -"Exact non-template view name from the views catalog, matched case-insensitively, to restrict the element collector. Default null searches the document without a view filter; combines with the other model filters."New value: +"Exact non-template view name; limits the search to that view." - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / properties / workset / titleRemoved value: -"Workset" - removed
Input schema / titleRemoved value: -"revit_query_elementsArguments" - removed
Output schema / titleRemoved value: -"revit_query_elementsDictOutput"
- Changed
revit_remove_links9 fields changed- removed
Input schema / properties / confirm_token / titleRemoved value: -"Confirm Token" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / include_imported_cad / titleRemoved value: -"Include Imported Cad" - removed
Input schema / properties / kinds / titleRemoved value: -"Kinds" - removed
Input schema / properties / links / titleRemoved value: -"Links" - removed
Input schema / titleRemoved value: -"revit_remove_linksArguments" - removed
Output schema / titleRemoved value: -"revit_remove_linksDictOutput"
- Changed
revit_rotate8 fields changed- removed
Input schema / properties / angle_deg / titleRemoved value: -"Angle Deg" - removed
Input schema / properties / center_mm / titleRemoved value: -"Center Mm" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / titleRemoved value: -"revit_rotateArguments" - removed
Output schema / titleRemoved value: -"revit_rotateDictOutput"
- Added
revit_run_actions - Changed
revit_save_document8 fields changed- removed
Input schema / properties / compact / titleRemoved value: -"Compact" - removed
Input schema / properties / confirm_token / titleRemoved value: -"Confirm Token" - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / overwrite / titleRemoved value: -"Overwrite" - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / save_as / titleRemoved value: -"Save As" - removed
Input schema / titleRemoved value: -"revit_save_documentArguments" - removed
Output schema / titleRemoved value: -"revit_save_documentDictOutput"
- Changed
revit_schedule_data9 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / max_rows / titleRemoved value: -"Max Rows" - removed
Input schema / properties / offset / titleRemoved value: -"Offset" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / schedule / titleRemoved value: -"Schedule" - removed
Input schema / titleRemoved value: -"revit_schedule_dataArguments" - removed
Output schema / titleRemoved value: -"revit_schedule_dataDictOutput"
- Changed
revit_select5 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / titleRemoved value: -"revit_selectArguments" - removed
Output schema / titleRemoved value: -"revit_selectDictOutput"
- Changed
revit_set_parameter9 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / element_id / titleRemoved value: -"Element Id" - removed
Input schema / properties / parameter / titleRemoved value: -"Parameter" - removed
Input schema / properties / parameter_id / titleRemoved value: -"Parameter Id" - removed
Input schema / properties / value / titleRemoved value: -"Value" - removed
Input schema / titleRemoved value: -"revit_set_parameterArguments" - removed
Output schema / titleRemoved value: -"revit_set_parameterDictOutput"
- Changed
revit_set_view_visibility13 fields changed- removed
Input schema / properties / category_classes / titleRemoved value: -"Category Classes" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / filters / titleRemoved value: -"Filters" - removed
Input schema / properties / hide_categories / titleRemoved value: -"Hide Categories" - removed
Input schema / properties / hide_categories_by_type / titleRemoved value: -"Hide Categories By Type" - removed
Input schema / properties / show_categories / titleRemoved value: -"Show Categories" - removed
Input schema / properties / template_mode / titleRemoved value: -"Template Mode" - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / properties / worksets / titleRemoved value: -"Worksets" - removed
Input schema / titleRemoved value: -"revit_set_view_visibilityArguments" - removed
Output schema / titleRemoved value: -"revit_set_view_visibilityDictOutput"
- Changed
revit_shared_coordinates10 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - removed
Input schema / titleRemoved value: -"revit_shared_coordinatesArguments" - removed
Output schema / titleRemoved value: -"revit_shared_coordinatesDictOutput"
- Changed
revit_show6 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / element_ids / titleRemoved value: -"Element Ids" - removed
Input schema / properties / select / titleRemoved value: -"Select" - removed
Input schema / titleRemoved value: -"revit_showArguments" - removed
Output schema / titleRemoved value: -"revit_showDictOutput"
- Changed
revit_sync_document10 fields changed- removed
Input schema / properties / comment / titleRemoved value: -"Comment" - removed
Input schema / properties / compact / titleRemoved value: -"Compact" - removed
Input schema / properties / confirm_token / titleRemoved value: -"Confirm Token" - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / properties / relinquish / titleRemoved value: -"Relinquish" - removed
Input schema / properties / save_local_after / titleRemoved value: -"Save Local After" - removed
Input schema / properties / save_local_before / titleRemoved value: -"Save Local Before" - removed
Input schema / titleRemoved value: -"revit_sync_documentArguments" - removed
Output schema / titleRemoved value: -"revit_sync_documentDictOutput"
- Added
revit_tag_elements - Changed
revit_ui_state4 fields changed- changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - removed
Input schema / titleRemoved value: -"revit_ui_stateArguments" - removed
Output schema / titleRemoved value: -"revit_ui_stateDictOutput"
- Changed
revit_undo_last4 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / titleRemoved value: -"revit_undo_lastArguments" - removed
Output schema / titleRemoved value: -"revit_undo_lastDictOutput"
- Changed
revit_update_parameters20 fields changed- removed
Input schema / $defs / UpdateFilters / properties / area_scheme / titleRemoved value: -"Area Scheme" - removed
Input schema / $defs / UpdateFilters / properties / categories / titleRemoved value: -"Categories" - removed
Input schema / $defs / UpdateFilters / properties / family / titleRemoved value: -"Family" - removed
Input schema / $defs / UpdateFilters / properties / level / titleRemoved value: -"Level" - removed
Input schema / $defs / UpdateFilters / properties / parameter_filters / titleRemoved value: -"Parameter Filters" - removed
Input schema / $defs / UpdateFilters / properties / phase / titleRemoved value: -"Phase" - removed
Input schema / $defs / UpdateFilters / properties / type_name / titleRemoved value: -"Type Name" - removed
Input schema / $defs / UpdateFilters / properties / view / titleRemoved value: -"View" - removed
Input schema / $defs / UpdateFilters / properties / workset / titleRemoved value: -"Workset" - removed
Input schema / $defs / UpdateFilters / titleRemoved value: -"UpdateFilters" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / include_type_parameters / titleRemoved value: -"Include Type Parameters" - removed
Input schema / properties / max_elements / titleRemoved value: -"Max Elements" - removed
Input schema / properties / parameter / titleRemoved value: -"Parameter" - removed
Input schema / properties / parameter_id / titleRemoved value: -"Parameter Id" - removed
Input schema / properties / value / titleRemoved value: -"Value" - removed
Input schema / titleRemoved value: -"revit_update_parametersArguments" - removed
Output schema / titleRemoved value: -"revit_update_parametersDictOutput"
- Changed
revit_view_elements17 fields changed- removed
Input schema / properties / categories / titleRemoved value: -"Categories" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - added
Input schema / properties / limit / minimumAdded value: +1 - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - added
Input schema / properties / offset / minimumAdded value: +0 - removed
Input schema / properties / offset / titleRemoved value: -"Offset" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - changed
Input schema / properties / view / descriptionPrevious value: -"Required exact, case-sensitive non-template view name from revit_list_views, or its Revit view ID as a decimal string; no default. An exact name takes precedence over interpreting a numeric string as an ID."New value: +"Exact non-template view name from revit_list_views, or a view ID as a decimal string." - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / titleRemoved value: -"revit_view_elementsArguments" - removed
Output schema / titleRemoved value: -"revit_view_elementsDictOutput"
- Changed
revit_view_info12 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - changed
Input schema / properties / view / descriptionPrevious value: -"Required exact, case-sensitive non-template view name from revit_list_views, or its Revit view ID as a decimal string; no default. An exact name takes precedence over interpreting a numeric string as an ID."New value: +"Exact non-template view name from revit_list_views, or a view ID as a decimal string." - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / titleRemoved value: -"revit_view_infoArguments" - removed
Output schema / titleRemoved value: -"revit_view_infoDictOutput"
- Changed
revit_view_summary12 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - changed
Input schema / properties / view / descriptionPrevious value: -"Required exact, case-sensitive non-template view name from revit_list_views, or its Revit view ID as a decimal string; no default. An exact name takes precedence over interpreting a numeric string as an ID."New value: +"Exact non-template view name from revit_list_views, or a view ID as a decimal string." - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / titleRemoved value: -"revit_view_summaryArguments" - removed
Output schema / titleRemoved value: -"revit_view_summaryDictOutput"
- Changed
revit_view_warnings12 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."New value: +"Title or file name substring of the target document; needed when several Revit instances run." - removed
Input schema / properties / document / titleRemoved value: -"Document" - changed
Input schema / properties / pickup_timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later."New value: +"Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP." - removed
Input schema / properties / pickup_timeout_seconds / titleRemoved value: -"Pickup Timeout Seconds" - changed
Input schema / properties / process_id / descriptionPrevious value: -"Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree."New value: +"Revit process ID; takes precedence over document." - removed
Input schema / properties / process_id / titleRemoved value: -"Process Id" - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."New value: +"Seconds to wait for a result (default 120)." - removed
Input schema / properties / timeout_seconds / titleRemoved value: -"Timeout Seconds" - changed
Input schema / properties / view / descriptionPrevious value: -"Required exact, case-sensitive non-template view name from revit_list_views, or its Revit view ID as a decimal string; no default. An exact name takes precedence over interpreting a numeric string as an ID."New value: +"Exact non-template view name from revit_list_views, or a view ID as a decimal string." - removed
Input schema / properties / view / titleRemoved value: -"View" - removed
Input schema / titleRemoved value: -"revit_view_warningsArguments" - removed
Output schema / titleRemoved value: -"revit_view_warningsDictOutput"
- Changed
revit_walls_from_cad17 fields changed- removed
Input schema / properties / cad_id / titleRemoved value: -"Cad Id" - changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target open document's title or file name. Required to disambiguate when the Revit process has more than one document open; omit only when a single document is open (the active document is used). An unknown or ambiguous reference is rejected before any change."New value: +"Title or file name substring of the target open document; needed when several are open." - removed
Input schema / properties / document / titleRemoved value: -"Document" - removed
Input schema / properties / dry_run / titleRemoved value: -"Dry Run" - removed
Input schema / properties / height_mm / titleRemoved value: -"Height Mm" - removed
Input schema / properties / join / titleRemoved value: -"Join" - removed
Input schema / properties / layers / titleRemoved value: -"Layers" - removed
Input schema / properties / level / titleRemoved value: -"Level" - removed
Input schema / properties / max_gap_mm / titleRemoved value: -"Max Gap Mm" - removed
Input schema / properties / max_thickness_mm / titleRemoved value: -"Max Thickness Mm" - removed
Input schema / properties / min_length_mm / titleRemoved value: -"Min Length Mm" - removed
Input schema / properties / min_thickness_mm / titleRemoved value: -"Min Thickness Mm" - removed
Input schema / properties / response_timeout_sRemoved value: -{ - "default": 600, - "maximum": 3600, - "minimum": 30, - "title": "Response Timeout S", - "type": "integer" -} - added
Input schema / properties / timeout_secondsAdded value: +{ + "default": 600, + "maximum": 3600, + "minimum": 30, + "type": "integer" +} - removed
Input schema / properties / wall_type / titleRemoved value: -"Wall Type" - removed
Input schema / titleRemoved value: -"revit_walls_from_cadArguments" - removed
Output schema / titleRemoved value: -"revit_walls_from_cadDictOutput"
35 tool updates
v0.9.1- Added
revit_activate_document - Added
revit_activate_view - Added
revit_apply_view_template - Changed
revit_batch1 field changed- changed
Input schema / $defs / BatchStep / properties / action / enumPrevious value: -[ - "move", - "place_family", - "create_wall", - "set_parameter", - "delete", - "select", - "isolate" -]New value: +[ + "move", + "rotate", + "copy", + "mirror", + "change_type", + "update_parameters", + "place_family", + "load_family", + "create_wall", + "create_mep_run", + "set_parameter", + "delete", + "select", + "isolate", + "create_view", + "duplicate_view", + "apply_view_template", + "create_sheet", + "override_graphics" +]
- Changed
revit_batch_start1 field changed- added
Input schema / properties / open_timeout_minutesAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Open Timeout Minutes" +}
- Added
revit_cancel_job - Added
revit_capture_elements - Added
revit_change_type - Added
revit_close_views - Added
revit_copy - Added
revit_create_mep_run - Added
revit_create_sheet - Added
revit_create_view - Changed
revit_delete1 field changed- added
Input schema / properties / confirm_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Confirm Token" +}
- Added
revit_duplicate_view - Added
revit_execute_code - Added
revit_export - Changed
revit_export_nwc1 field changed- added
Input schema / properties / confirm_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Confirm Token" +}
- Added
revit_issue_register - Changed
revit_jobs2 fields changed- added
Input schema / properties / job_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Job Id" +} - added
Input schema / properties / wait_sAdded value: +{ + "default": 40, + "description": "Seconds to wait, 0 through 50.", + "maximum": 50, + "minimum": 0, + "title": "Wait S", + "type": "integer" +}
- Added
revit_link_cad - Added
revit_load_family - Added
revit_mirror - Changed
revit_model_health1 field changed- added
Input schema / properties / save_toAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "New .xlsx health report path on the MCP server machine; parent must exist and existing files are refused.", + "title": "Save To" +}
- Added
revit_new_document - Added
revit_override_graphics - Added
revit_place_families - Added
revit_place_views_on_sheet - Added
revit_process_models - Changed
revit_remove_links1 field changed- added
Input schema / properties / confirm_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Confirm Token" +}
- Added
revit_rotate - Added
revit_schedule_data - Added
revit_ui_state - Added
revit_update_parameters - Added
revit_walls_from_cad
49 tool updates
v0.7.0- Changed
revit_aggregate_elements2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Added
revit_align_link_datums - Added
revit_batch - Added
revit_batch_cancel - Added
revit_batch_fetch - Added
revit_batch_start - Added
revit_batch_status - Added
revit_build_report - Added
revit_close_document - Added
revit_compare_link_datums - Added
revit_create_wall - Added
revit_delete - Changed
revit_document_info2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Added
revit_documents - Added
revit_edit_families - Changed
revit_element_details2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Added
revit_export_nwc - Changed
revit_export_view2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Added
revit_family_audit - Added
revit_isolate - Added
revit_jobs - Changed
revit_links_status2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Changed
revit_list_catalog2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Changed
revit_list_instances5 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Output schema / additionalPropertiesAdded value: +true - removed
Output schema / propertiesRemoved value: -{ - "result": { - "items": { - "additionalProperties": true, - "type": "object" - }, - "title": "Result", - "type": "array" - } -} - removed
Output schema / requiredRemoved value: -[ - "result" -] - changed
Output schema / titlePrevious value: -"revit_list_instancesOutput"New value: +"revit_list_instancesDictOutput"
- Changed
revit_list_relations2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Changed
revit_list_views2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Changed
revit_list_warnings2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Changed
revit_model_health2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Added
revit_model_snapshot - Added
revit_move - Added
revit_nwc_settings_check - Added
revit_open_document - Changed
revit_parameter_fill_check2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Changed
revit_ping2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Added
revit_place_family - Changed
revit_query_elements2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Added
revit_remove_links - Added
revit_save_document - Added
revit_select - Added
revit_set_parameter - Added
revit_set_view_visibility - Changed
revit_shared_coordinates2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Added
revit_show - Added
revit_sync_document - Added
revit_undo_last - Changed
revit_view_elements2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Added
revit_view_info - Changed
revit_view_summary2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
- Changed
revit_view_warnings2 fields changed- changed
Input schema / properties / document / descriptionPrevious value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted." - added
Input schema / properties / process_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.", + "title": "Process Id" +}
18 tool updates
v0.1.1- Changed
revit_aggregate_elements9 fields changed- added
Input schema / properties / area_scheme / descriptionAdded value: +"Exact area-scheme name from the area-schemes catalog, matched case-insensitively. Default null applies no scheme filter; selecting a scheme restricts results to its areas and combines with the other filters." - added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / group_by / descriptionAdded value: +"Required list of one or two distinct system fields (e.g. category, family, type, level) or exact localized parameter names from the catalog; no default. Each combination produces a count, with numeric totals added by sum_field." - added
Input schema / properties / parameter_filters / descriptionAdded value: +"AND-combined objects with an exact localized parameter name in parameter, an operator (equals, contains, greater, less, empty, not-empty, exists), and value for comparisons; default null applies no parameter filters. Numeric values use mm, m2, m3 or other document display units; contains requires text, and empty/not-empty/exists need no value." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / sum_field / descriptionAdded value: +"Numeric system field or exact localized parameter name to sum and average within each group. Default null omits numeric aggregation; lengths use mm, areas m2, volumes m3, and other quantities use the returned unit." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits." - added
Input schema / properties / type_name / descriptionAdded value: +"Exact type name to match, case-insensitively, combined with the other model filters. Default null applies no type filter; discover names with the family-types catalog." - added
Input schema / properties / view / descriptionAdded value: +"Exact non-template view name from the views catalog, matched case-insensitively, to restrict the element collector. Default null searches the document without a view filter; combines with the other model filters."
- Changed
revit_document_info3 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."
- Changed
revit_element_details4 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / element_id / descriptionAdded value: +"Required positive integer Revit element ID from revit_query_elements or revit_view_elements; no default. The ID must exist in the target document." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."
- Changed
revit_export_view4 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / pixel_size / descriptionAdded value: +"PNG size in pixels along the fitted image dimension, an integer from 1 to 4000. Default 1600 fits the view at that size while preserving its aspect ratio." - added
Input schema / properties / save_to / descriptionAdded value: +"New PNG file path on the MCP client machine, not the Revit host; an existing destination causes an error. Default null downloads to a local temporary directory and returns localPath." - added
Input schema / properties / view / descriptionAdded value: +"Required exact, case-sensitive non-template view name from revit_list_views, or its Revit view ID as a decimal string; no default. An exact name takes precedence over interpreting a numeric string as an ID."
- Changed
revit_links_status3 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."
- Changed
revit_list_catalog3 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."
- Changed
revit_list_instances1 field changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."
- Changed
revit_list_relations5 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / source_id / descriptionAdded value: +"Positive integer Revit ID of the source group for group-elements or family instance for nested-family. Default null is valid for name-based relations; these two ID-based relations require a value." - added
Input schema / properties / source_name / descriptionAdded value: +"Exact, case-insensitive source name: a level for level-rooms, area scheme for area-scheme-elements, or view template for view-template-dependents. Default null is valid for ID-based relations; name-based relations require a value from the catalog." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."
- Changed
revit_list_views5 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / name_contains / descriptionAdded value: +"Case-insensitive substring of the view name. Default null applies no name filter; combines with view_type and excludes templates." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits." - added
Input schema / properties / view_type / descriptionAdded value: +"English Revit ViewType name, such as FloorPlan or ThreeD, matched case-insensitively. Default null includes all non-template view types; combines with name_contains."
- Changed
revit_list_warnings5 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / include_elements / descriptionAdded value: +"Whether warning groups include affected elements with ID, category and name. Default false returns counts without element rows; combine true with warning_text to inspect one group." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits." - added
Input schema / properties / warning_text / descriptionAdded value: +"Exact warning description from revit_list_warnings, matched case-insensitively. Default null includes all warning groups; an unmatched supplied text raises an error."
- Changed
revit_model_health3 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."
- Changed
revit_parameter_fill_check7 fields changed- added
Input schema / properties / categories / descriptionAdded value: +"Required list of 1-20 category names from the categories catalog; no default. Matches any listed category and combines with level, workset and view filters." - added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / parameters / descriptionAdded value: +"Required list of 1-30 exact localized parameter names; no default. Each name uses the first LookupParameter match, with type fallback controlled by include_types; missing names are counted as missing." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / sample_limit / descriptionAdded value: +"Maximum element IDs sampled per parameter for each empty and missing list, an integer from 1 to 100. Default 20 limits samples only; all matching elements contribute to counts." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits." - added
Input schema / properties / view / descriptionAdded value: +"Exact non-template view name from the views catalog, matched case-insensitively, to restrict the element collector. Default null searches the document without a view filter; combines with the other model filters."
- Changed
revit_ping3 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."
- Changed
revit_query_elements10 fields changed- added
Input schema / properties / area_scheme / descriptionAdded value: +"Exact area-scheme name from the area-schemes catalog, matched case-insensitively. Default null applies no scheme filter; selecting a scheme restricts results to its areas and combines with the other filters." - added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / include_geometry / descriptionAdded value: +"Whether each query row includes available location, boundingBox and placed-room roomCenterMm coordinates in model millimetres, rounded to one decimal. Default false omits geometry; true increases the response size." - added
Input schema / properties / parameter_filters / descriptionAdded value: +"AND-combined objects with an exact localized parameter name in parameter, an operator (equals, contains, greater, less, empty, not-empty, exists), and value for comparisons; default null applies no parameter filters. Numeric values use mm, m2, m3 or other document display units; contains requires text, and empty/not-empty/exists need no value." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / sort_direction / descriptionAdded value: +"Sort order: asc or desc, case-insensitively; default asc means ascending. Applies to sort_field before offset and limit." - added
Input schema / properties / sort_field / descriptionAdded value: +"System field (e.g. id, category, level) or exact localized parameter name to sort before pagination; default id sorts by Revit element ID. Uses sort_direction, with element ID breaking ties for other fields." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits." - added
Input schema / properties / type_name / descriptionAdded value: +"Exact type name to match, case-insensitively, combined with the other model filters. Default null applies no type filter; discover names with the family-types catalog." - added
Input schema / properties / view / descriptionAdded value: +"Exact non-template view name from the views catalog, matched case-insensitively, to restrict the element collector. Default null searches the document without a view filter; combines with the other model filters."
- Changed
revit_shared_coordinates3 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits."
- Changed
revit_view_elements4 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits." - added
Input schema / properties / view / descriptionAdded value: +"Required exact, case-sensitive non-template view name from revit_list_views, or its Revit view ID as a decimal string; no default. An exact name takes precedence over interpreting a numeric string as an ID."
- Changed
revit_view_summary4 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits." - added
Input schema / properties / view / descriptionAdded value: +"Required exact, case-sensitive non-template view name from revit_list_views, or its Revit view ID as a decimal string; no default. An exact name takes precedence over interpreting a numeric string as an ID."
- Changed
revit_view_warnings4 fields changed- added
Input schema / properties / document / descriptionAdded value: +"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted." - added
Input schema / properties / pickup_timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for the add-in to pick up a local or SSH job (300 when omitted); ignored over HTTP. A pickup timeout raises an error but the pending job may still execute later." - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Positive integer seconds to wait for a result after pickup (120 when omitted); HTTP uses this as its response budget. Expiry raises an error, and increasing it does not override the add-in's execution limits." - added
Input schema / properties / view / descriptionAdded value: +"Required exact, case-sensitive non-template view name from revit_list_views, or its Revit view ID as a decimal string; no default. An exact name takes precedence over interpreting a numeric string as an ID."
18 tool updates
- First observed
revit_aggregate_elements - First observed
revit_document_info - First observed
revit_element_details - First observed
revit_export_view - First observed
revit_links_status - First observed
revit_list_catalog - First observed
revit_list_instances - First observed
revit_list_relations - First observed
revit_list_views - First observed
revit_list_warnings - First observed
revit_model_health - First observed
revit_parameter_fill_check - First observed
revit_ping - First observed
revit_query_elements - First observed
revit_shared_coordinates - First observed
revit_view_elements - First observed
revit_view_summary - First observed
revit_view_warnings
TDQS
Scored across 79 tools
The 79 tools have many overlapping read-oriented purposes, especially around views and elements: revit_query_elements, revit_view_elements, revit_element_details, revit_aggregate_elements, revit_view_info, revit_view_summary and revit_capture_elements require careful distinction. Descriptions provide enough detail to tell most apart, but the sheer breadth and similar naming create real misselection risk.
All tool names use a consistent revit_ prefix and snake_case convention, with no camelCase or mixed-style deviations. Although some tools are noun phrases and others verb phrases, the overall naming pattern is highly predictable and readable.
With 79 tools, the server is far beyond the expected 3-15 range and clearly falls into the extreme over-provisioned category. Even for a complex Revit automation surface, the count is excessive and makes discovery and selection burdensome.
The surface covers a very broad lifecycle: reading, editing, family placement, views, sheets, schedules, exports, batch processing and reporting. Some common authoring operations such as floors, roofs, rooms and dimensions are not exposed directly, but revit_execute_code and revit_run_actions provide a workaround.
Maintenance
Related MCP Connectors
Convert Revit files to XKT, IFC, or DWG and query BIM data via natural language.
Revit MCP: lets AI read and edit your open model. Windows, best supported on Revit 2021+, free beta.
- HAVNOAuthapp.havnre
Read-only AI access to HAVN properties, leads, tasks, files, media, and analytics.
AI Hub for AEC — 50+ 3D formats, clash detection, ACC integration via Autodesk Platform Services.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceAllows AI assistants to interact with Autodesk Revit through the MCP protocol, enabling the AI to create, modify, and delete elements in Revit projects.1529 npm1-
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Autodesk Revit to query project data, manage elements, and execute generated code via the Model Context Protocol. It provides full compatibility with GitHub Copilot and Claude to automate BIM modeling workflows.1329 npmMIT
- AlicenseAqualityFmaintenanceEnables AI to interact with Revit via MCP, allowing data retrieval and element creation, modification, and deletion.1329 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to connect to Revit 2024 via MCP, inspect documents and selections, query and modify elements, and validate, preview, or commit plans with audit logging and rollback.MIT