Revit MCP Server
The Revit MCP Server facilitates automation and programmatic interaction with Autodesk Revit through the Model Context Protocol (MCP). It provides a comprehensive set of tools for:
Element Creation: Build levels, grid lines, walls, floors, rooms, doors, windows, MEP elements (ducts, pipes, cable trays), family instances, floor plan views, and sheets.
Element Management: Find elements by category, retrieve parameters and locations, update properties, delete, move, and highlight elements in views.
View Operations: Activate views, retrieve view data, link DWG files.
Command Execution: Execute specified Revit commands and functions with parameters.
Integration Capabilities: Configure and integrate with AI tools like Claude for Desktop, Cursor, and Cline.
Extensibility: Implement custom MCP DLL files to extend functionality.
Interacts with xml.Revit to enable sending commands to Revit and receiving responses for model manipulation and automation
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Revit MCP Servercreate a new level at 10 feet and add floor plan views"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
xml.Revit.MCP Tools Overview
xml.Revit.MCP provides a comprehensive set of tools for integrating with Autodesk Revit through the Model Context Protocol (MCP). This library serves as a bridge between AI assistants and Revit, enabling powerful automation capabilities and programmatic interaction with building models.

Key Features
The tool library includes numerous functions for Revit automation and interaction:
Basic Operations:
Get available commands from Revit plugin
Execute specified commands in Revit
Call specific Revit functions with parameters
Retrieve view data and selected elements
Element Management:
Find elements by category
Get element parameters and locations
Update element parameters
Delete elements
Show/highlight elements in current view
Move elements to new positions
Creation Tools:
Create levels/floors
Create floor plan views
Create grid lines
Create walls and floors
Create rooms and room tags
Create doors and windows
Create MEP elements (ducts, pipes, cable trays)
Create family instances
Link DWG files
Create sheets
Related MCP server: revit-mcp
Installation Requirements
xml.Revit: Version 1.3.4.3 or newer
Python: 3.10 or newer
UV Package Manager: Required for installation
Revit: Compatible with versions 2019-2024 (with plugin)
Installation Process
First, install the UV package manager:
pip install uvInstall the revit-mcp package:
pip install revit-mcpTest the installation:
uvx revit-mcpYou should see:
RevitMCPServer - INFO - Successfully connected to Revit on startup
Integration with AI Assistants
Claude for Desktop
Edit claude_desktop_config.json to include:
Cursor
Edit mcp.json to include:
Cline
Edit cline_mcp_setting.json to include:
{
"mcpServers": {
"RevitMCPServer": {
"disabled": false,
"timeout": 30,
"command": "uvx",
"args": ["revit-mcp"],
"transportType": "stdio",
"autoApprove": [
"active_view",
"call_func",
"create_cable_trays",
"create_door_windows",
"create_ducts",
"create_family_instances",
"create_floors",
"create_floor_plan_views",
"create_grids",
"create_levels",
"create_pipes",
"create_room_separation_lines",
"create_room_tags",
"create_rooms",
"create_sheets",
"create_walls",
"delete_elements",
"execute_commands",
"find_elements",
"get_commands",
"get_locations",
"get_selected_elements",
"get_view_data",
"link_dwg_and_activate_view",
"move_elements",
"parameter_elements",
"show_elements",
"update_elements"
]
}
}
}Extending Functionality
You can create custom MCP DLL files to implement additional functionality by:
Implementing the
xml.Revit.MCP.Public.IMCPMethodinterfaceFollowing JSON-RPC 2.0 specification for communication
Compiling to a DLL and placing it in the designated MCP folder
Plugin Configuration
When using the revit-mcp-plugin:
Register the plugin with Revit
Configure commands through: Add-in Modules → Revit MCP Plugin → Settings
Enable the service: Add-in → Revit MCP Plugin → Revit MCP Switch
Once enabled, AI assistants can discover and control your Revit program, executing the various commands provided by the xml.Revit.MCP tools library.
Available Tools
27 toolsactive_viewA
激活并打开Revit中的视图,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持打开单个或多个视图
自动验证视图元素有效性
过滤模板视图
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"ActiveView" params (List[Dict]): 视图参数列表,每个字典包含: - elementId (Union[int, str]): 视图元素ID
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "视图元素ID", "name": "视图名称", "familyName": "视图族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
错误代码: -32600: 无效请求 -32602: 无效参数(元素不是视图/是模板视图/无效元素) -32603: 内部错误 -32700: 解析错误
示例: # 激活单个视图 response = active_view(ctx, params=[{"elementId": 123456}])
# 激活多个视图(最后一个成功激活的视图将成为当前视图)
response = active_view(ctx, params=[
{"elementId": 123456},
{"elementId": "789012"}
])
# 输出示例
{
"jsonrpc": "2.0",
"result": [123456, 789012],
"id": 1
}注意: 1. 无法激活模板视图(会返回错误) 2. 如果传入多个视图ID,会依次尝试激活,最后一个成功的视图将成为当前视图 3. 返回的列表包含所有成功激活的视图ID
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | ActiveView | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: supports single/multiple view activation, validates view element validity, filters template views, includes error handling, and specifies that the last successfully activated view becomes current. It also details error codes and response formats, though it doesn't cover permissions or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (特性, 参数, 返回, etc.), but it's verbose and includes redundant information (e.g., JSON-RPC 2.0 specification mentioned twice, example output partially repeats return structure). Some sentences, like the note about 'mcp_tool使用时params不要有任何注释信息', don't add clear value for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (2 parameters with 0% schema coverage, no output schema, no annotations), the description is highly complete. It covers purpose, parameters with semantics, return values with success/error structures, error codes, examples, and important behavioral notes (e.g., template view handling, multiple view activation behavior). No significant gaps remain for tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It thoroughly explains the parameters: 'ctx' as FastMCP context object, 'method' as JSON-RPC method name with default, and 'params' as a list of dictionaries with 'elementId' details. It provides examples and clarifies data types (Union[int, str]), adding significant value beyond the minimal schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '激活并打开Revit中的视图' (activate and open views in Revit). It specifies the verb (activate/open) and resource (views in Revit), though it doesn't explicitly differentiate from sibling tools like 'get_view_data' or 'create_floor_plan_views'. The purpose is specific but lacks sibling comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through examples (activating single or multiple views) and notes (e.g., cannot activate template views). However, it doesn't explicitly state when to use this tool versus alternatives like 'get_view_data' or 'link_dwg_and_activate_view', nor does it provide clear prerequisites or exclusions beyond template view filtering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
call_funcA
调用 Revit 函数服务,支持直接传递功能名称及其参数,遵循 JSON-RPC 2.0 规范。
特性:
支持批量调用多个功能
支持传递参数给每个功能
自动验证参数有效性
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CallFunc" params (List[Dict]): 功能参数列表,必须提供至少一个函数名,每个字典包含: - name (str): 要调用的功能名称 - params (dict, optional): 功能对应的参数,可为空
返回: dict: JSON-RPC 2.0格式的响应
示例: # 调用不需要参数的函数 response = call_func(ctx, params=[ {"name": "ClearDuplicates"}, {"name": "DimensionViewPlanGrids"}, {"name": "DeleteZeroRooms"} ])
# 调用带参数的函数
response = call_func(ctx, params=[
{"name": "新增标高", "params": {"offset": 3000}}
])
# 混合调用
response = call_func(ctx, params=[
{"name": "ClearDuplicates"},
{"name": "新增标高", "params": {"offset": 3000}}
])
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CallFunc | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It effectively discloses key behavioral traits: supports batch calls, parameter passing, automatic parameter validation, and comprehensive error handling. It also specifies the JSON-RPC 2.0 protocol. However, it doesn't mention potential side effects, performance characteristics, or authentication requirements that might be relevant for a Revit API tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (description, features, parameters, returns, examples). It's appropriately sized for a tool with 2 parameters and complex functionality. The content is front-loaded with the core purpose. Some minor redundancy exists between the features list and parameter explanations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (generic function calling with JSON-RPC), no annotations, 0% schema coverage, and no output schema, the description provides substantial context. It covers purpose, features, parameters, return format, and includes multiple examples. The main gap is lack of output schema details, but the description specifies the return is 'JSON-RPC 2.0格式的响应' which provides some guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (schema has no descriptions), the description fully compensates by providing detailed parameter semantics. It explains both parameters: 'method' as the JSON-RPC method name with default 'CallFunc', and 'params' as a list of dictionaries containing function names and optional parameters. The structure of the params dictionary is clearly documented with 'name' and 'params' fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '调用 Revit 函数服务,支持直接传递功能名称及其参数,遵循 JSON-RPC 2.0 规范' (Call Revit function service, supports directly passing function names and their parameters, follows JSON-RPC 2.0 specification). This specifies the verb (call), resource (Revit functions), and protocol (JSON-RPC 2.0). However, it doesn't explicitly differentiate from sibling tools like 'execute_commands' or 'get_commands' which might have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage through the '特性' (Features) section and examples, showing it's for batch calling functions with parameters. However, it lacks explicit guidance on when to use this tool versus alternatives like 'execute_commands' or other specific creation tools. The examples help but don't establish clear boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cable_traysA
在Revit中创建电缆桥架,支持批量创建,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量创建多个电缆桥架
自动处理单位转换(毫米转英尺)
自动匹配桥架类型
支持指定桥架宽度和高度
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CreateCableTrays" params (List[Dict]): 桥架参数列表,每个字典包含: - cableTrayTypeName (str): 桥架类型名称 - startX (float): 起点X坐标(毫米) - startY (float): 起点Y坐标(毫米) - startZ (float): 起点Z坐标(毫米) - endX (float): 终点X坐标(毫米) - endY (float): 终点Y坐标(毫米) - endZ (float): 终点Z坐标(毫米) - width (float): 桥架宽度(毫米) - height (float): 桥架高度(毫米)
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "元素ID", "name": "名称", "familyName": "族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: response = create_cable_trays(ctx, params=[ { "cableTrayTypeName": "梯级式电缆桥架", "startX": 0, "startY": 0, "startZ": 3000, "endX": 5000, "endY": 0, "endZ": 3000, "width": 200, "height": 100 }, { "cableTrayTypeName": "标准", "startX": 5000, "startY": 0, "startZ": 3000, "endX": 5000, "endY": 5000, "endZ": 3000, "width": 200, "height": 100 } ])
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreateCableTrays | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: batch creation capability, automatic unit conversion (mm to feet), automatic type matching, width/height specification support, and comprehensive error handling. It also describes the JSON-RPC 2.0 protocol usage, though it doesn't mention permissions, side effects, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (特性, 参数, 返回, 示例) but contains some redundant information. The JSON-RPC 2.0 specification mention appears twice, and the 'mcp_tool使用时params不要有任何注释信息' note seems out of place. The content is valuable but could be more efficiently organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, the description provides excellent coverage: clear purpose, detailed parameters, comprehensive return format documentation, and a complete example. The main gap is the lack of usage guidelines compared to sibling tools, but otherwise it's quite complete for a 2-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 2 parameters, the description fully compensates by providing detailed parameter documentation. It explains the 'method' parameter default value and purpose, and thoroughly documents the 'params' array structure including all 9 fields with their data types, units (millimeters), and semantic meaning (start/end coordinates, dimensions).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('创建电缆桥架' - create cable trays) and resource (in Revit), distinguishing it from siblings like create_ducts or create_pipes. The first sentence immediately establishes the tool's purpose with verb+resource specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like create_ducts or create_pipes. The description mentions it's for cable trays but doesn't explain when cable trays are appropriate versus other routing systems, nor does it mention prerequisites or dependencies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_door_windowsA
在Revit中创建门窗族实例,支持批量创建,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量创建多个门窗族实例
自动处理单位转换(毫米转英尺)
支持指定族类型和类别
支持指定主体墙ElementId
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CreateDoorWindows" params (List[Dict]): 门窗参数列表,每个字典包含: - categoryName (str): 类别名称(门或窗) - familyName (str): 族名称 - name (str): 类型名称 - startX (float): 放置点X坐标(毫米) - startY (float): 放置点Y坐标(毫米) - startZ (float): 放置点Z坐标(毫米) - hostId (str): 主体墙的ElementId - offset (str, optional): 底高度偏移值
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "门窗元素ID", "name": "门窗名称", "familyName": "门窗族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: response = create_door_windows(ctx, params=[ { "categoryName": "门", "familyName": "单扇门", "name": "915 x 2134mm", "startX": 5000, "startY": 2500, "startZ": 0, "hostId": "123456", "offset": "0" }, { "categoryName": "窗", "familyName": "固定窗", "name": "0915 x 1220mm", "startX": 8000, "startY": 2500, "startZ": 1000, "hostId": "123456", "offset": "900" } ])
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreateDoorWindows | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions several behavioral traits: batch creation capability, automatic unit conversion (millimeters to feet), support for specifying family types/categories/host walls, and comprehensive error handling. However, it doesn't address important behavioral aspects like whether this is a read-only or destructive operation, what permissions are required, or any rate limits/performance considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (特性/features, 参数/parameters, 返回/return, 示例/example), but it's quite lengthy. The JSON-RPC specification note and 'mcp_tool使用时params不要有任何注释信息' (when using mcp_tool, params should not have any comment information) seem unnecessary for tool selection. The example is comprehensive but could be more concise while still being helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (batch creation with multiple parameters), no annotations, and no output schema, the description does an excellent job of explaining what the tool does, its parameters, and return format. The detailed return structure documentation compensates for the missing output schema. The main gap is lack of usage guidelines compared to sibling tools, but otherwise this is quite complete for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must fully compensate. It provides extensive parameter documentation: explains the two main parameters (method and params), details all 8+ fields within the params array (categoryName, familyName, name, startX/Y/Z, hostId, offset), including data types, units (millimeters), and optional status. This goes far beyond what the minimal input schema provides and gives the agent complete understanding of parameter requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '在Revit中创建门窗族实例,支持批量创建' (Create door/window family instances in Revit, supports batch creation). It specifies the exact action (创建/creation), resource (门窗族实例/door-window family instances), and distinguishes from siblings like create_walls, create_floors, etc. by focusing specifically on doors and windows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose create_door_windows over create_family_instances (which appears to be a more general sibling tool) or other creation tools. There's no discussion of prerequisites, constraints, or appropriate contexts for this specific door/window creation functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ductsA
在Revit中创建风管,支持批量创建,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量创建多个风管
自动处理单位转换(毫米转英尺)
自动匹配风管类型和系统类型
支持指定风管尺寸
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CreateDucts" params (List[Dict]): 风管参数列表,每个字典包含: - ductTypeName (str): 风管类型名称 - systemTypeName (str): 风管系统类型名称 - startX (float): 起点X坐标(毫米) - startY (float): 起点Y坐标(毫米) - startZ (float): 起点Z坐标(毫米) - endX (float): 终点X坐标(毫米) - endY (float): 终点Y坐标(毫米) - endZ (float): 终点Z坐标(毫米) - width (float): 风管宽度(毫米) - height (float): 风管高度(毫米)
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "元素ID", "name": "名称", "familyName": "族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: response = create_ducts(ctx, params=[ { "ductTypeName": "默认", "systemTypeName": "送风", "startX": 0, "startY": 0, "startZ": 3000, "endX": 5000, "endY": 0, "endZ": 3000, "width": 300, "height": 200 }, { "ductTypeName": "矩形风管", "systemTypeName": "送风", "startX": 5000, "startY": 0, "startZ": 3000, "endX": 5000, "endY": 5000, "endZ": 3000, "width": 300, "height": 200 } ])
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreateDucts | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: batch creation capability, automatic unit conversion (mm to feet), automatic matching of duct and system types, and comprehensive error handling. It also describes the JSON-RPC 2.0 protocol usage. However, it doesn't mention permissions, rate limits, or side effects beyond creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (特性, 参数, 返回, 示例) but contains some redundant information. The JSON-RPC protocol mention appears twice, and the example is quite lengthy. While informative, it could be more streamlined by removing repetition and shortening the example.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, the description does well by covering purpose, parameters, return format (both success and error cases), and providing an example. It explains the JSON-RPC response structure which compensates for missing output schema. However, it lacks information about prerequisites, permissions, or integration context with other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (schema only shows 'method' and 'params' as generic objects), the description fully compensates by providing detailed parameter documentation. It explains the 'params' array structure with 10 specific fields, their data types, units (millimeters), and purpose. This adds significant value beyond the minimal schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '在Revit中创建风管' (create ducts in Revit) with the specific verb '创建' (create) and resource '风管' (ducts). It distinguishes from siblings like create_pipes, create_walls, etc. by specifying the exact resource type. However, it doesn't explicitly differentiate from other creation tools beyond naming the resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like create_pipes or other creation tools. The description mentions '支持批量创建' (supports batch creation) which hints at a use case, but doesn't provide explicit when/when-not scenarios or mention sibling tools as alternatives for different creation needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_family_instancesA
在Revit中创建族实例,支持多种放置方式,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量创建多个族实例
自动处理单位转换(毫米转英尺)
支持多种放置类型:
基于标高放置
基于视图放置
基于工作平面放置
基于宿主放置
基于曲线放置
支持旋转和偏移
自动匹配族类型和类别
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CreateFamilyInstances" params (List[Dict]): 族实例参数列表,每个字典包含: - categoryName (str): 支持按类别BuiltInCategory或者Category.Name查找(如"OST_Walls","OST_Doors", "墙", "门", "结构框架"等) - name (str): 族类型名称 - startX (float): 起点X坐标(毫米) - startY (float): 起点Y坐标(毫米) - startZ (float): 起点Z坐标(毫米) - familyName (str, optional): 族名称(可选,用于更精确匹配) - endX (float, optional): 终点X坐标(毫米,默认等于startX) - endY (float, optional): 终点Y坐标(毫米,默认等于startY) - endZ (float, optional): 终点Z坐标(毫米,默认等于startZ) - hostId (str, optional): 宿主元素ID(可选) - viewName (str, optional): 视图名称(可选) - rotationAngle (float, optional): 旋转角度(度,默认0) - offset (float, optional): 偏移距离(毫米,默认0)
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "元素ID", "name": "名称", "familyName": "族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: # 创建多个族实例 response = create_family_instances(ctx, params=[ # 基于标高的门 { "categoryName": "窗", "name": "0406 x 0610mm", "startX": 1000, "startY": 2000, "startZ": 0, "hostId": 225535, "level": "标高 1", }, # 基于视图的家具 { "categoryName": "OST_Furniture", "name": "办公桌", "startX": 3000, "startY": 4000, "startZ": 0, "viewName": "标高 1", "rotationAngle": 90 }, # 基于曲线的梁 { "categoryName": "OST_StructuralFraming", "name": "H型钢梁", "startX": 0, "startY": 0, "startZ": 3000, "endX": 5000, "endY": 0, "endZ": 3000 } ])
# 输出示例
{
"jsonrpc": "2.0",
"result": [213101, 213102, 213103],
"id": 1
}
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreateFamilyInstances | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing multiple behavioral traits: batch creation capability, automatic unit conversion (millimeters to feet), multiple placement types, rotation/offset support, automatic family type/category matching, and comprehensive error handling. It also mentions JSON-RPC 2.0 compliance. However, it doesn't cover permission requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is comprehensive but lengthy with multiple sections (features, parameters, returns, examples). While well-structured, it could be more front-loaded; the core purpose appears early, but detailed features and parameters follow. Some sentences like 'mcp_tool使用时params不要有任何注释信息' seem out of place and don't add value for AI tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex creation tool with 2 parameters (but nested complexity), 0% schema coverage, no annotations, and no output schema, the description provides substantial context: detailed parameter semantics, return format specification, and comprehensive examples. It covers most needs but could benefit from more explicit guidance on when to use versus sibling creation tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (schema only shows 'method' and 'params' as generic objects), the description provides extensive parameter documentation: it explains the two main parameters (ctx and method), details 13 specific fields within the params array with descriptions, units, optionality, and examples. This fully compensates for the schema's lack of detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '在Revit中创建族实例' (create family instances in Revit). It specifies the action (create) and resource (family instances), distinguishing it from sibling tools like create_walls or create_floors that create specific element types rather than generic family instances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the feature list (e.g., '支持批量创建多个族实例' - supports batch creation of multiple family instances) and parameter examples, but doesn't explicitly state when to use this tool versus alternatives like create_door_windows or create_walls. It provides context about placement types but lacks explicit guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_floor_plan_viewsA
根据给定标高创建楼层平面视图,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量创建多个楼层平面视图
自动跳过已存在的视图,避免重复创建
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为 CreateFloorPlanViews params (List[Dict]): 视图参数列表,每个字典包含: - levelId (str): 标高的ElementId - viewName (str): 要创建的视图名称
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "视图元素ID", "name": "视图名称", "familyName": "视图族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: response = create_floor_plan_views(ctx, params=[ {"levelId": "123456", "viewName": "Level 1 - Floor Plan"}, {"levelId": "789012", "viewName": "Level 2 - Floor Plan"} ])
# 返回示例
{
"jsonrpc": "2.0",
"result": [
{
"elementId": "123789",
"name": "Level 1 - Floor Plan",
"familyName": "Floor Plan"
},
{
"elementId": "123790",
"name": "Level 2 - Floor Plan",
"familyName": "Floor Plan"
}
],
"id": 1
}
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreateFloorPlanViews | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: supports batch creation, automatically skips existing views to avoid duplicates, and has error handling. These traits go beyond basic functionality and help the agent understand how the tool operates, though it could mention permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose but includes extensive technical details (JSON-RPC spec, example code, return structure) that may overwhelm. While informative, some sections like the full return format could be streamlined. It's structured but not optimally concise for quick agent comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (batch creation tool with no annotations or output schema), the description is fairly complete. It covers purpose, parameters with semantics, behavioral traits, and return format, though it lacks output schema support. The example aids understanding, but more context on error scenarios or integration with siblings would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It details the 'params' parameter structure, specifying 'levelId' and 'viewName' with examples, which adds significant meaning beyond the generic schema. However, it doesn't explain the 'method' parameter's purpose or default value, leaving a minor gap in parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '根据给定标高创建楼层平面视图' (create floor plan views based on given elevations). It specifies the verb '创建' (create) and resource '楼层平面视图' (floor plan views), making the action explicit. However, it doesn't differentiate from sibling tools like 'create_walls' or 'create_floors' beyond the resource type, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions JSON-RPC 2.0 compliance and technical usage notes (e.g., 'params不要有任何注释信息'), but offers no context about prerequisites, when this is appropriate compared to other creation tools, or any exclusions. This leaves the agent without practical usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_floorsA
在Revit中创建楼板,支持批量创建,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量创建多个楼板
自动处理单位转换(毫米转英尺)
自动匹配楼板类型或使用默认类型
支持结构楼板和非结构楼板
自动根据z值标高确定楼层
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CreateFloors" params (List[Dict]): 楼板参数列表,每个字典包含: - boundaryPoints (List[Dict]): 楼板边界点列表,每个点包含: - x (float): X坐标(毫米) - y (float): Y坐标(毫米) - z (float): Z坐标(毫米) - floorTypeName (str, optional): 楼板类型名称(可选) - structural (bool, optional): 是否为结构楼板(默认为False)
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "楼板元素ID", "name": "楼板名称", "familyName": "楼板族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: # 创建多个楼板 response = create_floors(ctx, params=[ { "boundaryPoints": [ {"x": 0, "y": 0, "z": 0}, {"x": 5000, "y": 0, "z": 0}, {"x": 5000, "y": 5000, "z": 0}, {"x": 0, "y": 5000, "z": 0}, {"x": 0, "y": 0, "z": 0} ], "floorTypeName": "常规 - 150mm", "structural": True }, { "boundaryPoints": [ {"x": 0, "y": 0, "z": 3000}, {"x": 5000, "y": 0, "z": 3000}, {"x": 5000, "y": 5000, "z": 3000}, {"x": 0, "y": 5000, "z": 3000}, {"x": 0, "y": 0, "z": 3000} ], "floorTypeName": "常规 - 200mm" } ])
# 输出示例
{
"jsonrpc": "2.0",
"result": [213001, 213002],
"id": 1
}
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreateFloors | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing multiple behavioral traits: batch creation capability, automatic unit conversion (millimeters to feet), automatic floor type matching, support for structural/non-structural floors, automatic floor level determination from Z-values, and comprehensive error handling. This provides substantial context beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (特性, 参数, 返回, 示例), but contains some redundancy. The JSON-RPC specification mention appears twice, and the example output shows a different structure than described in the '返回' section (showing numeric IDs vs described object format). Some sentences could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex creation tool with no annotations and no output schema, the description provides substantial context. It covers functionality, parameters, return format, and includes a comprehensive example. The main gap is the lack of usage guidelines relative to sibling tools, but otherwise it's quite complete for understanding how to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (schema only shows generic 'method' and 'params' with no details), the description fully compensates by providing detailed parameter documentation. It explains the 'params' array structure, documents all nested fields (boundaryPoints with x/y/z coordinates, floorTypeName, structural flag), specifies units (millimeters), defaults (structural defaults to False), and optional parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '在Revit中创建楼板,支持批量创建' (create floors in Revit, supports batch creation). It specifies the verb ('创建楼板' - create floors), resource (Revit), and distinguishes from siblings like create_walls or create_levels by focusing on floor creation specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. While it mentions batch creation and unit conversion, it doesn't explain when to choose create_floors over other creation tools like create_walls or create_rooms, nor does it mention prerequisites or constraints for floor creation in Revit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_gridsA
在Revit中创建轴网,支持直线轴网和弧线轴网,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量创建多个轴网
支持直线轴网和弧线轴网创建
自动处理单位转换(毫米转英尺)
自动处理轴网名称冲突
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CreateGrids" params (List[Dict]): 轴网参数列表,每个字典包含: - startX (float): 起点X坐标(毫米) - startY (float): 起点Y坐标(毫米) - endX (float): 终点X坐标(毫米) - endY (float): 终点Y坐标(毫米) - name (str, optional): 轴网名称(可选) - centerX (float, optional): 弧线轴网的圆心X坐标(毫米) - centerY (float, optional): 弧线轴网的圆心Y坐标(毫米)
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "轴网元素ID", "name": "轴网名称", "familyName": "轴网族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: # 创建直线轴网和弧线轴网 response = create_grids(ctx, params=[ { "name": "Grid_A", "startX": 0, "startY": 0, "endX": 10000, "endY": 0 }, { "name": "Grid_B", "startX": 5000, "startY": 0, "endX": 5000, "endY": 10000, "centerX": 5000, "centerY": 5000 } ])
# 输出示例
{
"jsonrpc": "2.0",
"result": [
{
"elementId": "212801",
"name": "Grid_A",
"familyName": "轴网"
},
{
"elementId": "212802",
"name": "Grid_B",
"familyName": "轴网"
}
],
"id": 1
}
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreateGrids | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behaviors: batch creation, unit conversion (mm to feet), automatic name conflict handling, and error handling. It also notes JSON-RPC 2.0 compliance and a usage note about params. However, it lacks details on permissions, side effects, or rate limits, leaving some gaps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and features, but includes extensive parameter details, return format, and a lengthy example that may be verbose. While informative, it could be more streamlined by focusing on essential guidance rather than full JSON-RPC response structures. Some sentences (e.g., the example output) are lengthy but add value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 0% schema coverage, and no output schema, the description does well by covering purpose, behaviors, parameters, and return format comprehensively. It includes an example for clarity. However, as a mutation tool in Revit, it could benefit from more context on when to use it or potential impacts, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 fully. It provides detailed parameter semantics: method defaults to 'CreateGrids', params is a list of dictionaries with specific fields (startX, startY, endX, endY, name, centerX, centerY), including units (mm) and optionality. This adds significant meaning beyond the minimal schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates grids (axis networks) in Revit, specifying support for both straight and arc grids. It distinguishes from siblings like create_walls or create_floors by focusing on grid creation, though it doesn't explicitly contrast with them. The purpose is specific but lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. While it mentions JSON-RPC 2.0 compliance and a note about params without comments, it doesn't explain prerequisites, context (e.g., when grids are needed in Revit workflows), or when to choose this over other creation tools like create_levels. Usage is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_levelsA
在Revit中创建标高,支持批量创建,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量创建多个标高
自动处理单位转换(毫米转英尺)
自动处理标高名称冲突
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CreateLevels" params (List[Dict]): 标高参数列表,每个字典包含: - elevation (float): 标高高度(毫米) - name (str, optional): 标高名称(可选,默认为"Level_{elevation}")
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "创建的标高元素ID", "name": "标高名称", "familyName": "标高族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: # 创建多个标高 response = create_levels(ctx, params=[ {"elevation": 8000, "name": "Level_3"}, {"elevation": 12000} # 自动生成名称"Level_12000" ])
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreateLevels | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes several behavioral traits: supports batch creation, automatic unit conversion (mm to feet), automatic handling of level name conflicts, and comprehensive error handling. However, it doesn't mention permissions needed, whether the operation is destructive/reversible, or rate limits. For a creation tool with no annotations, this provides substantial behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (特性, 参数, 返回, 示例) and front-loads the core purpose. However, it includes some extraneous information like 'mcp_tool使用时params不要有任何注释信息' which seems like implementation detail rather than user guidance. Most sentences earn their place, but there's minor redundancy in the JSON-RPC format explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a creation tool with no annotations, 0% schema description coverage, and no output schema, the description provides excellent completeness. It covers purpose, behavioral traits, detailed parameter semantics, return format (both success and error cases), and includes a practical example. The description fully compensates for the lack of structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage and only shows generic parameter names (method, params). The description compensates fully by providing detailed parameter semantics: method defaults to 'CreateLevels', params is a list of dictionaries where each contains elevation (in mm) and optional name (with default naming convention). This adds significant meaning beyond what the bare schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '在Revit中创建标高,支持批量创建' (Create levels in Revit, supports batch creation). It specifies the exact action (create levels), the target resource (Revit), and distinguishes it from siblings like create_walls, create_floors, etc. The description goes beyond the tool name by mentioning batch creation capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the mention of JSON-RPC 2.0 specification and Revit, but doesn't explicitly state when to use this tool versus alternatives. No guidance is provided about prerequisites, when not to use it, or comparisons with other creation tools like create_floors or create_walls. The context is clear but lacks explicit usage directives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pipesA
在Revit中创建管道,支持批量创建,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量创建多个管道
自动处理单位转换(毫米转英尺)
自动匹配管道类型和系统类型
支持指定管道直径
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CreatePipes" params (List[Dict]): 管道参数列表,每个字典包含: - pipeTypeName (str): 管道类型名称 - systemTypeName (str): 管道系统类型名称 - startX (float): 起点X坐标(毫米) - startY (float): 起点Y坐标(毫米) - startZ (float): 起点Z坐标(毫米) - endX (float): 终点X坐标(毫米) - endY (float): 终点Y坐标(毫米) - endZ (float): 终点Z坐标(毫米) - diameter (float): 管道直径(毫米)
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "元素ID", "name": "名称", "familyName": "族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: response = create_pipes(ctx, params=[ { "pipeTypeName": "默认", "systemTypeName": "循环供水", "startX": 0, "startY": 0, "startZ": 3000, "endX": 5000, "endY": 0, "endZ": 3000, "diameter": 50 }, { "pipeTypeName": "标准", "systemTypeName": "生活热水", "startX": 5000, "startY": 0, "startZ": 3000, "endX": 5000, "endY": 5000, "endZ": 3000, "diameter": 40 } ])
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreatePipes | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: batch creation capability, automatic unit conversion (millimeters to feet), automatic matching of pipe and system types, diameter specification, and error handling. It also documents the JSON-RPC response format for both success and failure cases. This provides substantial behavioral context beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (特性, 参数, 返回, 示例) but is quite lengthy with detailed parameter documentation and full response format specifications. While informative, some content could be more concise. The initial sentence about JSON-RPC 2.0 and MCP usage notes feels somewhat technical and could be streamlined for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a batch creation tool with 9 actual parameters, no annotations, and no output schema, the description provides exceptional completeness. It documents all parameters with units and examples, describes the JSON-RPC response format for both success and failure cases, includes a detailed usage example, and explains key behavioral features like unit conversion and type matching. This fully compensates for the lack of structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (schema only shows 'method' and 'params' as generic objects), the description comprehensively documents all 9 actual parameters within the params array: pipeTypeName, systemTypeName, startX/Y/Z, endX/Y/Z, and diameter. It specifies units (millimeters), coordinate meanings, and provides concrete examples. This fully compensates for the schema's lack of detail and adds significant semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '在Revit中创建管道,支持批量创建' (create pipes in Revit, supports batch creation), which provides a specific verb ('创建' - create) and resource ('管道' - pipes). It distinguishes from siblings like create_walls or create_ducts by specifying pipes. However, it doesn't explicitly differentiate from create_cable_trays or create_ducts beyond naming the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like create_ducts or create_cable_trays. It mentions '支持批量创建' (supports batch creation) which could imply a usage scenario, but doesn't specify prerequisites, constraints, or comparative advantages over other creation tools. The only contextual note is about JSON-RPC 2.0 compliance, which is technical rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_roomsA
在指定标高上创建房间,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量在多个标高上创建房间
自动验证标高元素有效性
事务化操作确保数据一致性
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CreateRooms" params (List[Dict]): 标高参数列表,每个字典包含: - elementId (Union[int, str]): 元素ID
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "房间元素ID", "name": "房间名称", "familyName": "房间族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
错误代码: -32600: 无效请求 -32602: 无效参数(元素不是标高或无效) -32603: 内部错误 -32700: 解析错误
示例: # 在多个标高上创建房间 response = create_rooms(ctx, params=[ {"elementId": 123456}, {"elementId": "789012"} ])
# 输出示例
{
"jsonrpc": "2.0",
"result": [
{
"elementId": "212801",
"name": "房间 1",
"familyName": "房间"
},
{
"elementId": "212802",
"name": "房间 2",
"familyName": "房间"
}
],
"id": 1
}注意: 1. 会在指定标高的所有封闭区域创建房间 2. 返回的房间信息列表顺序与创建顺序一致 3. 如果标高没有封闭区域,则不会创建房间但也不会报错
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreateRooms | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it supports batch operations, automatically validates level element validity, uses transactional operations for data consistency, has comprehensive error handling, and notes specific behaviors like not creating rooms on levels without enclosed areas (without error). It also details the JSON-RPC 2.0 compliance and error codes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (特性, 参数, 返回, 错误代码, 示例, 注意) and front-loaded purpose statement. While comprehensive, some sections like the detailed JSON-RPC response structure could be slightly condensed, but overall it's efficient with minimal redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a creation tool with no annotations and no output schema, the description is remarkably complete. It covers purpose, parameters, return format (including both success and error responses), error codes, examples, and important behavioral notes. This provides sufficient context for an AI agent to understand and use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 2 parameters, the description fully compensates by explaining both parameters in detail: 'method' is described as the JSON-RPC method name defaulting to 'CreateRooms', and 'params' is explained as a list of dictionaries containing 'elementId' for level identification. It provides format examples and clarifies that 'ctx' is a FastMCP context object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '在指定标高上创建房间' (create rooms on specified levels/elevations). It specifies the verb ('创建' - create) and resource ('房间' - rooms), and distinguishes it from siblings like create_floors, create_walls, and create_room_tags by focusing on room creation specifically on levels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage context through the example and notes, showing it's for creating rooms on levels with enclosed areas. However, it doesn't explicitly state when to use this versus alternatives like create_family_instances or create_room_tags, nor does it mention prerequisites or exclusions beyond the note about levels without enclosed areas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_room_tagsA
给定平面视图ID,获取当前视图中所有房间,并为其创建房间标签,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持在指定平面视图中为所有房间创建标签
自动跳过已有标签的房间
返回已创建的房间标签信息
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CreateRoomTags" params (List[Dict]): 视图参数列表,每个字典包含: - elementId (Union[int, str]): 平面视图元素ID
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "房间标签元素ID", "name": "房间标签名称", "familyName": "房间标签族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: # 为单个视图中的所有房间创建标签 response = create_room_tags(ctx, params=[{"elementId": 123456}])
# 为多个视图中的所有房间创建标签
response = create_room_tags(ctx, params=[
{"elementId": 123456},
{"elementId": "789012"}
])
# 输出示例
{
"jsonrpc": "2.0",
"result": [
{
"elementId": "212801",
"name": "房间标签 1",
"familyName": "房间标签"
},
{
"elementId": "212802",
"name": "房间标签 2",
"familyName": "房间标签"
}
],
"id": 1
}注意: 1. 如果视图不是平面视图,则会返回错误。 2. 如果一个房间已经有标签,则不会重复创建。 3. 返回的结果包含所有成功创建的房间标签信息。
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreateRoomTags | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by describing key behaviors: '自动跳过已有标签的房间' (automatically skips rooms with existing tags), '完善的错误处理机制' (comprehensive error handling), and specific error conditions for non-floor-plan views. It also explains the JSON-RPC 2.0 response format for both success and failure cases. However, it doesn't mention potential side effects, performance characteristics, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is comprehensive but somewhat verbose and not optimally structured. While it contains valuable information, it mixes implementation details ('mcp_tool使用时params不要有任何注释信息' - don't include comments in params when using mcp_tool) with functional description. The information is front-loaded with the core purpose, but could be more efficiently organized with clearer section separation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 0% schema coverage, no output schema, and 2 parameters, the description provides substantial context. It explains the tool's purpose, parameters, return format (including both success and error cases), behavioral characteristics, and includes practical examples. The main gap is lack of explicit differentiation from sibling tools, but overall it's quite complete for a tool with no structured metadata support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 2 parameters, the description provides excellent parameter semantics. It fully documents both parameters: 'method' (JSON-RPC method name, defaulting to 'CreateRoomTags') and 'params' (list of dictionaries containing 'elementId' for floor view element IDs). It includes detailed examples showing how to use both single and multiple view parameters, and explains the data types and structure thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '获取当前视图中所有房间,并为其创建房间标签' (get all rooms in the current view and create room tags for them). It specifies the verb ('创建' - create) and resource ('房间标签' - room tags). However, it doesn't explicitly differentiate from sibling tools like 'create_rooms' or 'create_family_instances', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some implied usage context through the '注意' (notes) section, stating it only works with floor plan views and skips rooms with existing tags. However, it doesn't explicitly guide when to use this tool versus alternatives like 'create_rooms' or 'create_family_instances', nor does it mention prerequisites or when-not-to-use scenarios beyond the floor plan requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sheetsB
批量创建Revit图纸并添加指定视图,遵循JSON-RPC 2.0规范。
特性:
支持批量创建带编号和名称的图纸
可指定标题块类型
支持在图纸上添加视图
完善的参数验证和错误处理
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CreateSheets" params (List[Dict]): 参数列表,每个字典包含: - number (str): 图纸编号(必填) - name (str): 图纸名称(必填) - titleBlockType (str): 标题块类型名称(必填) - viewName (str, optional): 要添加到图纸的视图名称(可选) request_id (int, optional): 请求ID,默认自动生成
返回: dict: JSON-RPC 2.0格式的响应
示例: response = create_sheets(ctx, params=[ { "number": "A101", "name": "首层平面图", "titleBlockType": "A0 公制", "viewName": "标高 1" }, { "number": "A102", "name": "二层平面图", "titleBlockType": "A0 公制" } ])
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreateSheets | |
| params | No | ||
| request_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It mentions '完善的参数验证和错误处理' (comprehensive parameter validation and error handling) which is useful behavioral context. However, it doesn't disclose important traits like whether this is a destructive operation, permission requirements, rate limits, or what happens on partial failures in batch operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably structured with sections for features, parameters, returns, and example. However, it includes redundant information ('遵循JSON-RPC 2.0规范' appears twice), and the example could be more concise. Some sentences don't earn their place in helping an AI agent understand tool usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch creation tool with 3 parameters, 0% schema coverage, no annotations, and no output schema, the description does a fair job. It explains the core functionality and parameters well, but lacks important context about error behavior, side effects, and integration with the broader Revit context. The JSON-RPC framing adds some structure but doesn't fully compensate for missing behavioral details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It provides detailed parameter documentation in the '参数' section, explaining each parameter's purpose, required/optional status, and structure of the params array. This adds significant value beyond the bare schema. However, it doesn't explain the ctx parameter's role or provide examples of valid titleBlockType values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '批量创建Revit图纸并添加指定视图' (batch create Revit sheets and add specified views), which is a specific verb+resource combination. It distinguishes from siblings like create_walls or create_floors by focusing on sheets/views rather than other Revit elements. However, it doesn't explicitly differentiate from all possible sheet-related tools (none exist in siblings).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when this tool is appropriate versus other creation tools, or any exclusion criteria. The '特性' (features) section lists capabilities but not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_wallsA
在Revit中创建墙体,支持批量创建,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量创建多个墙体
自动处理单位转换(毫米转英尺)
自动创建或匹配符合厚度的墙类型
支持指定标高或使用默认标高
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"CreateWalls" params (List[Dict]): 墙体参数列表,每个字典包含: - startX (float): 起点X坐标(毫米) - startY (float): 起点Y坐标(毫米) - endX (float): 终点X坐标(毫米) - endY (float): 终点Y坐标(毫米) - height (float): 墙体高度(毫米) - width (float): 墙体厚度(毫米) - elevation (float, optional): 墙体底部标高(毫米,默认为0)
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "墙体元素ID", "name": "墙体名称", "familyName": "墙体族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: response = create_walls(ctx, params=[ {"startX": 0, "startY": 0, "endX": 5000, "endY": 0, "height": 3000, "width": 200}, {"startX": 5000, "startY": 0, "endX": 5000, "endY": 5000, "height": 3000, "width": 200, "elevation": 1000} ])
# 返回示例
{
"jsonrpc": "2.0",
"result": [
{
"elementId": "123456",
"name": "基本墙",
"familyName": "基本墙"
},
{
"elementId": "123457",
"name": "基本墙",
"familyName": "基本墙"
}
],
"id": 1
}
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | CreateWalls | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well at disclosing behavioral traits. It describes automatic unit conversion (millimeters to feet), automatic wall type matching based on thickness, elevation handling with defaults, and comprehensive error handling. However, it doesn't mention whether this is a destructive operation (creates new elements) or any permission requirements, though 'create' implies mutation. The JSON-RPC format specification is also useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (特性, 参数, 返回, 示例) but is quite lengthy with multiple paragraphs and a detailed example. While all content is relevant, it could be more front-loaded with the core purpose. The technical note about 'mcp_tool使用时params不要有任何注释信息' seems out of place and doesn't add value for AI agent understanding. The example is helpful but extensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a batch creation tool with no annotations and no output schema, the description provides excellent completeness. It fully explains the tool's behavior, documents all parameters in detail, shows the complete return structure for both success and failure cases, and includes a practical example. For a mutation tool with rich functionality, this description gives the agent everything needed to understand and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (schema only shows 'method' and 'params' as generic objects), the description provides excellent parameter semantics compensation. It fully documents the params structure with detailed field explanations for startX, startY, endX, endY, height, width, and elevation including units (millimeters), optional status, and defaults. The description adds substantial value beyond the minimal schema, making parameters completely understandable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '在Revit中创建墙体,支持批量创建' (Create walls in Revit, supports batch creation). It specifies the exact action (create walls), the target resource (walls in Revit), and distinguishes from siblings like create_floors or create_rooms by focusing specifically on walls. The description goes beyond just restating the name by adding context about batch creation and Revit environment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the mention of Revit and batch creation, but doesn't explicitly state when to use this tool versus alternatives. While it distinguishes from siblings by focusing on walls, it doesn't provide guidance on when to choose create_walls over other wall-related tools (none listed in siblings) or when batch creation is preferable to individual operations. The JSON-RPC specification note is technical but doesn't guide usage decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_elementsA
批量删除Revit元素,支持字典格式参数,支持批量操作并遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
完全匹配服务器参数处理逻辑
支持字典列表格式参数,每个字典包含elementId键
自动处理整数和字符串格式的elementId
事务化操作确保数据一致性
详细的错误处理和日志记录
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"DeleteElements" params (List[Dict[str, Union[int, str]]]): 删除参数列表,每个字典必须包含: - elementId (Union[int, str]): 要删除的元素ID
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "删除的元素ID", "name": "元素名称", "familyName": "族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: >>> # 删除多个元素(混合格式) >>> response = delete_elements(ctx, params=[ ... {"elementId": 5943}, ... {"elementId": "5913"}, ... {"elementId": 212831} ... ]) >>> print(response) { "jsonrpc": "2.0", "result": [ {"elementId": "5943", "name": "Wall 1", "familyName": "Basic Wall"}, {"elementId": "5913", "name": "Door 1", "familyName": "Single-Flush"}, {"elementId": "212831", "name": "Window 1", "familyName": "Fixed"} ], "id": 1 }
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | DeleteElements | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does an excellent job describing key behavioral traits: it explicitly states this is a batch deletion tool, mentions transactionality for data consistency, describes detailed error handling and logging, and explains the JSON-RPC 2.0 response format. The only gap is not explicitly warning about the destructive nature, though '删除' (delete) implies this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (特性, 参数, 返回, 示例), but it's quite lengthy with technical implementation details like 'mcp_tool使用时params不要有任何注释信息' and JSON-RPC specifications that may not all be essential for tool selection. Some information could be more concise while maintaining clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive batch operation tool with no annotations and no output schema, the description provides substantial context: it explains the operation, parameters, return format, and includes a detailed example. The main gap is the lack of explicit warnings about the irreversible nature of deletion, though this is somewhat implied. Overall, it's quite complete given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 2 parameters, the description provides comprehensive parameter information beyond what the schema offers. It explains the 'method' parameter's default value and purpose, details the 'params' structure including the required 'elementId' field with its data types, and provides a complete example showing proper usage. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as '批量删除Revit元素' (batch delete Revit elements), which is a specific verb+resource combination. It distinguishes itself from sibling tools like 'find_elements', 'show_elements', 'move_elements', and 'update_elements' by focusing exclusively on deletion operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. While it mentions supporting batch operations and JSON-RPC 2.0 compliance, it doesn't explain when deletion is appropriate versus other operations like updating or moving elements, nor does it mention any prerequisites or constraints for using this destructive operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_commandsA
执行指定的功能命令,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量执行多个功能命令
可以指定是添加还是移除功能面板
自动查找并执行匹配名称的功能
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"ExecuteCommands" params (List[Dict]): 命令参数列表,每个字典包含: - name (str): 要执行的功能名称 - add (bool): True表示添加功能面板,False表示移除功能面板
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "name": "AI助手", "description": "使用DeepSeek直接操作Revit,会员用户抢先体验", "tooltip": "关注公众号获取最新功能消息(F1获取帮助)" }, { "name": "AI代码转换", "description": "AI生成的代码功能尝试转换为Revit可用功能,会员用户抢先体验~", "tooltip": "关注公众号获取最新功能消息(F1获取帮助)" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: # 添加功能面板 response = execute_command(ctx, params=[ {"name": "AI助手", "add": True}, {"name": "AI代码转换", "add": True} ])
# 移除功能面板
response = execute_command(ctx, params=[
{"name": "AI助手", "add": False}
])
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | ExecuteCommands | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: batch execution capability, add/remove functionality, automatic name matching, and error handling mechanisms. It also mentions JSON-RPC 2.0 compliance which informs the response format. The description doesn't contradict any annotations since none exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (特性, 参数, 返回, 示例) but contains some redundant information. The initial note about 'mcp_tool使用时params不要有任何注释信息' seems like implementation detail that doesn't help tool selection. The response format documentation is quite detailed but necessary given no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and 0% schema description coverage, the description provides substantial context. It covers purpose, parameters with semantics, behavioral traits, and complete response format documentation. The main gap is lack of explicit differentiation from sibling tools like 'call_func'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 2 parameters, the description provides excellent parameter semantics. It explains the 'method' parameter default value and purpose, and thoroughly documents the 'params' array structure including nested 'name' and 'add' fields with their meanings. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool '执行指定的功能命令' (executes specified function commands) and mentions JSON-RPC 2.0 compliance. It distinguishes from siblings by focusing on command execution rather than element creation/deletion or data retrieval. However, it doesn't explicitly differentiate from 'call_func' which might be a similar sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage through examples showing how to add/remove function panels, and mentions '支持批量执行多个功能命令' (supports batch execution of multiple function commands). However, it lacks explicit guidance on when to use this tool versus alternatives like 'call_func' or other command-related tools, and doesn't mention prerequisites or constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_elementsA
在Revit中按类别查找元素,返回匹配的元素信息列表,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持按类别BuiltInCategory或者Category.Name查找
和视图相关的请使用OST_Views类别作为categoryName参数,获取然后通过参数来过滤出如楼层平面,三维视图,剖面,图纸等
可指定查找实例或类型元素
支持批量多个查询条件
严格遵循JSON-RPC 2.0规范
详细的错误处理和日志记录
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"FindElements" params (List[Dict[str, Union[str, bool]]]): 查询条件列表,每个字典包含: - categoryName (str): BuiltInCategory或者Category.Name (如"OST_Views","OST_Walls","OST_Doors", "视图", "墙", "门"等) - isInstance (bool): True查找实例,False查找类型
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "元素ID", "name": "元素名称", "familyName": "族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": 错误代码, "message": 错误描述, "data": 错误详情 }, "id": request_id }
错误代码: -32600: 无效请求(参数验证失败) -32602: 类别未找到(无效的BuiltInCategory或Category.Name) -32603: 内部错误 -32700: 解析错误(参数格式错误)
示例: > response = find_elements(ctx, params=[ {"categoryName": "OST_Views", "isInstance": True}, {"categoryName": "OST_Doors", "isInstance": False}, {"categoryName": "门", "isInstance": True} ]) > print(response) { "jsonrpc": "2.0", "result": [ {"elementId": "123456", "name": "单扇门", "familyName": "M_单扇门"}, {"elementId": "789012", "name": "双扇门", "familyName": "M_双扇门"} ], "id": 1 }
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | FindElements | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by describing key behavioral traits: '支持批量多个查询条件' (supports batch multiple query conditions), '严格遵循JSON-RPC 2.0规范' (strictly follows JSON-RPC 2.0 specification), '详细的错误处理和日志记录' (detailed error handling and logging), and the complete error code mapping. It also specifies the return format structure for both success and failure cases. The main gap is it doesn't mention performance characteristics like rate limits or whether this is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately structured with clear sections (description, features, parameters, returns, error codes, example). However, it includes some redundant information: '遵循JSON-RPC 2.0规范' appears twice, and the technical note 'mcp_tool使用时params不要有任何注释信息' seems out of place in a user-facing description. The example is detailed but could be more concise. Overall, most content earns its place but could be more efficiently organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (2 parameters with 0% schema coverage, no output schema, no annotations), the description does an excellent job of providing context. It covers purpose, parameters with examples, return format, error handling, and includes a practical example. The main gap is the lack of explicit guidance on when to use this versus sibling tools. For a tool with this level of schema/annotation poverty, the description provides substantial compensatory value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (schema only shows 'method' and 'params' with no semantic details), the description fully compensates by providing comprehensive parameter information. It explains that 'params' is a list of dictionaries containing 'categoryName' (with examples like 'OST_Views', 'OST_Walls', '门') and 'isInstance' (True for instances, False for types). It also provides context about BuiltInCategory vs Category.Name usage and view-related filtering guidance. The description adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '在Revit中按类别查找元素,返回匹配的元素信息列表' (find elements by category in Revit and return matching element information list). It specifies the verb '查找' (find) and resource '元素' (elements) with the constraint '按类别' (by category). However, it doesn't explicitly differentiate from sibling tools like 'get_selected_elements' or 'show_elements' that also retrieve element information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some implied usage guidance: '和视图相关的请使用OST_Views类别作为categoryName参数' (for view-related elements, use OST_Views category as categoryName parameter). It also mentions '可指定查找实例或类型元素' (can specify to find instance or type elements). However, it doesn't explicitly state when to use this tool versus alternatives like 'get_selected_elements' or 'show_elements', nor does it provide clear exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commandsA
获取所有功能商店里的功能,每个功能包含名称、描述和提示信息,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
获取Revit插件中所有可用功能的完整列表
返回每个功能的名称、描述和提示信息
无需额外参数,直接获取所有功能
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"GetCommands"
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "name": "功能名称", "description": "功能描述", "tooltip": "功能提示" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: # 获取所有功能 response = get_commands(ctx)
# 输出示例
{
"jsonrpc": "2.0",
"result": [
{
"name": "创建墙",
"description": "创建基本墙元素",
"tooltip": "点击创建标准墙"
},
{
"name": "创建门",
"description": "在墙上创建门",
"tooltip": "选择墙后点击创建门"
},
...
],
"id": 1
}
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | GetCommands |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it follows JSON-RPC 2.0 specification, has '完善的错误处理机制' (complete error handling mechanism), returns structured success/error responses, and operates without additional parameters. It doesn't mention rate limits, authentication needs, or performance characteristics, but covers core operational behavior adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose but includes extensive sections (特性, 参数, 返回, 示例) that add value but create length. Some information like the JSON-RPC specification mention appears twice. The structure is logical but could be more streamlined, with the example being particularly detailed for a tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, 0% schema description coverage, and no output schema, the description provides substantial context: clear purpose, parameter semantics, detailed return structure with both success and error cases, and a comprehensive example. It doesn't explain the 'ctx' parameter or how errors manifest beyond the JSON structure, but covers most essential aspects given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for its single parameter 'method', but the description fully compensates by explaining that 'method (str): JSON-RPC方法名,默认为"GetCommands"' (JSON-RPC method name, defaults to "GetCommands"). It also clarifies that 'mcp_tool使用时params不要有任何注释信息' (when using mcp_tool, params should not have any comment information), adding important usage context beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool '获取所有功能商店里的功能' (gets all functions in the function store) and specifies it returns name, description, and tooltip information. It distinguishes itself from siblings by being a retrieval tool rather than a creation/deletion/update tool, though it doesn't explicitly differentiate from other 'get_' tools like 'get_locations' or 'get_selected_elements'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through '无需额外参数,直接获取所有功能' (no additional parameters needed, directly gets all functions), suggesting this is for comprehensive listing. However, it doesn't explicitly state when to use this versus alternatives like 'execute_commands' or 'call_func', nor does it mention prerequisites or exclusions beyond the JSON-RPC context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_locationsA
获取Revit元素的位置信息,支持点和曲线元素,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量查询多个元素的位置
自动处理单位转换(英尺转毫米)
支持点位置和曲线位置(直线和圆弧)
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"GetLocations" params (List[Dict]): 查询参数列表,每个字典包含: - elementId (Union[str, int]): 要查询的元素ID,优先使用str类型Id
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": { "elementId1": [ { "X": float, # X坐标(毫米) "Y": float, # Y坐标(毫米) "Z": float # Z坐标(毫米) }, ... ], ... }, "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
错误代码: -32600: 无效请求 -32602: 无效参数(元素不存在等) -32603: 内部错误 -32700: 解析错误
示例: # 查询多个元素的位置 response = get_location(ctx, params=[ {"elementId": 123456}, {"elementId": "789012"} ])
# 输出示例(XYZ元素)
{
"jsonrpc": "2.0",
"result": {
"123456": [
{"X": 1000.0, "Y": 2000.0, "Z": 0.0}
]
},
"id": 1
}
# 输出示例(Line元素)
{
"jsonrpc": "2.0",
"result": {
"789012": [
{"X": 0.0, "Y": 0.0, "Z": 0.0},
{"X": 5000.0, "Y": 0.0, "Z": 0.0}
]
},
"id": 1
}
# 输出示例(Arc元素)
{
"jsonrpc": "2.0",
"result": {
"789012": [
{"X": 0.0, "Y": 0.0, "Z": 0.0},
{"X": 5000.0, "Y": 0.0, "Z": 0.0}
{"X": 2500.0, "Y": 1200, "Z": 0.0}
]
},
"id": 1
}
用途:找到定位后可用于创建门窗这种带有主体的族,族插入点就可以通过这个计算出来| Name | Required | Description | Default |
|---|---|---|---|
| method | No | GetLocations | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does an excellent job disclosing behavioral traits. It describes: batch query capability ('支持批量查询多个元素的位置'), automatic unit conversion ('自动处理单位转换(英尺转毫米)'), support for different element types ('支持点位置和曲线位置(直线和圆弧)'), error handling ('完善的错误处理机制'), and JSON-RPC 2.0 compliance. It also provides detailed error codes and response structures, giving the agent comprehensive behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is comprehensive but lengthy and not optimally structured. While it contains valuable information, it mixes implementation details ('mcp_tool使用时params不要有任何注释信息'), technical specifications, examples, and usage guidance without clear sectioning. The information is useful but could be more efficiently organized and front-loaded with the core purpose and key parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool (JSON-RPC interface, batch processing, unit conversion, multiple element types) and the absence of both annotations and output schema, the description provides exceptional completeness. It covers purpose, parameters, return values, error handling, examples, and even practical applications. The agent has all necessary context to understand and correctly invoke this tool despite the lack of structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 2 parameters, the description fully compensates by providing detailed parameter semantics. It explains: 'ctx (Context): FastMCP上下文对象', 'method (str): JSON-RPC方法名,默认为"GetLocations"', and most importantly, details the complex 'params' parameter structure with 'elementId' field requirements and type preferences. The description adds substantial meaning beyond what the bare schema provides, including examples of parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '获取Revit元素的位置信息,支持点和曲线元素' (Get location information for Revit elements, supporting point and curve elements). It specifies the resource (Revit elements) and action (get location information), and distinguishes from siblings like 'find_elements' or 'get_view_data' by focusing specifically on location data extraction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context at the end ('用途:找到定位后可用于创建门窗这种带有主体的族,族插入点就可以通过这个计算出来' - Purpose: After finding locations, it can be used to create families with hosts like doors/windows, family insertion points can be calculated from this). However, it doesn't explicitly state when to use this tool versus alternatives like 'find_elements' or 'get_selected_elements', nor does it provide clear exclusion criteria or prerequisites for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selected_elementsA
获取当前Revit UI中选择的元素,遵循JSON-RPC 2.0规范。
特性:
获取当前用户在Revit界面中选择的所有元素
返回元素的完整信息,包括ID、类别和名称
无需额外参数,直接反映当前UI状态
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"GetSelectedElements"
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "元素ID", "name": "元素名称", "familyName": "类别名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: # 获取当前选择的元素 response = get_selected_elements(ctx)
# 输出示例
{
"jsonrpc":"2.0","id":"a39934f6-0ee9-4319-b820-1eba95a82c51",
"result":
[
{"elementId":"355","familyName":"标高","name":"标高 1"},
{"elementId":"2607","familyName":"标高","name":"标高 2"},
{"elementId":"5855","familyName":"标高","name":"T.O. Fnd. 墙"}
],
"error":[]
}
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | GetSelectedElements |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well. It discloses key behavioral traits: '无需额外参数,直接反映当前UI状态' (no additional parameters needed, directly reflects current UI state), '完善的错误处理机制' (comprehensive error handling), and details about the JSON-RPC 2.0 response format including success/error structures. It also mentions the tool follows JSON-RPC 2.0 specification. The description adds substantial value beyond what would be in basic annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized but not optimally structured. It front-loads the purpose but includes extensive technical details (JSON-RPC format, full response structures, example) that could be streamlined. The '特性' (features) section is useful, but the detailed return format explanation and lengthy example add bulk. Every sentence earns its place, but the organization could be more efficient for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (read operation with JSON-RPC protocol), no annotations, no output schema, and 0% schema coverage, the description provides good completeness. It covers purpose, behavior, parameters, return format, and includes an example. The main gap is lack of explicit sibling differentiation, but otherwise it gives the agent sufficient information to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage with 1 parameter (method). The description compensates by explaining: '无需额外参数' (no additional parameters needed) and that 'method' defaults to 'GetSelectedElements'. It clarifies that parameters are minimal and primarily for JSON-RPC protocol compliance rather than functional input. For a tool with effectively 0 functional parameters, this provides good semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '获取当前Revit UI中选择的元素' (get currently selected elements in Revit UI). It specifies the exact resource (selected elements) and verb (get), and distinguishes from siblings like 'find_elements' (search) or 'show_elements' (display). The description is specific and unambiguous about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: '获取当前用户在Revit界面中选择的所有元素' (get all elements currently selected by the user in the Revit interface). It implies this is for real-time UI state reflection rather than searching or filtering. However, it doesn't explicitly state when NOT to use it or name specific alternatives among siblings, though the context makes the use case evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_view_dataA
读取当前视图中所有信息,包括文本和图形实体数据,遵循JSON-RPC 2.0规范。
特性:
提取所有文本内容及其位置信息
提取所有图形对象(线、弧、圆等)的几何信息
按图层组织返回的数据
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"GetViewData" params (List[dict], optional): 可选参数,默认为None
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "name": "图层名称", "type": "Text", "text": "文本内容", "point": {"X": x值, "Y": y值, "Z": z值} }, { "name": "图层名称", "type": "Line", "startPoint": {"X": x1, "Y": y1, "Z": z1}, "endPoint": {"X": x2, "Y": y2, "Z": z2} }, { "name": "图层名称", "type": "Arc", "startAngle": 起始角度, "endAngle": 结束角度, "centerPoint": {"X": x, "Y": y, "Z": z}, "radius": 半径值 }, { "name": "图层名称", "type": "Circle", "centerPoint": {"X": x, "Y": y, "Z": z}, "radius": 半径值 }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
错误代码: -32600: 无效请求 -32603: 内部错误(导出或解析时) -32700: 解析错误
示例: # 获取当前视图所有图形数据 response = get_view_data(ctx)
# 处理文本数据
texts = [item for item in response.get("result", []) if item.get("type") == "Text"]
# 处理线段数据
lines = [item for item in response.get("result", []) if item.get("type") == "Line"]
# 处理圆弧数据
arcs = [item for item in response.get("result", []) if item.get("type") == "Arc"]
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | GetViewData | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: it's a read operation (提取/extracts data), organizes data by layers, includes error handling with specific codes, and follows JSON-RPC 2.0规范. However, it doesn't mention performance aspects like rate limits, data size limits, or whether it requires specific permissions. The error codes add valuable context beyond basic failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (特性, 参数, 返回, 错误代码, 示例), but it's overly verbose. The detailed return structure (with multiple example objects) and extensive example code could be condensed, as they repeat information. The core purpose is clear upfront, but later sections include redundant details that don't all earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 0% schema coverage, and no output schema, the description does a good job compensating. It fully explains parameters, return format (with success/failure structures), error codes, and provides usage examples. However, it lacks context about when this tool is appropriate versus siblings, and doesn't cover edge cases like empty views or large data sets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It documents all 2 parameters: 'method' (JSON-RPC method name, defaults to 'GetViewData') and 'params' (optional list of dicts, defaults to None). It explains their roles in the JSON-RPC context, which the schema alone doesn't provide. However, it doesn't detail what 'params' might contain or when to use it, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '读取当前视图中所有信息,包括文本和图形实体数据' (reads all information from the current view, including text and graphic entity data). It specifies the verb (读取/read), resource (当前视图/current view), and scope (所有信息/all information). This distinguishes it from siblings like 'get_selected_elements' (which gets only selected elements) or 'find_elements' (which searches with criteria).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active view), exclusions (e.g., not for editing), or comparisons to sibling tools like 'get_selected_elements' or 'find_elements'. The example shows basic usage but lacks contextual decision-making advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_dwg_and_activate_viewB
链接本地 DWG 图纸并激活指定视图,遵循JSON-RPC 2.0规范。
特性:
支持链接本地 DWG 图纸到当前项目
支持激活指定视图
自动验证参数有效性
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"LinkDWGAndActivateView" params (List[Dict]): 参数列表,每个字典包含: - filePath (str): 本地 DWG 图纸路径 - viewName (str): 要激活的视图名称
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "filePath": "链接的文件路径", "viewId": "视图ID", "viewName": "视图名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: response = link_and_activate_view(ctx, params=[ {"filePath": "C:\Projects\SampleDrawing.dwg", "viewName": "Level 1"} ])
# 输出示例
{
"jsonrpc": "2.0",
"result": [
{
"filePath": "C:\Projects\SampleDrawing.dwg",
"viewId": 123456,
"viewName": "Level 1"
}
],
"id": 1
}
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | LinkDWGAndActivateView | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It adds some useful context: mentions JSON-RPC 2.0 compliance, automatic parameter validation, and error handling mechanisms. However, it doesn't disclose important behavioral traits like whether this is a read-only or destructive operation, what permissions are required, or any rate limits. The description compensates somewhat but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with sections (特性, 参数, 返回, 示例) but is overly verbose. It includes implementation details like JSON-RPC response structures and full example code that may not be necessary for an AI agent. The core purpose could be communicated more efficiently without sacrificing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 0% schema coverage, and no output schema, the description provides moderate completeness. It documents parameters and return values in detail, which is good. However, for a tool that appears to perform both linking and activation operations (potentially complex mutations), it should provide more context about side effects, prerequisites, and error conditions to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It provides detailed parameter documentation: explains that 'ctx' is a FastMCP context object, 'method' defaults to 'LinkDWGAndActivateView', and 'params' contains dictionaries with 'filePath' and 'viewName'. This adds substantial meaning beyond the bare schema. However, it doesn't fully document all parameter constraints or formats (e.g., what constitutes a valid filePath).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '链接本地 DWG 图纸并激活指定视图' (link local DWG drawings and activate specified views). It specifies both the action (link and activate) and the resource (DWG drawings and views). However, it doesn't explicitly differentiate from sibling tools like 'active_view' or 'create_floor_plan_views', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. While it mentions JSON-RPC 2.0 compliance and lists features like automatic parameter validation and error handling, it doesn't specify scenarios where this tool is appropriate or when other tools (like 'active_view' for just activating views) should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_elementsA
移动Revit元素,支持批量操作,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量移动多个Revit元素
自动处理单位转换(毫米转英尺)
返回移动后的元素详细信息(使用ElementModelRequest格式)
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"MoveElements" params (List[Dict]): 移动参数列表,每个字典包含: - elementId (str): 要移动的元素ID - x (float): X方向移动距离(毫米) - y (float): Y方向移动距离(毫米) - z (float): Z方向移动距离(毫米)
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "移动后的元素ID", "name": "元素名称", "familyName": "族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: response = move_elements(ctx, params=[ {"elementId": "123456", "x": 100, "y": 200, "z": 0}, {"elementId": "789012", "x": -50, "y": 0, "z": 300} ])
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | MoveElements | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by describing key behaviors: batch operation support, automatic unit conversion (millimeters to feet), return format details (ElementModelRequest), and error handling mechanisms. However, it doesn't mention potential side effects (e.g., whether movement affects element relationships or properties), performance considerations for large batches, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (特性, 参数, 返回, 示例), but it includes extraneous information. The note about 'mcp_tool使用时params不要有任何注释信息' is confusing and doesn't add value for tool selection. The JSON-RPC 2.0 compliance mention is repeated, and the example could be more concise. However, key information is front-loaded, and most sentences earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a mutation tool with batch operations, unit conversion, and structured returns), no annotations, and no output schema, the description does a good job. It explains parameters thoroughly, describes return formats for both success and failure cases, and provides an example. The main gap is lack of sibling tool differentiation and minimal usage context, but it's largely complete for understanding the tool's operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate. It does this excellently by detailing both parameters: 'method' (JSON-RPC method name, defaulting to 'MoveElements') and 'params' (a list of dictionaries with specific fields: elementId, x, y, z). It explains units (millimeters for distances), structure, and provides a clear example. This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('移动' meaning 'move') and resource ('Revit元素' meaning 'Revit elements'), distinguishing it from siblings like 'delete_elements', 'update_elements', or 'parameter_elements'. It explicitly mentions batch operation support, which adds specificity beyond just moving elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. While it mentions batch operations and unit conversion, it doesn't specify prerequisites (e.g., needing valid element IDs), exclusions (e.g., not for non-geometric elements), or when to choose other tools like 'update_elements' for different modifications. The only contextual note is about JSON-RPC 2.0 compliance, which is technical rather than usage-oriented.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parameter_elementsB
获取Revit元素的参数信息,支持批量查询和特定参数查询,遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量查询多个元素的参数
可查询特定参数或元素所有参数
返回参数哈希码、名称和值的完整信息
完善的错误处理机制
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"ParameterElements" params (List[Dict]): 查询参数列表,每个字典包含: - elementId (Union[int, str]): 要查询的元素ID - parameterName (str, optional): 要查询的特定参数名称
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": { "elementId1": [ { "hashCode": int, "parameterName": str, "parameterValue": str, } ], ... }, "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": int, "message": str, "data": any }, "id": request_id }
示例: # 查询多个元素的参数 response = parameter_elements(ctx, params=[ {"elementId": 212792, "parameterName": "注释"}, # 获取特定参数 {"elementId": 212781} # 获取所有参数 ])
# 输出示例
{
"jsonrpc": "2.0",
"result": {
"212792": [
{
"hashCode": 12345,
"parameterName": "注释",
"parameterValue": "示例注释",
}
],
"212781": [
{
"hashCode": 23456,
"parameterName": "长度",
"parameterValue": "5000",
},
...
]
},
"id": 1
}
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | ParameterElements | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context: it mentions JSON-RPC 2.0 compliance, batch querying capabilities, error handling, and that it returns hash codes, names, and values. However, it doesn't cover important behavioral aspects like rate limits, authentication needs, whether it's read-only or destructive, or performance characteristics. The description provides some behavioral insight but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (特性, 参数, 返回, 示例) but is overly verbose. It includes implementation details like 'mcp_tool使用时params不要有任何注释信息' (when using mcp_tool, params should not have any comment information) and JSON-RPC formatting specifics that aren't essential for tool selection. The example is detailed but could be more concise. Some sentences don't earn their place for an AI agent's decision-making.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with 0% schema coverage and no output schema, the description does a good job compensating. It explains parameter semantics, provides a detailed return structure with success/error cases, and includes a comprehensive example. However, it lacks context on when to use this tool (guidelines) and some behavioral aspects (transparency), which slightly reduces completeness for a query tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must fully compensate. It does this effectively: it explains that 'params' is a list of dictionaries containing 'elementId' and optional 'parameterName', and provides clear examples. It also clarifies that 'method' defaults to 'ParameterElements'. This adds substantial meaning beyond the bare schema, though it could briefly explain the 'ctx' parameter's role as a FastMCP context object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '获取Revit元素的参数信息,支持批量查询和特定参数查询' (Get parameter information for Revit elements, supporting batch queries and specific parameter queries). It specifies the verb (获取/query), resource (Revit元素参数/Revit element parameters), and scope (批量/batch, 特定/specific). However, it doesn't explicitly differentiate from sibling tools like 'find_elements' or 'get_view_data', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. While it mentions batch querying and specific parameter queries, it doesn't explain when to choose this over sibling tools like 'find_elements' (which might locate elements) or 'get_view_data' (which might get view-specific data). There's no mention of prerequisites, constraints, or typical use cases beyond the basic functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_elementsA
在Revit视图中高亮显示指定元素,支持批量操作并遵循JSON-RPC 2.0规范。 mcp_tool使用时params不要有任何注释信息
特性:
支持批量显示多个元素
自动处理整数和字符串格式的元素ID
元素自动缩放至视图中心并高亮显示
严格的参数验证和错误处理
完全匹配服务器端实现逻辑
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"ShowElements" params (List[Dict[str, Union[int, str]]]): 元素参数列表,每个字典必须包含: - elementId (Union[int, str]): 要显示的元素ID
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [成功显示的元素ID列表], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": 错误代码, "message": 错误描述, "data": 错误详情 }, "id": request_id }
错误代码: -32600 (Invalid Request): 参数验证失败 -32602 (Invalid Params): 无效元素ID或元素不存在 -32603 (Internal Error): 内部处理错误 -32700 (Parse Error): 参数解析错误
示例: >>> # 显示多个元素 >>> response = show_elements(ctx, params=[ ... {"elementId": 212781}, ... {"elementId": "212792"} ... ]) >>> print(response) {"jsonrpc":"2.0","result":[212781,212792],"id":1}
视图操作: 成功调用后,元素将在当前视图中: 1. 自动缩放至视图中心 2. 高亮显示 3. 被添加到当前选择集
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | ShowElements | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does an excellent job. It discloses multiple behavioral traits: batch operation support, automatic handling of ID formats, automatic zooming to center, highlighting, adding to selection set, strict parameter validation, error handling, and JSON-RPC 2.0 compliance. This goes well beyond basic functionality disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (特性, 参数, 返回, 错误代码, 示例, 视图操作) and front-loads the core purpose. Some sections could be more concise (e.g., the JSON-RPC format details are quite verbose), but overall it's efficiently organized with each section earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and 0% schema description coverage, the description provides exceptional completeness. It covers purpose, usage, parameters, return format, error codes, examples, and post-execution visual effects. The only minor gap is lack of explicit prerequisites, but given the context, this is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 2 parameters, the description fully compensates. It explains both parameters: 'method' (JSON-RPC method name, default 'ShowElements') and 'params' (list of dictionaries with elementId). It provides detailed structure requirements, data types, and examples. This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '在Revit视图中高亮显示指定元素' (highlight specified elements in Revit view). It specifies the verb (highlight/display) and resource (elements in Revit view), and distinguishes from siblings like 'find_elements' (search) or 'get_selected_elements' (retrieve).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: for highlighting elements in Revit views, supporting batch operations. It doesn't explicitly state when NOT to use it or name alternatives, but the context is sufficiently clear given the sibling tools are mostly creation/update/retrieval tools rather than visualization tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_elementsA
批量更新Revit元素参数值,遵循JSON-RPC 2.0规范,支持事务处理。 mcp_tool使用时params不要有任何注释信息
特性:
支持混合格式元素ID(整数/字符串)
自动参数值类型转换
详细的错误报告和元素级状态跟踪
严格遵循JSON-RPC 2.0规范
参数: ctx (Context): FastMCP上下文对象 method (str): JSON-RPC方法名,默认为"UpdateElements" params (List[Dict[str, Union[str, int]]]): 更新参数列表,每个字典必须包含: - elementId (Union[str, int]): 要更新的元素ID - parameterName (str): 参数名称(区分大小写) - parameterValue (str): 参数新值
返回: dict: JSON-RPC 2.0格式的响应,结构为: 成功时: { "jsonrpc": "2.0", "result": [ { "elementId": "元素ID", "name": "元素名称", "familyName": "族名称" }, ... ], "id": request_id } 失败时: { "jsonrpc": "2.0", "error": { "code": 错误代码, "message": 错误描述, "data": 错误详情 }, "id": request_id }
错误代码: -32600 (Invalid Request): 参数验证失败 -32602 (Invalid Params): 无效参数(元素不存在/参数不存在等) -32603 (Internal Error): 内部处理错误 -32700 (Parse Error): 参数解析错误
示例: > # 批量更新元素参数 > response = update_elements(ctx, params=[ ... {"elementId": 123456, "parameterName": "Comments", "parameterValue": "Test"}, ... {"elementId": "789012", "parameterName": "Height", "parameterValue": "3000"} ... ]) > print(response) { "jsonrpc": "2.0", "result": [ {"elementId": "123456", "name": "基本墙", "familyName": "基本墙"}, {"elementId": "789012", "name": "单扇门", "familyName": "M_单扇门"} ], "id": 1 }
# 错误情况示例
> response = update_elements(ctx, params=[
... {"elementId":112,"parameterName":"InvalidParam","parameterValue":"X"} ])
> print(response)
> {"jsonrpc":"2.0","error":{"code":-32602,"message":"参数无效","data":"参数'InvalidParam'不存在"},"id":1}事务说明: 所有更新操作在Revit事务组中执行,任一更新失败自动跳过。
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | UpdateElements | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It excels by detailing key behavioral traits: '支持事务处理' (supports transaction processing), '自动参数值类型转换' (automatic parameter value type conversion), '详细的错误报告和元素级状态跟踪' (detailed error reporting and element-level status tracking), '严格遵循JSON-RPC 2.0规范' (strictly follows JSON-RPC 2.0 specification), and '所有更新操作在Revit事务组中执行,任一更新失败自动跳过' (all update operations execute in Revit transaction group; any update failure is automatically skipped). This provides comprehensive insight into the tool's behavior beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections like '特性' (features), '参数' (parameters), '返回' (return), '错误代码' (error codes), '示例' (examples), and '事务说明' (transaction explanation). However, it is verbose at approximately 500 words, with some redundancy (e.g., repeating JSON-RPC 2.0 specification). The front-loading is moderate—core purpose is stated early, but details could be more streamlined. Every sentence adds value, but efficiency could be improved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (batch updates with transactions, JSON-RPC), no annotations, 0% schema coverage, and no output schema, the description provides exceptional completeness. It covers purpose, features, parameters with semantics, return format (including success/failure structures), error codes, examples, and transaction behavior. This compensates fully for the lack of structured data, making the tool understandable and actionable for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It does so thoroughly by explaining all parameters: 'ctx (Context): FastMCP上下文对象' (FastMCP context object), 'method (str): JSON-RPC方法名,默认为"UpdateElements"' (JSON-RPC method name, defaults to "UpdateElements"), and details for 'params' including required fields (elementId, parameterName, parameterValue) with types and constraints. This adds significant meaning beyond the minimal input schema, fully documenting the 2 parameters (context signals indicate 2 parameters, though description lists 3—ctx, method, params—but ctx is likely implicit).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '批量更新Revit元素参数值' (batch update Revit element parameter values). It specifies the verb '更新' (update) and resource 'Revit元素参数值' (Revit element parameter values), distinguishing it from sibling tools like delete_elements, move_elements, or parameter_elements. The title is null, so the description fully defines the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through '批量更新' (batch update) and '遵循JSON-RPC 2.0规范' (follows JSON-RPC 2.0 specification), suggesting it's for batch operations within a JSON-RPC framework. However, it lacks explicit guidance on when to use this tool versus alternatives like parameter_elements or move_elements, or any prerequisites. The '事务说明' (transaction explanation) section provides some operational context but not comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes targeting specific Revit elements or operations, such as create_walls, create_doors, and delete_elements. However, some overlap exists between call_func and execute_commands, which both handle function execution, and between find_elements and get_selected_elements for element retrieval, which could cause minor confusion.
Tool names follow a highly consistent verb_noun pattern throughout, such as create_walls, delete_elements, and get_locations. All tools use snake_case without deviation, making the naming predictable and easy to understand.
With 27 tools, the count is borderline high for a single server, though it covers a broad Revit domain. It feels heavy but not extreme, as it includes many element-specific creation tools and utilities that may be necessary for comprehensive BIM workflows.
The toolset provides strong coverage for Revit operations, including creation, deletion, querying, and updating of various elements like walls, doors, and views. Minor gaps exist, such as no dedicated tools for modifying existing elements beyond parameters (e.g., reshape walls) or advanced editing operations, but core workflows are well-supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Convert Revit files to XKT, IFC, or DWG and query BIM data via natural language.
Revit model integration via APS — elements, parameters, schedules, clashes, IFC export.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceAllows AI assistants to interact with Autodesk Revit through the MCP protocol, enabling the AI to create, modify, and delete elements in Revit projects.15911
- AlicenseAqualityDmaintenanceEnables 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.1391MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for Autodesk Revit (BIM) with 705+ API endpoints. Enables AI agents to create walls, place doors/windows, generate sheets, manage views, and produce construction documents via the Model Context Protocol. Uses named pipes for zero-crash Revit integration.22MIT
- AlicenseAqualityDmaintenanceEnables Large Language Models to access and manipulate Autodesk Revit models through a pyRevit-based bridge and the Model Context Protocol.20173MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ZedMoster/revit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server