Skip to main content
Glama
sharafutdinovdi

Revit Model MCP

Open Documents

revit_documents
Read-onlyIdempotent

List every open document in a Revit process, including background ones, with titles, paths, and status flags; optionally include linked documents.

Instructions

List every open document in one Revit process, including background documents.

Linked documents are excluded unless include_linked is set. Returns title, path, isActive, isLinked, isFamilyDocument, isWorkshared, isDetached, isModified, openedByMcp and centralPath when available. An empty process returns [].

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
documentNoCase-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.
process_idNoExact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.
include_linkedNo
timeout_secondsNoPositive 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.
pickup_timeout_secondsNoPositive 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.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.7.0

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare a safe read-only, idempotent, non-destructive profile, and the description layers on real operational detail: the returned field set, that an empty process returns [], that a non-empty skipped list means the answer is incomplete, and that skippedCount includes entries beyond the first 100 (an implicit result cap). This is meaningful behavior 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?

Two tight paragraphs with the core behavior and return shape front-loaded, followed by edge cases. Slightly dense and the field enumeration competes with the existing output schema, but no sentence is filler.

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

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the exhaustive field list is redundant, but the description covers the genuinely ambiguous cases an agent needs: empty results, multi-instance disambiguation, incomplete answers via skipped/skippedCount. Only environmental/permission prerequisites are left unstated.

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

Parameters4/5

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

Schema coverage is 80%, so most parameters are already documented. The description still adds semantics for include_linked (linked docs excluded unless set) and the multi-instance rule that makes document effectively required, going beyond 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, including background documents') with an explicit scope qualifier. It is distinguishable from siblings like revit_document_info and revit_open_document, though it never names them to sharpen the contrast.

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

Usage Guidelines4/5

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

Gives conditional guidance: linked documents are excluded unless include_linked is set, and document is required when more than one Revit instance is running. It does not explicitly route the agent away from a specific sibling, but the conditions for correct invocation are stated.

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