3dsmax-mcp
Enables AI models to control Autodesk 3ds Max, providing capabilities for scene management, creating and manipulating geometric objects, configuring materials and lighting, setting keyframe animations, and executing custom MAXScript or Python scripts.
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., "@3dsmax-mcpCreate a 50cm sphere at the origin and give it a shiny red plastic material"
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.
📖 简介
3dsmax-mcp 是一个 MCP(Model Context Protocol)服务器,它在 AI 助手(如 Claude Desktop、Cursor、Windsurf 等)和 Autodesk 3ds Max 之间架起桥梁。
通过自然语言对话,你可以让 AI 直接操控 3ds Max —— 创建模型、设置材质、调整灯光、制作动画,甚至执行自定义脚本,无需手动编写任何代码。
工作原理
┌──────────────┐ MCP协议 ┌──────────────┐ TCP Socket ┌──────────────┐
│ MCP 客户端 │ ◄────────────► │ 3dsmax-mcp │ ◄──────────────► │ 3ds Max │
│ (Claude 等) │ stdio 通道 │ (MCP Server) │ 127.0.0.1 │ (监听脚本) │
└──────────────┘ └──────────────┘ :50007 └──────────────┘MCP 客户端(如 Claude Desktop)通过 MCP 协议与
3dsmax-mcp服务器通信3dsmax-mcp 将 AI 的指令转换为 Python 脚本
通过 TCP Socket(端口 50007)发送到 3ds Max 中的监听脚本执行
执行结果原路返回给 AI 助手
Related MCP server: Maya MCP Server
📋 系统要求
项目 | 要求 |
操作系统 | Windows(3ds Max 仅支持 Windows) |
Python | >= 3.10 |
3ds Max | 需支持 Python 3 脚本(推荐 2022 及以上版本) |
网络 | 3ds Max 与 MCP Server 需在同一台机器上运行 |
MCP 客户端 | Claude Desktop / Cursor / Windsurf / 或其他支持 MCP 的客户端 |
🚀 快速开始
整个安装只需 两步:配置 3ds Max 端的监听脚本,然后配置 MCP 客户端。
第一步:在 3ds Max 中启动监听
你需要让 3ds Max 运行一个 Socket 监听脚本,这样 MCP Server 才能与之通信。
方式 A:自动启动(推荐)
将项目中的 startup_mcp_listener.ms 文件复制到 3ds Max 的启动脚本目录:
C:\Users\<你的用户名>\AppData\Local\Autodesk\3dsMax\<版本号>\ENU\scripts\startup\💡 提示:放入该目录后,每次启动 3ds Max 会自动运行监听脚本,无需手动操作。
方式 B:手动启动
在 3ds Max 中执行以下任一操作:
菜单方式:
Scripting→Run Script→ 选择startup_mcp_listener.ms文件拖拽方式:将
startup_mcp_listener.ms直接拖拽到 3ds Max 视口中监听器方式:在 MAXScript Listener 中输入:
fileIn @"C:\你的路径\3dsMaxMCP\startup_mcp_listener.ms"✅ 启动成功后,MAXScript Listener 中会显示:
[3dsMaxMCP] MCP Socket Server 启动命令已发送
第二步:安装并配置 MCP 客户端
安装 3dsmax-mcp
提供以下三种安装方式:
通过 pip 安装(推荐):
pip install 3dsmax-mcp通过 uvx 运行(免安装):
uvx 3dsmax-mcp从源码安装(开发者):
git clone https://github.com/317431629/3dsMaxMCP.git
cd 3dsMaxMCP
pip install -e .配置 MCP 客户端
编辑配置文件(通常位于 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"3dsmax-mcp": {
"command": "uvx",
"args": ["3dsmax-mcp"]
}
}
}如果使用 pip 安装:
{
"mcpServers": {
"3dsmax-mcp": {
"command": "3dsmax-mcp"
}
}
}在 Cursor 的 Settings → MCP 中添加:
{
"mcpServers": {
"3dsmax-mcp": {
"command": "uvx",
"args": ["3dsmax-mcp"]
}
}
}或使用 pip 安装后:
{
"mcpServers": {
"3dsmax-mcp": {
"command": "3dsmax-mcp"
}
}
}如果你是从源码克隆的项目:
{
"mcpServers": {
"3dsmax-mcp": {
"command": "python",
"args": ["-m", "max_mcp"],
"cwd": "C:/你的路径/3dsMaxMCP"
}
}
}第三步:开始使用 🎉
确保 3ds Max 已启动且监听脚本正在运行,然后在 MCP 客户端中用自然语言对话即可:
"在场景中创建一个球体,半径为 30"
"把 Box001 移动到坐标 (100, 0, 50)"
"给选中的对象创建一个红色金属材质"
"在第 0 帧和第 60 帧之间为球体做一个位移动画"
"保存当前场景到桌面"
🔧 工具参考
3dsmax-mcp 提供了 25 个工具,覆盖 3ds Max 的常用操作。以下是完整的工具列表和说明。
🎬 场景管理(Scene)
工具名 | 功能 | 关键参数 |
| 新建空白场景 | — |
| 打开场景文件 |
|
| 保存当前场景 |
|
| 获取场景信息(对象数、文件路径等) | — |
| 获取场景中所有对象的列表 | — |
| 导入外部文件到场景 |
|
| 导出场景到文件 |
|
📦 对象操作(Object)
工具名 | 功能 | 关键参数 |
| 创建几何体 |
|
| 删除对象 |
|
| 克隆对象 |
|
| 重命名对象 |
|
| 设置对象变换(位置/旋转/缩放) |
|
| 设置对象属性 |
|
| 获取对象的详细属性 |
|
| 选择对象 |
|
| 添加修改器 |
|
🎨 材质(Material)
工具名 | 功能 | 关键参数 |
| 创建材质 |
|
| 将材质分配给对象 |
|
💡 灯光(Light)
工具名 | 功能 | 关键参数 |
| 创建灯光 |
|
🎞️ 动画(Animation)
工具名 | 功能 | 关键参数 |
| 设置关键帧 |
|
| 设置动画时间范围 | 起始帧、结束帧 |
🔧 通用工具(Utils)
工具名 | 功能 | 关键参数 |
| 执行 MAXScript 代码 |
|
| 执行 Python 脚本 |
|
| 获取 3ds Max 版本信息 | — |
💡 使用示例
场景搭建
用户:帮我创建一个简单的桌子场景。桌面是一个扁平的 Box,四条腿也是 Box。
AI 会依次调用:
→ create_object(object_type="Box", name="TableTop", position="0,0,75", params='{"length":120,"width":80,"height":5}')
→ create_object(object_type="Box", name="Leg_FL", position="-50,-30,0", params='{"length":5,"width":5,"height":75}')
→ create_object(object_type="Box", name="Leg_FR", position="50,-30,0", params='{"length":5,"width":5,"height":75}')
→ create_object(object_type="Box", name="Leg_BL", position="-50,30,0", params='{"length":5,"width":5,"height":75}')
→ create_object(object_type="Box", name="Leg_BR", position="50,30,0", params='{"length":5,"width":5,"height":75}')材质与灯光
用户:给桌面创建一个木质感的棕色材质,然后在桌子上方添加一盏暖黄色的灯。
AI 会依次调用:
→ create_material(material_type="Standard", name="WoodMat", diffuse_color="139,90,43")
→ assign_material(object_name="TableTop", material_name="WoodMat")
→ create_light(light_type="Omni", name="TableLight", position="0,0,200", color="255,235,200", intensity="1.2")关键帧动画
用户:让球体从位置 (0,0,0) 在 60 帧内移动到 (100,0,50),同时旋转 360 度。
AI 会依次调用:
→ set_keyframe(object_name="Sphere001", frame="0", position="0,0,0", rotation="0,0,0")
→ set_keyframe(object_name="Sphere001", frame="60", position="100,0,50", rotation="0,0,360")
→ set_time_range(...) // 设置播放范围为 0-60执行自定义脚本
用户:把所有 Box 对象的线框颜色设为红色。
AI 会调用:
→ execute_maxscript(script="for obj in objects where classOf obj == Box do obj.wireColor = color 255 0 0")❗ 常见问题
连接问题
请依次检查:
3ds Max 是否正在运行? —— 必须先启动 3ds Max
监听脚本是否已执行? —— 检查 MAXScript Listener 中是否有
[3dsMaxMCP] MCP Socket Server 启动命令已发送的提示端口是否被占用? —— 默认使用端口
50007,确保没有其他程序占用防火墙设置 —— 某些安全软件可能阻止本地 Socket 通信,请添加例外
默认 Socket 超时时间为 60 秒。如果你的操作需要更长时间(如复杂渲染或大场景处理),可能会超时。建议:
将复杂操作拆分为多个简单步骤
避免在 MCP 工具中执行渲染等耗时操作
安装问题
uvx 是 uv 工具的一部分。安装方法:
# Windows (PowerShell)
irm https://astral.sh/uv/install.ps1 | iex
# 或通过 pip
pip install uv理论上支持所有内置 Python 3 的 3ds Max 版本(2022 及以上)。推荐使用 3ds Max 2024 及以上版本,Python 环境更稳定。
使用问题
当前版本默认连接 127.0.0.1:50007,仅支持单实例。如需多实例支持,需要修改监听端口配置。
支持!create_material 和 create_light 工具可以创建第三方插件提供的材质和灯光类型(如 VRayMtl、VRayLight),前提是 3ds Max 中已安装对应插件。对于更复杂的操作,可以使用 execute_maxscript 或 execute_python_script 工具直接执行自定义脚本。
🏗️ 项目结构
3dsMaxMCP/
├── max_mcp/ # Python 包主目录
│ ├── __init__.py # 包入口
│ ├── __main__.py # python -m max_mcp 入口
│ ├── server.py # MCP Server 核心实现
│ ├── OperationManager.py # 工具注册与管理
│ ├── log.py # 日志管理
│ ├── connector/ # 通信层
│ │ ├── max_connection.py # MCP Server → 3ds Max 的 TCP 客户端
│ │ └── max_server_listener.py # 3ds Max 端的 TCP 监听服务(在 Max 内运行)
│ ├── max_tools/ # 所有 MCP 工具脚本
│ │ ├── scene/ # 场景相关工具(7个)
│ │ ├── object/ # 对象操作工具(9个)
│ │ ├── material/ # 材质工具(2个)
│ │ ├── light/ # 灯光工具(1个)
│ │ ├── animation/ # 动画工具(2个)
│ │ └── utils/ # 通用工具(3个)
│ └── utils/ # 内部工具函数
├── startup_mcp_listener.ms # 3ds Max 启动脚本(MAXScript)
├── pyproject.toml # Python 包配置
├── LICENSE # MIT 许可证
└── README.md # 本文件📄 许可证
本项目采用 MIT License 开源许可。
Available Tools
24 toolsadd_modifierA
为 3ds Max 场景中的指定物体添加修改器(Modifier)。
该工具可以为场景中已存在的物体添加各种修改器,如 Bend、Twist、Taper、 TurboSmooth、Shell、UVW Map、Noise、Lattice、MeshSmooth 等。
支持的常见修改器类型(modifier_type 参数):
Bend: 弯曲修改器
Twist: 扭曲修改器
Taper: 锥化修改器
TurboSmooth: 涡轮平滑
MeshSmooth: 网格平滑
Shell: 壳修改器(给面片添加厚度)
Noise: 噪波修改器
Lattice: 晶格修改器
UVW_Map: UVW 贴图修改器(注意使用下划线代替空格)
Symmetry: 对称修改器
FFD_4x4x4: 自由变形修改器
Smooth: 平滑修改器
Relax: 松弛修改器
Push: 推力修改器
Stretch: 拉伸修改器
Squeeze: 挤压修改器
Ripple: 涟漪修改器
Wave: 波浪修改器
Skew: 倾斜修改器
Spherify: 球形化修改器
Edit_Poly: 编辑多边形修改器
Edit_Mesh: 编辑网格修改器 以及 3ds Max 中任何可用的修改器类名。
Args: object_name: 目标物体的名称(场景中已存在的对象)。 modifier_type: 修改器类型名称,如 "Bend"、"Twist"、"TurboSmooth" 等。 对于名称含空格的修改器,使用下划线代替空格,如 "UVW_Map"。 modifier_params: 修改器参数的 JSON 字符串,键为属性名,值为属性值。 例如: '{"angle": 90, "direction": 45}' 用于 Bend 修改器。 如果为空字符串则使用修改器默认参数。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - object_name (str): 物体名称。 - modifier_type (str): 添加的修改器类型。 - modifier_name (str): 修改器实例名称。 - applied_params (dict): 成功应用的参数。 - message (str): 操作描述信息。
示例调用 - 为物体添加弯曲修改器: add_modifier(object_name="Box001", modifier_type="Bend", modifier_params='{"angle": 90}')
示例调用 - 为物体添加涡轮平滑: add_modifier(object_name="Box001", modifier_type="TurboSmooth", modifier_params='{"iterations": 2}')
示例调用 - 为物体添加壳修改器(添加厚度): add_modifier(object_name="Plane001", modifier_type="Shell", modifier_params='{"innerAmount": 0, "outerAmount": 5}')
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| modifier_type | Yes | ||
| modifier_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 the tool's behavior: it adds modifiers to objects, supports a wide range of modifier types, handles parameter formatting (JSON string for modifier_params), and returns a structured result with success status and details. It doesn't mention error conditions, permissions, or side effects, but covers core operational behavior well.
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: purpose statement, modifier type examples, parameter explanations, return format, and usage examples. It's appropriately sized for a tool with 3 parameters and complex functionality. Some redundancy exists (e.g., listing many modifier types), but overall it's efficient and front-loaded with critical information.
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 (3 parameters, 0% schema coverage, no annotations, no output schema), the description is quite complete. It explains what the tool does, details all parameters with examples, describes the return structure, and provides multiple usage scenarios. It could improve by mentioning error cases or integration with sibling tools, but it adequately covers the tool's functionality 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?
The schema description coverage is 0%, so the description must fully compensate. It provides extensive parameter semantics: object_name is explained as '目标物体的名称(场景中已存在的对象)' (name of target object, existing in scene), modifier_type is detailed with a comprehensive list of examples and formatting rules (e.g., using underscores for spaces), and modifier_params is clearly defined as a JSON string with examples. This 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: '为 3ds Max 场景中的指定物体添加修改器(Modifier)' (adds modifiers to specified objects in 3ds Max scenes). It specifies the exact action ('添加' - add) and resource ('修改器' - modifiers), distinguishing it from sibling tools like create_object, delete_object, or set_object_property that handle different 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 implies usage by stating it works on '场景中已存在的物体' (existing objects in the scene), suggesting it should be used after object creation. However, it doesn't explicitly state when to use this tool versus alternatives like set_object_property or execute_maxscript for similar effects, nor does it mention prerequisites or exclusions beyond object existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_materialA
将材质赋予 3ds Max 场景中的指定物体。
该工具可以将已存在的材质赋予物体,支持通过材质名称或材质编辑器槽位索引来指定材质。
Args: object_name: 目标物体名称。支持通配符 "",如 "Box" 会赋予所有以 Box 开头的物体。 也支持用英文逗号分隔多个名称,如 "Box001,Sphere001"。 material_name: 材质名称。在场景的所有材质中查找匹配的材质。 与 slot_index 二选一,优先使用 material_name。 slot_index: 材质编辑器的槽位索引(1-24)。当 material_name 为空时使用此参数。 默认为 "0"(不使用槽位)。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - assigned (list): 成功赋予材质的物体列表。 - material_name (str): 使用的材质名称。 - message (str): 操作描述信息。
示例调用 - 按材质名称赋予: assign_material(object_name="Box001", material_name="RedMaterial")
示例调用 - 按槽位赋予: assign_material(object_name="Box001", slot_index="1")
示例调用 - 批量赋予: assign_material(object_name="Box*", material_name="WoodMaterial")
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| material_name | No | ||
| slot_index | No | 0 |
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 that the tool supports wildcard matching ('*') and comma-separated lists for object_name, explains the priority between material_name and slot_index, specifies the slot_index range (1-24) and default value ('0'), and describes the return format including success status and lists. It doesn't mention error conditions, performance characteristics, or permission requirements, but 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: purpose statement, parameter explanations, return format, and usage examples. Every sentence adds value. It could be slightly more concise by integrating the example calls more tightly with parameter explanations, but overall it's efficiently organized with no wasted text.
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 3-parameter mutation tool with no annotations and no output schema, the description provides comprehensive context. It explains the tool's purpose, parameter usage, return format, and includes multiple usage examples. The main gap is the lack of explicit error handling information or performance considerations, but given the complexity level and absence of structured metadata, it's quite 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?
With 0% schema description coverage, the description fully compensates by providing rich semantic information for all 3 parameters. It explains object_name supports wildcards and comma-separated lists, material_name searches all scene materials, slot_index uses material editor slots 1-24, and clarifies the priority relationship between material_name and slot_index. The description adds significant value 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 specific action ('将材质赋予' - assign material) and target resource ('3ds Max 场景中的指定物体' - specified objects in 3ds Max scene). It distinguishes from siblings like create_material (which creates rather than assigns) and set_object_property (which sets properties rather than materials). The verb+resource combination is precise and unambiguous.
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 about when to use this tool (to assign existing materials to objects) and distinguishes it from create_material (which creates new materials). It explains the mutual exclusivity between material_name and slot_index parameters. However, it doesn't explicitly state when NOT to use this tool or mention specific alternatives for different scenarios beyond the parameter guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_objectA
克隆 3ds Max 场景中的指定物体。
支持三种克隆模式:
Copy: 完全独立的副本(默认)。
Instance: 实例,与原对象共享修改器和参数。
Reference: 引用,可以在原对象基础上添加新修改器。
Args: object_name: 要克隆的源物体名称。 clone_type: 克隆类型,可选 "copy"、"instance"、"reference"。默认为 "copy"。 new_name: 克隆体的名称。如果为空,则使用 3ds Max 默认命名。 offset: 克隆体相对于原物体的偏移量,格式为 "x,y,z"。 默认为 "0,0,0"(与原物体重叠)。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - source_name (str): 源物体名称。 - clone_name (str): 克隆体名称。 - clone_type (str): 克隆类型。 - position (list): 克隆体位置 [x, y, z]。 - message (str): 操作描述信息。
示例调用 - 复制一个 Box: clone_object(object_name="Box001")
示例调用 - 实例化克隆并偏移: clone_object(object_name="Box001", clone_type="instance", offset="50,0,0")
示例调用 - 带名称的引用克隆: clone_object(object_name="Box001", clone_type="reference", new_name="Box001_Ref", offset="100,0,0")
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| clone_type | No | copy | |
| new_name | No | ||
| offset | No | 0,0,0 |
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 what the tool does (cloning with three modes), default behaviors (copy mode, default naming, zero offset), and the return format (dictionary with success flag, names, type, position, message). It doesn't mention permissions, rate limits, or error conditions, but covers core operational behavior well for a tool with no 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 well-structured with purpose statement, mode explanations, parameter details, return format, and examples. It's appropriately sized for a 4-parameter tool with behavioral complexity. Some minor redundancy exists (e.g., repeating '克隆' in examples), but overall it's front-loaded and each section adds 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 the tool's complexity (cloning with three modes), no annotations, 0% schema coverage, and no output schema, the description is complete. It covers purpose, usage, parameters, return values, and provides examples. The return format documentation compensates for the lack of output schema, making it self-sufficient for an agent 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?
Schema description coverage is 0%, so the description must fully compensate. It provides detailed semantics for all 4 parameters: object_name (source object to clone), clone_type (three modes with explanations), new_name (optional custom name), and offset (format 'x,y,z' with default). The descriptions add meaning beyond schema titles, explaining defaults, formats, and implications (e.g., empty new_name uses default naming).
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: '克隆 3ds Max 场景中的指定物体' (Clone specified objects in a 3ds Max scene). It specifies the verb '克隆' (clone) and resource '物体' (objects), and distinguishes from siblings like create_object, delete_object, or rename_object by focusing on duplication rather than creation, deletion, or renaming.
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: to clone objects in 3ds Max. It explains three clone modes (copy, instance, reference) with their differences, helping users choose based on needs. However, it doesn't explicitly state when NOT to use it or name alternatives among siblings (e.g., create_object for new objects vs. clone_object for duplicates).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lightA
在 3ds Max 场景中创建一个灯光对象。
支持的灯光类型(light_type 参数):
Omni: 泛光灯(点光源),向四周均匀照射(默认)。
TargetSpot: 目标聚光灯,带目标点的锥形光源。
FreeSpot: 自由聚光灯,无目标点的锥形光源。
TargetDirect: 目标平行光,平行方向光照。
FreeLight: 自由灯光。
Skylight: 天光,模拟天空环境光照。
mr_Sky_Portal: Mental Ray 天空门户(需要 MR 插件)。 以及 V-Ray、Arnold 等插件的灯光类型(如 VRayLight、aiAreaLight)。
Args: light_type: 灯光类型名称。默认为 "Omni"。 name: 灯光名称。如果为空则使用默认命名。 position: 灯光位置,格式为 "x,y,z"。默认为 "0,0,100"。 color: 灯光颜色,格式为 "r,g,b" (0-255)。默认为 "255,255,255"(白色)。 intensity: 灯光强度/倍增器,默认 "1.0"。 params: 灯光额外参数的 JSON 字符串。 例如: '{"castShadows": true, "hotspot": 30, "falloff": 60}' 用于聚光灯。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - name (str): 创建的灯光名称。 - light_type (str): 灯光类型。 - position (list): 位置 [x, y, z]。 - message (str): 操作描述信息。
示例调用 - 创建泛光灯: create_light(light_type="Omni", name="MainLight", position="0,0,200", color="255,245,230", intensity="1.5")
示例调用 - 创建聚光灯: create_light(light_type="FreeSpot", name="SpotLight01", position="100,0,150", params='{"hotspot": 30, "falloff": 60}')
示例调用 - 创建天光: create_light(light_type="Skylight", intensity="0.8")
| Name | Required | Description | Default |
|---|---|---|---|
| light_type | No | Omni | |
| name | No | ||
| position | No | 0,0,100 | |
| color | No | 255,255,255 | |
| intensity | No | 1.0 | |
| 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. It clearly indicates this is a creation/mutation operation ('创建' - create) and provides return value structure, but lacks important behavioral context like whether it requires specific scene states, what happens on failure, or if there are limitations on light counts. The examples help but don't fully cover behavioral traits.
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 (purpose, supported types, args, returns, examples) and every sentence adds value. It could be slightly more concise by integrating the examples more tightly, but overall it's efficiently organized with no wasted text.
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 6-parameter creation tool with no annotations and no output schema, the description provides excellent coverage of parameters and return values. It explains what the tool does, documents all parameters thoroughly, shows return structure, and provides multiple usage examples. The main gap is lack of behavioral context about scene requirements or limitations.
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, the description fully compensates by providing extensive parameter documentation. It explains each parameter's purpose, format, defaults, and provides specific examples for different light types. The light_type parameter gets particularly detailed treatment with descriptions of each supported type, going far beyond what the 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 specific action ('创建一个灯光对象' - create a light object) and resource ('在 3ds Max 场景中' - in a 3ds Max scene). It distinguishes itself from sibling tools like create_object or create_material by specifying it creates specifically light objects, not generic objects or materials.
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., must have a scene open), compare to similar tools like create_object, or indicate when other lighting methods might be preferable. Usage is implied through examples but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_materialA
在 3ds Max 中创建一个材质。
该工具可以创建各种类型的材质,并设置基本属性如颜色等。 创建的材质会被放入 3ds Max 的材质编辑器中。
支持的材质类型(material_type 参数):
Standard: 标准材质(默认),支持 Blinn/Phong/Metal 等着色器。
Physical: 物理材质(PBR),适合写实渲染。
VRayMtl: V-Ray 材质(需要安装 V-Ray 插件)。
Multi_Sub: 多维子材质(Multi/Sub-Object)。
Blend: 混合材质。 以及其他 3ds Max 中可用的材质类名。
Args: material_type: 材质类型名称,默认为 "Standard"。 name: 材质名称。如果为空字符串则使用默认命名。 diffuse_color: 漫反射颜色,格式为 "r,g,b"(0-255),如 "255,0,0" 为红色。 留空则使用默认颜色。 params: 材质额外参数的 JSON 字符串。 例如: '{"opacity": 50, "specularLevel": 80}' 用于 Standard 材质。 留空则使用默认值。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - name (str): 创建的材质名称。 - material_type (str): 材质类型。 - slot_index (int): 材质编辑器中的槽位索引。 - message (str): 操作描述信息。
示例调用 - 创建红色标准材质: create_material(material_type="Standard", name="RedMaterial", diffuse_color="255,0,0")
示例调用 - 创建物理材质: create_material(material_type="Physical", name="MetalMat", diffuse_color="180,180,180")
示例调用 - 创建带参数的标准材质: create_material(material_type="Standard", name="GlassMat", diffuse_color="200,220,255", params='{"opacity": 30, "specularLevel": 90}')
| Name | Required | Description | Default |
|---|---|---|---|
| material_type | No | Standard | |
| name | No | ||
| diffuse_color | No | ||
| 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 explaining that created materials are placed in the material editor, listing supported material types with their characteristics, and describing the return format. It doesn't mention permissions, rate limits, or error conditions, but provides substantial behavioral context for a creation 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?
Well-structured with purpose statement, behavioral details, parameter explanations, return format, and usage examples. Some redundancy exists (e.g., repeating parameter info in examples), but overall efficient with each section adding value. Could be slightly more front-loaded.
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 4-parameter creation tool with no annotations and no output schema, the description provides comprehensive context: purpose, behavioral details, full parameter semantics, return format, and multiple examples. It lacks only some edge cases (error conditions, dependencies like V-Ray plugin requirements beyond mentioning them).
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, the description fully compensates by providing detailed parameter explanations: material_type with examples and defaults, name behavior when empty, diffuse_color format with examples, and params as JSON string with examples. It 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 verb ('创建' - create) and resource ('材质' - material) in 3ds Max, specifying it creates various material types with basic properties. It distinguishes from siblings like 'create_object' or 'create_light' by focusing specifically on materials rather than objects or lights.
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 when creating materials in 3ds Max but doesn't explicitly state when to use this vs alternatives like 'assign_material' or 'set_object_property'. It provides context about material types but lacks explicit guidance on tool selection scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_objectA
在 3ds Max 场景中创建一个基础几何体对象。
支持的几何体类型(object_type 参数):
Box: 长方体,参数: length, width, height, lengthsegs, widthsegs, heightsegs
Sphere: 球体,参数: radius, segments, smooth
Cylinder: 圆柱体,参数: radius, height, heightsegs, capsegs, sides, smooth
Plane: 平面,参数: length, width, lengthsegs, widthsegs
Torus: 圆环体,参数: radius1, radius2, segments, sides, smooth
Cone: 圆锥体,参数: radius1, radius2, height, heightsegs, capsegs, sides, smooth
Tube: 管状体,参数: radius1, radius2, height, heightsegs, capsegs, sides, smooth
Pyramid: 四棱锥,参数: width, depth, height
GeoSphere: 几何球体,参数: radius, segs
Teapot: 茶壶,参数: radius, segments, smooth
Hedra: 多面体,参数: radius, family, p, q
Torus_Knot: 圆环结,参数: radius, radius2, p, q, segments, sides 以及 3ds Max 中任何可用的基础创建类名。
Args: object_type: 几何体类型名称,如 "Box"、"Sphere"、"Cylinder" 等。 对于名称含空格的类型,使用下划线代替空格,如 "Torus_Knot"。 name: 对象名称。如果为空字符串则使用 3ds Max 的默认命名。 position: 对象的世界坐标位置,格式为 "x,y,z",如 "0,0,0" 或 "100,50,0"。 默认值为 "0,0,0"(世界原点)。 params: 对象创建参数的 JSON 字符串,键为属性名,值为属性值。 例如: '{"radius": 30, "segments": 32}' 用于创建球体。 例如: '{"length": 50, "width": 40, "height": 30}' 用于创建长方体。 如果为空字符串则使用默认参数。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - name (str): 创建的对象名称。 - object_type (str): 对象类型。 - position (list): 对象的位置坐标 [x, y, z]。 - applied_params (dict): 成功应用的参数。 - message (str): 操作描述信息。
示例调用 - 创建一个默认球体: create_object(object_type="Sphere")
示例调用 - 在指定位置创建带参数的长方体: create_object(object_type="Box", name="MyBox", position="100,0,0", params='{"length": 50, "width": 40, "height": 30}')
示例调用 - 创建圆柱体: create_object(object_type="Cylinder", name="MyCylinder", position="0,50,0", params='{"radius": 20, "height": 60, "sides": 24}')
示例调用 - 创建平面: create_object(object_type="Plane", params='{"length": 200, "width": 200, "lengthsegs": 10, "widthsegs": 10}')
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | Yes | ||
| name | No | ||
| position | No | 0,0,0 | |
| 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 what the tool does (creates objects), includes detailed parameter information, return value structure, and multiple usage examples. However, it doesn't mention potential side effects, error handling, or performance considerations that would be helpful 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 comprehensive but lengthy and not optimally structured. While all information is valuable, it could be more front-loaded with the core purpose followed by details. The multiple examples at the end are helpful but contribute to length. Some sections 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 mutation tool with no annotations and no output schema, the description provides substantial context: clear purpose, detailed parameters, return structure, and multiple examples. It covers most needs for using the tool effectively. The main gap is lack of error handling or side effect information, which prevents a perfect score.
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, the description fully compensates by providing extensive parameter semantics. It explains all 4 parameters in detail: object_type with supported values and naming conventions, name with default behavior, position with format examples, and params with JSON format and examples. This 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: '在 3ds Max 场景中创建一个基础几何体对象' (creates a basic geometric object in a 3ds Max scene). It specifies the verb '创建' (create) and the resource '基础几何体对象' (basic geometric object), distinguishing it from sibling tools like create_light or create_material that create different resource types.
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 by listing supported geometry types and providing examples, but it doesn't explicitly state when to use this tool versus alternatives like clone_object or set_object_property. No guidance is given on prerequisites, error conditions, or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_objectA
删除 3ds Max 场景中的指定物体。
该工具可以删除场景中指定名称的对象。支持通配符 "*" 进行批量删除。
Args: object_name: 要删除的物体名称。支持以下格式: - 精确名称:如 "Box001",删除指定物体。 - 通配符:如 "Box*",删除所有以 "Box" 开头的物体。 - 多个名称:用英文逗号分隔,如 "Box001,Sphere001,Cylinder001"。 - 特殊值 "*":删除场景中所有对象(谨慎使用!)。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - deleted (list): 被删除的对象名称列表。 - deleted_count (int): 被删除的对象数量。 - not_found (list): 未找到的对象名称列表(仅精确匹配时)。 - message (str): 操作描述信息。
示例调用 - 删除单个物体: delete_object(object_name="Box001")
示例调用 - 批量删除(通配符): delete_object(object_name="Box*")
示例调用 - 删除多个指定物体: delete_object(object_name="Box001,Sphere001,Cylinder001")
示例调用 - 删除所有物体: delete_object(object_name="*")
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
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: 1) Clearly stating this is a destructive operation (implied by '删除'), 2) Explaining the return format in detail, 3) Warning about the dangerous '*' option. It doesn't mention authentication needs or rate limits, but for a local 3ds Max tool this is reasonable.
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 and front-loaded with the core purpose first. The Args and Returns sections are well-structured. The multiple example calls are helpful but slightly repetitive; they could potentially be condensed 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 tool with no annotations and no output schema, the description provides excellent completeness: clear purpose, parameter semantics, return format details, usage examples, and appropriate warnings. It gives the agent everything needed to understand and invoke this tool safely and 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 for the single parameter, the description fully compensates by providing extensive semantic information about 'object_name': exact names, wildcard patterns, comma-separated lists, and the special '*' value. It includes syntax examples and practical usage guidance 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 specific action ('删除' - delete) and target resource ('3ds Max 场景中的指定物体' - specified objects in 3ds Max scene). It distinguishes from siblings like 'rename_object', 'clone_object', and 'select_objects' by focusing on permanent removal rather than modification, duplication, or selection.
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 about when to use this tool (to delete objects by name with wildcard support) and includes a caution about using '*' to delete all objects. However, it doesn't explicitly state when NOT to use it versus alternatives like 'select_objects' for temporary operations or 'rename_object' for identification changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_maxscriptA
在 3ds Max 中执行一段 MAXScript 代码并返回结果。
该工具允许你发送 MAXScript 代码到 3ds Max 中执行。 适用于某些用 MAXScript 更直接或更方便的操作场景。
使用说明:
脚本中最后一个表达式的值将作为返回结果。
如果需要返回复杂结构,建议将结果构造为字符串或在脚本中使用 print。
MAXScript 文档参考: https://help.autodesk.com/view/3DSMAX/2025/ENU/?guid=GUID-MAXScript-Index
Args: script: 要执行的 MAXScript 代码字符串。
Returns: dict: 操作结果。 - success (bool): 是否成功执行。 - result (str): MAXScript 执行结果的字符串表示。 - message (str): 操作描述信息。
示例脚本 - 获取选中对象数量: execute_maxscript(script="selection.count")
示例脚本 - 选中所有 Box 对象: execute_maxscript(script="select (for obj in objects where classOf obj == Box collect obj)")
示例脚本 - 重置场景: execute_maxscript(script="resetMaxFile #noPrompt")
示例脚本 - 设置渲染分辨率: execute_maxscript(script="renderWidth = 1920; renderHeight = 1080")
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes |
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: that the last expression's value is returned, recommendations for returning complex structures (construct as string or use print), and provides a documentation reference. It doesn't mention error handling, execution time limits, or security implications, but covers the essential execution 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 well-structured with clear sections: purpose statement, usage guidance, execution behavior notes, parameter explanation, return format, and multiple examples. While comprehensive, it's appropriately sized for a powerful execution tool. Some sentences could be more concise, but overall it's efficiently organized with each section adding 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?
For a tool with no annotations, no output schema, and 0% schema coverage, the description provides excellent context. It explains the execution model, return behavior, parameter usage, and includes practical examples. The main gap is lack of explicit error handling information, but given the complexity of executing arbitrary code, it provides substantial guidance for safe and effective use.
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 for the single parameter, the description fully compensates. It clearly explains the 'script' parameter as '要执行的 MAXScript 代码字符串' (MAXScript code string to execute) and provides four concrete examples showing different use cases. The examples demonstrate parameter usage far beyond what the bare schema provides, adding substantial 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: '在 3ds Max 中执行一段 MAXScript 代码并返回结果' (execute MAXScript code in 3ds Max and return results). It specifies the verb ('执行' - execute), resource ('MAXScript 代码' - MAXScript code), and distinguishes it from sibling tools like execute_python_script by explicitly mentioning MAXScript. The purpose is specific and unambiguous.
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 explicit usage guidance: '适用于某些用 MAXScript 更直接或更方便的操作场景' (suitable for scenarios where MAXScript is more direct or convenient). It distinguishes from alternatives by implying MAXScript should be used when it's more appropriate than other methods, though it doesn't name specific sibling tools as alternatives. The guidance is clear about when this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_python_scriptA
在 3ds Max 中执行一段 Python 脚本并返回执行结果。
该工具允许你发送任意 Python 代码到 3ds Max 中执行。 脚本在 3ds Max 的 Python 环境中运行,可以访问 pymxs、MaxPlus 等模块。
使用说明:
脚本中可以通过
import pymxs; rt = pymxs.runtime来访问 MAXScript 运行时。脚本中可以使用
print()输出调试信息(会打印到 3ds Max 控制台)。如果需要返回结果,请将结果赋值给
_mcp_max_results变量(字典或可 JSON 序列化的对象)。如果脚本没有设置
_mcp_max_results,则返回{"success": True, "message": "脚本已执行完成"}。
示例脚本 - 获取场景中所有对象的名称: import pymxs rt = pymxs.runtime names = [str(obj.name) for obj in rt.objects] _mcp_max_results = {"success": True, "object_names": names, "count": len(names)}
示例脚本 - 创建一个球体: import pymxs rt = pymxs.runtime sphere = rt.Sphere(radius=30, pos=rt.Point3(0, 0, 0)) sphere.name = "MCP_Sphere" _mcp_max_results = {"success": True, "name": str(sphere.name), "radius": 30}
Args: script: 要在 3ds Max 中执行的 Python 脚本代码字符串。
Returns:
dict: 包含执行结果的字典。
- success (bool): 脚本是否执行成功。
- 其他字段取决于脚本中 _mcp_max_results 的内容。
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and delivers comprehensive behavioral details: it explains the execution environment (3ds Max's Python environment), how to return results (via `_mcp_max_results` variable), default return behavior when no results are set, and includes practical examples showing both read and write operations (getting object names vs creating a sphere).
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 and front-loaded with purpose, followed by usage instructions, examples, and parameter/return documentation. Every section adds value: the examples are particularly helpful for understanding script structure, and the Args/Returns sections clarify input/output expectations without 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?
For a complex execution tool with no annotations, 0% schema coverage, and no output schema, the description provides complete context: it explains the execution environment, return mechanism, debugging approach, includes practical examples, and documents both input and output expectations. The sibling tool context (execute_maxscript) is appropriately addressed through the Python-specific focus.
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 for the single parameter 'script', the description fully compensates by explaining the parameter's purpose ('要在 3ds Max 中执行的 Python 脚本代码字符串' - Python script code string to execute in 3ds Max), providing syntax guidance, and showing two detailed examples that demonstrate proper script structure and content.
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: '在 3ds Max 中执行一段 Python 脚本并返回执行结果' (execute a Python script in 3ds Max and return the execution result). It specifies the verb '执行' (execute) and resource 'Python 脚本' (Python script), and distinguishes from sibling tools like 'execute_maxscript' by focusing on Python rather than MAXScript.
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 explicit usage guidelines under '使用说明' (usage instructions), including how to access MAXScript runtime, use print() for debugging, and return results via `_mcp_max_results`. It also distinguishes from 'execute_maxscript' by specifying Python execution environment with access to pymxs and MaxPlus modules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_fileA
从 3ds Max 导出场景或选中的对象到文件。
支持的格式包括 FBX、OBJ、STL、3DS 等。 可以导出场景中的全部对象或仅导出选中的对象。
Args: file_path: 导出文件的完整路径(包含扩展名)。 支持的格式:.fbx, .obj, .stl, .3ds, .dae 等。 selected_only: 是否仅导出选中的对象。 "true" 表示只导出选中对象。 "false"(默认)表示导出场景中所有对象。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - file_path (str): 导出的文件路径。 - selected_only (bool): 是否仅导出选中对象。 - message (str): 操作描述信息。
示例调用 - 导出全部对象为 FBX: export_file(file_path="C:/Export/scene.fbx")
示例调用 - 仅导出选中对象为 OBJ: export_file(file_path="C:/Export/selected.obj", selected_only="true")
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| selected_only | No | false |
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 the tool's behavior: it exports from 3ds Max, supports multiple formats, allows selection scope, and returns a structured result dict. It covers key aspects like success status and message, though it could add more on permissions, file overwriting, or error handling.
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 (purpose, supported formats, scope, args, returns, examples) and front-loaded key information. It is appropriately sized but could be slightly more concise by integrating some details (e.g., format list in args) more tightly.
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 (export tool with format and scope options), no annotations, and no output schema, the description is largely complete. It covers purpose, parameters, returns, and examples. However, it could improve by mentioning potential side effects (e.g., file system changes) or integration with sibling tools like 'import_file' for a fuller context.
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 so excellently: it explains both parameters ('file_path' and 'selected_only') in detail, including format support, default values, and usage examples. This adds significant meaning beyond the bare schema, fully documenting the 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 with specific verbs ('从 3ds Max 导出场景或选中的对象到文件') and distinguishes it from siblings by focusing on export functionality. It specifies the resource (scenes or selected objects from 3ds Max) and the action (export to file), making it immediately distinguishable from import, creation, or manipulation tools in the sibling list.
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 (exporting from 3ds Max) and mentions supported formats and scope options (all objects vs. selected only). However, it does not explicitly state when NOT to use it or name alternatives (e.g., compared to 'import_file' or 'save_scene'), which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_max_versionA
获取当前 3ds Max 的版本信息和环境信息。
该工具返回 3ds Max 的版本号、构建信息、Python 版本等环境信息, 帮助了解运行环境。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - max_version (str): 3ds Max 版本号。 - max_version_number (int): 3ds Max 版本数字。 - python_version (str): Python 版本。 - message (str): 描述信息。
示例调用: get_max_version()
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as a read operation that returns environment information, which is clear but lacks details on behavioral traits such as error handling, performance implications, or whether it requires specific permissions or connectivity. The description adds basic context about what information is returned but does not fully compensate for the absence of 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 and front-loaded, starting with the core purpose in the first sentence. The subsequent sentences add necessary details about return values and an example call, with minimal redundancy. However, the inclusion of a detailed 'Returns' section in the description (which could be moved to an output schema) slightly reduces efficiency, though it remains well-structured.
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 low complexity (0 parameters, no output schema, no annotations), the description is reasonably complete. It explains the purpose, return values, and provides an example. However, it lacks information on error cases or behavioral nuances, which would enhance completeness for a tool in a 3D modeling context where environment checks might fail.
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 parameters with 100% coverage, so no parameter documentation is needed. The description correctly indicates no parameters by showing an example call 'get_max_version()' without arguments. It adds no semantic details beyond the schema, but since there are no parameters, a baseline score of 4 is appropriate as it adequately addresses the parameter 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 specific verb ('获取' meaning 'get') and resource ('3ds Max 的版本信息和环境信息' meaning '3ds Max version and environment information'), distinguishing it from siblings that perform operations like creating objects, executing scripts, or modifying scene elements. It explicitly identifies what information is retrieved (version number, build info, Python version).
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 by stating it 'helps understand the runtime environment,' suggesting it should be used when environment details are needed. However, it does not explicitly state when to use this tool versus alternatives (e.g., get_scene_info for scene-specific data) or provide any exclusions or prerequisites, leaving guidance somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_object_propertiesA
获取 3ds Max 场景中指定物体的详细属性信息。
该工具返回物体的变换信息(位置/旋转/缩放)、几何属性、修改器列表、 材质信息等综合属性数据,帮助 AI 了解物体的当前状态。
Args: object_name: 目标物体的名称(场景中已存在的对象)。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - name (str): 物体名称。 - class_name (str): 物体类名(如 Box, Sphere, Editable_Poly 等)。 - super_class (str): 物体超类名(如 GeometryClass, Light 等)。 - transform (dict): 变换信息。 - position (list): 位置 [x, y, z]。 - rotation (list): 旋转欧拉角 [x, y, z](度数)。 - scale (list): 缩放 [x, y, z]。 - properties (dict): 物体的创建参数(如 radius, length 等)。 - modifiers (list): 修改器列表,每个包含 name 和 class_name。 - material (dict|None): 材质信息(如果有)。 - is_hidden (bool): 是否隐藏。 - is_frozen (bool): 是否冻结。 - wirecolor (list): 线框颜色 [r, g, b]。 - vertex_count (int): 顶点数(如果是网格对象)。 - face_count (int): 面数(如果是网格对象)。 - message (str): 操作描述信息。
示例调用: get_object_properties(object_name="Box001")
示例调用: get_object_properties(object_name="MCP_Sphere")
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes |
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 clearly describes the read-only nature (获取/returns information) and specifies the comprehensive data returned. However, it doesn't mention potential limitations (e.g., what happens if the object doesn't exist, performance considerations, or whether it works on all object types). The description adds value but lacks some 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 a clear purpose statement, detailed returns section, and example calls. Every sentence adds value. It could be slightly more concise by integrating the example calls more tightly, but overall it's efficient and front-loaded with the core purpose.
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 returning detailed 3D object properties with no output schema, the description provides exceptional completeness. It thoroughly documents the return structure including transform data, geometric properties, modifiers, materials, and state flags. This fully compensates for the lack of output schema and makes the tool's behavior completely understandable.
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 description adds significant meaning beyond the input schema. The schema only shows 'object_name' as a string parameter with 0% description coverage. The description explains that this is '目标物体的名称(场景中已存在的对象)' (the name of the target object, which must already exist in the scene), providing crucial context about the parameter's purpose and constraints.
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: '获取 3ds Max 场景中指定物体的详细属性信息' (Get detailed property information for a specified object in a 3ds Max scene). It specifies the exact resource (object in 3ds Max scene) and verb (get properties), and distinguishes itself from siblings like get_scene_info (scene-level) and get_scene_objects (list of objects).
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: it's for retrieving detailed properties of a specific object in a 3ds Max scene. It implies when to use it (to understand an object's current state) and distinguishes from siblings like get_scene_objects (which lists objects) and set_object_property (which modifies properties). However, it doesn't explicitly state when NOT to use it or name specific alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scene_infoA
获取当前 3ds Max 场景的综合信息。
该工具返回当前场景的全面信息,包括文件路径、对象统计、时间范围、 单位设置等,帮助 AI 了解场景的整体状态。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - file_path (str): 当前场景文件的完整路径(未保存时为空)。 - file_name (str): 场景文件名。 - is_saved (bool): 场景是否已保存。 - object_counts (dict): 各类型对象数量统计。 - total (int): 总对象数。 - geometry (int): 几何体数量。 - lights (int): 灯光数量。 - cameras (int): 相机数量。 - helpers (int): 辅助对象数量。 - shapes (int): 样条线数量。 - time_range (dict): 时间/帧范围。 - start (int): 起始帧。 - end (int): 结束帧。 - current (int): 当前帧。 - fps (float): 帧率。 - units (dict): 单位设置。 - system_type (str): 系统单位类型。 - system_scale (float): 系统单位缩放。 - display_type (str): 显示单位类型。 - message (str): 描述信息。
示例调用: get_scene_info()
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as returning comprehensive scene information, which implies a read-only operation without side effects, but does not explicitly state this. It also lacks details on error conditions, performance implications, or authentication needs. The description adds some context about what information is included but misses behavioral traits like whether it requires a loaded scene or works on unsaved files.
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 and front-loaded, starting with the purpose and key details. The detailed return structure is necessary for clarity but could be more concise. The example call at the end is helpful but slightly redundant. Overall, most sentences earn their place, though minor trimming is possible.
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 (providing comprehensive scene data) and lack of annotations or output schema, the description does a good job of explaining what information is returned. It details the return structure extensively, covering file details, object counts, time range, and units. However, it could improve by mentioning behavioral aspects like error handling or prerequisites, but it's largely complete for a read-only informational 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 tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description does not need to add parameter semantics, as there are none to document. It correctly omits parameter details, earning a high baseline score for not introducing unnecessary information.
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: '获取当前 3ds Max 场景的综合信息' (Get comprehensive information about the current 3ds Max scene). It specifies the verb '获取' (get) and the resource '场景的综合信息' (comprehensive scene information), distinguishing it from siblings like get_scene_objects (which lists objects) or get_object_properties (which focuses on specific objects).
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 by stating it '帮助 AI 了解场景的整体状态' (helps AI understand the overall state of the scene), suggesting it should be used for general scene assessment. However, it does not explicitly state when to use this tool versus alternatives like get_scene_objects or get_object_properties, nor does it provide exclusions or prerequisites for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scene_objectsA
获取当前 3ds Max 场景中的所有对象信息。
该工具可以列出场景中的所有对象,或者按类型/名称进行过滤。 返回每个对象的名称、类型、位置、是否隐藏等基本信息。
支持的过滤类型(object_type 参数):
"": 返回所有对象(默认)
"Geometry": 仅返回几何体对象(Box、Sphere、Mesh 等)
"Light": 仅返回灯光对象
"Camera": 仅返回相机对象
"Helper": 仅返回辅助对象(Dummy、Point 等)
"Shape": 仅返回样条线/形状对象(Line、Circle、Rectangle 等)
"SpaceWarp": 仅返回空间扭曲对象
"Bone": 仅返回骨骼对象 也支持具体的类名,如 "Box"、"Sphere"、"Editable_Mesh" 等。
Args: object_type: 按类型过滤对象,可以是超类名(如 "Geometry")或具体类名(如 "Box")。 如果为空字符串则返回所有对象。 name_filter: 按名称过滤对象,支持通配符 ""。 例如: "Box" 匹配所有以 "Box" 开头的对象。 如果为空字符串则不按名称过滤。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - objects (list): 对象信息列表,每个元素包含: - name (str): 对象名称。 - class_name (str): 对象类名。 - super_class (str): 对象超类名。 - position (list): 位置坐标 [x, y, z]。 - is_hidden (bool): 是否隐藏。 - is_frozen (bool): 是否冻结。 - count (int): 返回的对象数量。 - total_in_scene (int): 场景中的总对象数量。 - message (str): 描述信息。
示例调用 - 获取所有对象: get_scene_objects()
示例调用 - 仅获取几何体: get_scene_objects(object_type="Geometry")
示例调用 - 按名称过滤: get_scene_objects(name_filter="Box*")
示例调用 - 按类型和名称组合过滤: get_scene_objects(object_type="Geometry", name_filter="Wall*")
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | No | ||
| name_filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns object information (name, type, position, hidden status, etc.) and supports filtering, which is good basic behavioral context. However, it doesn't mention potential limitations like performance with large scenes, whether it requires specific scene states, or error conditions. For a read-only tool with no annotations, this is adequate but not comprehensive.
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: purpose, filtering capabilities, parameter details, return format, and examples. It's appropriately sized for a tool with two parameters and complex filtering options. Some redundancy exists (e.g., repeating filtering examples), but overall it's efficient and front-loaded with the core purpose.
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 (filtering by type/name), no annotations, and no output schema, the description does a good job of completeness. It explains the purpose, parameters, return format (including all fields in the objects list), and provides multiple examples. The main gap is lack of explicit behavioral warnings or prerequisites, but for a read operation, this is reasonably 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?
With 0% schema description coverage (schema only has titles 'Object Type' and 'Name Filter' with no descriptions), the description fully compensates by providing detailed semantics for both parameters. It explains object_type can be empty (all objects), superclass names (e.g., 'Geometry'), or specific class names (e.g., 'Box'), with examples. It explains name_filter supports wildcards like '*' and provides usage examples. This 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: '获取当前 3ds Max 场景中的所有对象信息' (get all object information in the current 3ds Max scene). It specifies the verb '获取' (get/retrieve) and the resource '场景中的所有对象信息' (all object information in the scene), distinguishing it from siblings like get_object_properties (which gets properties of specific objects) and get_scene_info (which gets general scene 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 clear context for when to use this tool: to list all objects or filter by type/name. It includes examples of different filtering scenarios. However, it doesn't explicitly state when NOT to use it or compare it to alternatives like get_object_properties (for detailed properties of specific objects) or select_objects (for selection rather than information retrieval).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_fileA
在 3ds Max 中导入外部文件。
支持的格式包括 FBX、OBJ、Alembic(ABC)、STL、3DS 等 3ds Max 能识别的文件格式。 导入的对象将被添加到当前场景中。
Args: file_path: 要导入的文件完整路径。 支持的常见格式:.fbx, .obj, .abc, .stl, .3ds, .dae 等。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - file_path (str): 导入的文件路径。 - message (str): 操作描述信息。
示例调用: import_file(file_path="C:/Models/character.fbx")
示例调用: import_file(file_path="C:/Models/terrain.obj")
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that imported objects are added to the current scene (behavioral trait) and mentions supported formats, but doesn't address potential limitations like file size constraints, permission requirements, error handling, or whether the operation modifies existing scene data. It provides basic behavioral information but lacks depth 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 appropriately sized but not optimally structured. The core purpose is front-loaded, but the format listing could be more concise. The inclusion of both 'Args' and 'Returns' sections (which aren't standard MCP description elements) adds redundancy. Every sentence earns its place, but the organization could be cleaner.
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 mutation tool with no annotations and no output schema, the description provides adequate basic information but lacks completeness. It covers the what and how of importing, but doesn't address error scenarios, performance implications, or integration with sibling tools. The return format documentation helps, but more behavioral context would be beneficial given the tool's 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 only one parameter, the description compensates well by explaining what 'file_path' represents ('complete path of the file to import') and listing supported format extensions. It adds meaningful context beyond the bare schema, though it doesn't specify path format requirements or validation rules.
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 ('import external files') and resource ('in 3ds Max'), distinguishing it from sibling tools like 'export_file', 'open_scene', or 'new_scene'. It specifies that imported objects are added to the current scene, which is a precise scope definition.
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 about when to use this tool (to import various 3D file formats into 3ds Max) and lists supported formats, but doesn't explicitly state when NOT to use it or mention alternatives like 'open_scene' for different file operations. The context is well-defined but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_sceneA
在 3ds Max 中新建/重置场景。
该工具将清空当前场景并创建一个新的空场景。
Args: force: 是否强制新建(不提示保存当前场景)。 "true"(默认)表示强制新建,不保存当前更改。 "false" 表示如果当前场景有未保存更改,会先保存。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - message (str): 操作描述信息。
示例调用 - 强制新建: new_scene()
示例调用 - 保存后新建: new_scene(force="false")
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so well. It discloses key behavioral traits: it clears the current scene, creates a new empty one, and explains the 'force' parameter's impact on saving changes. It also mentions the return structure (success and message), though no output schema exists. No contradictions with 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 well-structured and appropriately sized, with a clear purpose statement, parameter details, return information, and examples. Every sentence adds value, though it could be slightly more concise by integrating the examples more tightly. It is front-loaded with the core functionality.
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 (a destructive operation with one parameter) and lack of annotations and output schema, the description is quite complete. It covers purpose, behavior, parameters, and returns. However, it could benefit from mentioning potential errors or edge cases, such as what happens if saving fails in non-force mode.
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 does so by thoroughly explaining the single parameter 'force': its purpose (whether to force creation without saving), default value ('true'), and the effect of both 'true' and 'false' values. This adds significant 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 specific action ('新建/重置场景' - create/reset scene) and resource ('在 3ds Max 中' - in 3ds Max), distinguishing it from siblings like 'open_scene' or 'save_scene'. It explicitly mentions clearing the current scene and creating a new empty one, providing precise 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 clear context on when to use this tool (to start fresh or reset a scene) and includes examples for different scenarios (force vs. non-force). However, it does not explicitly state when NOT to use it or compare it to alternatives like 'open_scene' for loading existing files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_sceneA
在 3ds Max 中打开一个场景文件。
该工具将加载指定的 .max 场景文件。
Args: file_path: 要打开的场景文件完整路径,必须是 .max 文件。 例如: "C:/Projects/MyScene.max" force: 是否强制打开(不提示保存当前场景)。 "true" 表示强制打开(不保存当前更改), "false"(默认)表示如果当前场景有更改会先尝试保存。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - file_path (str): 打开的文件路径。 - message (str): 操作描述信息。
示例调用: open_scene(file_path="C:/Projects/MyScene.max")
示例调用 - 强制打开(不保存当前场景): open_scene(file_path="C:/Projects/MyScene.max", force="true")
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| force | No | false |
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 that the tool may prompt to save the current scene (unless force=true), which is important behavioral context for a file-opening operation. It also describes the return format (dict with success, file_path, message). However, it doesn't mention potential errors, performance implications, 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 appropriately sized and front-loaded with the core purpose first. The parameter explanations and examples are useful but slightly verbose (could be more concise). Every sentence earns its place by adding necessary information, though the structure could be tighter.
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 2-parameter tool with no annotations and no output schema, the description provides good completeness. It covers purpose, parameters with semantics, return format, and examples. However, it lacks information about error conditions, file format compatibility, or what happens if the file doesn't exist, which would make it fully comprehensive.
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, the description fully compensates by providing detailed parameter semantics. It explains that 'file_path' must be a complete path to a .max file with an example, and 'force' controls whether to save current changes with clear true/false meanings and default behavior. This adds substantial 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 specific action ('打开一个场景文件' - open a scene file) and resource ('.max 场景文件' - .max scene file) in 3ds Max. It distinguishes itself from siblings like 'new_scene' (creates new), 'save_scene' (saves current), and 'import_file' (imports assets rather than opening full scenes). The purpose is unambiguous and well-defined.
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 about when to use this tool (to load .max scene files) and implicitly distinguishes it from 'new_scene' (for creating empty scenes) and 'import_file' (for importing assets). However, it doesn't explicitly state when NOT to use it or name specific alternatives, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_objectA
重命名 3ds Max 场景中的指定物体。
Args: object_name: 当前物体名称(场景中已存在的对象)。 new_name: 新的物体名称。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - old_name (str): 原名称。 - new_name (str): 新名称。 - message (str): 操作描述信息。
示例调用: rename_object(object_name="Box001", new_name="Wall_Left")
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| new_name | Yes |
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 states this is a rename operation but doesn't mention whether this requires specific permissions, what happens if the new name conflicts with existing objects, whether the operation is reversible, or any rate limits. The return format is documented, but behavioral aspects like error conditions or side effects are missing.
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 purpose statement, parameter explanations, return format, and example. Every section adds value. It could be slightly more concise by integrating the example more tightly, but overall it's efficiently organized with no redundant information.
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 mutation tool with no annotations and no output schema, the description does an adequate job explaining the basic operation and return format. However, it lacks important context about error conditions, naming constraints, and how this interacts with other scene operations. The example helps, but more behavioral context would be needed for robust usage.
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, the description fully compensates by clearly explaining both parameters: 'object_name' as the current name of an existing object, and 'new_name' as the desired new name. The example call further clarifies usage. This provides complete semantic understanding 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 specific action ('重命名' - rename) and target resource ('3ds Max 场景中的指定物体' - specified object in 3ds Max scene). It distinguishes from siblings like 'clone_object' or 'delete_object' by focusing specifically on renaming existing objects rather than creating, modifying properties, or deleting them.
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 the object must exist in the scene, it doesn't explain when renaming is appropriate versus using other object manipulation tools like 'set_object_property' or 'clone_object' with renaming. No exclusions or prerequisites are mentioned beyond the object existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_sceneA
保存当前 3ds Max 场景文件。
该工具可以将当前场景保存到文件,支持覆盖保存和另存为。
Args: file_path: 保存的文件路径。 - 如果为空字符串,则保存到当前文件(覆盖保存)。 若当前场景未保存过则会失败。 - 如果指定了路径,则另存为到该路径。 路径必须以 .max 结尾,如 "C:/Projects/MyScene.max"。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - file_path (str): 保存的文件完整路径。 - message (str): 操作描述信息。
示例调用 - 覆盖保存: save_scene()
示例调用 - 另存为: save_scene(file_path="C:/Projects/MyScene.max")
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | 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 the tool's behavior: it can save or save-as, requires .max extension for save-as, and explains failure conditions for overwrite saving. However, it doesn't mention permissions, rate limits, or other system constraints that might be relevant.
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 (purpose, args, returns, examples) and every sentence adds value. It could be slightly more concise by integrating the examples more tightly, but overall it's efficiently organized and front-loaded with the core functionality.
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 (file operations with conditional behavior), no annotations, and no output schema, the description does an excellent job explaining both input parameters and return values. It fully documents the parameter semantics and return structure. The only minor gap is lack of information about error conditions beyond the mentioned failure case.
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, so the description must fully compensate. It provides comprehensive semantic information about the file_path parameter: its dual functionality (empty string for overwrite vs. specified path for save-as), format requirements (.max extension), and concrete examples. This 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 with specific verbs ('保存当前 3ds Max 场景文件' - save current 3ds Max scene file) and distinguishes it from siblings like 'new_scene', 'open_scene', 'export_file', and 'import_file'. It explicitly describes saving to a file, differentiating from other scene manipulation tools.
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 explicit guidance on when to use this tool versus alternatives: it explains both overwrite saving (when file_path is empty) and save-as functionality (when file_path is specified). It also mentions the prerequisite that overwrite saving requires the scene to have been previously saved, giving clear usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_objectsA
在 3ds Max 场景中选择或取消选择对象。
该工具可以按名称或类型选择场景中的对象,也可以清除当前选择。
Args: object_name: 要选择的物体名称。支持以下格式: - 精确名称:如 "Box001" - 通配符:如 "Box*" 选择所有以 Box 开头的物体 - 多个名称:用英文逗号分隔,如 "Box001,Sphere001" - 留空配合 object_type 使用,按类型选择 object_type: 按类型选择,如 "Geometry"、"Light"、"Camera"、"Box"、"Sphere" 等。 可与 object_name 组合使用。 action: 操作类型。 - "select": 选择匹配的对象(默认),替换当前选择。 - "add": 将匹配的对象添加到当前选择中。 - "deselect": 从当前选择中移除匹配的对象。 - "clear": 清除所有选择(忽略 object_name 和 object_type)。 - "invert": 反转当前选择(忽略 object_name 和 object_type)。 - "all": 选择所有对象(忽略 object_name 和 object_type)。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - selected (list): 当前选中的对象名称列表。 - selected_count (int): 当前选中的对象数量。 - message (str): 操作描述信息。
示例调用 - 选择单个对象: select_objects(object_name="Box001")
示例调用 - 按通配符选择: select_objects(object_name="Wall*")
示例调用 - 按类型选择所有灯光: select_objects(object_type="Light")
示例调用 - 清除选择: select_objects(action="clear")
示例调用 - 选择所有对象: select_objects(action="all")
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | No | ||
| object_type | No | ||
| action | No | select |
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 behavioral traits: it explains the selection modes (replace, add, deselect), clarifies that some actions ignore parameters (e.g., 'clear' ignores object_name), and describes the return format. It lacks details on permissions or rate limits, but covers core behavior well.
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 and front-loaded with the purpose, followed by detailed parameter explanations and examples. While comprehensive, some sections (like the full Returns dict) could be slightly condensed, but every sentence adds value for tool invocation.
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 (3 parameters, no annotations, no output schema), the description is complete. It covers purpose, usage, parameters, return values, and examples. It fully compensates for the lack of structured data, ensuring the agent can correctly invoke the tool without 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?
The schema description coverage is 0%, so the description must fully compensate. It adds extensive meaning beyond the schema: it details object_name formats (exact, wildcard, multiple), object_type examples, and action options with clear semantics. This fully documents all three parameters, making it highly valuable.
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: '在 3ds Max 场景中选择或取消选择对象' (select or deselect objects in a 3ds Max scene). It specifies the exact action (select/deselect) and resource (objects), and distinguishes itself from siblings like get_scene_objects (which only retrieves) or delete_object (which removes).
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 on when to use this tool (e.g., selecting by name, type, or clearing selections) and includes examples. However, it does not explicitly mention when not to use it or name alternatives among siblings, such as get_scene_objects for listing without selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_keyframeA
在 3ds Max 中为指定物体的属性设置关键帧。
该工具可以在指定帧为物体的变换属性(位置/旋转/缩放)或自定义属性设置关键帧。
Args: object_name: 目标物体名称。 frame: 关键帧所在的帧号,如 "0"、"30"、"60"。 position: 在该帧的位置值,格式 "x,y,z"。留空表示不设置位置关键帧。 rotation: 在该帧的旋转值(欧拉角度数),格式 "x,y,z"。留空表示不设置旋转关键帧。 scale: 在该帧的缩放值,格式 "x,y,z" 或单个值如 "2"。留空表示不设置缩放关键帧。 property_name: 自定义属性名(如 "radius"、"height" 等)。与 property_value 配合使用。 property_value: 自定义属性在该帧的值。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - object_name (str): 物体名称。 - frame (int): 关键帧号。 - keys_set (list): 成功设置的关键帧类型列表。 - message (str): 操作描述信息。
示例调用 - 设置位置关键帧: set_keyframe(object_name="Box001", frame="0", position="0,0,0") set_keyframe(object_name="Box001", frame="30", position="100,0,0")
示例调用 - 设置位置和旋转关键帧: set_keyframe(object_name="Box001", frame="0", position="0,0,0", rotation="0,0,0") set_keyframe(object_name="Box001", frame="60", position="100,0,0", rotation="0,0,360")
示例调用 - 设置自定义属性关键帧(如半径动画): set_keyframe(object_name="Sphere001", frame="0", property_name="radius", property_value="10") set_keyframe(object_name="Sphere001", frame="30", property_name="radius", property_value="50")
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| frame | Yes | ||
| position | No | ||
| rotation | No | ||
| scale | No | ||
| property_name | No | ||
| property_value | 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 explains what the tool does (sets keyframes for animation) and provides multiple usage examples, but doesn't mention error conditions, permission requirements, or what happens when multiple properties are set simultaneously. 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: purpose statement, parameter explanations, return format, and multiple usage examples. While comprehensive, it could be slightly more concise as some information in the examples is somewhat repetitive. Every sentence adds value, particularly the examples which demonstrate different usage patterns.
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 7-parameter mutation tool with no annotations and no output schema, the description does an excellent job of explaining what the tool does, how to use it, and what to expect. The inclusion of return format details and multiple concrete examples provides substantial context. The main gap is lack of explicit error handling or edge case information.
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, the description fully compensates by providing detailed parameter explanations in the Args section. Each of the 7 parameters is clearly explained with format examples (e.g., 'x,y,z' format for position, frame numbers as strings), default behaviors (留空表示不设置 - leave empty means don't set), and relationships between parameters (property_name与property_value配合使用 - property_name used together with property_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 the specific action ('设置关键帧' - set keyframe) on specific resources ('指定物体的属性' - specified object's properties) in a specific context ('在 3ds Max 中' - in 3ds Max). It distinguishes from siblings like set_object_transform (which sets transform without keyframing) and set_object_property (which sets properties without keyframing).
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 about when to use this tool - for setting keyframes on object properties in 3ds Max animation workflows. It mentions specific use cases (transform properties vs custom properties) but doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools, though the distinction is implied through the tool's specific functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_object_propertyA
设置 3ds Max 场景中指定物体的属性值。
该工具可以设置物体的各种属性,包括显示属性和创建参数。
常用属性名称(property_name 参数):
wirecolor: 线框颜色,值格式 "r,g,b" (0-255),如 "255,0,0"
isHidden: 是否隐藏,值 "true" 或 "false"
isFrozen: 是否冻结,值 "true" 或 "false"
renderable: 是否可渲染,值 "true" 或 "false"
boxMode: 是否以盒模式显示,值 "true" 或 "false"
backfaceCull: 是否背面剔除,值 "true" 或 "false"
以及对象的创建参数(如 radius、length、width、height、segments 等)
Args: object_name: 目标物体名称。支持通配符 "*" 进行批量设置。 property_name: 属性名称。 property_value: 属性值(字符串形式)。 数字值: "30"、"1.5" 布尔值: "true"、"false" 颜色值: "255,0,0"(仅 wirecolor 属性使用)
Returns: dict: 操作结果。 - success (bool): 是否成功。 - modified (list): 成功修改的物体列表。 - property_name (str): 属性名称。 - property_value (str): 设置的属性值。 - message (str): 操作描述信息。
示例调用 - 设置线框颜色为红色: set_object_property(object_name="Box001", property_name="wirecolor", property_value="255,0,0")
示例调用 - 隐藏物体: set_object_property(object_name="Box001", property_name="isHidden", property_value="true")
示例调用 - 修改球体半径: set_object_property(object_name="Sphere001", property_name="radius", property_value="50")
示例调用 - 批量冻结所有 Box: set_object_property(object_name="Box*", property_name="isFrozen", property_value="true")
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| property_name | Yes | ||
| property_value | Yes |
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: it supports wildcard '*' for batch operations, returns a structured dict with success status and modified objects list, and specifies value formats for different property types (numeric, boolean, color). It doesn't mention error handling or permission requirements, but covers essential operational traits.
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 examples and parameter details mixed together. While all content is valuable, it could be more streamlined with clearer separation between conceptual explanation and implementation details.
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 mutation tool with no annotations and no output schema, the description provides complete context: it explains what the tool does, how to use parameters, common property examples, return format details, and multiple usage scenarios. This compensates fully 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?
Given 0% schema description coverage, the description fully compensates by explaining all three parameters in detail: 'object_name' supports wildcards for batch setting, 'property_name' includes common examples with specific usage notes (e.g., 'wirecolor' for color), and 'property_value' provides format rules for different data types. It 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 specific action ('设置' meaning 'set'), the target resource ('3ds Max 场景中指定物体的属性值' meaning 'property values of specified objects in 3ds Max scene'), and distinguishes from siblings like 'get_object_properties' (read vs write) and 'set_object_transform' (properties vs transform). It provides a precise verb+resource combination.
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 and property lists (e.g., setting display properties like wirecolor or creation parameters like radius). However, it doesn't explicitly state when to use this tool versus alternatives like 'set_object_transform' for position/rotation or 'assign_material' for material assignment, leaving some ambiguity about property scope boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_object_transformA
设置 3ds Max 场景中指定物体的变换属性(位置/旋转/缩放)。
该工具可以设置物体的位置、旋转和缩放,支持绝对模式和相对模式。 可以同时设置多个变换属性,也可以只设置其中一个。
Args: object_name: 目标物体的名称(场景中已存在的对象)。 position: 位置坐标,格式为 "x,y,z",如 "100,50,0"。 留空则不改变位置。 rotation: 旋转欧拉角(度数),格式为 "x,y,z",如 "0,0,45"。 留空则不改变旋转。 scale: 缩放比例,格式为 "x,y,z",如 "2,2,2"(等比放大2倍)。 也可使用单个值表示等比缩放,如 "1.5"(等同于 "1.5,1.5,1.5")。 留空则不改变缩放。 relative: 是否使用相对模式。"true" 表示在当前值基础上叠加, "false"(默认)表示设置为绝对值。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - object_name (str): 物体名称。 - old_transform (dict): 变换前的值。 - new_transform (dict): 变换后的值。 - message (str): 操作描述信息。
示例调用 - 移动物体到指定位置: set_object_transform(object_name="Box001", position="100,0,50")
示例调用 - 旋转物体45度(Z轴): set_object_transform(object_name="Box001", rotation="0,0,45")
示例调用 - 等比缩放物体: set_object_transform(object_name="Box001", scale="2,2,2")
示例调用 - 相对移动物体(在当前位置基础上偏移): set_object_transform(object_name="Box001", position="10,0,0", relative="true")
示例调用 - 同时设置位置和旋转: set_object_transform(object_name="Box001", position="100,50,0", rotation="0,0,90")
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| position | No | ||
| rotation | No | ||
| scale | No | ||
| relative | No | false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It effectively discloses key behavioral traits: it's a mutation tool (sets properties), works on existing objects only (requires 'object_name' of existing object), supports both absolute and relative modes, allows partial updates (empty strings skip changes), and describes the return format. It doesn't mention error conditions, permissions, or rate limits, but covers core behavior well.
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?
Well-structured with clear sections: purpose statement, parameter explanations, return format, and multiple usage examples. Every sentence adds value. Could be slightly more concise in the examples section (some redundancy), but overall efficiently communicates necessary information.
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 mutation tool with 5 parameters, 0% schema coverage, and no output schema, the description does an excellent job. It explains parameters thoroughly, describes the return structure, and provides multiple usage examples. The main gap is lack of error handling information, but given the comprehensive parameter coverage and return format description, it's highly 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 fully compensate. It provides excellent parameter semantics: explains each parameter's purpose, format examples, default behaviors (empty strings skip changes), and special cases (single value for uniform scaling). The 'relative' parameter is clearly explained with its default value. This goes far 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 'sets transform properties (position/rotation/scale) for specified objects in a 3ds Max scene.' It specifies the exact action (set), resource (object transform properties), and context (3ds Max scene), distinguishing it from siblings like set_object_property (which sets general properties) or set_keyframe (which sets animation keyframes).
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: to modify position, rotation, or scale of existing objects. It mentions support for absolute and relative modes, and that multiple properties can be set simultaneously. However, it doesn't explicitly state when NOT to use it or name specific alternatives among siblings (e.g., set_object_property for other properties).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_time_rangeA
设置 3ds Max 的时间/帧范围参数。
该工具可以设置动画的帧范围、当前帧位置和帧率。 所有参数都是可选的,只设置你需要修改的参数。
Args: start_frame: 动画起始帧。留空不修改。 end_frame: 动画结束帧。留空不修改。 current_frame: 当前帧(时间滑块位置)。留空不修改。 fps: 帧率。常见值: "24"(电影)、"25"(PAL)、"30"(NTSC)。留空不修改。
Returns: dict: 操作结果。 - success (bool): 是否成功。 - time_range (dict): 设置后的时间范围信息。 - message (str): 操作描述信息。
示例调用 - 设置帧范围: set_time_range(start_frame="0", end_frame="100")
示例调用 - 设置当前帧: set_time_range(current_frame="50")
示例调用 - 设置帧率和范围: set_time_range(start_frame="0", end_frame="240", fps="24")
| Name | Required | Description | Default |
|---|---|---|---|
| start_frame | No | ||
| end_frame | No | ||
| current_frame | No | ||
| fps | 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 explains that all parameters are optional and only modified if specified, which is helpful. However, it lacks details on permissions, error handling, or side effects (e.g., whether changes affect existing animations). The return format is described but without output schema, leaving some ambiguity.
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 (purpose, parameter details, returns, examples) and front-loaded key information. It is appropriately sized, though the examples could be slightly more concise. Every sentence adds value without 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 (4 parameters, no annotations, no output schema), the description is largely complete. It covers purpose, parameters, returns, and usage examples. However, it could improve by addressing potential errors or constraints (e.g., valid frame ranges). The lack of output schema is mitigated by describing the return dict.
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 compensate fully. It does so by clearly explaining each parameter's purpose (e.g., start_frame as animation start frame), optional nature, and practical examples (e.g., fps common values like '24' for film). This adds significant 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 specific verbs ('设置' meaning 'set') and resources ('时间/帧范围参数' meaning 'time/frame range parameters'), distinguishing it from sibling tools like set_keyframe or set_object_property by focusing on animation timing parameters rather than keyframes or object properties.
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 (to set animation frame ranges, current frame position, and frame rate) and includes practical examples. However, it does not explicitly state when not to use it or mention alternatives among sibling tools, such as set_keyframe for animation keyframes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
24 tool updates
v0.1.0- First observed
add_modifier - First observed
assign_material - First observed
clone_object - First observed
create_light - First observed
create_material - First observed
create_object - First observed
delete_object - First observed
execute_maxscript - First observed
execute_python_script - First observed
export_file - First observed
get_max_version - First observed
get_object_properties - First observed
get_scene_info - First observed
get_scene_objects - First observed
import_file - First observed
new_scene - First observed
open_scene - First observed
rename_object - First observed
save_scene - First observed
select_objects - First observed
set_keyframe - First observed
set_object_property - First observed
set_object_transform - First observed
set_time_range
TDQS
Most tools have distinct purposes targeting specific operations in 3ds Max (e.g., create_object, add_modifier, set_keyframe), but there is some overlap between get_object_properties and get_scene_objects in retrieving object information, and execute_maxscript and execute_python_script both allow script execution, which could cause confusion. However, descriptions clarify their specific uses.
All tool names follow a consistent snake_case pattern with clear verb_noun structure (e.g., create_object, delete_object, get_scene_info). There are no deviations in naming conventions, making the set predictable and easy to understand.
With 24 tools, the count is borderline high for a single domain like 3D modeling, but it covers a comprehensive range of operations in 3ds Max (creation, modification, animation, scene management). It feels slightly heavy but justifiable given the complexity of the software.
The tool set provides complete coverage for 3ds Max operations, including object creation, modification, animation, scene management, import/export, and scripting. There are no obvious gaps; agents can perform full workflows from modeling to rendering preparation.
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to connect to and control Autodesk Maya for 3D modeling, animation, and rendering operations through the Model Context Protocol, supporting object creation, transformation, scene queries, and Python command execution.-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to programmatically control Autodesk Maya via natural language using over 30 tools for 3D modeling, lighting, and animation. It connects through Maya's command port to facilitate procedural scene generation and complex production-ready workflows.1-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants like Claude Desktop to control Autodesk Maya via natural language through the Model Context Protocol.MIT
- AlicenseNot gradedqualityAmaintenanceConnect AI agents to Autodesk 3ds Max through the Model Context Protocol, enabling natural language control of scene creation, materials, modifiers, rendering, and plugin workflows.191MIT
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/317431629/3dsMaxMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server