Skip to main content
Glama
Model MCP

Model MCP

List Catalog

revit_list_catalog
Read-onlyIdempotent

List catalog names for one Revit section—categories, levels, views, phases, or parameters—with case-insensitive name filtering and bounded results returning totals and hasMore.

Instructions

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.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "section": "<section>"
    },
    "name": "revit_list_catalog"
  }
}

Input Schema

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

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv2.0.0
    • 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"
      -}
  2. Changed11 schema fields changedv0.10.0
    • 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"
  3. Changed2 schema fields changedv0.7.0
    • changedInput schema / properties / document / description
      Previous value: -"Case-insensitive substring of the target active document title or file name; default null leaves requests unaddressed, so any instance may respond. Use a unique substring with multiple instances; revit_list_instances instead returns all matching instances, or all instances when omitted."New value: +"Case-insensitive substring of the target active document title or file name. Reads require exactly one matching instance; omitted document requires exactly one running instance. Zero or multiple matches fail before publishing. revit_list_instances returns all matching instances, or all running instances when omitted."
    • addedInput schema / properties / process_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Exact positive Revit process ID. Takes precedence over document; if both are supplied they must agree.",
      +  "title": "Process Id"
      +}
  4. Changed3 schema fields changedv0.1.1
    • 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."
  5. First observed

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.

Deploy Server

Other Tools