Skip to main content
Glama
sharafutdinovdi

Revit Model MCP

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.

CI Latest release PyPI Revit 2022-2027 OpenSSF Scorecard MIT

Claude Desktop runs on a Mac and connects to Revit 2026 on a Windows workstation. Actions are enabled in this recording.

  1. "What model is open in Revit right now?" The client reads the document, levels and room counts.

  2. "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_show opens a matching plan and selects the room.

  3. "Isolate that room, place a Chair-Breuer at its centre and move it 800 mm along X." revit_isolate, then revit_place_family at the room's roomCenterMm, then revit_move. Each mutation is its own Revit transaction.

  4. 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.RevitModelMcp

Keep 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-mcp

For 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."

revit_document_info, revit_list_catalog, revit_aggregate_elements, revit_list_warnings

Health check

"Run a health check before we issue this model and list what fails."

revit_model_health, revit_parameter_fill_check

Find and show

"Find the doors on this floor and show me where they are in 3D."

revit_query_elements, revit_capture_elements

Highlight

"Colour those doors red on the L2 plan and fade everything else."

revit_activate_view, revit_override_graphics

Change, then undo

"Move the selected elements 500 mm along X. Preview it first, then do it, then undo it."

revit_move with dry_run, revit_undo_last

Batch over a folder

"Collect read-only snapshots of every model in this folder and tell me which ones have parameters left empty."

revit_batch_start, revit_batch_status, revit_build_report

ISO 19650 register

"Check this model against our EIR and write an issue register to Excel with element snapshots."

revit_issue_register, with the ISO 19650 skill

Export

"Export the L2 plan as PDF, and a Navisworks file of the whole model."

revit_export, revit_export_nwc

Run from a Mac

"Call revit_ping and tell me which model is open on the workstation."

revit_ping, over SSH (see remote workstations)

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

revit_ping, revit_ui_state, revit_documents, revit_document_info, revit_list_instances

Find and count elements

revit_list_catalog, revit_aggregate_elements, revit_query_elements, revit_element_details, revit_list_relations

Read views and schedules

revit_list_views, revit_view_info, revit_view_summary, revit_view_elements, revit_schedule_data

Read warnings

revit_list_warnings, revit_view_warnings

Check model quality

revit_model_health, revit_parameter_fill_check, revit_family_audit

Get a picture

revit_export_view, revit_capture_elements

Point at things in Revit

revit_activate_view, revit_select, revit_show, revit_isolate, revit_override_graphics

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

revit_links_status, revit_shared_coordinates

Compare and align datums

revit_compare_link_datums, revit_align_link_datums

Work with CAD links

revit_link_cad, revit_walls_from_cad

Remove links

revit_remove_links

Navisworks export

revit_nwc_settings_check, revit_export_nwc

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

revit_move, revit_rotate, revit_copy, revit_mirror, revit_change_type, revit_set_parameter, revit_update_parameters, revit_delete

Run many steps as one undo

revit_run_actions

Create elements

revit_create_wall, revit_create_mep_run

Work with families

revit_load_family, revit_place_family, revit_place_families, revit_edit_families

Work with views and sheets

revit_create_view, revit_duplicate_view, revit_apply_view_template, revit_set_view_visibility, revit_create_sheet, revit_place_views_on_sheet

Tag elements and create schedules

revit_tag_elements, revit_create_schedule

Open, save and close documents

revit_open_document, revit_new_document, revit_activate_document, revit_close_views, revit_close_document, revit_save_document, revit_sync_document

Export files

revit_export

Run C# in Revit

revit_execute_code

Undo

revit_undo_last

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

revit_process_models

Collect snapshots without changing models

revit_batch_start, revit_batch_status, revit_batch_cancel, revit_batch_fetch

Follow and cancel long jobs

revit_jobs, revit_cancel_job

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

revit_model_snapshot

Write an issue register

revit_issue_register

Build a report from snapshots

revit_build_report

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=1 in the server environment, or create the workstation read-only file, to refuse every action. Action tools stay listed and return errorCode: "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_last undoes 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_export and revit_process_models accept dry_run to preview the result without committing it.

  • A readable summary. Every action returns verification and a one-sentence summary of what changed.

  • Path redaction. REVIT_MCP_REDACT_PATHS=1 hides directories in response path fields. Names, parameter values and errors stay visible.

  • Unreachable workstation. errorCode: "transport_unavailable" with retryable: true means 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.

Contributors

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 tools
revit_activate_documentActivate DocumentB
Destructive

Activate an already open document by title or path reference.

NameRequiredDescriptionDefault
documentYes
process_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ViewC
Destructive

Activate a non-template view. Zoom to fit, preserve zoom, or frame element IDs.

NameRequiredDescriptionDefault
viewYes
zoomNofit
documentNoTarget document title or path reference.
view_typeNo
process_idNo
activate_documentNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 ElementsA
Read-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.

NameRequiredDescriptionDefault
viewNoExact non-template view name; limits the search to that view.
levelNo
phaseNo
familyNo
worksetNo
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
group_byYesOne or two distinct fields (e.g. category, family, type, level) or exact localized parameter names.
sum_fieldNoNumeric field or parameter name to sum and average per group; lengths in mm, areas m2, volumes m3.
type_nameNoExact type name, case-insensitive.
categoriesNo
process_idNoRevit process ID; takes precedence over document.
area_schemeNoExact area-scheme name, case-insensitive.
timeout_secondsNoSeconds to wait for a result (default 120).
parameter_filtersNoAND-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_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_apply_view_templateApply View TemplateC
Destructive

Apply a matching view template to one or more views.

NameRequiredDescriptionDefault
viewsYes
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
templateYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 collectionC
Read-only

Persist cancellation and prevent unstarted models from running.

NameRequiredDescriptionDefault
run_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 snapshotsC
Read-only

Download completed snapshots to new local files without overwriting.

NameRequiredDescriptionDefault
run_idYes
output_dirYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 collectionB
Read-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).

NameRequiredDescriptionDefault
pathsNo
yearsNo
folderNo
recursiveNo
parameter_rulesNo
open_timeout_minutesNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 statusB
Read-only

Read durable run and model status after the initiating client exits.

NameRequiredDescriptionDefault
run_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ReportA
Read-onlyIdempotent

Build a local Excel report from snapshots without contacting Revit.

NameRequiredDescriptionDefault
findingsNoOptional findings with model, severity, rule, element_ids (or elementIds), and recommendation.
output_pathYesNew .xlsx file path on the MCP client machine; existing files are never replaced.
previous_dirNoOptional directory of earlier snapshots matched by model title for the Changes sheet.
snapshots_dirYesDirectory of schema-version-1 JSON snapshots on the MCP client machine.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 JobA
Destructive

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.

NameRequiredDescriptionDefault
job_idYes
documentNoTitle or file name substring of the target open document; needed when several are open.
process_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ElementsA
Read-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.

NameRequiredDescriptionDefault
modeNo3d
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
padding_mmNo
pixel_sizeNoPNG size in pixels along the fitted dimension, 32 to 4000 (default 1600); Revit rejects smaller images.
process_idNoRevit process ID; takes precedence over document.
element_idsYes
output_pathNoNew PNG path on the MCP client machine; an existing file is an error. Default null downloads to a temporary directory and returns localPath.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 TypeA
Destructive

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.

NameRequiredDescriptionDefault
familyNo
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
type_nameYes
element_idsYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 DocumentB
Destructive

Close a background document. Needs confirm_token from a first call, which changes nothing.

NameRequiredDescriptionDefault
saveNo
documentYes
process_idNo
confirm_tokenNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ViewsC
Destructive

Close open UI views in the active document.

NameRequiredDescriptionDefault
viewsNo
process_idNo
keep_activeNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_copyCopy ElementsA
Destructive

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.

NameRequiredDescriptionDefault
countNo
dx_mmYes
dy_mmYes
dz_mmNo
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
element_idsYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 RunA
Destructive

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.

NameRequiredDescriptionDefault
kindYes
levelYes
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
width_mmNo
height_mmNo
offset_mmNo
points_mmYes
type_nameNo
connect_toNo
diameter_mmNo
system_typeNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 ScheduleA
Destructive

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.

NameRequiredDescriptionDefault
nameNo
sortNo
fieldsYes
dry_runNo
filtersNo
categoryYes
documentNoTitle or file name substring of the target open document; needed when several are open.
itemizedNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 SheetC
Destructive

Create a sheet with the first loaded or a named title block.

NameRequiredDescriptionDefault
nameYes
numberYes
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
title_blockNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 ViewB
Destructive

Create a plan, section, 3D or drafting view. Unbounded 3D views show the whole model, shaded, fine detail. Box coordinates are model mm.

NameRequiredDescriptionDefault
boxNo
kindYes
nameNo
levelNo
scaleNo
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
templateNo
element_idsNo
detail_levelNo
display_styleNo
view_family_typeNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 WallB
Destructive

Create a straight wall on a named level. XY endpoints and height are in mm; a null wall_type uses the first basic type.

NameRequiredDescriptionDefault
levelYes
end_mmYes
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
start_mmYes
height_mmNo
wall_typeYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 ElementsA
Destructive

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.

NameRequiredDescriptionDefault
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
element_idsYes
confirm_tokenNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 InfoA
Read-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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 DocumentsA
Read-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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
include_linkedNo
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 ViewC
Destructive

Duplicate a view, optionally with detailing or as a dependent view.

NameRequiredDescriptionDefault
modeNoduplicate
nameNo
viewYes
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 FamiliesA
Destructive

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.

NameRequiredDescriptionDefault
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
familiesNo
operationsYes
stop_on_errorNo
timeout_secondsNo
overwrite_parameter_valuesNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 DetailsA
Read-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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
element_idYesRevit element ID from revit_query_elements or revit_view_elements.
process_idNoRevit process ID; takes precedence over document.
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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# CodeA
Destructive

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.

NameRequiredDescriptionDefault
codeYes
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
transactionNoauto
confirm_tokenNo
timeout_secondsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 FilesA
Destructive

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.

NameRequiredDescriptionDefault
viewsNo
formatYes
sheetsNo
dry_runNo
optionsNo
documentNoTitle or file name substring of the target open document; needed when several are open.
overwriteNo
sheet_setNo
all_sheetsNo
output_dirNo
confirm_tokenNo
timeout_secondsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 NWCA
Destructive

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.

NameRequiredDescriptionDefault
pathYes
viewNo
scopeNo
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
overwriteNo
parametersNo
coordinatesNo
element_idsNo
export_urlsNo
export_linksNo
export_partsNo
settings_xmlNo
confirm_tokenNo
convert_lightsNo
faceting_factorNo
timeout_secondsNo
export_element_idsNo
export_room_geometryNo
find_missing_materialsNo
divide_file_into_levelsNo
export_room_as_attributeNo
convert_element_propertiesNo
convert_linked_cad_formatsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 PNGA
Read-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.

NameRequiredDescriptionDefault
viewYesExact non-template view name from revit_list_views, or a view ID as a decimal string.
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
pixel_sizeNoPNG size in pixels along the fitted dimension, 32 to 4000 (default 1600); Revit rejects smaller images.
process_idNoRevit process ID; takes precedence over document.
output_pathNoNew 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

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 FamiliesA
Read-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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
familiesNo
process_idNoRevit process ID; takes precedence over document.
timeout_secondsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 ElementsB
Idempotent

Temporarily isolate element IDs in the active view; an empty list resets.

NameRequiredDescriptionDefault
resetNo
documentNoTitle or file name substring of the target open document; needed when several are open.
element_idsYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 RegisterB
Read-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.

NameRequiredDescriptionDefault
issuesYes
projectYes
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
pixel_sizeNoPNG size in pixels along the fitted dimension, 32 to 4000 (default 1600); Revit rejects smaller images.
process_idNoRevit process ID; takes precedence over document.
output_pathYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 JobsA
Read-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.

NameRequiredDescriptionDefault
job_idNo
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
wait_secondsNoSeconds to wait, 0 through 50.
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_list_catalogList CatalogA
Read-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.

NameRequiredDescriptionDefault
sectionYes
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 InstancesA
Read-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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 RelationsA
Read-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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
relationYes
source_idNoRevit ID of the source group (group-elements) or family instance (nested-family).
process_idNoRevit process ID; takes precedence over document.
source_nameNoSource name, case-insensitive: a level (level-rooms), area scheme (area-scheme-elements) or view template (view-template-dependents).
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ViewsB
Read-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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
view_typeNoEnglish ViewType name such as FloorPlan or ThreeD, case-insensitive.
process_idNoRevit process ID; takes precedence over document.
name_containsNoCase-insensitive substring of the view name.
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 WarningsA
Read-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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
warning_textNoExact warning description from revit_list_warnings, case-insensitive; an unmatched text is an error.
timeout_secondsNoSeconds to wait for a result (default 120).
include_elementsNoInclude affected elements (ID, category, name) per group. Default false returns counts only.
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 FamiliesA
Destructive

Load workstation .rfa files in one undo entry. Existing families are skipped unless overwrite is true.

NameRequiredDescriptionDefault
pathsYes
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
overwriteNo
timeout_secondsNo
overwrite_parameter_valuesNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ElementsA
Destructive

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.

NameRequiredDescriptionDefault
axisYes
copyNo
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
point_mmYes
element_idsYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 CheckA
Read-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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
output_pathNoNew .xlsx health report path on the MCP server machine; parent must exist and existing files are refused.
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 SnapshotA
Read-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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
parameter_rulesNo
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ElementsA
Destructive

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.

NameRequiredDescriptionDefault
dx_mmYes
dy_mmYes
dz_mmNo
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
element_idsYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 DocumentC
Destructive

Create a project or family from a template on the Revit workstation.

NameRequiredDescriptionDefault
kindNoproject
nameNo
save_asNo
activateNo
templateNo
process_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 SettingsA
Read-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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
settings_xmlYes
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 DocumentA
Destructive

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.

NameRequiredDescriptionDefault
modeNodetached
pathYes
auditNo
activateNo
worksetsNoall
process_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ElementsB
Destructive

Colour elements in selected model views; reset restores overrides saved in this Revit session.

NameRequiredDescriptionDefault
fillNo
colorNo#FF0000
resetNo
viewsNoactive
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
element_idsYes
line_weightNo
transparencyNo
halftone_othersNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 CheckA
Read-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.

NameRequiredDescriptionDefault
viewNoExact non-template view name; limits the search to that view.
levelNo
worksetNo
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
categoriesYesCategory names (1 to 20) from the categories catalog; matches any listed category.
parametersYesExact localized parameter names (1 to 30); names that do not match count as missing.
process_idNoRevit process ID; takes precedence over document.
sample_limitNoMaximum sampled element IDs per empty and missing list, 1 to 100 (default 20); counts always cover all elements.
include_typesNo
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 ConnectionA
Read-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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 FamiliesC
Destructive

Load optional families and place instances in one transaction and undo entry.

NameRequiredDescriptionDefault
loadNo
dry_runNo
at_roomsNo
documentNoTitle or file name substring of the target open document; needed when several are open.
placementsNo
stop_on_errorNo
timeout_secondsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 FamilyA
Destructive

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.

NameRequiredDescriptionDefault
x_mmYes
y_mmYes
levelYes
familyYes
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
type_nameYes
rotation_degNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 SheetC
Destructive

Place views and schedules on a sheet. Coordinates are sheet mm.

NameRequiredDescriptionDefault
sheetYes
viewsYes
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 ModelsA
Destructive

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.

NameRequiredDescriptionDefault
codeNo
openNo
saveNo
pathsNo
stepsNo
folderNo
dry_runNo
exportsNo
patternNo*.rvt
recursiveNo
process_idNo
confirm_tokenNo
stop_on_errorNo
timeout_secondsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ElementsB
Read-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.

NameRequiredDescriptionDefault
viewNoExact non-template view name; limits the search to that view.
levelNo
limitNo
phaseNo
familyNo
fieldsNo
offsetNo
worksetNo
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
type_nameNoExact type name, case-insensitive.
categoriesNo
process_idNoRevit process ID; takes precedence over document.
sort_fieldNoSystem field (e.g. id, category, level) or exact localized parameter name to sort by; default id.id
area_schemeNoExact area-scheme name, case-insensitive.
sort_directionNoasc (default) or desc, case-insensitive.asc
timeout_secondsNoSeconds to wait for a result (default 120).
include_geometryNoInclude location, boundingBox and roomCenterMm in model mm. Default false; true enlarges the response.
parameter_filtersNoAND-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_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_rotateRotate ElementsA
Destructive

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.

NameRequiredDescriptionDefault
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
angle_degYes
center_mmNo
element_idsYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 ActionsA
Destructive

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.

NameRequiredDescriptionDefault
stepsYes
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 DocumentB
Destructive

Save a document. Needs confirm_token from a first call, which changes nothing.

NameRequiredDescriptionDefault
compactNo
save_asNo
documentYes
overwriteNo
process_idNo
confirm_tokenNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 DataA
Read-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.

NameRequiredDescriptionDefault
offsetNo
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
max_rowsNo
scheduleYesExact schedule name or decimal Revit view ID.
process_idNoRevit process ID; takes precedence over document.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ElementsA
Idempotent

Select element IDs for inspection in Revit; an empty list clears the selection.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target open document; needed when several are open.
element_idsYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ParameterA
DestructiveIdempotent

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.

NameRequiredDescriptionDefault
valueYes
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
parameterYes
element_idYes
parameter_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 VisibilityB
Destructive

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.

NameRequiredDescriptionDefault
viewYes
dry_runNo
filtersNo
documentNoTitle or file name substring of the target open document; needed when several are open.
worksetsNo
template_modeNo
hide_categoriesNo
show_categoriesNo
category_classesNo
hide_categories_by_typeNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_shared_coordinatesShared CoordinatesA
Read-onlyIdempotent

Read project and survey coordinates: base and survey points, active site, project locations and link offsets (mm, degrees). Lists are capped at 100 with total counts. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavioral context beyond that: results are capped at 100, total counts are provided, and a non-empty skipped list signals an incomplete result with skippedCount tallying the omissions. That pagination/truncation semantics is exactly the kind of detail structured fields don't convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose and then the truncation behavior. Units are parenthetically packed without excess. Nothing is wasted, though it is slightly terse on the operational side.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 re-explained. For a read-only tool whose annotations carry the safety profile, the addition of list-cap and skipped-entry semantics makes the definition complete enough for an agent to call correctly. Only usage routing against siblings remains unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all four parameters are already documented in the schema, making a baseline of 3 appropriate. The description's unit hints (mm, degrees) pertain to output values rather than the parameters, so it adds no meaning about document/process_id/timeout selection beyond what the schema supplies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 ("Read project and survey coordinates") and enumerates what is returned: base/survey points, active site, project locations, and link offsets. This is clearly distinguishable from the compare/align link-datum siblings, which mutate or diff rather than read. It stops short of explicitly naming those siblings, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, no named alternatives, and no prerequisites stated. The only implied usage is that reading coordinates is what this tool does. An agent gets no help deciding between this and revit_compare_link_datums or revit_align_link_datums.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revit_showShow ElementsB
Idempotent

Display elements in Revit, optionally selecting them; opens a level plan or 3D view when needed.

NameRequiredDescriptionDefault
selectNo
documentNoTitle or file name substring of the target open document; needed when several are open.
element_idsYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 DocumentB
Destructive

Synchronize a workshared document with central. Needs confirm_token from a first call, which changes nothing.

NameRequiredDescriptionDefault
commentYes
compactNo
documentYes
process_idNo
relinquishNoall
confirm_tokenNo
save_local_afterNo
save_local_beforeNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ElementsA
Destructive

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.

NameRequiredDescriptionDefault
viewYes
leaderNo
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
tag_typeNo
categoriesNo
element_idsNo
orientationNohorizontal
skip_taggedNo
max_elementsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 StateA
Read-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.

NameRequiredDescriptionDefault
process_idNoRevit process ID; takes precedence over document.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 ActionA
Destructive

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.

NameRequiredDescriptionDefault
documentNoTitle or file name substring of the target open document; needed when several are open.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ParametersA
Destructive

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.

NameRequiredDescriptionDefault
valueYes
dry_runNo
filtersYes
documentNoTitle or file name substring of the target open document; needed when several are open.
parameterYes
max_elementsNo
parameter_idNo
include_type_parametersNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 ElementsA
Read-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.

NameRequiredDescriptionDefault
viewYesExact non-template view name from revit_list_views, or a view ID as a decimal string.
limitNo
offsetNo
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
categoriesNo
process_idNoRevit process ID; takes precedence over document.
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 InfoA
Read-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.

NameRequiredDescriptionDefault
viewYesExact non-template view name from revit_list_views, or a view ID as a decimal string.
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 SummaryA
Read-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.

NameRequiredDescriptionDefault
viewYesExact non-template view name from revit_list_views, or a view ID as a decimal string.
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 WarningsA
Read-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.

NameRequiredDescriptionDefault
viewYesExact non-template view name from revit_list_views, or a view ID as a decimal string.
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
timeout_secondsNoSeconds to wait for a result (default 120).
pickup_timeout_secondsNoSeconds to wait for the add-in to pick up the job (default 300); unused over HTTP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 CADB
Destructive

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.

NameRequiredDescriptionDefault
joinNo
levelYes
cad_idYes
layersYes
dry_runNo
documentNoTitle or file name substring of the target open document; needed when several are open.
height_mmNo
wall_typeNo
max_gap_mmNo
min_length_mmNo
timeout_secondsNo
max_thickness_mmNo
min_thickness_mmNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 80 tool updatesv0.10.0
    • Changedrevit_activate_document4 fields changed
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / title
        Removed value: -"revit_activate_documentArguments"
      • removedOutput schema / title
        Removed value: -"revit_activate_documentDictOutput"
    • Changedrevit_activate_view8 fields changed
      • removedInput schema / properties / activate_document / title
        Removed value: -"Activate Document"
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / properties / view_type / title
        Removed value: -"View Type"
      • removedInput schema / properties / zoom / title
        Removed value: -"Zoom"
      • removedInput schema / title
        Removed value: -"revit_activate_viewArguments"
      • removedOutput schema / title
        Removed value: -"revit_activate_viewDictOutput"
    • Changedrevit_aggregate_elements29 fields changed
      • changedInput schema / properties / area_scheme / description
        Previous 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."
      • removedInput schema / properties / area_scheme / title
        Removed value: -"Area Scheme"
      • removedInput schema / properties / categories / title
        Removed value: -"Categories"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / family / title
        Removed value: -"Family"
      • changedInput schema / properties / group_by / description
        Previous 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."
      • addedInput schema / properties / group_by / maxItems
        Added value: +2
      • addedInput schema / properties / group_by / minItems
        Added value: +1
      • removedInput schema / properties / group_by / title
        Removed value: -"Group By"
      • removedInput schema / properties / level / title
        Removed value: -"Level"
      • changedInput schema / properties / parameter_filters / description
        Previous 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."
      • removedInput schema / properties / parameter_filters / title
        Removed value: -"Parameter Filters"
      • removedInput schema / properties / phase / title
        Removed value: -"Phase"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / sum_field / description
        Previous 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."
      • removedInput schema / properties / sum_field / title
        Removed value: -"Sum Field"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • changedInput schema / properties / type_name / description
        Previous 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."
      • removedInput schema / properties / type_name / title
        Removed value: -"Type Name"
      • changedInput schema / properties / view / description
        Previous 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."
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / properties / workset / title
        Removed value: -"Workset"
      • removedInput schema / title
        Removed value: -"revit_aggregate_elementsArguments"
      • removedOutput schema / title
        Removed value: -"revit_aggregate_elementsDictOutput"
    • Changedrevit_align_link_datums21 fields changed
      • removedInput schema / properties / create_missing / title
        Removed value: -"Create Missing"
      • removedInput schema / properties / create_plan_views / title
        Removed value: -"Create Plan Views"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / grid_type / title
        Removed value: -"Grid Type"
      • removedInput schema / properties / include_pinned / title
        Removed value: -"Include Pinned"
      • removedInput schema / properties / kinds / title
        Removed value: -"Kinds"
      • removedInput schema / properties / level_offset_mm / title
        Removed value: -"Level Offset Mm"
      • removedInput schema / properties / level_type / title
        Removed value: -"Level Type"
      • removedInput schema / properties / link / title
        Removed value: -"Link"
      • removedInput schema / properties / name_map / title
        Removed value: -"Name Map"
      • removedInput schema / properties / plan_view_type / title
        Removed value: -"Plan View Type"
      • removedInput schema / properties / prefix / title
        Removed value: -"Prefix"
      • removedInput schema / properties / response_timeout_s
        Removed value: -{
        -  "default": 600,
        -  "maximum": 3600,
        -  "minimum": 30,
        -  "title": "Response Timeout S",
        -  "type": "integer"
        -}
      • removedInput schema / properties / reuse_matching / title
        Removed value: -"Reuse Matching"
      • removedInput schema / properties / suffix / title
        Removed value: -"Suffix"
      • addedInput schema / properties / timeout_seconds
        Added value: +{
        +  "default": 600,
        +  "maximum": 3600,
        +  "minimum": 30,
        +  "type": "integer"
        +}
      • removedInput schema / properties / tolerance_mm / title
        Removed value: -"Tolerance Mm"
      • removedInput schema / title
        Removed value: -"revit_align_link_datumsArguments"
      • removedOutput schema / title
        Removed value: -"revit_align_link_datumsDictOutput"
    • Changedrevit_apply_view_template7 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / template / title
        Removed value: -"Template"
      • removedInput schema / properties / views / title
        Removed value: -"Views"
      • removedInput schema / title
        Removed value: -"revit_apply_view_templateArguments"
      • removedOutput schema / title
        Removed value: -"revit_apply_view_templateDictOutput"
    • Removedrevit_batch
    • Changedrevit_batch_cancel3 fields changed
      • removedInput schema / properties / run_id / title
        Removed value: -"Run Id"
      • removedInput schema / title
        Removed value: -"revit_batch_cancelArguments"
      • removedOutput schema / title
        Removed value: -"revit_batch_cancelDictOutput"
    • Changedrevit_batch_fetch6 fields changed
      • removedInput schema / properties / dest_dir
        Removed value: -{
        -  "title": "Dest Dir",
        -  "type": "string"
        -}
      • addedInput schema / properties / output_dir
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / run_id / title
        Removed value: -"Run Id"
      • changedInput schema / required
        Previous value: -[
        -  "run_id",
        -  "dest_dir"
        -]New value: +[
        +  "run_id",
        +  "output_dir"
        +]
      • removedInput schema / title
        Removed value: -"revit_batch_fetchArguments"
      • removedOutput schema / title
        Removed value: -"revit_batch_fetchDictOutput"
    • Changedrevit_batch_start8 fields changed
      • removedInput schema / properties / folder / title
        Removed value: -"Folder"
      • removedInput schema / properties / open_timeout_minutes / title
        Removed value: -"Open Timeout Minutes"
      • removedInput schema / properties / parameter_rules / title
        Removed value: -"Parameter Rules"
      • removedInput schema / properties / paths / title
        Removed value: -"Paths"
      • removedInput schema / properties / recursive / title
        Removed value: -"Recursive"
      • removedInput schema / properties / years / title
        Removed value: -"Years"
      • removedInput schema / title
        Removed value: -"revit_batch_startArguments"
      • removedOutput schema / title
        Removed value: -"revit_batch_startDictOutput"
    • Changedrevit_batch_status3 fields changed
      • removedInput schema / properties / run_id / title
        Removed value: -"Run Id"
      • removedInput schema / title
        Removed value: -"revit_batch_statusArguments"
      • removedOutput schema / title
        Removed value: -"revit_batch_statusDictOutput"
    • Changedrevit_build_report6 fields changed
      • removedInput schema / properties / findings / title
        Removed value: -"Findings"
      • removedInput schema / properties / output_path / title
        Removed value: -"Output Path"
      • removedInput schema / properties / previous_dir / title
        Removed value: -"Previous Dir"
      • removedInput schema / properties / snapshots_dir / title
        Removed value: -"Snapshots Dir"
      • removedInput schema / title
        Removed value: -"revit_build_reportArguments"
      • removedOutput schema / title
        Removed value: -"revit_build_reportDictOutput"
    • Changedrevit_cancel_job6 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / job_id / title
        Removed value: -"Job Id"
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / title
        Removed value: -"revit_cancel_jobArguments"
      • removedOutput schema / title
        Removed value: -"revit_cancel_jobDictOutput"
    • Changedrevit_capture_elements13 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / properties / mode / title
        Removed value: -"Mode"
      • addedInput schema / properties / output_path
        Added 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."
        +}
      • removedInput schema / properties / padding_mm / title
        Removed value: -"Padding Mm"
      • changedInput schema / properties / pixel_size / description
        Previous 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."
      • changedInput schema / properties / pixel_size / minimum
        Previous value: -1New value: +32
      • removedInput schema / properties / pixel_size / title
        Removed value: -"Pixel Size"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / save_to
        Removed 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"
        -}
      • removedInput schema / title
        Removed value: -"revit_capture_elementsArguments"
    • Changedrevit_change_type8 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / properties / family / title
        Removed value: -"Family"
      • removedInput schema / properties / type_name / title
        Removed value: -"Type Name"
      • removedInput schema / title
        Removed value: -"revit_change_typeArguments"
      • removedOutput schema / title
        Removed value: -"revit_change_typeDictOutput"
    • Changedrevit_close_document6 fields changed
      • removedInput schema / properties / confirm_token / title
        Removed value: -"Confirm Token"
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / save / title
        Removed value: -"Save"
      • removedInput schema / title
        Removed value: -"revit_close_documentArguments"
      • removedOutput schema / title
        Removed value: -"revit_close_documentDictOutput"
    • Changedrevit_close_views5 fields changed
      • removedInput schema / properties / keep_active / title
        Removed value: -"Keep Active"
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / views / title
        Removed value: -"Views"
      • removedInput schema / title
        Removed value: -"revit_close_viewsArguments"
      • removedOutput schema / title
        Removed value: -"revit_close_viewsDictOutput"
    • Changedrevit_compare_link_datums18 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / kinds / title
        Removed value: -"Kinds"
      • removedInput schema / properties / level_offset_mm / title
        Removed value: -"Level Offset Mm"
      • removedInput schema / properties / link / title
        Removed value: -"Link"
      • removedInput schema / properties / name_map / title
        Removed value: -"Name Map"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • removedInput schema / properties / prefix / title
        Removed value: -"Prefix"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / reuse_matching / title
        Removed value: -"Reuse Matching"
      • removedInput schema / properties / suffix / title
        Removed value: -"Suffix"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / properties / tolerance_mm / title
        Removed value: -"Tolerance Mm"
      • removedInput schema / title
        Removed value: -"revit_compare_link_datumsArguments"
      • removedOutput schema / title
        Removed value: -"revit_compare_link_datumsDictOutput"
    • Changedrevit_copy10 fields changed
      • removedInput schema / properties / count / title
        Removed value: -"Count"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / dx_mm / title
        Removed value: -"Dx Mm"
      • removedInput schema / properties / dy_mm / title
        Removed value: -"Dy Mm"
      • removedInput schema / properties / dz_mm / title
        Removed value: -"Dz Mm"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / title
        Removed value: -"revit_copyArguments"
      • removedOutput schema / title
        Removed value: -"revit_copyDictOutput"
    • Changedrevit_create_mep_run15 fields changed
      • removedInput schema / properties / connect_to / title
        Removed value: -"Connect To"
      • removedInput schema / properties / diameter_mm / title
        Removed value: -"Diameter Mm"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / height_mm / title
        Removed value: -"Height Mm"
      • removedInput schema / properties / kind / title
        Removed value: -"Kind"
      • removedInput schema / properties / level / title
        Removed value: -"Level"
      • removedInput schema / properties / offset_mm / title
        Removed value: -"Offset Mm"
      • removedInput schema / properties / points_mm / title
        Removed value: -"Points Mm"
      • removedInput schema / properties / system_type / title
        Removed value: -"System Type"
      • removedInput schema / properties / type_name / title
        Removed value: -"Type Name"
      • removedInput schema / properties / width_mm / title
        Removed value: -"Width Mm"
      • removedInput schema / title
        Removed value: -"revit_create_mep_runArguments"
      • removedOutput schema / title
        Removed value: -"revit_create_mep_runDictOutput"
    • Addedrevit_create_schedule
    • Changedrevit_create_sheet8 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / name / title
        Removed value: -"Name"
      • removedInput schema / properties / number / title
        Removed value: -"Number"
      • removedInput schema / properties / title_block / title
        Removed value: -"Title Block"
      • removedInput schema / title
        Removed value: -"revit_create_sheetArguments"
      • removedOutput schema / title
        Removed value: -"revit_create_sheetDictOutput"
    • Changedrevit_create_view17 fields changed
      • removedInput schema / $defs / ViewBox / properties / max_mm / title
        Removed value: -"Max Mm"
      • removedInput schema / $defs / ViewBox / properties / min_mm / title
        Removed value: -"Min Mm"
      • removedInput schema / $defs / ViewBox / title
        Removed value: -"ViewBox"
      • removedInput schema / properties / detail_level / title
        Removed value: -"Detail Level"
      • removedInput schema / properties / display_style / title
        Removed value: -"Display Style"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / properties / kind / title
        Removed value: -"Kind"
      • removedInput schema / properties / level / title
        Removed value: -"Level"
      • removedInput schema / properties / name / title
        Removed value: -"Name"
      • removedInput schema / properties / scale / title
        Removed value: -"Scale"
      • removedInput schema / properties / template / title
        Removed value: -"Template"
      • removedInput schema / properties / view_family_type / title
        Removed value: -"View Family Type"
      • removedInput schema / title
        Removed value: -"revit_create_viewArguments"
      • removedOutput schema / title
        Removed value: -"revit_create_viewDictOutput"
    • Changedrevit_create_wall10 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / end_mm / title
        Removed value: -"End Mm"
      • removedInput schema / properties / height_mm / title
        Removed value: -"Height Mm"
      • removedInput schema / properties / level / title
        Removed value: -"Level"
      • removedInput schema / properties / start_mm / title
        Removed value: -"Start Mm"
      • removedInput schema / properties / wall_type / title
        Removed value: -"Wall Type"
      • removedInput schema / title
        Removed value: -"revit_create_wallArguments"
      • removedOutput schema / title
        Removed value: -"revit_create_wallDictOutput"
    • Changedrevit_delete7 fields changed
      • removedInput schema / properties / confirm_token / title
        Removed value: -"Confirm Token"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / title
        Removed value: -"revit_deleteArguments"
      • removedOutput schema / title
        Removed value: -"revit_deleteDictOutput"
    • Changedrevit_document_info10 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / title
        Removed value: -"revit_document_infoArguments"
      • removedOutput schema / title
        Removed value: -"revit_document_infoDictOutput"
    • Changedrevit_documents11 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / include_linked / title
        Removed value: -"Include Linked"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / title
        Removed value: -"revit_documentsArguments"
      • removedOutput schema / title
        Removed value: -"revit_documentsDictOutput"
    • Changedrevit_duplicate_view8 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / mode / title
        Removed value: -"Mode"
      • removedInput schema / properties / name / title
        Removed value: -"Name"
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / title
        Removed value: -"revit_duplicate_viewArguments"
      • removedOutput schema / title
        Removed value: -"revit_duplicate_viewDictOutput"
    • Changedrevit_edit_families30 fields changed
      • removedInput schema / $defs / AddSharedParameters / properties / op / title
        Removed value: -"Op"
      • removedInput schema / $defs / AddSharedParameters / properties / parameters / title
        Removed value: -"Parameters"
      • removedInput schema / $defs / AddSharedParameters / properties / replace_family_parameter / title
        Removed value: -"Replace Family Parameter"
      • removedInput schema / $defs / AddSharedParameters / properties / shared_parameter_file / title
        Removed value: -"Shared Parameter File"
      • removedInput schema / $defs / AddSharedParameters / title
        Removed value: -"AddSharedParameters"
      • removedInput schema / $defs / Purge / properties / op / title
        Removed value: -"Op"
      • removedInput schema / $defs / Purge / title
        Removed value: -"Purge"
      • removedInput schema / $defs / RemoveParameters / properties / include_shared / title
        Removed value: -"Include Shared"
      • removedInput schema / $defs / RemoveParameters / properties / names / title
        Removed value: -"Names"
      • removedInput schema / $defs / RemoveParameters / properties / op / title
        Removed value: -"Op"
      • removedInput schema / $defs / RemoveParameters / title
        Removed value: -"RemoveParameters"
      • removedInput schema / $defs / SetShared / properties / op / title
        Removed value: -"Op"
      • removedInput schema / $defs / SetShared / properties / shared / title
        Removed value: -"Shared"
      • removedInput schema / $defs / SetShared / title
        Removed value: -"SetShared"
      • removedInput schema / $defs / SharedParameter / properties / group / title
        Removed value: -"Group"
      • removedInput schema / $defs / SharedParameter / properties / guid / title
        Removed value: -"Guid"
      • removedInput schema / $defs / SharedParameter / properties / instance / title
        Removed value: -"Instance"
      • removedInput schema / $defs / SharedParameter / properties / name / title
        Removed value: -"Name"
      • removedInput schema / $defs / SharedParameter / title
        Removed value: -"SharedParameter"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / families / title
        Removed value: -"Families"
      • removedInput schema / properties / operations / title
        Removed value: -"Operations"
      • removedInput schema / properties / overwrite_parameter_values / title
        Removed value: -"Overwrite Parameter Values"
      • removedInput schema / properties / response_timeout_s
        Removed value: -{
        -  "default": 1800,
        -  "maximum": 3600,
        -  "minimum": 30,
        -  "title": "Response Timeout S",
        -  "type": "integer"
        -}
      • removedInput schema / properties / stop_on_error / title
        Removed value: -"Stop On Error"
      • addedInput schema / properties / timeout_seconds
        Added value: +{
        +  "default": 1800,
        +  "maximum": 3600,
        +  "minimum": 30,
        +  "type": "integer"
        +}
      • removedInput schema / title
        Removed value: -"revit_edit_familiesArguments"
      • removedOutput schema / title
        Removed value: -"revit_edit_familiesDictOutput"
    • Changedrevit_element_details13 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / element_id / description
        Previous 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."
      • addedInput schema / properties / element_id / minimum
        Added value: +1
      • removedInput schema / properties / element_id / title
        Removed value: -"Element Id"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / title
        Removed value: -"revit_element_detailsArguments"
      • removedOutput schema / title
        Removed value: -"revit_element_detailsDictOutput"
    • Changedrevit_execute_code10 fields changed
      • removedInput schema / properties / code / title
        Removed value: -"Code"
      • removedInput schema / properties / confirm_token / title
        Removed value: -"Confirm Token"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / response_timeout_s
        Removed value: -{
        -  "default": 600,
        -  "maximum": 3600,
        -  "minimum": 30,
        -  "title": "Response Timeout S",
        -  "type": "integer"
        -}
      • addedInput schema / properties / timeout_seconds
        Added value: +{
        +  "default": 600,
        +  "maximum": 3600,
        +  "minimum": 30,
        +  "type": "integer"
        +}
      • removedInput schema / properties / transaction / title
        Removed value: -"Transaction"
      • removedInput schema / title
        Removed value: -"revit_execute_codeArguments"
      • removedOutput schema / title
        Removed value: -"revit_execute_codeDictOutput"
    • Changedrevit_export17 fields changed
      • removedInput schema / properties / all_sheets / title
        Removed value: -"All Sheets"
      • removedInput schema / properties / confirm_token / title
        Removed value: -"Confirm Token"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / folder
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Folder"
        -}
      • removedInput schema / properties / format / title
        Removed value: -"Format"
      • removedInput schema / properties / options / title
        Removed value: -"Options"
      • addedInput schema / properties / output_dir
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / overwrite / title
        Removed value: -"Overwrite"
      • removedInput schema / properties / response_timeout_s
        Removed value: -{
        -  "default": 1800,
        -  "maximum": 3600,
        -  "minimum": 30,
        -  "title": "Response Timeout S",
        -  "type": "integer"
        -}
      • removedInput schema / properties / sheet_set / title
        Removed value: -"Sheet Set"
      • removedInput schema / properties / sheets / title
        Removed value: -"Sheets"
      • addedInput schema / properties / timeout_seconds
        Added value: +{
        +  "default": 1800,
        +  "maximum": 3600,
        +  "minimum": 30,
        +  "type": "integer"
        +}
      • removedInput schema / properties / views / title
        Removed value: -"Views"
      • removedInput schema / title
        Removed value: -"revit_exportArguments"
      • removedOutput schema / title
        Removed value: -"revit_exportDictOutput"
    • Changedrevit_export_nwc28 fields changed
      • removedInput schema / properties / confirm_token / title
        Removed value: -"Confirm Token"
      • removedInput schema / properties / convert_element_properties / title
        Removed value: -"Convert Element Properties"
      • removedInput schema / properties / convert_lights / title
        Removed value: -"Convert Lights"
      • removedInput schema / properties / convert_linked_cad_formats / title
        Removed value: -"Convert Linked Cad Formats"
      • removedInput schema / properties / coordinates / title
        Removed value: -"Coordinates"
      • removedInput schema / properties / divide_file_into_levels / title
        Removed value: -"Divide File Into Levels"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / properties / export_element_ids / title
        Removed value: -"Export Element Ids"
      • removedInput schema / properties / export_links / title
        Removed value: -"Export Links"
      • removedInput schema / properties / export_parts / title
        Removed value: -"Export Parts"
      • removedInput schema / properties / export_room_as_attribute / title
        Removed value: -"Export Room As Attribute"
      • removedInput schema / properties / export_room_geometry / title
        Removed value: -"Export Room Geometry"
      • removedInput schema / properties / export_urls / title
        Removed value: -"Export Urls"
      • removedInput schema / properties / faceting_factor / title
        Removed value: -"Faceting Factor"
      • removedInput schema / properties / find_missing_materials / title
        Removed value: -"Find Missing Materials"
      • removedInput schema / properties / overwrite / title
        Removed value: -"Overwrite"
      • removedInput schema / properties / parameters / title
        Removed value: -"Parameters"
      • removedInput schema / properties / path / title
        Removed value: -"Path"
      • removedInput schema / properties / response_timeout_s
        Removed value: -{
        -  "default": 1800,
        -  "maximum": 3600,
        -  "minimum": 30,
        -  "title": "Response Timeout S",
        -  "type": "integer"
        -}
      • removedInput schema / properties / scope / title
        Removed value: -"Scope"
      • removedInput schema / properties / settings_xml / title
        Removed value: -"Settings Xml"
      • addedInput schema / properties / timeout_seconds
        Added value: +{
        +  "default": 1800,
        +  "maximum": 3600,
        +  "minimum": 30,
        +  "type": "integer"
        +}
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / title
        Removed value: -"revit_export_nwcArguments"
      • removedOutput schema / title
        Removed value: -"revit_export_nwcDictOutput"
    • Changedrevit_export_view13 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • addedInput schema / properties / output_path
        Added 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."
        +}
      • changedInput schema / properties / pixel_size / description
        Previous 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."
      • changedInput schema / properties / pixel_size / minimum
        Previous value: -1New value: +32
      • removedInput schema / properties / pixel_size / title
        Removed value: -"Pixel Size"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / save_to
        Removed 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"
        -}
      • changedInput schema / properties / view / description
        Previous 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."
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / title
        Removed value: -"revit_export_viewArguments"
      • removedOutput schema / title
        Removed value: -"revit_export_viewDictOutput"
    • Changedrevit_family_audit9 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / families / title
        Removed value: -"Families"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / response_timeout_s
        Removed value: -{
        -  "default": 600,
        -  "maximum": 3600,
        -  "minimum": 30,
        -  "title": "Response Timeout S",
        -  "type": "integer"
        -}
      • addedInput schema / properties / timeout_seconds
        Added value: +{
        +  "default": 600,
        +  "maximum": 3600,
        +  "minimum": 30,
        +  "type": "integer"
        +}
      • removedInput schema / title
        Removed value: -"revit_family_auditArguments"
      • removedOutput schema / title
        Removed value: -"revit_family_auditDictOutput"
    • Changedrevit_isolate6 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / properties / reset / title
        Removed value: -"Reset"
      • removedInput schema / title
        Removed value: -"revit_isolateArguments"
      • removedOutput schema / title
        Removed value: -"revit_isolateDictOutput"
    • Changedrevit_issue_register12 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / issues / title
        Removed value: -"Issues"
      • removedInput schema / properties / output_path / title
        Removed value: -"Output Path"
      • changedInput schema / properties / pixel_size / description
        Previous 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."
      • changedInput schema / properties / pixel_size / minimum
        Previous value: -1New value: +32
      • removedInput schema / properties / pixel_size / title
        Removed value: -"Pixel Size"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / project / title
        Removed value: -"Project"
      • removedInput schema / title
        Removed value: -"revit_issue_registerArguments"
      • removedOutput schema / title
        Removed value: -"revit_issue_registerDictOutput"
    • Changedrevit_jobs14 fields changed
      • removedInput schema / properties / cancel_job_id
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Cancel Job Id"
        -}
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / job_id / title
        Removed value: -"Job Id"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / properties / wait_s
        Removed value: -{
        -  "default": 40,
        -  "description": "Seconds to wait, 0 through 50.",
        -  "maximum": 50,
        -  "minimum": 0,
        -  "title": "Wait S",
        -  "type": "integer"
        -}
      • addedInput schema / properties / wait_seconds
        Added value: +{
        +  "default": 40,
        +  "description": "Seconds to wait, 0 through 50.",
        +  "maximum": 50,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / title
        Removed value: -"revit_jobsArguments"
      • removedOutput schema / title
        Removed value: -"revit_jobsDictOutput"
    • Changedrevit_link_cad14 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / layers / title
        Removed value: -"Layers"
      • removedInput schema / properties / level / title
        Removed value: -"Level"
      • removedInput schema / properties / link / title
        Removed value: -"Link"
      • removedInput schema / properties / origin / title
        Removed value: -"Origin"
      • removedInput schema / properties / path / title
        Removed value: -"Path"
      • removedInput schema / properties / response_timeout_s
        Removed value: -{
        -  "default": 600,
        -  "maximum": 3600,
        -  "minimum": 30,
        -  "title": "Response Timeout S",
        -  "type": "integer"
        -}
      • addedInput schema / properties / timeout_seconds
        Added value: +{
        +  "default": 600,
        +  "maximum": 3600,
        +  "minimum": 30,
        +  "type": "integer"
        +}
      • removedInput schema / properties / units / title
        Removed value: -"Units"
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / title
        Removed value: -"revit_link_cadArguments"
      • removedOutput schema / title
        Removed value: -"revit_link_cadDictOutput"
    • Changedrevit_links_status10 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / title
        Removed value: -"revit_links_statusArguments"
      • removedOutput schema / title
        Removed value: -"revit_links_statusDictOutput"
    • Changedrevit_list_catalog11 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / section / title
        Removed value: -"Section"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / title
        Removed value: -"revit_list_catalogArguments"
      • removedOutput schema / title
        Removed value: -"revit_list_catalogDictOutput"
    • Changedrevit_list_instances4 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / title
        Removed value: -"revit_list_instancesArguments"
      • removedOutput schema / title
        Removed value: -"revit_list_instancesDictOutput"
    • Changedrevit_list_relations15 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / relation / title
        Removed value: -"Relation"
      • changedInput schema / properties / source_id / description
        Previous 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)."
      • removedInput schema / properties / source_id / title
        Removed value: -"Source Id"
      • changedInput schema / properties / source_name / description
        Previous 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)."
      • removedInput schema / properties / source_name / title
        Removed value: -"Source Name"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / title
        Removed value: -"revit_list_relationsArguments"
      • removedOutput schema / title
        Removed value: -"revit_list_relationsDictOutput"
    • Changedrevit_list_views14 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / name_contains / description
        Previous 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."
      • removedInput schema / properties / name_contains / title
        Removed value: -"Name Contains"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • changedInput schema / properties / view_type / description
        Previous 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."
      • removedInput schema / properties / view_type / title
        Removed value: -"View Type"
      • removedInput schema / title
        Removed value: -"revit_list_viewsArguments"
      • removedOutput schema / title
        Removed value: -"revit_list_viewsDictOutput"
    • Changedrevit_list_warnings14 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / include_elements / description
        Previous 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."
      • removedInput schema / properties / include_elements / title
        Removed value: -"Include Elements"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • changedInput schema / properties / warning_text / description
        Previous 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."
      • removedInput schema / properties / warning_text / title
        Removed value: -"Warning Text"
      • removedInput schema / title
        Removed value: -"revit_list_warningsArguments"
      • removedOutput schema / title
        Removed value: -"revit_list_warningsDictOutput"
    • Changedrevit_load_family10 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / overwrite / title
        Removed value: -"Overwrite"
      • removedInput schema / properties / overwrite_parameter_values / title
        Removed value: -"Overwrite Parameter Values"
      • removedInput schema / properties / paths / title
        Removed value: -"Paths"
      • removedInput schema / properties / response_timeout_s
        Removed value: -{
        -  "default": 600,
        -  "maximum": 3600,
        -  "minimum": 30,
        -  "title": "Response Timeout S",
        -  "type": "integer"
        -}
      • addedInput schema / properties / timeout_seconds
        Added value: +{
        +  "default": 600,
        +  "maximum": 3600,
        +  "minimum": 30,
        +  "type": "integer"
        +}
      • removedInput schema / title
        Removed value: -"revit_load_familyArguments"
      • removedOutput schema / title
        Removed value: -"revit_load_familyDictOutput"
    • Changedrevit_mirror9 fields changed
      • removedInput schema / properties / axis / title
        Removed value: -"Axis"
      • removedInput schema / properties / copy / title
        Removed value: -"Copy"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / properties / point_mm / title
        Removed value: -"Point Mm"
      • removedInput schema / title
        Removed value: -"revit_mirrorArguments"
      • removedOutput schema / title
        Removed value: -"revit_mirrorDictOutput"
    • Changedrevit_model_health12 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • addedInput schema / properties / output_path
        Added 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."
        +}
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / save_to
        Removed 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"
        -}
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / title
        Removed value: -"revit_model_healthArguments"
      • removedOutput schema / title
        Removed value: -"revit_model_healthDictOutput"
    • Changedrevit_model_snapshot14 fields changed
      • removedInput schema / $defs / ParameterRule / properties / category / title
        Removed value: -"Category"
      • removedInput schema / $defs / ParameterRule / properties / parameter / title
        Removed value: -"Parameter"
      • removedInput schema / $defs / ParameterRule / title
        Removed value: -"ParameterRule"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / parameter_rules / title
        Removed value: -"Parameter Rules"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / title
        Removed value: -"revit_model_snapshotArguments"
      • removedOutput schema / title
        Removed value: -"revit_model_snapshotDictOutput"
    • Changedrevit_move9 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / dx_mm / title
        Removed value: -"Dx Mm"
      • removedInput schema / properties / dy_mm / title
        Removed value: -"Dy Mm"
      • removedInput schema / properties / dz_mm / title
        Removed value: -"Dz Mm"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / title
        Removed value: -"revit_moveArguments"
      • removedOutput schema / title
        Removed value: -"revit_moveDictOutput"
    • Changedrevit_new_document8 fields changed
      • removedInput schema / properties / activate / title
        Removed value: -"Activate"
      • removedInput schema / properties / kind / title
        Removed value: -"Kind"
      • removedInput schema / properties / name / title
        Removed value: -"Name"
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / save_as / title
        Removed value: -"Save As"
      • removedInput schema / properties / template / title
        Removed value: -"Template"
      • removedInput schema / title
        Removed value: -"revit_new_documentArguments"
      • removedOutput schema / title
        Removed value: -"revit_new_documentDictOutput"
    • Changedrevit_nwc_settings_check11 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / settings_xml / title
        Removed value: -"Settings Xml"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / title
        Removed value: -"revit_nwc_settings_checkArguments"
      • removedOutput schema / title
        Removed value: -"revit_nwc_settings_checkDictOutput"
    • Changedrevit_open_document8 fields changed
      • removedInput schema / properties / activate / title
        Removed value: -"Activate"
      • removedInput schema / properties / audit / title
        Removed value: -"Audit"
      • removedInput schema / properties / mode / title
        Removed value: -"Mode"
      • removedInput schema / properties / path / title
        Removed value: -"Path"
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / worksets / title
        Removed value: -"Worksets"
      • removedInput schema / title
        Removed value: -"revit_open_documentArguments"
      • removedOutput schema / title
        Removed value: -"revit_open_documentDictOutput"
    • Changedrevit_override_graphics13 fields changed
      • removedInput schema / properties / color / title
        Removed value: -"Color"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / properties / fill / title
        Removed value: -"Fill"
      • removedInput schema / properties / halftone_others / title
        Removed value: -"Halftone Others"
      • removedInput schema / properties / line_weight / title
        Removed value: -"Line Weight"
      • removedInput schema / properties / reset / title
        Removed value: -"Reset"
      • removedInput schema / properties / transparency / title
        Removed value: -"Transparency"
      • removedInput schema / properties / views / title
        Removed value: -"Views"
      • removedInput schema / title
        Removed value: -"revit_override_graphicsArguments"
      • removedOutput schema / title
        Removed value: -"revit_override_graphicsDictOutput"
    • Changedrevit_parameter_fill_check21 fields changed
      • changedInput schema / properties / categories / description
        Previous 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."
      • removedInput schema / properties / categories / title
        Removed value: -"Categories"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / include_types / title
        Removed value: -"Include Types"
      • removedInput schema / properties / level / title
        Removed value: -"Level"
      • changedInput schema / properties / parameters / description
        Previous 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."
      • removedInput schema / properties / parameters / title
        Removed value: -"Parameters"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / sample_limit / description
        Previous 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."
      • removedInput schema / properties / sample_limit / title
        Removed value: -"Sample Limit"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • changedInput schema / properties / view / description
        Previous 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."
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / properties / workset / title
        Removed value: -"Workset"
      • removedInput schema / title
        Removed value: -"revit_parameter_fill_checkArguments"
      • removedOutput schema / title
        Removed value: -"revit_parameter_fill_checkDictOutput"
    • Changedrevit_ping10 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / title
        Removed value: -"revit_pingArguments"
      • removedOutput schema / title
        Removed value: -"revit_pingDictOutput"
    • Changedrevit_place_families28 fields changed
      • removedInput schema / $defs / FamilyPlacement / properties / family / title
        Removed value: -"Family"
      • removedInput schema / $defs / FamilyPlacement / properties / host_id / title
        Removed value: -"Host Id"
      • removedInput schema / $defs / FamilyPlacement / properties / level / title
        Removed value: -"Level"
      • removedInput schema / $defs / FamilyPlacement / properties / parameters / title
        Removed value: -"Parameters"
      • removedInput schema / $defs / FamilyPlacement / properties / rotation_deg / title
        Removed value: -"Rotation Deg"
      • removedInput schema / $defs / FamilyPlacement / properties / type_name / title
        Removed value: -"Type Name"
      • removedInput schema / $defs / FamilyPlacement / properties / x_mm / title
        Removed value: -"X Mm"
      • removedInput schema / $defs / FamilyPlacement / properties / y_mm / title
        Removed value: -"Y Mm"
      • removedInput schema / $defs / FamilyPlacement / properties / z_mm / title
        Removed value: -"Z Mm"
      • removedInput schema / $defs / FamilyPlacement / title
        Removed value: -"FamilyPlacement"
      • removedInput schema / $defs / RoomPlacement / properties / family / title
        Removed value: -"Family"
      • removedInput schema / $defs / RoomPlacement / properties / level / title
        Removed value: -"Level"
      • removedInput schema / $defs / RoomPlacement / properties / parameters / title
        Removed value: -"Parameters"
      • removedInput schema / $defs / RoomPlacement / properties / rooms / title
        Removed value: -"Rooms"
      • removedInput schema / $defs / RoomPlacement / properties / rotation_deg / title
        Removed value: -"Rotation Deg"
      • removedInput schema / $defs / RoomPlacement / properties / type_name / title
        Removed value: -"Type Name"
      • removedInput schema / $defs / RoomPlacement / properties / z_mm / title
        Removed value: -"Z Mm"
      • removedInput schema / $defs / RoomPlacement / title
        Removed value: -"RoomPlacement"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / load / title
        Removed value: -"Load"
      • removedInput schema / properties / placements / title
        Removed value: -"Placements"
      • removedInput schema / properties / response_timeout_s
        Removed value: -{
        -  "default": 600,
        -  "maximum": 3600,
        -  "minimum": 30,
        -  "title": "Response Timeout S",
        -  "type": "integer"
        -}
      • removedInput schema / properties / stop_on_error / title
        Removed value: -"Stop On Error"
      • addedInput schema / properties / timeout_seconds
        Added value: +{
        +  "default": 600,
        +  "maximum": 3600,
        +  "minimum": 30,
        +  "type": "integer"
        +}
      • removedInput schema / title
        Removed value: -"revit_place_familiesArguments"
      • removedOutput schema / title
        Removed value: -"revit_place_familiesDictOutput"
    • Changedrevit_place_family11 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / family / title
        Removed value: -"Family"
      • removedInput schema / properties / level / title
        Removed value: -"Level"
      • removedInput schema / properties / rotation_deg / title
        Removed value: -"Rotation Deg"
      • removedInput schema / properties / type_name / title
        Removed value: -"Type Name"
      • removedInput schema / properties / x_mm / title
        Removed value: -"X Mm"
      • removedInput schema / properties / y_mm / title
        Removed value: -"Y Mm"
      • removedInput schema / title
        Removed value: -"revit_place_familyArguments"
      • removedOutput schema / title
        Removed value: -"revit_place_familyDictOutput"
    • Changedrevit_place_views_on_sheet11 fields changed
      • removedInput schema / $defs / SheetPlacement / properties / view / title
        Removed value: -"View"
      • removedInput schema / $defs / SheetPlacement / properties / x_mm / title
        Removed value: -"X Mm"
      • removedInput schema / $defs / SheetPlacement / properties / y_mm / title
        Removed value: -"Y Mm"
      • removedInput schema / $defs / SheetPlacement / title
        Removed value: -"SheetPlacement"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / sheet / title
        Removed value: -"Sheet"
      • removedInput schema / properties / views / title
        Removed value: -"Views"
      • removedInput schema / title
        Removed value: -"revit_place_views_on_sheetArguments"
      • removedOutput schema / title
        Removed value: -"revit_place_views_on_sheetDictOutput"
    • Changedrevit_process_models39 fields changed
      • addedInput schema / $defs / ActionStep
        Added 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"
        +}
      • removedInput schema / $defs / BatchStep
        Removed 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"
        -}
      • removedInput schema / $defs / ProcessCode / properties / code / title
        Removed value: -"Code"
      • removedInput schema / $defs / ProcessCode / properties / transaction / title
        Removed value: -"Transaction"
      • removedInput schema / $defs / ProcessCode / title
        Removed value: -"ProcessCode"
      • removedInput schema / $defs / ProcessExport / properties / all_sheets / title
        Removed value: -"All Sheets"
      • removedInput schema / $defs / ProcessExport / properties / folder
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Folder"
        -}
      • removedInput schema / $defs / ProcessExport / properties / format / title
        Removed value: -"Format"
      • removedInput schema / $defs / ProcessExport / properties / options / title
        Removed value: -"Options"
      • addedInput schema / $defs / ProcessExport / properties / output_dir
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / $defs / ProcessExport / properties / overwrite / title
        Removed value: -"Overwrite"
      • removedInput schema / $defs / ProcessExport / properties / sheet_set / title
        Removed value: -"Sheet Set"
      • removedInput schema / $defs / ProcessExport / properties / sheets / title
        Removed value: -"Sheets"
      • removedInput schema / $defs / ProcessExport / properties / views / title
        Removed value: -"Views"
      • removedInput schema / $defs / ProcessExport / title
        Removed value: -"ProcessExport"
      • removedInput schema / $defs / ProcessOpen / properties / audit / title
        Removed value: -"Audit"
      • removedInput schema / $defs / ProcessOpen / properties / mode / title
        Removed value: -"Mode"
      • removedInput schema / $defs / ProcessOpen / properties / worksets / title
        Removed value: -"Worksets"
      • removedInput schema / $defs / ProcessOpen / title
        Removed value: -"ProcessOpen"
      • removedInput schema / $defs / ProcessSave / properties / compact / title
        Removed value: -"Compact"
      • removedInput schema / $defs / ProcessSave / properties / mode / title
        Removed value: -"Mode"
      • removedInput schema / $defs / ProcessSave / properties / output_dir / title
        Removed value: -"Output Dir"
      • removedInput schema / $defs / ProcessSave / properties / overwrite / title
        Removed value: -"Overwrite"
      • removedInput schema / $defs / ProcessSave / title
        Removed value: -"ProcessSave"
      • removedInput schema / properties / confirm_token / title
        Removed value: -"Confirm Token"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / exports / title
        Removed value: -"Exports"
      • removedInput schema / properties / folder / title
        Removed value: -"Folder"
      • removedInput schema / properties / paths / title
        Removed value: -"Paths"
      • removedInput schema / properties / pattern / title
        Removed value: -"Pattern"
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / recursive / title
        Removed value: -"Recursive"
      • removedInput schema / properties / response_timeout_s
        Removed value: -{
        -  "default": 14400,
        -  "maximum": 14400,
        -  "minimum": 30,
        -  "title": "Response Timeout S",
        -  "type": "integer"
        -}
      • changedInput schema / properties / steps / anyOf
        Previous 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"
        +  }
        +]
      • removedInput schema / properties / steps / title
        Removed value: -"Steps"
      • removedInput schema / properties / stop_on_error / title
        Removed value: -"Stop On Error"
      • addedInput schema / properties / timeout_seconds
        Added value: +{
        +  "default": 14400,
        +  "maximum": 14400,
        +  "minimum": 30,
        +  "type": "integer"
        +}
      • removedInput schema / title
        Removed value: -"revit_process_modelsArguments"
      • removedOutput schema / title
        Removed value: -"revit_process_modelsDictOutput"
    • Changedrevit_query_elements34 fields changed
      • changedInput schema / properties / area_scheme / description
        Previous 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."
      • removedInput schema / properties / area_scheme / title
        Removed value: -"Area Scheme"
      • removedInput schema / properties / categories / title
        Removed value: -"Categories"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / family / title
        Removed value: -"Family"
      • removedInput schema / properties / fields / title
        Removed value: -"Fields"
      • changedInput schema / properties / include_geometry / description
        Previous 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."
      • removedInput schema / properties / include_geometry / title
        Removed value: -"Include Geometry"
      • removedInput schema / properties / level / title
        Removed value: -"Level"
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • addedInput schema / properties / offset / minimum
        Added value: +0
      • removedInput schema / properties / offset / title
        Removed value: -"Offset"
      • changedInput schema / properties / parameter_filters / description
        Previous 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."
      • removedInput schema / properties / parameter_filters / title
        Removed value: -"Parameter Filters"
      • removedInput schema / properties / phase / title
        Removed value: -"Phase"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / sort_direction / description
        Previous 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."
      • removedInput schema / properties / sort_direction / title
        Removed value: -"Sort Direction"
      • changedInput schema / properties / sort_field / description
        Previous 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."
      • removedInput schema / properties / sort_field / title
        Removed value: -"Sort Field"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • changedInput schema / properties / type_name / description
        Previous 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."
      • removedInput schema / properties / type_name / title
        Removed value: -"Type Name"
      • changedInput schema / properties / view / description
        Previous 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."
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / properties / workset / title
        Removed value: -"Workset"
      • removedInput schema / title
        Removed value: -"revit_query_elementsArguments"
      • removedOutput schema / title
        Removed value: -"revit_query_elementsDictOutput"
    • Changedrevit_remove_links9 fields changed
      • removedInput schema / properties / confirm_token / title
        Removed value: -"Confirm Token"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / include_imported_cad / title
        Removed value: -"Include Imported Cad"
      • removedInput schema / properties / kinds / title
        Removed value: -"Kinds"
      • removedInput schema / properties / links / title
        Removed value: -"Links"
      • removedInput schema / title
        Removed value: -"revit_remove_linksArguments"
      • removedOutput schema / title
        Removed value: -"revit_remove_linksDictOutput"
    • Changedrevit_rotate8 fields changed
      • removedInput schema / properties / angle_deg / title
        Removed value: -"Angle Deg"
      • removedInput schema / properties / center_mm / title
        Removed value: -"Center Mm"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / title
        Removed value: -"revit_rotateArguments"
      • removedOutput schema / title
        Removed value: -"revit_rotateDictOutput"
    • Addedrevit_run_actions
    • Changedrevit_save_document8 fields changed
      • removedInput schema / properties / compact / title
        Removed value: -"Compact"
      • removedInput schema / properties / confirm_token / title
        Removed value: -"Confirm Token"
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / overwrite / title
        Removed value: -"Overwrite"
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / save_as / title
        Removed value: -"Save As"
      • removedInput schema / title
        Removed value: -"revit_save_documentArguments"
      • removedOutput schema / title
        Removed value: -"revit_save_documentDictOutput"
    • Changedrevit_schedule_data9 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / max_rows / title
        Removed value: -"Max Rows"
      • removedInput schema / properties / offset / title
        Removed value: -"Offset"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / schedule / title
        Removed value: -"Schedule"
      • removedInput schema / title
        Removed value: -"revit_schedule_dataArguments"
      • removedOutput schema / title
        Removed value: -"revit_schedule_dataDictOutput"
    • Changedrevit_select5 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / title
        Removed value: -"revit_selectArguments"
      • removedOutput schema / title
        Removed value: -"revit_selectDictOutput"
    • Changedrevit_set_parameter9 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / element_id / title
        Removed value: -"Element Id"
      • removedInput schema / properties / parameter / title
        Removed value: -"Parameter"
      • removedInput schema / properties / parameter_id / title
        Removed value: -"Parameter Id"
      • removedInput schema / properties / value / title
        Removed value: -"Value"
      • removedInput schema / title
        Removed value: -"revit_set_parameterArguments"
      • removedOutput schema / title
        Removed value: -"revit_set_parameterDictOutput"
    • Changedrevit_set_view_visibility13 fields changed
      • removedInput schema / properties / category_classes / title
        Removed value: -"Category Classes"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / filters / title
        Removed value: -"Filters"
      • removedInput schema / properties / hide_categories / title
        Removed value: -"Hide Categories"
      • removedInput schema / properties / hide_categories_by_type / title
        Removed value: -"Hide Categories By Type"
      • removedInput schema / properties / show_categories / title
        Removed value: -"Show Categories"
      • removedInput schema / properties / template_mode / title
        Removed value: -"Template Mode"
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / properties / worksets / title
        Removed value: -"Worksets"
      • removedInput schema / title
        Removed value: -"revit_set_view_visibilityArguments"
      • removedOutput schema / title
        Removed value: -"revit_set_view_visibilityDictOutput"
    • Changedrevit_shared_coordinates10 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • removedInput schema / title
        Removed value: -"revit_shared_coordinatesArguments"
      • removedOutput schema / title
        Removed value: -"revit_shared_coordinatesDictOutput"
    • Changedrevit_show6 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / element_ids / title
        Removed value: -"Element Ids"
      • removedInput schema / properties / select / title
        Removed value: -"Select"
      • removedInput schema / title
        Removed value: -"revit_showArguments"
      • removedOutput schema / title
        Removed value: -"revit_showDictOutput"
    • Changedrevit_sync_document10 fields changed
      • removedInput schema / properties / comment / title
        Removed value: -"Comment"
      • removedInput schema / properties / compact / title
        Removed value: -"Compact"
      • removedInput schema / properties / confirm_token / title
        Removed value: -"Confirm Token"
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / properties / relinquish / title
        Removed value: -"Relinquish"
      • removedInput schema / properties / save_local_after / title
        Removed value: -"Save Local After"
      • removedInput schema / properties / save_local_before / title
        Removed value: -"Save Local Before"
      • removedInput schema / title
        Removed value: -"revit_sync_documentArguments"
      • removedOutput schema / title
        Removed value: -"revit_sync_documentDictOutput"
    • Addedrevit_tag_elements
    • Changedrevit_ui_state4 fields changed
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • removedInput schema / title
        Removed value: -"revit_ui_stateArguments"
      • removedOutput schema / title
        Removed value: -"revit_ui_stateDictOutput"
    • Changedrevit_undo_last4 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / title
        Removed value: -"revit_undo_lastArguments"
      • removedOutput schema / title
        Removed value: -"revit_undo_lastDictOutput"
    • Changedrevit_update_parameters20 fields changed
      • removedInput schema / $defs / UpdateFilters / properties / area_scheme / title
        Removed value: -"Area Scheme"
      • removedInput schema / $defs / UpdateFilters / properties / categories / title
        Removed value: -"Categories"
      • removedInput schema / $defs / UpdateFilters / properties / family / title
        Removed value: -"Family"
      • removedInput schema / $defs / UpdateFilters / properties / level / title
        Removed value: -"Level"
      • removedInput schema / $defs / UpdateFilters / properties / parameter_filters / title
        Removed value: -"Parameter Filters"
      • removedInput schema / $defs / UpdateFilters / properties / phase / title
        Removed value: -"Phase"
      • removedInput schema / $defs / UpdateFilters / properties / type_name / title
        Removed value: -"Type Name"
      • removedInput schema / $defs / UpdateFilters / properties / view / title
        Removed value: -"View"
      • removedInput schema / $defs / UpdateFilters / properties / workset / title
        Removed value: -"Workset"
      • removedInput schema / $defs / UpdateFilters / title
        Removed value: -"UpdateFilters"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / include_type_parameters / title
        Removed value: -"Include Type Parameters"
      • removedInput schema / properties / max_elements / title
        Removed value: -"Max Elements"
      • removedInput schema / properties / parameter / title
        Removed value: -"Parameter"
      • removedInput schema / properties / parameter_id / title
        Removed value: -"Parameter Id"
      • removedInput schema / properties / value / title
        Removed value: -"Value"
      • removedInput schema / title
        Removed value: -"revit_update_parametersArguments"
      • removedOutput schema / title
        Removed value: -"revit_update_parametersDictOutput"
    • Changedrevit_view_elements17 fields changed
      • removedInput schema / properties / categories / title
        Removed value: -"Categories"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • addedInput schema / properties / offset / minimum
        Added value: +0
      • removedInput schema / properties / offset / title
        Removed value: -"Offset"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • changedInput schema / properties / view / description
        Previous 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."
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / title
        Removed value: -"revit_view_elementsArguments"
      • removedOutput schema / title
        Removed value: -"revit_view_elementsDictOutput"
    • Changedrevit_view_info12 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • changedInput schema / properties / view / description
        Previous 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."
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / title
        Removed value: -"revit_view_infoArguments"
      • removedOutput schema / title
        Removed value: -"revit_view_infoDictOutput"
    • Changedrevit_view_summary12 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • changedInput schema / properties / view / description
        Previous 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."
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / title
        Removed value: -"revit_view_summaryArguments"
      • removedOutput schema / title
        Removed value: -"revit_view_summaryDictOutput"
    • Changedrevit_view_warnings12 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • changedInput schema / properties / pickup_timeout_seconds / description
        Previous 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."
      • removedInput schema / properties / pickup_timeout_seconds / title
        Removed value: -"Pickup Timeout Seconds"
      • changedInput schema / properties / process_id / description
        Previous 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."
      • removedInput schema / properties / process_id / title
        Removed value: -"Process Id"
      • changedInput schema / properties / timeout_seconds / description
        Previous 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)."
      • removedInput schema / properties / timeout_seconds / title
        Removed value: -"Timeout Seconds"
      • changedInput schema / properties / view / description
        Previous 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."
      • removedInput schema / properties / view / title
        Removed value: -"View"
      • removedInput schema / title
        Removed value: -"revit_view_warningsArguments"
      • removedOutput schema / title
        Removed value: -"revit_view_warningsDictOutput"
    • Changedrevit_walls_from_cad17 fields changed
      • removedInput schema / properties / cad_id / title
        Removed value: -"Cad Id"
      • changedInput schema / properties / document / description
        Previous 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."
      • removedInput schema / properties / document / title
        Removed value: -"Document"
      • removedInput schema / properties / dry_run / title
        Removed value: -"Dry Run"
      • removedInput schema / properties / height_mm / title
        Removed value: -"Height Mm"
      • removedInput schema / properties / join / title
        Removed value: -"Join"
      • removedInput schema / properties / layers / title
        Removed value: -"Layers"
      • removedInput schema / properties / level / title
        Removed value: -"Level"
      • removedInput schema / properties / max_gap_mm / title
        Removed value: -"Max Gap Mm"
      • removedInput schema / properties / max_thickness_mm / title
        Removed value: -"Max Thickness Mm"
      • removedInput schema / properties / min_length_mm / title
        Removed value: -"Min Length Mm"
      • removedInput schema / properties / min_thickness_mm / title
        Removed value: -"Min Thickness Mm"
      • removedInput schema / properties / response_timeout_s
        Removed value: -{
        -  "default": 600,
        -  "maximum": 3600,
        -  "minimum": 30,
        -  "title": "Response Timeout S",
        -  "type": "integer"
        -}
      • addedInput schema / properties / timeout_seconds
        Added value: +{
        +  "default": 600,
        +  "maximum": 3600,
        +  "minimum": 30,
        +  "type": "integer"
        +}
      • removedInput schema / properties / wall_type / title
        Removed value: -"Wall Type"
      • removedInput schema / title
        Removed value: -"revit_walls_from_cadArguments"
      • removedOutput schema / title
        Removed value: -"revit_walls_from_cadDictOutput"
  2. 35 tool updatesv0.9.1
    • Addedrevit_activate_document
    • Addedrevit_activate_view
    • Addedrevit_apply_view_template
    • Changedrevit_batch1 field changed
      • changedInput schema / $defs / BatchStep / properties / action / enum
        Previous 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"
        +]
    • Changedrevit_batch_start1 field changed
      • addedInput schema / properties / open_timeout_minutes
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Open Timeout Minutes"
        +}
    • Addedrevit_cancel_job
    • Addedrevit_capture_elements
    • Addedrevit_change_type
    • Addedrevit_close_views
    • Addedrevit_copy
    • Addedrevit_create_mep_run
    • Addedrevit_create_sheet
    • Addedrevit_create_view
    • Changedrevit_delete1 field changed
      • addedInput schema / properties / confirm_token
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Confirm Token"
        +}
    • Addedrevit_duplicate_view
    • Addedrevit_execute_code
    • Addedrevit_export
    • Changedrevit_export_nwc1 field changed
      • addedInput schema / properties / confirm_token
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Confirm Token"
        +}
    • Addedrevit_issue_register
    • Changedrevit_jobs2 fields changed
      • addedInput schema / properties / job_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Job Id"
        +}
      • addedInput schema / properties / wait_s
        Added value: +{
        +  "default": 40,
        +  "description": "Seconds to wait, 0 through 50.",
        +  "maximum": 50,
        +  "minimum": 0,
        +  "title": "Wait S",
        +  "type": "integer"
        +}
    • Addedrevit_link_cad
    • Addedrevit_load_family
    • Addedrevit_mirror
    • Changedrevit_model_health1 field changed
      • addedInput schema / properties / save_to
        Added 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"
        +}
    • Addedrevit_new_document
    • Addedrevit_override_graphics
    • Addedrevit_place_families
    • Addedrevit_place_views_on_sheet
    • Addedrevit_process_models
    • Changedrevit_remove_links1 field changed
      • addedInput schema / properties / confirm_token
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Confirm Token"
        +}
    • Addedrevit_rotate
    • Addedrevit_schedule_data
    • Addedrevit_ui_state
    • Addedrevit_update_parameters
    • Addedrevit_walls_from_cad
  3. 49 tool updatesv0.7.0
    • Changedrevit_aggregate_elements2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Addedrevit_align_link_datums
    • Addedrevit_batch
    • Addedrevit_batch_cancel
    • Addedrevit_batch_fetch
    • Addedrevit_batch_start
    • Addedrevit_batch_status
    • Addedrevit_build_report
    • Addedrevit_close_document
    • Addedrevit_compare_link_datums
    • Addedrevit_create_wall
    • Addedrevit_delete
    • Changedrevit_document_info2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Addedrevit_documents
    • Addedrevit_edit_families
    • Changedrevit_element_details2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Addedrevit_export_nwc
    • Changedrevit_export_view2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Addedrevit_family_audit
    • Addedrevit_isolate
    • Addedrevit_jobs
    • Changedrevit_links_status2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Changedrevit_list_catalog2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Changedrevit_list_instances5 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "title": "Result",
        -    "type": "array"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"revit_list_instancesOutput"New value: +"revit_list_instancesDictOutput"
    • Changedrevit_list_relations2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Changedrevit_list_views2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Changedrevit_list_warnings2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Changedrevit_model_health2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Addedrevit_model_snapshot
    • Addedrevit_move
    • Addedrevit_nwc_settings_check
    • Addedrevit_open_document
    • Changedrevit_parameter_fill_check2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Changedrevit_ping2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Addedrevit_place_family
    • Changedrevit_query_elements2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Addedrevit_remove_links
    • Addedrevit_save_document
    • Addedrevit_select
    • Addedrevit_set_parameter
    • Addedrevit_set_view_visibility
    • Changedrevit_shared_coordinates2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Addedrevit_show
    • Addedrevit_sync_document
    • Addedrevit_undo_last
    • Changedrevit_view_elements2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Addedrevit_view_info
    • Changedrevit_view_summary2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
    • Changedrevit_view_warnings2 fields changed
      • changedInput schema / properties / document / description
        Previous 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."
      • addedInput schema / properties / process_id
        Added 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"
        +}
  4. 18 tool updatesv0.1.1
    • Changedrevit_aggregate_elements9 fields changed
      • addedInput schema / properties / area_scheme / description
        Added 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."
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / group_by / description
        Added 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."
      • addedInput schema / properties / parameter_filters / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / sum_field / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
      • addedInput schema / properties / type_name / description
        Added 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."
      • addedInput schema / properties / view / description
        Added 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."
    • Changedrevit_document_info3 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
    • Changedrevit_element_details4 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / element_id / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
    • Changedrevit_export_view4 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / pixel_size / description
        Added 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."
      • addedInput schema / properties / save_to / description
        Added 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."
      • addedInput schema / properties / view / description
        Added 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."
    • Changedrevit_links_status3 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
    • Changedrevit_list_catalog3 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
    • Changedrevit_list_instances1 field changed
      • addedInput schema / properties / document / description
        Added 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."
    • Changedrevit_list_relations5 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / source_id / description
        Added 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."
      • addedInput schema / properties / source_name / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
    • Changedrevit_list_views5 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / name_contains / description
        Added value: +"Case-insensitive substring of the view name. Default null applies no name filter; combines with view_type and excludes templates."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
      • addedInput schema / properties / view_type / description
        Added 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."
    • Changedrevit_list_warnings5 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / include_elements / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
      • addedInput schema / properties / warning_text / description
        Added value: +"Exact warning description from revit_list_warnings, matched case-insensitively. Default null includes all warning groups; an unmatched supplied text raises an error."
    • Changedrevit_model_health3 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
    • Changedrevit_parameter_fill_check7 fields changed
      • addedInput schema / properties / categories / description
        Added 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."
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / parameters / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / sample_limit / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
      • addedInput schema / properties / view / description
        Added 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."
    • Changedrevit_ping3 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
    • Changedrevit_query_elements10 fields changed
      • addedInput schema / properties / area_scheme / description
        Added 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."
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / include_geometry / description
        Added 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."
      • addedInput schema / properties / parameter_filters / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / sort_direction / description
        Added value: +"Sort order: asc or desc, case-insensitively; default asc means ascending. Applies to sort_field before offset and limit."
      • addedInput schema / properties / sort_field / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
      • addedInput schema / properties / type_name / description
        Added 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."
      • addedInput schema / properties / view / description
        Added 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."
    • Changedrevit_shared_coordinates3 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
    • Changedrevit_view_elements4 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
      • addedInput schema / properties / view / description
        Added 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."
    • Changedrevit_view_summary4 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
      • addedInput schema / properties / view / description
        Added 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."
    • Changedrevit_view_warnings4 fields changed
      • addedInput schema / properties / document / description
        Added 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."
      • addedInput schema / properties / pickup_timeout_seconds / description
        Added 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."
      • addedInput schema / properties / timeout_seconds / description
        Added 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."
      • addedInput schema / properties / view / description
        Added 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."
  5. 18 tool updates
    • First observedrevit_aggregate_elements
    • First observedrevit_document_info
    • First observedrevit_element_details
    • First observedrevit_export_view
    • First observedrevit_links_status
    • First observedrevit_list_catalog
    • First observedrevit_list_instances
    • First observedrevit_list_relations
    • First observedrevit_list_views
    • First observedrevit_list_warnings
    • First observedrevit_model_health
    • First observedrevit_parameter_fill_check
    • First observedrevit_ping
    • First observedrevit_query_elements
    • First observedrevit_shared_coordinates
    • First observedrevit_view_elements
    • First observedrevit_view_summary
    • First observedrevit_view_warnings

TDQS

B3.2/5.0

Scored across 79 tools

Disambiguation3/5

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.

Naming Consistency5/5

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.

Tool Count1/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    13
    29 npm
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables AI to interact with Revit via MCP, allowing data retrieval and element creation, modification, and deletion.
    13
    29 npm
    MIT