Skip to main content
Glama
sharafutdinovdi

Revit Model MCP

Mirror Elements

revit_mirror
Destructive

Mirror selected model elements across an X or Y axis through a point, optionally copying originals. Preview with dry_run; grouped, pinned, hosted, and constrained items are skipped and reported.

Instructions

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.

Input Schema

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

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv0.10.0
    • 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"
  2. Addedv0.9.1

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.

Deploy Server

Other Tools