Skip to main content
Glama
Model MCP

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. Committed transactional model edits create one named Undo entry in Revit. Read-only mode is one switch away.

CI Latest release Codecov PyPI Revit 2022-2027 OpenSSF Scorecard MIT

Install with an AI agent

On Windows, paste this prompt into Claude Code, Codex, Cursor, or another agent: Install Model MCP for Revit from https://github.com/sharafutdinovdi/revit-model-mcp. Follow docs/agent-install.md exactly. The agent install guide uses one release command with no checkout, Python, SDK, or administrator rights.

Related MCP server: revit-mcp

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 over SSH; 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. WinGet publication is pending. The submission is open, and the package is not yet in the catalog. Use an MSI from the latest release until it is accepted.

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, Model MCP > Model MCP > Connect AI app registers the bundled server in Claude Desktop, Cursor, VS Code, or Codex (the ChatGPT app or codex CLI); 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.

Why Model MCP

  • Model edit controls. Transactional model edits create one named Undo entry, and one workstation lock enables read-only mode.

  • 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.

Features in 2.0

  • Model MCP ribbon tab. The product menu contains About, Check for updates, and Settings. The panel provides Connect AI app, Activity, My tools, Read-only, Help, Report issue, and Support developer. After a channel permission refusal, Activity explains the problem. Model MCP > Repair channel permissions offers a confirmed repair of the reviewed folder permissions. See channel permissions. Update checks depend on the release channel. Buttons have contextual help and themed tooltips. See the ribbon guide.

  • Workstation read-only lock. The ribbon and revit_set_read_only control one lock across running Revit versions for the Windows user. Chat unlock requires explicit confirmation. Machine policy remains enforced.

  • Model audits. revit_model_audit checks one model against YAML, JSON, inline rules, or a builtin pack. Saved results support history comparisons. revit_audit_report produces XLSX and HTML reports. See model audit.

  • Sheet inspection. revit_list_sheets reads sheets, title blocks, revisions, placed views, and unplaced views.

  • Revit API lookup. revit_api_lookup reads public types and members from the running Revit API before C# execution.

  • Progress notifications. Clients that supply a progress token receive queue state, Revit API availability, and batch step counters during long requests. See progress notifications.

  • Document tab highlight. A border marks the document handling MCP work and clears after completion. The ribbon guide covers timing and settings.

  • Grouped C# authoring. revit_execute_code and revit_run_tool accept transaction="group" for procedures that need their own transactions or edit scopes. The runner keeps the group within one Undo entry and rolls it back for dry runs or failures.

  • Reusable skills. Coordinator, daily QA, sheet set, and ISO 19650 issue register workflows ship in the repository. See prompts and skills.

Upgrading from 1.x

REVIT_MCP_READ_ONLY is no longer used. Remove it from client configuration and set the workstation lock with the Revit ribbon or revit_set_read_only. The lock applies across clients and running Revit versions for the Windows user. Chat unlock requires explicit confirmation, and administrator policy remains enforced. See read-only mode and the 2.0.0 changelog.

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.

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, revit_list_sheets

Read warnings

revit_list_warnings, revit_view_warnings

Check model quality

revit_model_health, revit_parameter_fill_check, revit_family_audit, revit_model_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. Committed transactional model edits create one named Undo entry. High-risk calls use a client token handshake. 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

Control the workstation lock

revit_set_read_only

Save, discover, review, run, and delete approved procedures

revit_save_tool, revit_list_tools, revit_get_tool, revit_run_tool, revit_delete_tool

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

Look up the API and run C# in Revit

revit_api_lookup, 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

Report saved audit results

revit_audit_report

My tools

Successful C# procedures can be saved as named tools with validated parameters after explicit source review and confirmation. The My tools ribbon window lists approved revisions and supports Show code and confirmed deletion. MCP clients run saved tools through the same execution, read-only lock, and Undo pipeline as revit_execute_code. See My tools for saving, running, reviewing, deleting, and the security model.

Prompts and skills

The prompts and coordinator guide describes 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.

The daily QA skill checks model health, warnings, links, parameters, and families without changing the model. The family authoring skill creates and checks families against company rules, with Revit flex, hosting, and connector evidence. The family authoring evaluation profile supports controlled workstation checks. The evaluation guide documents verifier coverage and cases that still need calibration. No live comparative result is published. The sheet set skill resolves a sheet list, confirms the layout, and creates sheets with placed views. Install these folders with the same copy or ZIP procedure.

Safety

  • Actions are on by default. The workstation read-only lock refuses ordinary actions across clients and running Revit versions for the Windows user. Enable it with the Read-only ribbon button or revit_set_read_only. Chat unlock requires explicit confirmation. Action tools stay listed. User locks return errorCode: "read_only"; enforced machine policy returns policy_blocked. Policy overrides the user lock. See actions.

  • One Undo entry per transactional model edit. Committed edits appear in Revit's Undo list and the Activity pane with a summary. Session operations, saves, synchronization, exports, and link removal have separate limits. Link removal cannot be undone. revit_undo_last works only while the latest Revit change remains eligible; temporary isolation also makes it ineligible.

  • Confirmation tokens. Tokens guard saves, synchronization, committed C#, real link removal, saved-tool saves and deletions, first saved-tool runs per Revit session, and every committed action-mode saved-tool run. Conditional gates cover destructive closes, large deletions, existing-file overwrites, and batch writes or code. See confirmation exceptions for dry runs and detached documents. The first call changes nothing and returns confirmation text. The AI app returns the token on retry. Tokens are single use and expire 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.

  • Summaries and verification. Completed actions report a summary. Model-editing actions include verification where supported. A timeout or failed verification can follow a committed change; inspect Revit before retrying.

  • Path redaction. REVIT_MCP_REDACT_PATHS=1 hides directories in response path fields. Names, parameter values, and errors can still contain sensitive data.

  • Unreachable workstation. errorCode: "transport_unavailable" with retryable: true means the transport cannot reach Revit. If an action may have been submitted, inspect its job and the model before resubmitting. See errors and refusals.

  • HTTP. Direct requests require the bearer token except for /health. Reads and authenticated set-read-only remain available while locked. Ordinary actions are refused by either the user lock or enforced policy.

For unattended runs, switch on read-only mode. confirm_token is a two-step handshake with the AI app. The AI app is expected to show the action to you; Model MCP does not show its own dialog. The token does not prove human approval.

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

89 tools
revit_activate_documentActivate DocumentB
Read-only

Activate an already open document by title or path reference.

NameRequiredDescriptionDefault
documentYes
process_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the description should supply the operational detail. It adds only the 'already open' precondition; it does not say what happens if the title matches multiple documents, what error is returned when the document is not found, or how activation interacts with the host application state.

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 identifying qualification is placed immediately after the verb. It is efficient, though its brevity is part of why other dimensions are thin.

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 and annotations exist, so the description needn't explain return values or safety. For a two-parameter tool it is nearly adequate, but the undocumented `process_id` and the absence of any failure-mode context leave gaps for an agent calling it in a multi-document session.

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. 'by title or path reference' usefully explains the accepted forms of the required `document` parameter, but the `process_id` parameter is left entirely unexplained 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?

The description states a specific verb ('Activate') and resource ('document'), and the qualifier 'already open' implicitly separates it from siblings like revit_open_document and revit_close_document. It stops short of naming those alternatives directly, so an agent must still infer the boundary from the surrounding tool list.

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?

'already open' implies the precondition under which this tool applies, which is useful routing context. However, no alternatives are named and no exclusions are stated, so the agent must infer that revit_open_document is the choice when the document is not yet open.

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

revit_activate_viewActivate ViewB
Read-only

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

B3/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, and idempotentHint=false hints at UI-state side effects. The description adds useful behavior about zoom modes and the template-view restriction, but never explains what 'activate' does (make the view current in the UI), what happens if the view is a template, or why the call is non-idempotent.

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 sentences with the verb and the key modifier front-loaded; nothing is padded. The terseness is the issue rather than waste, since the second sentence packs three distinct zoom behaviors into a compressed list.

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 needn't be described, and the zoom modes are covered. But for a 6-parameter tool at 17% schema coverage, the description omits document targeting, view_type disambiguation, and what activate_document does, leaving real gaps for an agent to call 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 coverage is only 17%, so the description must carry the burden, yet it only explains the zoom parameter's three modes (fit / preserve zoom / frame element IDs). The required view parameter and document, view_type, process_id, and activate_document are all left to an undocumented 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?

"Activate a non-template view" gives a specific verb plus resource and adds a real constraint (template views are excluded), which distinguishes it from revit_activate_document and revit_close_views. It doesn't name those siblings explicitly, so an agent still has to infer the split.

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 beyond the implicit 'non-template' scope. With siblings like revit_activate_document, revit_open_document, and revit_view_info in the list, the description should say which situation selects this tool.

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. skipped means incomplete; skippedCount is the total skipped.

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.

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 safety is covered. The description adds real behavioral context beyond that: unit conventions (mm, m2, m3) for summed values and the meaning of the response fields 'skipped' (incomplete) and 'skippedCount' (total skipped), which tells the agent how to interpret partial results.

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 sentences, front-loaded with the core operation, then units, then the area-totals recipe, then output caveats. Dense and largely waste-free, though the unit sentence duplicates what the sum_field schema description already says.

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 needn't be explained, and the description still usefully clarifies the skipped/skippedCount semantics and unit conventions. For a 14-parameter read-only tool the coverage is solid, with the main gap being routing guidance against sibling query/schedule tools and behavior of the AND-combined parameter_filters.

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 64%, so roughly a third of parameters (level, phase, family, workset, categories) are undocumented in both places. The description adds meaning for sum_field units and clarifies that group_by takes one or two distinct fields, but it does not compensate for the undocumented filter parameters or explain interaction between parameter_filters and the scalar filters.

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 output form ('summarize matching elements by one or two fields, with optional sum and average'), which is clearly a grouping/aggregation operation. It does not name or distinguish from close siblings like revit_query_elements or revit_schedule_data, so an agent cannot tell from the text alone when aggregation beats a plain query.

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 area totals, group by level and select the area scheme' gives one concrete conditional recipe, which is useful. Beyond that, usage is only implied: there is no statement of when to prefer this over revit_query_elements or revit_schedule_data, and no exclusion criteria.

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

revit_api_lookupLook up Revit API types and membersA
Read-onlyIdempotent

Look up public Revit API types and members. The agent calls this before writing C# for an unfamiliar type. Results describe the running Revit's API version only. XML summaries are optional. skipped means incomplete; skippedCount is the total skipped.

NameRequiredDescriptionDefault
kindNosearch
limitNo
queryYes
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).
include_obsoleteNo
include_inheritedNo

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 real behavioral context beyond that: results reflect only the running Revit's API version, XML summaries may be absent, and 'skipped means incomplete; skippedCount is the total skipped' warns about partial results.

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 short sentences, front-loaded with purpose then usage trigger then caveats. It is telegraphic in places ('skipped means incomplete') but every sentence carries information and none is filler.

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 description usefully flags partial-result semantics. However, for an 8-parameter tool with 38% schema coverage, the meaning of the enum and the three undocumented boolean/integer parameters is left entirely implicit.

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 38% across 8 parameters, so the description must compensate and largely does not. It never explains the 'kind' enum values (type/member/search), what 'limit' caps, what 'include_obsolete' or 'include_inherited' change, or how 'query' is matched.

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 ('Look up public Revit API types and members') and scopes it to reflection over the Revit API. It is clearly distinguishable from all sibling tools, which are document/model mutation or query tools rather than API documentation lookup.

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 an explicit usage trigger: 'The agent calls this before writing C# for an unfamiliar type.' That tells the agent when to reach for it. It does not name exclusions or an alternative tool, but no sibling covers API metadata, so the practical ambiguity is low.

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_audit_reportBuild Audit ReportA

Write new XLSX and self-contained HTML reports from a local audit JSON file. Paths resolve on the server machine. Existing files are refused.

NameRequiredDescriptionDefault
auditYes
formatNoboth
outputYes

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 declare readOnlyHint=false and destructiveHint=false but say nothing about paths or overwrite policy. The description adds two genuinely useful behavioral facts: paths resolve on the server machine (not the client), and existing files are refused rather than overwritten. That refusal behavior is non-obvious and directly affects invocation safety, though the description stops short of stating what a successful call returns or where the paths must point.

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, each carrying distinct information: what is written, where paths resolve, and the overwrite policy. Front-loaded with the action and resource, no filler or repetition.

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 covers return values and annotations cover the mutation profile, so the description only needs to supply the path and overwrite semantics it does supply. Minor omissions remain, such as the format default and whether the output directory must already exist, but the definition is sufficient to call the tool 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 0%, so the description must carry parameter meaning and it only partially does: 'audit JSON file' maps to the audit parameter and 'paths resolve on the server machine' adds real meaning for output. The format parameter and its enum/default ('both') are only obliquely referenced via 'XLSX and HTML', and it is unclear whether output is a file path or a directory.

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 uses a specific verb ('Write') with concrete resources ('new XLSX and self-contained HTML reports') and names the input source ('local audit JSON file'). However, it does not distinguish itself from the near-identical sibling revit_build_report, leaving the agent unable to choose between them from the text 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?

Usage is only weakly implied by 'from a local audit JSON file' — the agent can infer a JSON input must exist first, but there is no explicit when-to-use, no when-not-to-use, and no mention of the obvious alternative revit_build_report. For a tool with such a close sibling, this is a meaningful gap.

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 collectionB

Persist cancellation and prevent unstarted models from running.

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?

Beyond the annotations' mutation and safety hints, the description adds that cancellation is persisted and that unstarted models will be prevented from running. It leaves important scope questions unresolved, including what happens to models already running and whether a completed or previously cancelled run can be cancelled again.

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 single sentence is compact, front-loaded, and contains no filler. However, the compressed phrase 'Persist cancellation' is less immediately intelligible than a direct statement about saving the batch's cancelled state.

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?

The essential action and pending-model scope are present, and the output schema removes the need to document return values here. For reliable invocation, though, the definition still needs run_id provenance and clearer lifecycle and sibling-tool context.

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 needed to compensate for the sole run_id parameter but never mentions it. Its purpose as a batch-run identifier is inferable from the name, yet its source, expected format, and validity requirements remain 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?

Together with the title, the description clearly conveys cancelling a batch collection and specifically preventing its unstarted models from running. It does not explicitly differentiate this batch-level operation from the sibling revit_cancel_job.

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 reference to unstarted models implies when cancellation is useful, but there is no explicit when-to-use guidance or prerequisite workflow. In particular, it does not direct agents to revit_batch_start for obtaining a run, revit_batch_status for inspection, or revit_cancel_job for a different cancellation scope.

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 snapshotsB

Download completed snapshots to new local files without overwriting.

NameRequiredDescriptionDefault
run_idYes
output_dirYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the agent knows this writes files safely and is not idempotent. The description adds concrete file-level behavior: it downloads to new local files and does not overwrite existing ones, which goes 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.

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words and clear phrasing. It is concise, though slightly under-specified given the tool's two 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?

The tool has two required parameters with no schema descriptions and no output schema explanation needed (since an output schema exists). The description covers file safety but omits what run_id identifies, what output_dir is for, and any batch-completion prerequisite, making it incomplete for correct invocation.

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 explain the two required parameters. It only vaguely hints at output_dir through 'new local files' and says nothing about run_id, leaving the meaning of both parameters largely undefined.

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 ('Download') and resource ('completed snapshots'), and adds a scope ('to new local files without overwriting'). It distinguishes itself from sibling batch tools like revit_batch_status by focusing on fetching results, but it does not explicitly name alternatives.

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 'completed snapshots' implies it should be used after a batch has finished, which is some usage guidance. However, it never states when to use this tool versus revit_batch_status, revit_batch_start, or other siblings, and gives 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_batch_startStart batch collectionC

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

C2.9/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, and the description adds useful context: the run is 'persistent' (state is created, explaining the non-read-only annotation) and 'read-only' over the models themselves, plus the accepted model sources (local, UNC, RSN). However, it never says the run is asynchronous or that progress/results must be retrieved via revit_batch_status and revit_batch_fetch, which is the critical behavioral fact for a 'start' tool. There is mild tension between 'read-only run' and readOnlyHint=false, though it is reconcilable as read-only over the models while creating persistent job state.

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, no filler, and the core capability is front-loaded before the parameter note. The brevity is efficient but borders on under-specification given six 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?

For a six-parameter, zero-coverage, job-initiating tool with an output schema, the description is far too thin: it omits how models are selected (paths vs folder vs years), what recursive and parameter_rules do, and that the returned run must be polled. The output schema means return values need not be described, but the invocation semantics and async workflow are missing.

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 six parameters, and the description explains only open_timeout_minutes, giving its default and the conditional 45-minute default when upgrading in memory — a genuinely useful detail. The other five parameters (paths, years, folder, recursive, parameter_rules) are left entirely undefined in both schema and description, including the key question of whether paths, folder, or years is the required input selector. The description therefore compensates for only one sixth of 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 and resource — 'Start a persistent, read-only run over local, UNC or RSN models' — so an agent knows this initiates a batch collection job rather than reporting on one. The word 'Start' implicitly separates it from the revit_batch_status / revit_batch_cancel / revit_batch_fetch siblings, but those siblings are never named, so the differentiation is left to 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?

There is no statement of when to use this tool versus alternatives such as revit_process_models, nor any mention of the companion lifecycle tools (revit_batch_status, revit_batch_fetch, revit_batch_cancel) that an agent must call after starting a run. The word 'Start' hints at a lifecycle but no condition, prerequisite, or exclusion is given.

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

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

NameRequiredDescriptionDefault
run_idYes

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, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by stating the status is durable and remains readable after the initiating client exits. It does not add further detail about what "run status" or "model status" includes, though the output schema may cover return values.

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 a single, front-loaded sentence with no wasted wording. It clearly leads with the action and resource before adding the timing condition.

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?

The tool has annotations, an output schema, and only one parameter, which lowers the description burden. Still, for a batch-status tool the description should ideally clarify how run_id is obtained and how this differs from revit_batch_fetch or revit_jobs. It is minimally adequate but leaves those routing and parameter-origin 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 0% and the single required parameter run_id is undocumented in the schema. The description does not mention run_id at all, nor does it explain where to obtain it (for example, from revit_batch_start). With low schema coverage, this is a clear 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 and resource: "Read durable run and model status." It is more specific than the tool name alone and distinguishes itself from batch actions like start/cancel by focusing on status. It does not explicitly name the sibling alternatives such as revit_batch_fetch or revit_jobs, 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 phrase "after the initiating client exits" gives a clear timing/context signal for when to use the tool. However, it does not explicitly say when to use this instead of revit_batch_fetch, revit_jobs, or other status-like siblings, nor does it provide exclusions.

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

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, resolved on the machine running this server; 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=false, idempotentHint=false and destructiveHint=false, so the safety profile is partly covered. The description adds genuinely useful context that the operation is fully local and requires no live Revit connection, but it does not disclose that the run writes a file to the server filesystem or that the output is refused if the path exists (that detail lives only 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.

Conciseness4/5

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

A single tight sentence with no filler, and the offline constraint is front-loaded where it matters most. It is arguably too compressed given the tool builds a multi-sheet report, but nothing is redundant.

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?

With an output schema present and full schema description coverage, the description only needs to establish purpose and the no-Revit behavioral stance, and it does both. Nothing an agent needs in order to call this correctly is missing from the combined description-plus-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 100%, so all four parameters (snapshots_dir, output_path, findings, previous_dir) are already documented in the schema. The description adds no further meaning about snapshot schema version, findings structure, or how previous_dir matching works, 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 and resource ('Build a local Excel report from snapshots') and adds a differentiator ('without contacting Revit') that separates it from Revit-touching siblings like revit_export or revit_audit_report. It stops short of naming which sibling produces snapshots (e.g. revit_model_snapshot) as the input source.

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: use it when you already have snapshots on disk and want an offline Excel artifact. There is no explicit when-not, no prerequisite statement about obtaining snapshots first, and no mention that previous_dir enables a Changes comparison, so the agent must infer the workflow.

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

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. skipped means incomplete; skippedCount is the total skipped.

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, resolved on the machine running this server; an existing file is an error. Default null downloads to a temporary directory and returns localPath.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, but the description adds real value beyond them: the temporary view is rolled back (cleanup behavior), the element cap of 500, and the meaning of 'skipped'/'skippedCount' in results. With no output schema, that return-value explanation is especially useful. It still omits what the response contains besides the PNG path.

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 short sentences, front-loaded with the core action and the key constraint. 'skipped means incomplete; skippedCount is the total skipped' is terse to the point of being slightly cryptic, but nothing is wasted.

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 7-parameter rendering tool with no output schema, the description covers the essential action, limits, transport modes, and cleanup behavior. It leaves gaps around the image framing (padding_mm), and what the call returns beyond localPath, which would matter for an agent assembling evidence.

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 57%, and several parameters (mode, element_ids, padding_mm) carry no schema description at all. The description partly compensates by naming the two mode values ('3d or plan') and the 1-to-500 element range, but adds nothing about padding_mm or how element_ids should be sourced. Baseline 3 is appropriate at this coverage level.

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 — 'Render a highlighted PNG that marks 1 to 500 elements, for issue evidence' — which clearly separates it from read-only siblings like revit_show or revit_isolate. It does not name the closest alternative (revit_export_view), so the differentiation is implicit rather than explicit.

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

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for issue evidence' and the 1-to-500 element bound imply when the tool fits, and 'The temporary view is rolled back' hints it is non-destructive. However, there is no explicit statement of when to prefer this over revit_export_view, revit_show, or revit_isolate, and no prerequisites for SSH vs local transport are given.

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

Close open UI views in the active document.

NameRequiredDescriptionDefault
viewsNo
process_idNo
keep_activeNo

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?

The annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=false, so safety is nominally covered. But the description adds nothing about the behavior that actually matters here: whether omitting 'views' closes all views, whether the active view can be closed, or whether unsaved view state is lost. The only hint at such behavior lives in an undocumented parameter name.

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 or redundancy. It is appropriately tight, though the brevity comes at the cost of the substance penalized in other dimensions rather than from good editing.

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?

The output schema exists, so return values need not be described, but nothing about the three optional parameters or the all-views default is covered. For a tool whose entire behavior depends on optional arguments, one sentence is not sufficient context for correct invocation.

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% across three parameters, and the description mentions none of them. 'views', 'process_id', and 'keep_active' (defaulting to true, which strongly implies it prevents closing the active view) are entirely unexplained, so the agent gets no help resolving name lists, process scoping, or the keep-active 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?

"Close open UI views in the active document" gives a specific verb (close) and resource (UI views) plus a scope qualifier (active document). It does not distinguish itself from siblings such as revit_close_document, revit_activate_view, or revit_list_views, so an agent must infer the boundary itself.

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 call this versus revit_close_document or revit_activate_view, no prerequisites, and no mention of what happens when the views parameter is omitted. The agent is left to infer whether a call with no arguments closes every open view or does nothing.

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_delete_toolDelete My ToolC
Destructive

Delete all revisions with confirm_token after a first confirmation challenge. No Undo. Uses a two-step AI app token handshake.

NameRequiredDescriptionDefault
nameYes
confirm_tokenNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/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 lower bar applies, yet the description still adds real value: "No Undo" confirms irreversibility and the "two-step AI app token handshake" plus confirmation challenge disclose an auth/protocol requirement an agent must plan for. It stops short of saying what state is left behind or what the token challenge returns.

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 action and the irreversibility warning, with no wasted wording. The brevity is only a problem where it creates ambiguity about the deletion target, not where it 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?

An output schema exists, so return values need not be described, but for a destructive two-parameter tool the description should at minimum identify what object the `name` refers to and how the confirmation handshake is sequenced. The mismatch between "revisions" and a tool-deletion name leaves the agent unable to invoke this 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 0% and the description never explains the required `name` parameter or its regex pattern, which is the primary identifier for the operation. It only gestures at `confirm_token` via "two-step token handshake," without stating the token's format, source, or that it is optional and defaults to null.

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

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description says it deletes "all revisions," but the tool name is revit_delete_tool and its siblings (revit_save_tool, revit_list_tools, revit_get_tool) strongly imply it removes a saved tool definition, not model revisions. An agent cannot tell which resource is actually destroyed, and the title "Delete My Tool" is tautological filler.

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 choose this over the sibling revit_delete, nor any prerequisites such as required permissions or what happens if the tool is in use. The only procedural hint is the phrase "after a first confirmation challenge," which describes a step but not when the tool is appropriate.

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. skipped means incomplete; skippedCount is the total skipped.

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

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 safety is covered by structured data. The description earns credit beyond that by disclosing units (elevations in mm) and, importantly, that results can be partially incomplete ("skipped means incomplete; skippedCount is the total skipped"), which is real behavioral context an agent cannot get 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 short sentences, content front-loaded, no filler. The second sentence is compressed to the point of being cryptic — "skipped" is named without saying what a skipped item is or which result section it appears in.

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 full output schema and complete annotations, the description only needs to frame the tool, which it does by listing the data returned plus the partial-result caveat. The one gap is that the skipped/skippedCount note is under-explained relative to how much it matters for interpreting results.

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 document, process_id and timeout_seconds are already fully documented in the schema; the description adds no parameter-level meaning. It does contribute the mm unit for level elevations, but that concerns output rather than input 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?

Opens with a specific verb ("Read") and enumerates exactly what is returned: file name, Revit version, levels with mm elevations, area schemes, worksets, view count. That is far more specific than the sibling revit_documents or revit_ui_state, though the description never names those siblings to make the distinction explicit.

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 "the active model's" implies the usage context (you want metadata about the currently active document), but there is no explicit when-to-use vs. revit_documents / revit_model_snapshot / revit_view_summary, and no note on what to do when multiple documents are open despite the schema having document and process_id selectors.

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. skipped means incomplete; skippedCount is the total skipped.

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

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, so the safety profile is largely covered. The description does add real behavior — background documents are included, linked documents are conditionally excluded, and 'skipped'/'skippedCount' are explained — which is useful context beyond the annotations, though return shape details are already handled by 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, front-loaded with the primary behavior before the conditional flag and the skipped-field glossary. The skipped/skippedCount sentence borders on redundant given an output schema exists, but it is compact and non-repetitive.

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 read-only listing tool with a full annotation set and an output schema, the description covers scope, the conditional linked-document behavior, and the meaning of skipped results — enough for an agent to call it correctly. Only explicit routing to sibling tools 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?

Schema coverage is 75%, so the baseline is 3, but the description meaningfully compensates for the one undocumented parameter by explaining that linked documents appear only when include_linked is set. It does not restate the document/process_id precedence or timeout_seconds, but those are already covered in the schema text.

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 every open document in one Revit process') with an explicit scope qualifier ('including background documents') that rules out a repo-wide listing. It does not name the sibling it differs from (e.g., revit_list_instances for processes or revit_document_info for a single doc), so differentiation is implied by scope 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 context is implied rather than stated: 'one Revit process' and the include_linked sentence tell the agent how the result set changes with a flag, but there is no explicit when-to-use guidance or named alternative for listing open documents versus instances or document info. The agent must infer selection from sibling names.

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 FamiliesB
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. May commit; revit_jobs polls; retry repeats.

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

B3/5.0
Behavior3/5

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

Annotations already declare destructive and non-idempotent. The description adds that a dry run rolls back all changes and that execution may commit and be polled via revit_jobs, which is real value. However, it does not say what specifically gets destroyed, what 'may commit' means operationally, or that a document must be open/active.

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?

Very short and front-loaded, with no wasted filler. But it is compressed to the point of ambiguity, using fragments like 'May commit; revit_jobs polls; retry repeats' that require the reader to guess the subject.

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?

This is a complex, destructive, multi-operation tool with 7 parameters and nested operation schemas. The description covers only the family targeting and dry-run behavior, leaving the operation vocabulary and error/timeout behavior unexplained. An output schema exists, so return values need not be covered, but the input side remains thin.

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. The description only clarifies 'families' (exact names or ["*"]). The four operation types, stop_on_error, timeout_seconds, and overwrite_parameter_values receive no explanation in either schema or 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 clear verb and resource: edit an open family in place, or named project families. This distinguishes it from revit_load_family and revit_place_families by implication. The phrase 'one load cycle each' is opaque jargon that weakens otherwise solid clarity.

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?

Adds useful operating guidance: use dry_run to roll back, poll with revit_jobs, retry repeats. It does not say when to prefer this over revit_update_parameters or revit_set_parameter, so the agent gets no comparative routing guidance.

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. skipped means incomplete; skippedCount is the total skipped.

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

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 readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: geometry units (model mm), the meaning of roomCenterMm, and that 'skipped' signals incomplete results with skippedCount as the total — non-obvious output semantics worth disclosing.

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?

Front-loaded with the core purpose in the first clause, then three short clauses covering units, a named field, and skip semantics. No filler or repetition, and each clause carries information an agent would otherwise have to guess.

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 explained, yet the description proactively clarifies two easily misread fields (roomCenterMm, skipped/skippedCount). Combined with the annotation-covered safety profile, this is nearly complete; only multi-instance/document targeting context is left entirely to 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 100%, so all four parameters (document, element_id, process_id, timeout_seconds) are already documented, including process_id taking precedence over document. The description adds only the 'by Revit ID' framing and nothing about timeouts or document disambiguation, 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 ('Read') and a well-defined resource ('parameters and geometry of an element by Revit ID'), plus what is bundled in (type parameters, related warnings). It is clear what the tool returns, though it never names the sibling it contrasts with (e.g. revit_query_elements), 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'by Revit ID' hints that an ID must first come from a query tool, and the schema's element_id field names revit_query_elements/revit_view_elements as sources. There is no explicit when-to-use versus when-to-use-something-else statement, and no exclusions or prerequisites for multi-document scenarios.

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

Run a C# body or public static Script.Execute(ScriptContext ctx) on the Revit thread. revit_api_lookup supplies API metadata. Auto owns a Transaction; group lets scripts own Transactions and edit scopes inside one Undo group. Close all scopes before returning; transaction="none" is refused. Needs confirm_token except dry_run, which rolls back. May commit; revit_jobs polls; retry repeats.

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.5/5.0
Behavior5/5

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

Annotations flag the tool as destructive and non-idempotent, and the description adds the critical mechanics: transaction ownership modes, the requirement to close all scopes before returning, that transaction="none" is refused, that dry_run rolls back, that the call may commit, and that retry repeats the operation. These are exactly the behaviors an agent needs to avoid corrupting a model.

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?

Purpose is front-loaded and nearly every clause carries load-bearing information (threading, transaction modes, confirmation, rollback, polling). The telegraphic style ('retry repeats') is terse to the point of being slightly cryptic, costing a little clarity.

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 high-risk arbitrary-code-execution tool with an output schema already present, the description covers threading, transaction handling, confirmation, rollback, and follow-up via revit_jobs. The main omission is how an agent obtains a confirm_token and any sandbox/namespace limits on the code, which would round out completeness.

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, the description does the heavy lifting: it explains the transaction enum ('auto' owns, 'group' lets scripts own scopes in one Undo group, 'none' refused), the confirm_token requirement, and dry_run's rollback semantics. It leaves timeout_seconds and the 200000-char code limit unexplained, 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?

The description names a specific action (run C# code) and two accepted code forms ('C# body or public static Script.Execute(ScriptContext ctx)'), plus the execution context ('on the Revit thread'). This is unmistakably different from the CRUD/view siblings, and it points to revit_api_lookup as the metadata source and revit_jobs for polling.

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 operating guidance: use revit_api_lookup for API metadata, choose 'auto' vs 'group' for transaction ownership, and confirm_token is required except for dry_run. It does not explicitly say when to prefer this tool over revit_run_tool/revit_run_actions, so the when-not 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_exportExport Model FilesA
Destructive

Save PDF, DWG, IFC or schedule CSV files to a folder the user names with output_dir on the Revit workstation; dry_run returns planned file names. Replacing existing files (overwrite=true) uses a two-step confirm_token handshake with the AI app. The AI app is expected to show the action to you; Model MCP does not show its own dialog. May commit; revit_jobs polls; retry repeats.

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/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the two-step confirm_token flow for overwrites, that Model MCP shows no dialog of its own and the host app must surface the action, and that the call may commit a job that is polled via revit_jobs. That is exactly the destructive/async/auth context an agent needs before calling, and it is consistent with destructiveHint=true and idempotentHint=false.

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-loads the core action and file types, then layers on the overwrite handshake and job semantics. The trailing telegraphic sentence 'May commit; revit_jobs polls; retry repeats' is terse to the point of ambiguity but earns its space.

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?

Return values are covered by the output schema and the destructive/async behavior is well described, but for a 12-parameter export the selection semantics are incomplete: an agent cannot tell what happens if views and sheets are all omitted, whether all_sheets or sheet_set take precedence, or what options and timeout_seconds control.

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 8% schema description coverage across 12 parameters, the description carries real weight and does explain the highest-risk ones: output_dir, dry_run, overwrite and confirm_token. However it says nothing about views, sheets, sheet_set, all_sheets, options, document or timeout_seconds, leaving most of the parameter surface 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 plus the exact output artifacts: saves PDF, DWG, IFC and schedule CSV files to a named folder on the Revit workstation. An agent knows what the tool produces. It stops short of naming the obvious siblings (revit_export_view, revit_export_nwc) that also export, so the boundary is inferred from the format list 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operating guidance: use dry_run to preview planned file names, use overwrite only with the confirm_token handshake, and poll revit_jobs because the operation may commit asynchronously. It does not say when to choose this over revit_export_view or revit_export_nwc, which is the main gap.

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

Save an NWC file to a folder the user names through path on the Revit workstation; needs the Navisworks exporter. settings_xml applies exporter XML values, explicit arguments take precedence. Replacing an existing file (overwrite=true) uses a two-step confirm_token handshake with the AI app. The AI app is expected to show the action to you; Model MCP does not show its own dialog. May commit; revit_jobs polls; retry repeats.

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

B3.4/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds genuinely new behavior: overwrite triggers a two-step confirm_token handshake, the AI app (not Model MCP) is responsible for showing the action to the user, and settings_xml values are overridden by explicit arguments. The phrase 'May commit' is cryptic about what side effects occur on the document, 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?

The core action is front-loaded in the first sentence and there is no filler. The telegraphic tail ('May commit; revit_jobs polls; retry repeats.') is compact but reads as shorthand that costs some clarity.

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 overwrite/permission workflow is covered. For a 24-parameter export tool with 4% schema coverage, the description leaves most export options semantically unexplained, which is a meaningful gap even though the invocation path (path, overwrite, confirm_token) is clear.

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%, so the description must carry the parameter burden, yet it explains only path, overwrite/confirm_token, and settings_xml precedence. The remaining ~20 exporter options (scope, coordinates, faceting_factor, divide_file_into_levels, element_ids, timeout_seconds, etc.) get no meaning beyond their bare 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 first clause names a specific verb and artifact: save an NWC file to a user-named folder path on the Revit workstation, and it notes the Navisworks exporter dependency. It is clearly distinguishable from the generic revit_export and revit_export_view because the output format is stated, though it never names those siblings 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?

It gives a prerequisite (Navisworks exporter must be installed) and post-call guidance ('revit_jobs polls; retry repeats'), plus a hint that overwrite requires a confirm handshake. It never says when to choose this over revit_export or revit_export_view, or when dry_run should be used instead of a real export.

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

Save a picture of the selected view as a PNG file in a folder the user names on the AI app computer. output_path names the new file; without it, a temporary folder is used. Existing files are refused. The active view and model stay unchanged. skipped means incomplete; skippedCount is the total skipped.

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, resolved on the machine running this server; 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?

Goes beyond the annotations meaningfully: it discloses that existing files are refused (no silent overwrite), that the active view and model stay unchanged (consistent with destructiveHint=false), that omitting output_path falls back to a temporary folder, and what skipped/skippedCount signify. That is real behavioral context not encoded in the hints. It stops short of covering failure modes or how many items can be skipped, so not 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.

Conciseness5/5

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

Five short sentences, each carrying a distinct fact: action, output naming, overwrite policy, model side effects, skip semantics. The core action is front-loaded with no filler or hedging. The closing skipped/skippedCount line is terse to the point of being slightly cryptic, but it 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?

For a single-view PNG export with a full output schema, the description covers what an agent needs: where the file lands, overwrite behavior, and that the model is untouched. It does not explain the return payload shape, which is acceptable since an output schema exists, but it omits error conditions beyond existing-file refusal.

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 five parameters are already documented, including output_path's temp-directory default and localPath return. The description restates the output_path fallback and clarifies that the path resolves on the AI app machine, which adds a little, but repeats rather than extends the schema. Baseline 3 applies when the schema does the heavy lifting.

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: save a picture of the selected view as a PNG file. An agent can tell this is a view-to-image export, distinct from model/data tools. However, it never mentions the sibling revit_export or revit_export_nwc, so the boundary between this and other export tools is left implicit.

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 narrow purpose (export the currently selected view to PNG) rather than stated. There is no explicit when-to-use or when-to-prefer-another-tool guidance, and no mention of prerequisites such as the view needing to be non-template or active. An agent could infer the case but must reason about alternatives itself.

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. detail="summary" returns parameter counts and up to 20 unused parameter names; detail="full" returns all parameter metadata with group IDs and groupName labels. The wildcard audits the first 200 editable families sorted by name; data.skipped lists each remaining name and reason, with skippedCount. skipped means incomplete; skippedCount is the total skipped.

NameRequiredDescriptionDefault
detailNosummary
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?

Annotations already declare readOnly/idempotent/non-destructive, yet the description still adds real behavior: no save or load side effects, a 200-family wildcard cap with name sorting, and the meaning of data.skipped/skippedCount for incomplete entries. It leaves out timeout behavior and whether an active document must be open, which are worth stating for this class of 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?

Front-loaded with the core action and its no-side-effect guarantee, then mode rules, then return-shape details; almost every clause carries information. The closing pair "skipped means incomplete; skippedCount is the total skipped" is slightly repetitive but resolves a real ambiguity in the return payload.

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 five-parameter, multi-mode read tool with an output schema, the description supplies enough to call it correctly and to interpret the skip bookkeeping. The remaining gap is minor: timeout and document-targeting prerequisites are only partly covered by the schema's own parameter descriptions.

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 40%, so the description must compensate and largely does: it explains the accepted forms of `families` (exact names, ["*"], or omitted in family mode) and the semantic difference between detail="summary" and detail="full" in terms of what is returned. `timeout_seconds` remains undocumented 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?

Specific verb+resource ("Audit ... families") with an explicit scope constraint ("without saving or loading changes"), and it distinguishes its two operating modes (open family vs. named project families). It does not name or contrast with adjacent siblings such as revit_model_audit, revit_audit_report, or revit_edit_families, so an agent must infer the boundary from the words 'audit' vs 'edit'.

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 concrete mode-selection rules: project mode requires exact names or ["*"], family mode takes none, and it explains which detail level to pick and what each returns. It stops short of stating when to choose this over other audit or parameter-check siblings, so it lacks true alternative routing.

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

revit_get_toolReview My ToolC
Read-onlyIdempotent

Return approved source and schema without execution.

NameRequiredDescriptionDefault
nameYes

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, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds the meaningful behavioral note that no execution occurs, but leaves open what 'approved' means (approval workflow? validation state?) and what happens if the named tool is absent, which matters for an agent deciding whether to fall back to revit_list_tools.

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 short sentence with no filler; the key constraint ('without execution') is placed where it will be read. It is efficient, though efficiency here partly reflects under-specification rather than tight writing.

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, and annotations cover safety. However, for a tool with a required name parameter at 0% schema coverage and four plausible siblings (list/save/run/delete tool), the description omits both the parameter's role and the routing logic, leaving real 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 0% and the single parameter 'name' has only a regex pattern, no prose. The description never mentions the name argument or its format/lookup semantics, so an agent gets no help beyond guessing that it identifies the tool — the structured data does not compensate, and the description does not either.

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 verb 'return' and object 'source and schema' point at retrieving a stored tool definition, and 'without execution' separates it from revit_run_tool. But 'approved' is undefined and the object of retrieval (a saved tool, presumably identified by name) is never stated, so the purpose is only inferable from the tool name rather than the description.

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?

'Without execution' hints that this is the inspect-instead-of-run path versus revit_run_tool, but that's the only guidance. There's no explicit when-to-use, no differentiation from revit_list_tools (which presumably enumerates tools) or revit_save_tool, and no stated precondition such as the tool needing to exist.

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

revit_isolateIsolate ElementsA
Read-onlyIdempotent

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

A3.5/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context by saying isolation is temporary and that an empty list restores the normal view state, but it doesn't resolve how the separate reset boolean differs from that empty-list behavior.

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 one tight sentence with the core action and scope up front and the reset behavior appended, with no wasted words.

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 and annotations cover safety, so the bar is moderate. Still, the ambiguity between the reset parameter and the empty element_ids list leaves a calling agent without full confidence in how to restore the view.

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%, and the description explains element_ids behavior (an empty array resets) but says nothing about the reset boolean, which is undocumented in the schema and overlaps in purpose with the empty-list reset. The document parameter is described in the schema, not 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?

The description has a specific verb and resource ("Temporarily isolate element IDs in the active view") and even notes the effect of an empty list. It doesn't distinguish itself from related siblings like revit_set_view_visibility or revit_select, which also control what is visible or selected.

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?

"Temporarily isolate" plus "an empty list resets" implies when to use it, but there is no explicit contrast with revit_set_view_visibility or revit_select, and no statement about prerequisites. A reader must infer that isolation is a view-state operation that does not change the model.

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

revit_issue_registerIssue RegisterA

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. skipped means incomplete; skippedCount is the total skipped.

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_pathYesNew .xlsx issue register path, resolved on the machine running this server; existing files are refused.

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?

The description goes well past the annotations: it discloses a 25-snapshot cap allocated 'by severity', a 210-second time budget, that failed snapshots degrade to cell notes rather than failing the run, a local/SSH transport prerequisite, and that existing output files are refused. These are exactly the operational behaviors an agent needs and none are contradicted by readOnlyHint=false / destructiveHint=false.

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 critical points are front-loaded in the opening sentence, and the remaining sentences are dense with no filler. It is slightly cramped, folding return-value semantics and snapshot budgets into a single paragraph, but no sentence is wasted.

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 needn't be explained, yet the description helpfully defines 'skipped' and 'skippedCount'. Limits, budget, transport, and overwrite refusal are all covered; the only real gap is the internal structure of the required issues/project objects, which is left to additionalProperties 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 coverage is 67% and the schema already documents document, pixel_size, process_id, and output_path in detail. The description adds only that existing output files are refused (repeating the output_path schema text) and says nothing about the shape of the required issues or project nested objects. Baseline 3 applies since the schema carries most parameter meaning.

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 first sentence gives a specific verb and artifact: 'Write a new local .xlsx issue register with element snapshots and review documents.' That is far more informative than the bare name 'Issue Register' and clearly separates it from nearby tools like revit_build_report or revit_export. It stops short of naming a sibling to disambiguate against, so 4 rather than 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?

Usage is implied through constraints ('Takes 1 to 60 issues', 'Existing output files are refused', 'Snapshots need local or SSH transport') rather than an explicit statement of when to pick this over revit_build_report or revit_model_audit. An agent can infer preconditions but gets no direct when/when-not guidance or named alternative.

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. skipped means incomplete; skippedCount is the total skipped.

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

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 real value on top: 24-hour retention on the workstation surviving server restarts, blocking wait semantics, and the meaning of skipped/skippedCount. It does not say how many 'recent jobs' are returned or how far back 'recent' reaches, which is the main remaining 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 dense, front-loaded sentences with no filler; the two operating modes come first. The trailing 'skipped means incomplete; skippedCount is the total skipped' is terse to the point of being cryptic and arguably belongs to the response fields, which an output schema already documents.

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?

With an output schema present and only 5 optional params, the definition covers the essentials for the wait path but leaves the two-timer interaction unexplained and gives no sense of result volume or pagination for the listing path. Adequate but with clear gaps for a dual-mode 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 coverage is 80%, so the baseline is 3. The description only restates wait_seconds' range and default, which the schema already specifies, and never addresses the genuinely ambiguous part: how timeout_seconds (default 120) interacts with wait_seconds (max 50). That is the one clarification the description should have supplied.

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 recent jobs') plus a second blocking mode ('wait ... for the result of an action jobId'), which is clear enough to distinguish this from pure-mutation siblings. It never names the closely related siblings (revit_batch_status, revit_cancel_job, revit_run_actions), so the agent must infer the boundary itself.

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: mentioning 'the result of an action jobId' suggests calling after an action is submitted, and the wait mode suggests polling. There is no explicit when-to-use/when-not, and no routing to or from revit_batch_status, which likely serves a similar status-polling role.

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

revit_list_catalogList CatalogB
Read-onlyIdempotent

List catalog names for one section: categories, family-types, levels, area-schemes, views, worksets, phases or parameters. name_contains filters names case-insensitively; limit bounds results (default 200, maximum 2000). Returns total before the limit and hasMore. skipped means incomplete; skippedCount is the total skipped.

NameRequiredDescriptionDefault
limitNo
sectionYes
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
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).

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly=true, idempotent=true, and destructive=false, so the safety profile is fully covered. The description does add genuinely useful behavior beyond that: results are bounded (default 200, max 2000), 'total' is reported before the limit, 'hasMore' signals truncation, and 'skipped'/'skippedCount' indicate the listing was incomplete. The gap is that pagination/resumption guidance is absent and the return shape is largely restated in the output schema that already exists.

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, leading with the operation and the valid section values before moving to filtering and result semantics. Some content is wasted repeating schema constraints ('default 200, maximum 2000'), but every remaining sentence 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?

For a six-parameter tool with an output schema, the description covers the section domain, filtering, and truncation semantics well, so return-value explanation is not strictly needed. It is nonetheless incomplete on document/process_id targeting, which is the one non-obvious requirement when multiple Revit instances are open, and it gives no hint about which sibling listing tool to use for richer view or sheet metadata.

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?

Section is the only required parameter and lacks a schema description, so the description's enumeration of section values adds real meaning for it, and it clarifies that name_contains matching is case-insensitive. However, it repeats the limit default and maximum verbatim from the schema and says nothing about the multi-instance targeting parameters (document, process_id) or timeout_seconds, which matter for correct invocation when several Revit instances run.

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 and resource ('List catalog names') and enumerates the eight valid sections (categories, family-types, levels, area-schemes, views, worksets, phases, parameters), which tells an agent exactly what domain this covers. It falls short of 5 because it never distinguishes itself from overlapping siblings such as revit_list_views, revit_list_sheets, or revit_list_instances, leaving the agent to infer which one to prefer.

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 enumeration of sections suggests a discovery/lookup role, and the name_contains/limit notes hint at narrow-listing use cases. There is no explicit 'use this when...' statement, no exclusion of alternatives, and no mention of when to prefer revit_list_views over the views section here.

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 RelationsB
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). skipped means incomplete; skippedCount is the total skipped.

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

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/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, so the safety profile is covered. The description adds one genuinely useful behavioral fact beyond that: 'skipped means incomplete; skippedCount is the total skipped,' which warns that results may be partial. It says nothing about why items get skipped, pagination, or timeout behavior, so it is a modest but real addition.

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 dense sentences, front-loaded with the core action and then the enumeration of valid values. Nothing is redundant, but the telegraphic phrasing ('skipped means incomplete') and the run-on 'or ... or ... (with X), or ...' chain make it slightly harder to parse than necessary.

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 6-parameter tool with an output schema and full annotations, the description covers the essential operational facts: valid relation values and their required sources. It omits disambiguation from sibling read/query tools and offers no hint about result shape beyond the skipped/skippedCount convention, which leaves a gap for an agent choosing among roughly ten similar read tools.

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 83%, which sets the baseline at 3. The description does earn credit for documenting the value space of the 'relation' parameter, which the schema leaves as an unconstrained string with no description or enum, and for mapping each value to its required source parameter (source_name vs source_id). It says nothing about document, process_id, or timeout_seconds, but the schema describes those adequately.

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 and resource: 'Read model object membership or dependencies,' then enumerates the concrete relation kinds (level-rooms, area-scheme-elements, view-template-dependents, group-elements, nested-family). An agent knows exactly what class of query this performs, though it never contrasts itself with adjacent read tools like revit_view_elements or revit_aggregate_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?

Provides conditional guidance within the call ('with source_name', 'with source_id'), which tells the agent how to pair relation values with source parameters. However, it gives no when-to-use versus the many overlapping siblings (revit_view_elements, revit_aggregate_elements, revit_query_elements, revit_element_details), so tool selection still requires inference from 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_list_sheetsList SheetsB
Read-onlyIdempotent

List sheets with title blocks, revisions and placed view IDs, plus unplaced views. skipped means incomplete; skippedCount is the total skipped.

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

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, idempotentHint and destructiveHint=false, so the safety profile is covered. The description does add one genuinely behavioral detail beyond annotations and the output schema: that records may be skipped and that 'skippedCount' is the total skipped, signaling partial results. It stops short of explaining why records are skipped or whether results are paged.

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 sentences, front-loaded with the resource and its contents, with the skipped/skippedCount note second. Nothing is padded, though the terseness leaves gaps rather than waste.

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 fields need little explanation, and the partial-result note is useful. However, a paginated list tool with three undocumented parameters and no indication of expected result volume or document-selection requirements leaves real gaps for an agent.

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 40%, with document and process_id documented but limit, offset and include_unplaced_views bare. The description does not compensate at all: no mention of pagination, default page size, or what include_unplaced_views changes about the response.

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 sheets) and names the payload elements returned: title blocks, revisions, placed view IDs, and unplaced views. That is enough to distinguish it from siblings like revit_list_views, though it never explicitly contrasts 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 Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to choose this over revit_list_views, revit_view_summary, or revit_schedule_data, and no mention of prerequisites such as an active document or a running Revit instance. The only usage-adjacent sentence concerns interpreting 'skipped', which is output semantics, not selection guidance.

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

revit_list_toolsList My ToolsB
Read-onlyIdempotent

List saved tools and schemas without source.

NameRequiredDescriptionDefault

No parameters

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 establish this as a safe, idempotent, read-only listing, so the safety profile is covered. The description adds one behavioral fact — results exclude source — which is genuinely useful context beyond the annotations. It says nothing about result size, ordering, or whether user-defined vs built-in tools are included.

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 seven-word sentence with zero filler and the key restriction placed at the end. It is efficient, though the brevity crosses into under-specification rather than pure conciseness.

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?

The tool is simple (no params, output schema present, annotations complete), which lowers the burden, but the description never defines what a "saved tool" is or what "without source" excludes, leaving the agent to infer both.

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?

The tool takes no parameters, so the schema_covers_everything baseline of 4 applies. Nothing in the description misleads about inputs, though it also offers no clarification of what the parameterless call scope implies.

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 verb+resource pair ("List saved tools and schemas") is identifiable, but the trailing qualifier "without source" is cryptic and does not clearly distinguish this tool from nearby siblings such as revit_get_tool, revit_list_catalog, or revit_run_tool. An agent can guess the purpose but cannot confidently rule out the alternatives.

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 statement of prerequisites, and no named alternative. Given that the sibling set contains revit_get_tool, revit_save_tool, revit_run_tool, and revit_list_catalog, the absence of any routing hint is a real gap.

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. skipped means incomplete; skippedCount is the total skipped.

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

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, idempotentHint, and destructiveHint=false, so safety is covered externally. The description's one genuine contribution is disclosing partial-result behavior ("skipped means incomplete; skippedCount is the total skipped"), which is real behavioral context an agent would not otherwise know. It stops there, saying nothing about ordering, pagination, or volume limits for a potentially large view list.

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 with no filler, front-loaded with the operation and returned fields before the edge-case note. The second sentence is telegraphic to the point of ambiguity ("skipped means incomplete" reads awkwardly), but nothing is wasted.

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 is not obliged to document return values, and the schema fully covers all five optional filters, so little is missing. The main residual gap is the absence of any sibling routing, which matters given roughly seventy overlapping Revit tools.

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 five parameters including document, view_type, process_id, name_contains, and timeout_seconds are already fully self-documenting; baseline 3 applies. The description adds no filtering semantics or format hints beyond what the schema states, and notably does not mention that filtering parameters exist.

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?

"List non-template views" gives a specific verb, resource, and scope, and the description enumerates the returned fields (id, name, type, level, scale, template). It never distinguishes itself from near-siblings like revit_view_info, revit_view_summary, or revit_list_sheets, 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 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 named alternative among the many view-related siblings (revit_view_info, revit_view_summary, revit_close_views, revit_export_view). "Non-template views" is a scope qualifier on the result, not routing guidance, leaving usage entirely implied by the tool name.

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. skipped means incomplete; skippedCount is the total skipped.

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.

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 readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile needs no repetition. The description adds non-obvious output semantics the annotations cannot convey: that 'skipped' signals an incomplete result and skippedCount is the total skipped, which matters for trusting the counts.

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 default grouping behavior before the drill-down and the skipped-result caveat. Nothing is padded and no sentence restates 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 shapes need not be spelled out, and the description covers the two-phase usage pattern plus the skipped/skippedCount caveat. The only real gap is routing versus the overlapping revit_view_warnings sibling, which for a zero-required-param read tool is a minor omission.

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 every parameter is already documented, establishing a baseline of 3. The description adds modest value by explaining the interaction between warning_text and include_elements (returning elements of exactly one group), but does not clarify document/process_id precedence or timeout behavior beyond the 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?

The description states a specific action and resource: grouping model warnings by description text, plus the drill-down mode. It is clear what the tool produces, but it never distinguishes itself from the sibling revit_view_warnings, leaving the agent to infer which one to call.

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 implicit workflow guidance: call once to get groups, then pass warning_text with include_elements=true to expand one group. There is no statement of when not to use it or how it differs from revit_view_warnings or revit_model_health, so selection between siblings is left to inference.

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_auditAudit the model against rulesA

Audit one model with local YAML or JSON rules, or pack:model-health by default. Reads only. Save immutable history on the server machine and compare with previous, a result path, or none. Unsupported evidence is not_assessed. The run is bounded to ten minutes. skipped means incomplete; skippedCount is the total skipped.

NameRequiredDescriptionDefault
saveNo
rulesNo
documentNoTitle or file name substring of the target document; needed when several Revit instances run.
process_idNoRevit process ID; takes precedence over document.
compare_withNoprevious
rules_inlineNo
timeout_secondsNoSeconds to wait for a result (default 120).

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?

Adds substantial behavior beyond the annotations: it writes immutable history on the server machine, offers compare modes (previous / a result path / none), maps unsupported evidence to not_assessed, caps the run at ten minutes, and defines skipped vs skippedCount. The 'Reads only' phrasing sits slightly awkwardly against readOnlyHint=false, but the saving behavior clarifies the model is only read while server-side output is written.

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?

Very dense and front-loaded: purpose first, then safety, then output/persistence behavior, then edge-case semantics. Some clauses are telegraphic fragments ('Unsupported evidence is not_assessed', 'skipped means incomplete'), which cost a little readability but keep it free of waste.

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 spelled out, and the description covers persistence, comparison, and status vocabulary. Still missing for a 7-parameter tool: what 'pack:model-health' actually contains, how a 'result path' for compare_with is supplied, and the relationship between timeout_seconds (default 120) and the ten-minute bound.

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 43%, so the description must compensate; it partially does by explaining the rules source (YAML/JSON file or the model-health pack), the save/compare choices, and step-count semantics. Several parameters (save, compare_with, rules_inline, timeout_seconds at 120s vs the stated ten-minute cap) are left to the schema or remain ambiguous, so it adds only moderate value.

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 verb+resource: 'Audit one model with local YAML or JSON rules, or pack:model-health by default.' That is specific enough that an agent can tell it is a rule-driven audit rather than a snapshot or report. It does not explicitly distinguish itself from siblings such as revit_model_health or revit_audit_report, 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 defaults ('pack:model-health by default', 'Reads only', ten-minute bound), which implies when this is the right call. However it never says when to prefer revit_model_health, revit_audit_report, or revit_family_audit, and no prerequisites or exclusions are stated.

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 CheckB

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. skipped means incomplete; skippedCount is the total skipped.

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, resolved on the machine running this server; parent must exist and existing files are refused.
timeout_secondsNoSeconds to wait for a result (default 120).

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 are sparse in what they convey (readOnlyHint=false, idempotentHint=false, destructiveHint=false), but the description adds real behavioral detail: writing to output_path produces an .xlsx report with up to five snapshots, and the tool mutates state by writing a file, which is consistent with readOnlyHint=false. It also explains that unavailable metrics come back as null and are enumerated in skipped, with skippedCount as the total.

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 dense sentences that front-load the payload contents, then handling of nulls/skipped, then the optional file write. No filler, though the skipped/skippedCount clarification is slightly redundant with the output schema.

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 needn't be spelled out, and the description correctly focuses on the skipped/null semantics and the file-writing side effect. It does not address potential latency on large models despite a 120-second default timeout, nor the cost of generating snapshots. Adequate but not fully complete for an aggregate diagnostic 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 schema already documents document, process_id, output_path, and timeout_seconds thoroughly. The description only adds the 'up to five snapshots' detail about output_path, which is marginal value over 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 and resource ('Read model quality counts') and enumerates the contents: project metadata, file size, counts, units, top ten warning groups. This distinguishes it well from revit_document_info or revit_list_warnings, though it never names those siblings 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 explicit when-to-use guidance and no comparison against nearby diagnostic siblings such as revit_model_audit, revit_audit_report, or revit_view_warnings. The agent must infer from the description alone that this is the aggregate health-report tool.

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. skipped means incomplete; skippedCount is the total skipped.

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

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 cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely non-obvious behavior: closed worksets can silently make the result incomplete, and the skipped marker plus skippedCount signals that incompleteness. It still doesn't explain what happens on timeout or what the version-1 schema assumption implies for older 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 short sentences with the caveat and result-semantics front-loaded and no filler. The telegraphic wording ("skipped means incomplete") is efficient but borders on cryptic without naming the field's context.

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 needn't be explained, and the description wisely spends its words on the incompleteness caveat instead. The main omission is guidance on selecting between document and process_id in multi-instance scenarios, though the schema itself covers that precedence.

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 75% and the description adds no parameter-level meaning; notably parameter_rules is an undocumented filter array that the description never explains. With most parameters already documented in the schema, baseline 3 applies, but the undescribed rule filter is a real 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?

"Read a schema version 1 project snapshot" gives a concrete verb and resource, and "for batch audits" narrows the scope. It does not, however, distinguish itself from near siblings such as revit_model_audit, revit_model_health, or revit_aggregate_elements, so an agent must infer which read path fits.

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 batch audits" implies a usage context but never states when to prefer this over the audit/health/query siblings, nor any prerequisites (open document, active instance). Usage is implied rather than specified.

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. skipped means incomplete; skippedCount is the total skipped.

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

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 description correctly builds on that by disclosing that the parsing happens on the Revit workstation with no export performed, and by clarifying the meaning of the returned 'skipped'/'skippedCount' fields. It omits permission requirements and what qualifies as an incomplete setting, but for a read-only inspection tool that is a modest 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 sentences, front-loaded with the action and location, with the output-field gloss attached directly to what it clarifies. The second sentence is terse to the point of being cryptic ('skipped means incomplete'), but nothing is padding.

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?

The output schema covers return values and the annotations cover safety, so those needs are met. What is missing is the substance of the check itself: nothing explains which NWC settings are examined or what makes a setting 'incomplete', which is the core question an agent would have before invoking this tool.

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 75% and the two targeting parameters (document, process_id) plus timeout_seconds are already documented in the schema. The description's real contribution is identifying settings_xml as the Navisworks exporter XML file, the one required parameter the schema leaves undescribed, which resolves the most consequential ambiguity.

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 ('Parse a Navisworks exporter XML file') plus the operating location ('on the Revit workstation'), and the phrase 'without exporting' implicitly separates it from the export sibling revit_export_nwc. It never quite says what the 'check' validates, so the purpose lands as 'parse and report skipped items' rather than a crisp statement of the check being performed.

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?

There is only implicit routing: 'without exporting' hints that this is a pre-flight alternative to running revit_export_nwc, and 'on the Revit workstation' implies a live Revit connection is required. No explicit when-to-use, when-not-to-use, or named alternative is given.

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. May commit; revit_jobs polls; retry repeats.

NameRequiredDescriptionDefault
modeNodetached
pathYes
auditNo
activateNo
worksetsNoall
process_idNo

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 declare non-read-only, non-idempotent and destructive behavior, and the description adds genuinely new context: central models are opened detached by default, cloud paths fail, opening 'may commit' pending changes, and the operation is asynchronous ('revit_jobs polls; retry repeats'). The phrasing is telegraphic ('May commit') and does not say what a retry would redo, but it substantially exceeds what the annotations 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?

Five short sentences with the most important constraint (supported path types) front-loaded and no filler. The semicolon-chained final clause ('May commit; revit_jobs polls; retry repeats') is compressed to the point of ambiguity, but nothing is wasted.

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 destruction/async behavior is covered. However, for a destructive six-parameter document-opening tool, the absence of any guidance on mode, worksets, audit or activate leaves meaningful gaps an agent must resolve by guessing.

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 six parameters, so the description carries the full burden and largely fails: mode (detached, detached_discard_worksets, local_copy, read_only_local), audit, activate, worksets and process_id are never explained. Only the path parameter's supported forms are hinted at, and the 'opened detached by default' note touches just one mode value without clarifying the others.

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 concrete verb and resource ('Open a local, UNC or RSN model') and enumerates the supported path/model types, which clearly distinguishes it from sibling operations like revit_new_document, revit_close_document and revit_save_document. It stops short of naming those siblings or stating the relationship explicitly, 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It establishes when this tool applies by listing accepted path types and explicitly excluding cloud paths ('Cloud paths are unsupported'), and it notes the default behavior for central models. It does not point to alternative tools (e.g., revit_new_document for creating a model) or state prerequisites such as an active Revit session, so guidance is strong on scope but silent on alternatives.

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. skipped means incomplete; skippedCount is the total skipped.

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

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), so the description's job is to add semantics — and it does, by defining that numeric zero counts as filled, that 'skipped' means incomplete, and that skippedCount is the total skipped. It omits how counts behave across multiple documents/processes and says nothing about timeout behavior, but the core counting rules are 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?

Three short sentences, front-loaded with the counting behavior and followed by the two edge-case definitions an agent would otherwise get wrong. No filler or redundant 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?

With 10 parameters and an output schema present, the description needn't document return shape, and it correctly focuses on the interpretive rules (zero = filled, skipped semantics). It leaves include_types unexplained and does not note that a timeout can truncate a large scan, which are the remaining 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 70%, so the baseline is 3. The description adds no meaning about any input parameter — it does not explain include_types (which has no schema description at all), or how level/workset interact with view; instead it explains output semantics (skipped, skippedCount), which belongs to a different dimension.

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: counting filled, empty and missing parameters per parameter and category, with sampled element IDs. It is clear what the tool returns, though it never names a sibling (e.g. revit_query_elements, revit_schedule_data, revit_model_audit) to differentiate itself from other inspection 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?

Usage is only implied: an agent can infer this is a parameter-completeness audit tool, but there is no explicit 'use when' guidance, no prerequisites, and no routing to alternatives such as revit_query_elements or revit_family_audit for related questions.

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. skipped means incomplete; skippedCount is the total skipped.

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

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 readOnly/idempotent/non-destructive, and the description adds real behavioral context beyond them: no model read, and a successful ping returns even with no active document. That is a useful, non-obvious guarantee. The trailing "skipped means incomplete; skippedCount is the total skipped" is garbled and its relevance to a ping is never explained, 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.

Conciseness3/5

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

The first two sentences are tight and front-loaded, correctly leading with what the tool does and its key guarantee. The third sentence about skipped/skippedCount is opaque, introduces terms not defined anywhere in the description, and reads as leftover text from a batch tool rather than earning 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?

For a low-complexity, zero-required-parameter connectivity check with a full output schema, the description covers the essential behavior, including the no-document case that an agent would otherwise have to guess. The unexplained skipped/skippedCount reference is the only real completeness 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 document, process_id, timeout_seconds and the precedence of process_id over document are already documented in the schema. The description adds nothing about parameter behavior, so it sits at the baseline for a fully-described 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 and resource ("Check the connection to Revit") and scopes it against the sibling read tools with "without reading the model", so an agent can separate it from revit_documents or revit_model_snapshot. It stops short of naming an explicit alternative, 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: "even when no document is active" signals this is a connectivity probe to run before model-dependent calls. There is no explicit statement of when to prefer this over revit_documents, revit_list_instances, or revit_document_info, and no guidance on when not to use it.

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

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 SheetB
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

B3/5.0
Behavior2/5

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

Annotations declare destructiveHint=true and idempotentHint=false, so the agent knows this is a state-changing, repeat-unsafe write. The description does not confirm or explain that risk: it never says placements can overwrite existing sheet content, and it never points at dry_run as a safe preview. Only the mm-unit note adds 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?

Two short sentences, front-loaded with the action and resource, with the unit clarification second. Nothing is wasted, though the extreme brevity is a symptom of missing content rather than disciplined editing.

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?

This tool definition is complete enough for its scope: it has an output schema, annotations carrying the safety profile, and a concise statement of purpose and units, so an agent can invoke it correctly without additional description text.

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 the 'document' parameter is described in-schema. The description compensates for one gap by clarifying that x_mm/y_mm are in sheet millimetres, but leaves 'sheet' (name vs. element id), 'views', and especially 'dry_run' entirely undefined anywhere.

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 and resource ('Place views and schedules on a sheet'), which clearly separates it from revit_create_sheet (creates the sheet) and revit_place_family (families, not views). It stops short of naming those alternatives, so it is clear but not sibling-differentiating at the top level.

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, revit_duplicate_view, or revit_apply_view_template, nor any prerequisites (must the view be unplaced? must the sheet exist?). The dry_run flag, which is the natural 'try before committing' path, is never mentioned in the description.

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 ModelsB
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. dry_run replaces only code.transaction="none" with "auto" and reports the override in warnings. May commit; revit_jobs polls; retry repeats.

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

B3.4/5.0
Behavior4/5

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

Beyond the destructiveHint=true annotation, the description discloses that in-place saves and code need a confirm_token from the preview response, that dry_run rewrites code.transaction from 'none' to 'auto' and reports the override in warnings, and that the process may commit with results polled via revit_jobs. That is meaningful safety context; it stops short of describing what exactly gets overwritten or failure/rollback 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?

The description is front-loaded with the pipeline in the first sentence, then supplements with token/dry_run/polling details. The trailing telegraphic fragments ('May commit; revit_jobs polls; retry repeats.') are terse but earn their brevity by packing three distinct behavioral facts.

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 destructive 14-parameter batch tool, the description covers the highest-risk aspects (confirm_token, dry_run override) and an output schema exists so return values need not be explained. But the many undocumented parameters and the absence of failure/partial-completion semantics leave real gaps for an agent to fill by guesswork.

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 14 parameters at 0% schema description coverage, the description carries the full burden but only illuminates a few: dry_run semantics, confirm_token requirement, code.transaction handling, and save being 'as requested'. Key inputs like paths, folder, pattern, recursive, exports, steps, stop_on_error, timeout_seconds, process_id, and open/save modes go 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 uses specific verbs and names the full pipeline: open each model, run steps and C# code, export, save, close. It clearly conveys that this is a multi-model batch operation, though it never explicitly contrasts itself with siblings such as revit_run_actions or 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?

It implies usage context through references to revit_jobs polling and retry behavior, and notes that in-place saves and code require a confirm_token. However, there is no explicit when-to-use versus the many sibling action/run tools, and no guidance on choosing this over a single-model path.

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. skipped means incomplete; skippedCount is the total skipped.

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.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, so the description is free to spend its words on the result contract: unit conventions (mm, m2, m3), the meaning of `roomCenterMm` versus a bounding-box centre, `hasMore` paging, and the fact that `skipped` means incomplete results. That is real added behavior beyond the structured fields, though it says nothing about multi-document resolution, timeouts or result-size cost.

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?

Six short sentences, front-loaded with the core action, no filler or repetition. The density is high but every clause carries a fact; a single opening sentence on scope/filters would have made it stronger.

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 an 18-parameter query tool with zero required parameters and moderate schema coverage, the description should explain filter combination and paging usage. Instead it spends its budget restating return-value details that an output schema already covers, and leaves the agent without guidance on filters, document targeting or tool selection.

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 18 parameters and only 56% schema description coverage, several filters (level, phase, family, workset, categories, fields, limit, offset) carry no explanation in either place. The description's unit sentence largely restates what the `parameter_filters` schema description already says about mm/m2/m3, so it does not compensate for the uncovered half of the 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?

"Read a page of matching element rows" gives a specific verb (read) and resource (element rows) plus the pagination scope. It never distinguishes itself from near-siblings such as revit_list_instances, revit_view_elements, revit_element_details or revit_aggregate_elements, so the agent must infer which query tool to pick.

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 is given, and no alternative tool is named. The only implied usage comes from the word "matching" and the paging/`hasMore` hints; nothing tells an agent whether to page with this tool or aggregate with revit_aggregate_elements.

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_run_toolRun My ToolA
Destructive

Run saved C#. First run per Revit session needs confirm_token, even read/dry_run. Action commits need a token. Read/dry_run roll back. transaction=group permits script-owned transactions and edit scopes in one Undo group. Uses execute_code gates; store runs require machine ExecuteCode=confirm, including read mode and dry runs. Timeouts may follow commit. Uses a two-step AI app token handshake.

NameRequiredDescriptionDefault
argsYes
nameYes
dry_runNo
documentNo
transactionNoauto
confirm_tokenNo
timeout_secondsNo

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 readOnlyHint=false, but the description adds real operator context beyond them: confirm_token is required on the first run per session even for read/dry_run, read/dry_run roll back, transaction=group wraps script-owned transactions in one Undo group, and timeouts can occur after a commit has landed. The "two-step AI app token handshake" is named but never explained, 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.

Conciseness3/5

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

The text is short but written as terse fragments that shift topic each sentence, moving from execution to token handshake to transaction grouping to timeouts. The most important constraint, the confirm_token requirement, is not front-loaded, and jargon like "execute_code gates" and "token handshake" is used without definition.

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 description covers the confirmation and transaction mechanics an agent must understand for a destructive runner. However, with 7 parameters at 0% schema coverage and a nested args object, leaving name/args/document undefined is a meaningful gap for a tool that executes arbitrary saved C#.

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% across 7 parameters, so the description should be carrying more weight. It does explain confirm_token, dry_run and transaction=group semantics, and implies timeout behavior, but name, args (the required nested object) and document are never described at all.

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?

"Run saved C#" names a specific verb and resource, and the sibling list contains revit_save_tool, revit_get_tool, revit_list_tools and revit_execute_code, so an agent can infer this executes a previously stored tool rather than ad-hoc code. It never explicitly states the saved-tool relationship or how it differs from revit_execute_code/revit_run_actions, so it falls short of full sibling 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?

It gives conditional prerequisites rather than when-to-use guidance: first run per session needs confirm_token, action commits need a token, and store runs require a machine-level ExecuteCode=confirm. Nothing tells the agent when to pick this over revit_execute_code or revit_run_actions, which is the main competing choice 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_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_save_toolSave My ToolC
Destructive

Compile C# and schema without execution, then save a revision after the token handshake. Returns full source, hash and confirm_token. Uses a two-step AI app token handshake.

NameRequiredDescriptionDefault
codeYes
modeNoaction
nameYes
parametersYes
descriptionYes
confirm_tokenNo
tested_revit_yearsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior4/5

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

Going beyond the annotations, the description discloses that compilation happens without execution (a meaningful safety signal for code-accepting tools), that a two-step token handshake gates the save, and that confirm_token is returned. It does not say what the destructive save overwrites or whether an existing tool with the same name can be replaced, which keeps it below 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?

Three short sentences with the action front-loaded and no filler; the return-value sentence is informative rather than redundant. The only weakness is that the trailing sentence about the token handshake partially repeats the second sentence's clause about the handshake.

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, seven-parameter tool with zero schema coverage, this is thin. The output schema excuses not explaining return values, but the description never explains how an agent obtains the first token, what 'mode' changes, or what happens when overwriting an existing tool.

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 seven parameters, so the description must carry the burden and it largely does not. It hints that code is C# and that confirm_token belongs to a two-step handshake, but name, description, parameters, mode, and tested_revit_years receive no explanation of format, constraints, or effect.

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 names concrete operations (compiling C# and a schema without execution, then saving a 'revision'), which conveys more than the bare name. However, 'save a revision' is ambiguous about what is being saved — a tool definition being registered/updated — and it draws no boundary against siblings such as revit_run_tool, revit_get_tool, or revit_delete_tool.

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 and no mention of alternatives. An agent cannot tell from this text why it should call revit_save_tool rather than revit_run_tool or revit_execute_code, nor what prerequisite state (a compiled draft, a prior token) must exist first.

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

Read displayed schedule header and body cell text, with paging. skipped means incomplete; skippedCount is the total skipped.

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. (Use the id when two schedules share a name.)
process_idNoRevit process ID; takes precedence over document.

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 readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real behavior beyond them: results are paged, and 'skipped means incomplete; skippedCount is the total skipped' tells the agent that a truncated read is possible and how it is signaled. It stops short of saying what causes skips or whether repeating a page is stable.

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 sentences, purpose front-loaded before the caveat, with no filler. The second sentence is compressed almost to shorthand — 'skipped' is used before it is clear what is being skipped — which costs a point on clarity.

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 safety profile is fully carried by annotations. However, for a tool with five parameters including paging controls, the description leaves offset/max_rows semantics and the document-vs-process_id precedence (mentioned only in the schema) 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 60%, so the schema documents schedule, document, and process_id well while leaving offset and max_rows bare; the description's 'with paging' gestures at those two but supplies no default, limit, or ordering semantics beyond what the schema already encodes. The 'skipped/skippedCount' note adds meaning about the result set rather than about any input 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 and resource — reading 'displayed schedule header and body cell text' — plus a paging qualifier, which is far more concrete than the title alone. It does not name a sibling such as revit_create_schedule or revit_view_elements to sharpen the boundary, 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 guidance at all: nothing says to use this rather than revit_view_elements, revit_build_report, or revit_create_schedule, and no preconditions (document open, view active) are given. The only usage-adjacent signal is the word 'paging', which is inferred from the schema rather than explained.

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

revit_selectSelect ElementsA
Read-onlyIdempotent

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 readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered structurally. The description does add one genuinely non-obvious behavior — that an empty list clears the selection — which the schema never conveys. It still omits what happens with invalid IDs, whether selection is per-view or persistent, and whether a document must be active, so it is useful but not rich.

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 two clauses, each carrying information: the primary action first, then the non-obvious edge case. 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?

For a two-parameter tool with an output schema, full annotation coverage and a simple effect, the description is nearly sufficient — the empty-list semantics is the key call-out and it is present. A sentence on document defaulting (active document when omitted) or selection scoping across views would close the 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 coverage is only 50%: document is documented in-schema, but element_ids has no description at all beyond type constraints (positive integers). The description compensates partially by clarifying that element_ids is a list whose empty value has special meaning (clearing the selection), but it says nothing about ID validity or how element_ids relates to the chosen document.

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 pairs a specific verb ("Select") with a specific resource ("element IDs") and adds the purpose ("for inspection in Revit"). An agent can tell this is a UI-selection tool rather than a query or mutation tool, though it never names how it differs from closely related siblings such as revit_show, revit_isolate, or revit_capture_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?

"For inspection" implies the intended usage context but gives no explicit when-to-use/when-not-to-use guidance and no alternatives. Nothing tells the agent whether to reach for this instead of revit_isolate or revit_show when the goal is to highlight elements, so the choice is left to inference.

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_read_onlySet Workstation Read-onlyA
Destructive

Set the workstation read-only lock for all Revit versions of this Windows user. Locking needs no token. Unlocking requires a user request and explicit confirmation. The first call returns confirmationText and a token; the second call with confirm_token unlocks. Workstation policy cannot be changed.

NameRequiredDescriptionDefault
enabledYes
confirm_tokenNo

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?

Beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=false), the description discloses the actual two-phase unlock protocol, what the first call returns (confirmationText and a token), and the hard constraint that workstation policy cannot be overridden. This is exactly the kind of behavioral context the structured fields cannot convey.

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?

Five short sentences, front-loaded with the action and scope, then the mode rules and call sequence. Nothing is redundant and no sentence could be removed without losing 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?

For a two-parameter state-changing tool with an output schema, the definition covers scope, the confirmation flow, and the policy constraint, so an agent can call it correctly. It does not say whether already-running Revit sessions are affected or what permissions the Windows user needs, which is a minor remaining 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 description coverage is 0%, so the description must carry both parameters, and it largely does: confirm_token's role in the second call is made explicit, and the lock-versus-unlock wording implies enabled=true locks while enabled=false unlocks. The mapping for 'enabled' is inferred rather than stated outright, which keeps it from a 5.

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 first sentence names a specific verb and resource ('Set the workstation read-only lock') and bounds scope to 'all Revit versions of this Windows user,' which clearly separates it from the document- and view-level siblings. It stops short of explicitly naming a contrasting sibling, but no sibling is close enough to be confused with it.

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?

The description clearly explains the two operating modes: locking requires no token, while unlocking requires a user request plus explicit confirmation through a two-call flow. It gives concrete procedural guidance but does not state when an agent should avoid this tool or what preconditions exist on the workstation.

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. skipped means incomplete; skippedCount is the total skipped.

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

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), and the description adds genuinely useful behavior beyond that: result lists are capped at 100 with total counts, and the meaning of "skipped"/"skippedCount" is explained so truncation is not misread as absence. It does not mention whether a document must be open/active, which is the main remaining 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?

Three short sentences, front-loaded with the purpose before the output caveats, with no filler. The final sentence is telegraphic ("skipped means incomplete") but still parses cleanly, and the output-field explanations border on restating 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?

An output schema exists and annotations carry the safety profile, so the description only needs scope, units, and truncation semantics — all present. The only shortfall is the absence of any statement about the required document state or how to disambiguate among multiple open Revit instances beyond the schema's own wording.

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 document, process_id, and timeout_seconds are already fully documented, including the precedence of process_id over document. The description adds nothing about parameter usage; the units it cites (mm, degrees) describe output values rather than inputs. 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?

The description opens with a specific verb and resource ("Read project and survey coordinates") and then enumerates exactly what is covered: base and survey points, active site, project locations, link offsets. No sibling tool covers shared-coordinate retrieval, so an agent can route here 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?

Usage is only implied by the scope of the data listed (coordinate-checking tasks). There is no statement of when to prefer this over adjacent tools such as revit_document_info, revit_compare_link_datums, or revit_align_link_datums, and 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_showShow ElementsA
Read-onlyIdempotent

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

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the safety profile is covered, and the description adds a genuinely useful side effect beyond that: it may open a level plan or 3D view. That tells the agent the call can change UI/view state even though it is a read. It stops short of saying what happens when the elements' views are already open or when the target view cannot be resolved.

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?

One front-loaded clause covers purpose, the optional selection, and the view-opening side effect with no filler. The only weakness is that "optionally selecting them" reads as opt-in while the parameter defaults to selecting, which slightly muddies an otherwise efficient sentence.

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?

With three parameters, full annotations, and a declared output schema, the definition is adequate but leaves gaps: element ID provenance, multi-document targeting beyond the schema's `document` note, and confirmation echo of the view/selection outcome are not addressed. An agent can call it correctly in the common case but has to guess in multi-document or view-locked scenarios.

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% (only `document` is documented), so the description has to carry weight. It maps loosely to `select` ("optionally selecting them"), but that wording conflicts with the schema default of true, and it says nothing about `element_ids` (required, integer array, minItems 1) — e.g. whether these must be element IDs from list/query tools or IDs valid in the named document.

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?

"Display elements in Revit, optionally selecting them" gives a concrete verb and resource plus the secondary selection behavior, so the agent knows what the tool produces (a visible/selected set of elements). It does not differentiate from close siblings such as revit_select or revit_isolate, which also act on element sets, so the reader cannot tell from the description alone which one to prefer.

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: it hints you use this when you want elements displayed or selected, and that a view will be opened if needed. There is no explicit when-not guidance and no named alternative (revit_select, revit_isolate, revit_view_elements) for cases where the agent does not want view/UI side effects.

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

Read the active document, open views, selection and open documents. skipped means incomplete; skippedCount is the total skipped.

NameRequiredDescriptionDefault
process_idNoRevit process ID; takes precedence over document.

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, idempotentHint, and destructiveHint=false, so the safety profile is covered structurally. The description adds a note about skipped/skippedCount semantics, which is real behavioral context, but it is terse and never explains what could be skipped or why (permissions, unloaded links, unopened documents).

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 sentences with the resource list front-loaded and no filler. The second sentence is compact but borders on cryptic, since "skipped" is referenced before its subject is established.

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 are documented externally, and the description needn't restate them. However, for a tool that reads live UI state, it omits the prerequisite that Revit must be running with a document open, and leaves "skipped" ambiguous about what is incomplete.

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?

The single process_id parameter already has a full schema description ("takes precedence over document") at 100% coverage, so the schema carries the meaning. The tool description never mentions process targeting at all, adding nothing beyond the baseline for a one-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?

The description uses a specific verb ("Read") and enumerates the resources returned: active document, open views, selection, and open documents. This lets an agent recognize it as a UI-state snapshot, though it never distinguishes itself from sibling readers like revit_document_info, revit_documents, or revit_list_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?

There is no guidance on when to prefer this over the many adjacent read tools (revit_document_info, revit_view_info, revit_select, revit_documents). The second sentence concerns output fields, not usage, so an agent must infer the selection criteria from the title 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). skipped means incomplete; skippedCount is the total skipped.

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

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 and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: it is a paged read, it reports measurements in mm/m2/m3, and it explains that 'skipped' flags incomplete data with skippedCount giving the total — a meaningful disclosure about result completeness. It does not mention timeout behavior or multi-document targeting, which are left to 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?

Two sentences, front-loaded with purpose, then paging behavior, then the caveat about skipped/skippedCount. No filler, no restatement of the title, and the least intuitive output flag is explained last where it belongs.

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 is not obliged to document return shape, yet it briefly does. For a 7-parameter, single-required-parameter read tool this is close to complete; the remaining gap is the absence of any guidance on alternatives among the many sibling element-listing tools.

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 57%, with the view, document and process_id parameters documented in-schema and limit/offset/categories/timeout_seconds largely bare. The description reinforces 'selected view' and the units of returned measurements and implies paging, but adds nothing about the categories filter or how limit/offset interact — the most operationally important undocumented parameters.

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 — 'Read one page of elements in a selected view' — and enumerates the fields returned (IDs, category, family, type, level, measurements). It is clear what the tool does, though it never distinguishes itself from data-access siblings like revit_query_elements, revit_list_instances or revit_aggregate_elements.

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 and no mention of alternatives. The phrase 'one page' plus the presence of limit/offset implies paginated iteration, but the agent must infer that on its own and is given no rule for choosing this tool over the many other element-reading siblings.

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

revit_view_infoView InfoB
Read-onlyIdempotent

Inspect one view's template, display, categories, worksets, filters and links. skipped means incomplete; skippedCount is the total skipped.

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

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, idempotentHint=true and destructiveHint=false, so the safety profile needs no repetition, and an output schema exists to describe returns. The description does add genuinely non-structured context by explaining that "skipped" indicates an incomplete result and that skippedCount is the total, which tells the agent how to interpret partial data rather than treating it as success. Beyond that it says nothing about view-name resolution failures or timeout behavior that would be useful for a read tool that can partially fail.

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 compact sentences with no filler, and the primary payload description is front-loaded. The second sentence is a deliberate clarification of a specific output field rather than padding, though it would read better folded into a sentence about partial results.

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?

With a full output schema, read-only annotations and 100% parameter coverage, most of the burden is carried by structured data, so the description only needs to add routing and interpretation. It covers interpretation of skipped results but leaves the agent without guidance on when this tool beats revit_view_summary or revit_view_elements, which is the main remaining gap for a crowded view-related tool 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 description coverage is 100%, so the schema already explains that "view" must be an exact non-template name from revit_list_views or a decimal ID, and documents document, process_id and timeout_seconds. The description adds no parameter meaning whatsoever, 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?

"Inspect one view's template, display, categories, worksets, filters and links" gives a specific verb (inspect), a specific resource cardinality (one view), and enumerates the data domains returned, so an agent knows exactly what it gets. It does not, however, name or distinguish itself from near siblings like revit_view_summary, revit_view_elements, or revit_view_warnings, so the reader has to 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 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 at all: no statement of when to prefer this over revit_view_summary or revit_view_elements, no prerequisites, and no exclusion of template views (that constraint lives only in the schema). Usage is at best implied by the tool name and the listed return domains.

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

revit_view_summaryView SummaryB
Read-onlyIdempotent

Read element categories and counts for a selected view. skipped means incomplete; skippedCount is the total skipped.

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

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, idempotentHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds a small amount of output semantics by explaining that 'skipped' signals an incomplete result and 'skippedCount' is the total, which is useful context beyond the annotations. It stops short of explaining what conditions cause elements to be skipped or how completeness affects trust in the counts.

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 purpose sentence is front-loaded and efficient. The second sentence is a compressed fragment — 'skipped means incomplete' is ambiguous about what exactly is incomplete — so it consumes space without fully earning it.

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?

With full schema coverage, annotations, and an output schema, the description only needs to add framing, and it mostly does. The gap is the under-explained skipped/skippedCount semantics, which leaves the agent unsure how to interpret a partial result.

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 explains 'view' (exact non-template name from revit_list_views or decimal ID), 'document', 'process_id', and 'timeout_seconds'. The description adds nothing about parameters, 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?

The description gives a specific verb and resource: 'Read element categories and counts for a selected view.' That is clearly distinct from mutation siblings like revit_create_view or revit_apply_view_template. It does not, however, distinguish itself from related read tools such as revit_view_elements, revit_view_info, or revit_aggregate_elements.

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 and no mention of alternatives. An agent gets only the implicit signal that this is the summarizing read for a view, with nothing about when to prefer revit_view_elements or revit_aggregate_elements instead.

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. skipped means incomplete; skippedCount is the total skipped.

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

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this read-only, idempotent and non-destructive, so the description is not carrying the safety burden. It does add real behavioral context that annotations cannot: warnings may include elements outside the view, and 'skipped'/'skippedCount' signal incomplete results. However, it does not explain why results may be skipped or what causes it.

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 with the core scope stated first and the caveats after. The 'skipped' sentence is telegraphic but informative; nothing is padded.

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 and an output schema covering safety and return shape, the description supplies the two non-obvious facts an agent needs: out-of-view element membership and the meaning of incomplete/skipped results. It is only missing routing guidance against revit_list_warnings.

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%, with all four parameters documented including how to obtain a valid view name via revit_list_views. The description adds no parameter-level meaning beyond the schema, 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 and resource ('Read warnings') plus a clear scope qualifier ('elements present in a selected view'), which distinguishes it from a whole-model warnings listing. It stops short of naming the sibling tool (revit_list_warnings) it most closely overlaps with.

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 scoping phrase implies when to reach for this tool (view-scoped warning inspection), but there is no explicit when-to-use / when-not-to-use guidance and no mention of revit_list_warnings as the broader alternative. The agent must infer the choice from the scope wording alone.

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. 41 tool updatesv2.0.0
    • Changedrevit_aggregate_elements1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Addedrevit_api_lookup
    • Addedrevit_audit_report
    • Changedrevit_build_report1 field changed
      • changedInput schema / properties / output_path / description
        Previous value: -"New .xlsx file path on the MCP client machine; existing files are never replaced."New value: +"New .xlsx file path, resolved on the machine running this server; existing files are never replaced."
    • Changedrevit_capture_elements1 field changed
      • changedInput schema / properties / output_path / description
        Previous value: -"New PNG path on the MCP client machine; an existing file is an error. Default null downloads to a temporary directory and returns localPath."New value: +"New PNG path, resolved on the machine running this server; an existing file is an error. Default null downloads to a temporary directory and returns localPath."
    • Changedrevit_compare_link_datums1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Addedrevit_delete_tool
    • Changedrevit_document_info1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_documents1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_element_details1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_execute_code1 field changed
      • changedInput schema / properties / transaction / enum
        Previous value: -[
        -  "auto",
        -  "none"
        -]New value: +[
        +  "auto",
        +  "group",
        +  "none"
        +]
    • Changedrevit_export_view1 field changed
      • changedInput schema / properties / output_path / description
        Previous value: -"New PNG path on the MCP client machine; an existing file is an error. Default null downloads to a temporary directory and returns localPath."New value: +"New PNG path, resolved on the machine running this server; an existing file is an error. Default null downloads to a temporary directory and returns localPath."
    • Changedrevit_family_audit1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "summary",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
    • Addedrevit_get_tool
    • Changedrevit_issue_register1 field changed
      • addedInput schema / properties / output_path / description
        Added value: +"New .xlsx issue register path, resolved on the machine running this server; existing files are refused."
    • Changedrevit_jobs1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_links_status1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_list_catalog3 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 200,
        +  "maximum": 2000,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / name_contains
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Case-insensitive substring of the view name."
        +}
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_list_relations1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Addedrevit_list_sheets
    • Addedrevit_list_tools
    • Changedrevit_list_views1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_list_warnings1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Addedrevit_model_audit
    • Changedrevit_model_health2 fields changed
      • changedInput schema / properties / output_path / description
        Previous value: -"New .xlsx health report path on the MCP server machine; parent must exist and existing files are refused."New value: +"New .xlsx health report path, resolved on the machine running this server; parent must exist and existing files are refused."
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_model_snapshot1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_nwc_settings_check1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_parameter_fill_check1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_ping1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_place_views_on_sheet4 fields changed
      • addedInput schema / properties / sheet / anyOf
        Added value: +[
        +  {
        +    "minLength": 1,
        +    "pattern": "\\S",
        +    "type": "string"
        +  },
        +  {
        +    "exclusiveMinimum": 0,
        +    "maximum": 9223372036854776000,
        +    "type": "integer"
        +  }
        +]
      • removedInput schema / properties / sheet / minLength
        Removed value: -1
      • removedInput schema / properties / sheet / pattern
        Removed value: -"\\S"
      • removedInput schema / properties / sheet / type
        Removed value: -"string"
    • Changedrevit_process_models1 field changed
      • changedInput schema / $defs / ProcessCode / properties / transaction / enum
        Previous value: -[
        -  "auto",
        -  "none"
        -]New value: +[
        +  "auto",
        +  "group",
        +  "none"
        +]
    • Changedrevit_query_elements1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Addedrevit_run_tool
    • Addedrevit_save_tool
    • Changedrevit_schedule_data1 field changed
      • changedInput schema / properties / schedule / description
        Previous value: -"Exact schedule name or decimal Revit view ID."New value: +"Exact schedule name or decimal Revit view ID. (Use the id when two schedules share a name.)"
    • Addedrevit_set_read_only
    • Changedrevit_shared_coordinates1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_view_elements1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_view_info1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_view_summary1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
    • Changedrevit_view_warnings1 field changed
      • removedInput schema / properties / pickup_timeout_seconds
        Removed value: -{
        -  "default": 300,
        -  "description": "Seconds to wait for the add-in to pick up the job (default 300); unused over HTTP.",
        -  "type": "integer"
        -}
  2. 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"
  3. 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
  4. 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"
        +}
  5. 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."
  6. 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.1/5.0

Scored across 89 tools

Disambiguation3/5

Many tools are individually distinct, but there are substantial overlapping clusters: revit_run_tool/revit_execute_code/revit_run_actions, revit_place_family/revit_place_families, revit_update_parameters/revit_set_parameter, and several query/read/audit tools. Detailed descriptions help, but an agent still needs careful selection among similar capabilities.

Naming Consistency4/5

All tools use a consistent revit_ snake_case prefix, and most follow a clear verb_noun or noun-action pattern. A few names such as revit_document_info, revit_ui_state, and revit_jobs are less verb-oriented, but the overall convention remains readable and predictable.

Tool Count1/5

With 89 tools, this server is far beyond a practical toolset for agent selection, even for a broad Revit automation domain. The surface is comprehensive but heavily overloaded, with many niche and overlapping operations that increase cognitive load and misselection risk.

Completeness4/5

The surface covers model and element CRUD, views and sheets, documents and worksharing, families, exports, auditing, batch runs, and C# escape hatches. Some direct creation operations such as levels, grids, rooms, dimensions, or text notes are not exposed as first-class tools, but they can be worked around through code execution.

Maintenance

ActivityActive
ResponsivenessLimited data

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
    47 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
    47 npm
    MIT