Skip to main content
Glama
sharafutdinovdi

Revit Model MCP

Process Many Models

revit_process_models
Destructive

Open Revit models in a session to run action steps or C# code, export, save, and close. Use for batch model edits, parameter updates, and file exports.

Instructions

Open each model in the interactive session, run steps and C# code, export, save as requested, and close. In-place saves and code need a confirm_token from the preview response. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.

Input Schema

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

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

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

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already flag destructive=true and idempotent=false, but the description adds real behavior beyond them: the confirm_token gate for in-place writes, the async status=running + jobId return when the wait budget expires, the risk that the model was already modified, and the non-idempotent resubmit warning. This is substantive transparency for a long-running destructive batch job.

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

Conciseness4/5

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

Front-loaded with the pipeline in the first sentence, then layered with the gating, async, and resubmit notes. Four dense sentences with no filler. Slightly overloaded, but every clause carries information.

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

Completeness3/5

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

An output schema exists, so return values need not be re-explained, yet the description still usefully flags the status=running/jobId shape. For a 14-parameter, destructive, 500-model batch tool it omits dry_run guidance and any sibling differentiation against revit_run_actions/revit_batch_start, leaving meaningful gaps.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the load and only partially does. It explains confirm_token's provenance and that code/in-place saves require it, and implicitly covers open/save/exports via the pipeline sentence. It says nothing about dry_run, paths, folder, pattern, recursive, stop_on_error, process_id, or timeout_seconds, and the self-documenting nested enums (mode, format) do not close that gap.

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

Purpose4/5

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

The description names a specific resource (many models) and enumerates the pipeline it runs: open, run steps and C# code, export, save, close. An agent immediately knows this is a multi-model batch executor. It does not, however, distinguish itself from close siblings like revit_run_actions or revit_batch_start, which cover overlapping ground.

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

Usage Guidelines3/5

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

It states a concrete prerequisite (confirm_token from the preview response for in-place saves and code) and warns that resubmitting repeats the action. But there is no explicit when-to-use vs revit_run_actions, revit_execute_code, or revit_batch_start, nor any guidance on dry_run. Usage is implied rather than routed.

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

Deploy Server

Other Tools