Skip to main content
Glama
BluntMan-420

MaxForge MCP

by BluntMan-420

MaxForge MCP

Lets an AI agent (Claude, or anything else that speaks MCP) drive a live 3ds Max session — not by generating scripts for a human to paste in, but by actually creating, editing, and animating objects in real time while Max is open.

Normally, getting an AI to help in 3ds Max means it writes a script and you run it yourself, blind to whether it actually worked. This closes that loop: the agent can query the real scene state before and after every action, catch its own mistakes, and iterate live instead of guessing.

What it can do

Inspect the scene

list objects, read the current selection, query units / frame rate / frame range

Create & transform

primitives, position / rotation / scale

Materials & textures

create a material, load a bitmap texture, assign it to objects

Animation

keyframe position/rotation/scale across frames with real spline interpolation

Collision proxies

generate a basic bounding-box proxy for an object

Export & save

export selected objects or the whole scene, save the .max file

Escape hatch

run arbitrary raw MaxScript or Python for anything not covered above

Every mutation is wrapped in a real undo block — anything the agent does is a normal Ctrl+Z away from being undone.

Related MCP server: 3dsmax-mcp

How it works

AI agent (MCP client) --stdio--> server/max_mcp_server.py --TCP, localhost only--> max_side/bridge.py (inside 3ds Max)

A small Python bridge runs inside 3ds Max, loaded via a startup script, and opens a socket bound to 127.0.0.1 only. An MCP server outside Max connects to it and exposes the tools above. Every command runs on Max's main thread via a Qt timer — the 3ds Max SDK isn't thread-safe, so commands arriving on a socket thread are queued and drained on the main loop rather than executed directly.

max_side/
  bridge.py      socket + main-thread queue (the only place pymxs is touched)
  commands.py    one function per tool, each wrapped in an undo block
  serialize.py   converts pymxs values (Point3, Matrix3, nodes, ...) to JSON
  startup_stub.ms   drop into Max's startup scripts folder
server/
  client.py         TCP client, newline-delimited JSON
  tools.py           MCP tool definitions
  max_mcp_server.py  the MCP server itself (stdio transport)

Setup

Requirements: 3ds Max 2022+ (pymxs), Python 3.10+ on the machine running the MCP server, uv.

1. Install dependencies

uv sync

2. Load the bridge into 3ds Max

Copy max_side/startup_stub.ms into Max's startup scripts folder — typically:

%LOCALAPPDATA%\Autodesk\3dsMax\<version>\ENU\scripts\startup\

Open the copied startup_stub.ms and set MAXFORGE_REPO_PATH to wherever you cloned this repo. It starts the bridge on port 47823 automatically the next time Max launches. Three macroscripts (category "MaxForge MCP") are also registered for manual control — Start / Stop / Reload — so you can pick up code changes without restarting Max.

3. Point an MCP client at it

For Claude Code:

claude mcp add maxforge -- <repo>\.venv\Scripts\python.exe <repo>\server\max_mcp_server.py

Or wire server/max_mcp_server.py into any other MCP-compatible client's config the same way.

Safety

The socket only ever binds to 127.0.0.1 — never the network. This is a code-execution endpoint sitting inside a modeling app; it's designed to only be reachable from the same machine it runs on.

Status

Live-tested against a running Max 2025 session with a full assertion-based suite (29/29 checks) covering every tool, every error path, and an undo/redo round trip.

create_collision_proxy currently only builds a generic axis-aligned box — it isn't tuned to any specific game engine's collision format yet.

Adding a new tool

  1. Add a handler in max_side/commands.py, wrapped in undoable("MCP: ..."), registered in the COMMANDS dict.

  2. Add a matching wrapper in server/tools.py — its docstring is what the agent sees.

  3. Register it in the loop at the top of server/max_mcp_server.py.

  4. Run the "Reload MaxForge Bridge" macroscript in Max instead of restarting.

License

Copyright (c) 2026 .bluntman420. — see LICENSE.md. Free to use as-is; modification and redistribution of modified versions is not permitted.

Available Tools

17 tools
add_modifierB

Add a modifier by its MAXScript class name (Edit_Poly, Bend, UVW_Map, Turbosmooth, ...) to an object, with optional properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYes
paramsNo
modifierYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose side effects (e.g., modifies the scene permanently), prerequisites (object must exist or be selected), or failure modes. It only states the core action, leaving behavioral traits under-specified 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.

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the core purpose and includes illustrative examples. No redundant words or filler.

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

Completeness2/5

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

With no annotations, no output schema, and a required undocumented parameter, the description is insufficient for a complete understanding. It omits how the object is referenced, any return value, and important behavioral details, making it inadequate for reliable agent invocation.

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

Parameters2/5

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

Schema coverage is 0%, so the description must explain all parameters. It clarifies that 'modifier' takes a MAXScript class name and that 'params' are optional properties, but it never explains the 'handle' parameter, which is required. This leaves a required parameter undocumented.

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

Purpose5/5

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

The description uses a specific verb ('add') and names the resource ('modifier') and the input type ('MAXScript class name'), with concrete examples (Edit_Poly, Bend, etc.). It clearly distinguishes this from siblings like create_object or set_property, which operate on different resources.

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

Usage Guidelines3/5

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

The description implies when to use it (to add a modifier to an object) but gives no explicit guidance on alternatives or conditions like object existence or selection. It does not mention when not to use this tool or mention any competing sibling, leaving the routing decision largely to the model.

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

apply_materialB

Create a Standard material (optionally with a diffuse bitmap texture loaded from disk) and assign it to the given objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
handlesYes
material_nameNoMCP_Material
diffuse_bitmapNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the material type ('Standard'), the optional disk-read side effect of loading a bitmap, and the assignment action. However, it does not state that assigning replaces any existing material on the objects, whether new material instances are created per call, or what happens on invalid handles — meaningful gaps for a mutating tool with zero annotation coverage.

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

Conciseness4/5

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

A single clean sentence that front-loads the core verb and resource, with the optional-texture detail tucked into a parenthetical that earns its place. No filler or redundancy; slightly dense but efficient and well ordered.

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

Completeness2/5

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

Given three parameters at 0% schema coverage, no annotations, and no output schema, the description is too thin. It omits material_name semantics, overwrite behavior, handle validity requirements, and error/result expectations. An agent calling this for a real scene-assignment task would need to infer too much about side effects and parameter meaning.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It loosely maps 'diffuse bitmap texture loaded from disk' to diffuse_bitmap and 'given objects' to handles, but material_name is entirely unexplained — its default 'MCP_Material' and semantics (unique vs. reused named material) are undocumented in both schema and description. The coverage is only partial.

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

Purpose5/5

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

The description names a specific verb+resource ('Create a Standard material... and assign it to the given objects') and qualifies the variant ('optionally with a diffuse bitmap texture loaded from disk'). It is distinct from siblings like create_object (geometry) and set_property (generic properties); an agent can tell this is material-specific without opening the schema.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives such as set_property or run_maxscript, nor any exclusions (e.g., only for Standard materials, or not for physically-based materials). Usage context is only implied by the name and field names, leaving the agent to infer the right invocation scenario.

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

create_collision_proxyA

Create a simple axis-aligned box collision proxy for each given object, sized to its world bounding box and named {prefix}{name}. This is a generic starting point, not tuned to any specific game engine's collision format yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixNoUCX_
handlesYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It discloses that it creates box proxies, sizes them to world bounding boxes, and names them, but does not mention side effects (e.g., whether it modifies existing objects, creates new objects, or is destructive to same-named proxies). It adds some value but lacks detail on the operation's impact.

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

Conciseness5/5

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

Two sentences with no waste. The action and naming convention are front-loaded, and the caveat about being generic is concise. Every word adds value.

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

Completeness4/5

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

For a simple tool with two parameters and no output schema, the description is nearly complete. It covers the creation logic, naming, and generic nature. Missing details like return values or error conditions are minor given the simplicity, and the tool's purpose is clear enough for an agent to call it correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain both parameters. It explains prefix's role in naming ('{prefix}{name}') but does not explicitly define 'handles' (only implies they refer to objects through 'for each given object'). No default behavior, acceptable values, or constraints for handles are mentioned, leaving the parameter meaning incomplete.

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

Purpose5/5

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

The description clearly states the verb (create), the resource (a simple axis-aligned box collision proxy), and the scope (for each given object, sized to world bounding box, named with prefix). It distinguishes from siblings like create_object by specifying the collision proxy purpose and naming convention.

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

Usage Guidelines3/5

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

The description provides context that it is a 'generic starting point, not tuned to any specific game engine's collision format yet', implying use for initial proxy creation. However, it does not explicitly state when to use or avoid this tool compared to alternatives, nor does it name any alternative tools.

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

create_objectB

Create a primitive/object by its MAXScript class name (Box, Sphere, Cylinder, Plane, Cone, Torus, Teapot, ...). params are extra creation-time properties (e.g. {"radius": 10, "height": 20}).

ParametersJSON Schema
NameRequiredDescriptionDefault
posNo
nameNo
typeYes
paramsNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It mentions creation-time properties but does not cover side effects (e.g., object added to scene, selection behavior), error handling for invalid class names, or permission requirements. This is a significant gap 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.

Conciseness4/5

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

The description is concise with two sentences, front-loading the purpose. It avoids redundancy and is easily parseable. Minor improvement could be a more explicit separation of the type and params explanation, but it is suitably efficient.

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

Completeness2/5

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

As a creation tool with no output schema and no annotations, the description lacks essential context: return value, error behavior, and scene impact. Critical details that an agent needs to call correctly and handle outcomes are missing, so it is incomplete.

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

Parameters3/5

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

With schema description coverage at 0%, the description must compensate. It explains `type` (class name) and `params` (with an example), but `pos` and `name` are left unexplained. Partial coverage: two of four parameters are clarified, so it only partly compensates.

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

Purpose5/5

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

The description clearly states the action (Create), the resource (primitive/object), and the specific mechanism (MAXScript class name) with examples like Box, Sphere, etc. This distinguishes it from siblings like list_objects or apply_material, making its purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage (creating objects) but does not explicitly mention when to use this tool versus alternatives such as add_modifier or set_property. There are no explicit 'when not to use' conditions or comparisons to sibling tools, so the agent has to infer the context.

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

deleteC

Delete objects by handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handlesYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description alone carries the burden of behavioral disclosure. It states 'delete' which implies destruction, but does not explicitly mention that the operation is irreversible, what side effects occur (e.g., broken references, removal from scene), whether permissions are required, or what happens to dependent objects. The description fails to add context beyond the obvious action.

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

Conciseness4/5

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

The description is a single, short sentence with no fluff. It is extremely concise and front-loads the core action. However, it is so terse that it borders on under-specification rather than efficient brevity, but it still earns credit for having no wasted words.

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

Completeness2/5

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

For a destructive operation with no output schema and incomplete parameter documentation, the description is markedly incomplete. It does not mention the permanence of deletion, any confirmation or undo options, how to retrieve handles (e.g., from list_objects), or what the expected result is. The agent has almost no guidance beyond the tool name.

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

Parameters2/5

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

The schema has 0% description coverage; the only hint about the parameter is the word 'handles' in the description, but it does not explain what a handle is, how to obtain it, or its format beyond the schema's array of integers. The description does not add meaningful semantic value beyond what the schema already specifies.

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

Purpose4/5

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

The description 'Delete objects by handle' clearly states the verb 'delete' and the resource 'objects', and specifies the distinguishing method (by handle). It is specific enough to act, though it does not elaborate on what 'objects' refers to in context or contrast with specific siblings beyond the fact that no other tool is named 'delete'.

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

Usage Guidelines2/5

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, no prerequisites, no mention of selection vs. handles, and no conditions for when not to use it. For a destructive operation, this is a significant gap; the agent is left to infer usage from the name alone.

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

exportC

Export the scene (or just the given handles) to disk. The exporter is chosen from the path's file extension (.fbx, .obj, ...).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
formatNo
handlesNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It mentions that the tool writes to disk and that the exporter depends on the file extension, but it does not disclose side effects such as file overwriting, error handling, required permissions, or what happens if the path is invalid. It also does not describe the return value or success/failure behavior.

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

Conciseness4/5

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

The description is a single, concise sentence that front-loads the core action and the key behavior (exporter selection by extension). It avoids unnecessary words, but it sacrifices detail for brevity, omitting information about parameters and behavior that would improve utility.

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

Completeness2/5

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

Given the tool has 3 parameters, 0% schema description coverage, no annotations, and no output schema, the description is incomplete. It does not explain the format parameter, the meaning of handles, or what happens when handles is null. It also lacks information about file paths, potential errors, or expected results. An agent would likely need additional external knowledge to use this tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It implicitly references the handles parameter ('or just the given handles') and the path parameter (via extension), but it does not explain the format parameter at all, nor does it clarify the semantics of handles (e.g., what handles are expected or that null means whole scene). An agent would be unsure about the format argument and whether it overrides the extension.

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

Purpose4/5

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

The description clearly states the action: 'Export the scene (or just the given handles) to disk.' It specifies the resource (scene/handles) and the destination (disk), and it hints at the mechanism (exporter chosen by file extension). However, it does not explicitly differentiate from sibling tools like save_scene, which also writes to disk, leaving some ambiguity about when export is the right choice.

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

Usage Guidelines2/5

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 does not mention any sibling tool or condition that would prefer another operation. It only implies usage by stating the exporter is chosen via file extension, but it does not explain scenarios where export is appropriate versus save_scene or other tools.

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

get_scene_infoA

Get scene units, frame rate, frame range, and object count.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description must carry all behavioral disclosure. It indicates what data is returned, implying a read-only operation, but does not explicitly state that it has no side effects or specify the exact return format. It is adequate but could be more explicit about its read-only nature.

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

Conciseness5/5

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

A single, compact sentence that front-loads the main purpose and lists exactly what is retrieved. There is no extraneous text, every word earns its place.

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

Completeness5/5

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

For a parameter-less query tool, the description fully communicates the returned values (units, frame rate, frame range, object count). There is no output schema, but the description lists the return items explicitly, so an agent knows what to expect. Nothing essential is missing.

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

Parameters4/5

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

The tool has zero parameters, so the schema is trivially complete. The baseline for 0 parameters is 4, and the description does not need to add parameter-level detail since there are none.

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

Purpose5/5

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

The description clearly states the action ('Get') and the specific resource ('scene info') with enumerated data points (units, frame rate, frame range, object count). This precisely distinguishes it from siblings like 'list_objects' or 'get_selection', which target different data.

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

Usage Guidelines4/5

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

The description implies usage for retrieving scene-level metadata, and the tool's name and parameter-less nature make its purpose self-evident. However, it does not explicitly state when to use it versus alternatives or mention any exclusions, though for such a simple tool this is not a significant gap.

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

get_selectionA

Get the objects currently selected in the 3ds Max viewport.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden. It only states the action without disclosing behavioral details such as the return format (e.g., array of object names, handles), side effects (none expected), or any system-specific behavior. The description does not contradict annotations (there are none), but it fails to go beyond the bare minimum.

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

Conciseness5/5

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

A single, well-formed sentence that front-loads the action and resource without any redundant words. Ideal conciseness for a simple read operation.

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

Completeness3/5

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

With no output schema and no annotations, the description should explain what the tool returns. It only says 'objects,' leaving the return format unspecified (e.g., names, IDs, full objects). This is a notable gap for an agent trying to interpret the result. Otherwise, the description is adequate for a parameterless tool.

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

Parameters4/5

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

The tool has zero parameters, so the schema covers everything. The description adds no parameter info, but none is needed. Baseline 4 is appropriate given no parameters exist.

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

Purpose5/5

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

The description clearly states the verb 'get' and the resource 'objects currently selected in the 3ds Max viewport,' which distinguishes it from sibling tools like 'select' that would set the selection. The purpose is immediately obvious.

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

Usage Guidelines3/5

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

The purpose implies usage: it fetches the current selection. However, it does not explicitly state when to use this tool versus alternatives (e.g., 'select' for changing selection), nor does it mention any exclusions or prerequisites. For such a simple tool, the implied usage is acceptable but not explicit.

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

list_objectsB

List scene objects, each as {handle, name, class, pos, bbox}. filter matches (case-insensitive) against object name or class.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo
selected_onlyNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description must convey behavioral traits. It discloses that the filter is case-insensitive and provides the output schema, which is helpful. However, it does not explicitly state that listing is a read-only operation with no side effects, nor mention any performance implications (e.g., potentially large result sets). The verb 'list' implies read-only, but the description could be more explicit.

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

Conciseness5/5

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

The description is two sentences with zero filler. The output format is front-loaded, and the filter behavior is given concisely. Every word earns its place with no redundancy.

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

Completeness3/5

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

The description is adequate for a simple listing tool but incomplete: it fails to explain the `selected_only` parameter, which is a core part of the tool's options. It also does not clarify scope (e.g., whether all objects or only top-level ones are listed) or any limits. While the output format is specified, the missing parameter explanation and scope ambiguity leave an agent with questions.

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

Parameters2/5

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

The description explains the `filter` parameter (case-insensitive match against name or class), adding meaning beyond the bare schema. However, the `selected_only` parameter is completely undocumented; its default is `false` but what it does is not explained. With 0% schema coverage, the description should compensate for both parameters but only covers one, leaving a significant gap.

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

Purpose4/5

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

The description clearly states the tool lists scene objects and specifies the output fields ({handle, name, class, pos, bbox}). The verb 'list' and resource 'scene objects' are specific. However, it does not explicitly differentiate from siblings like get_selection or get_scene_info, relying on the name and context to imply the distinction.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives. The description does not mention that get_selection exists for selected objects or any exclusions. An agent must infer usage solely from the name and description, which is insufficient for deciding between similar listing tools.

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

pingA

Check the bridge connection and report the 3ds Max scene state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must fully disclose behavior. It states the tool checks the connection and reports scene state, implying a read-only diagnostic, but it does not explicitly confirm that it has no side effects, nor does it describe error handling or the nature of the report. Adequate but not explicit.

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

Conciseness5/5

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

A single, front-loaded sentence conveys the action and purpose with no unnecessary details. Every word contributes to understanding the tool's function.

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

Completeness4/5

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

For a no-parameter diagnostic tool with no output schema, the description is sufficient for an agent to know what the tool does. It misses details about failure modes or return format, but these are beyond the core purpose for a simple ping.

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

Parameters4/5

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

There are zero parameters, so the schema is trivially complete. No parameter information is needed, and the description adds nothing beyond that. The baseline of 4 for parameterless tools is appropriate.

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

Purpose4/5

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

The description uses a specific verb ('check') and resource ('bridge connection'), and also mentions reporting the scene state. It is distinct from the sibling get_scene_info because of its focus on the bridge connection, though it does not explicitly differentiate itself.

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

Usage Guidelines2/5

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 does not mention context, prerequisites, or when a user might prefer ping over get_scene_info or other diagnostics. The agent is left to infer that it is a health check.

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

run_maxscriptA

Execute arbitrary MaxScript inside 3ds Max and return the result of the last expression. Escape hatch for anything not covered by a typed tool below.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that execution is arbitrary and returns a result, but does not warn about potential side effects, destructive operations, or security implications—critical for a code execution tool.

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

Conciseness5/5

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

Two concise sentences, no filler, with the primary action and return behavior front-loaded. Every word contributes to understanding.

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

Completeness4/5

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

For a one-parameter escape hatch, it adequately explains what it does and what it returns. Lacks explicit examples or error handling details, but these are not critical for such a generic tool with no output schema.

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

Parameters4/5

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

The only parameter is 'code', and the description clarifies that it is MaxScript to execute. Despite 0% schema coverage, the description adds meaning beyond the raw string type by connecting it to MaxScript and the execution behavior.

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

Purpose5/5

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

The description explicitly states the tool executes arbitrary MaxScript and returns the last expression's result, differentiating it as an escape hatch for cases not handled by typed sibling tools. This clearly establishes its purpose relative to the other tools.

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

Usage Guidelines4/5

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

It provides clear context by indicating the tool is for anything not covered by typed tools, which implies a use-case boundary. However, it does not explicitly state when not to use it or name specific alternatives, only alluding to 'typed tools below'.

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

run_pythonA

Execute arbitrary Python inside 3ds Max's embedded interpreter (pymxs available as rt). For an expression, its value is returned; for a statement block, assign to a variable named result to return something. stdout is captured and returned too.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It clearly states that arbitrary Python can be executed, explains the return behavior (expression value, or `result` for statement blocks), and mentions stdout capture. However, it does not explicitly warn about potential side effects or error handling, which is a minor gap for an arbitrary execution tool.

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

Conciseness5/5

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

The description is concise at three sentences, with the core purpose front-loaded ('Execute arbitrary Python'). Every sentence provides useful information: the interpreter context, return mechanism, and stdout handling. No filler or redundancy.

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

Completeness4/5

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

For a tool with one parameter and no output schema, the description is quite complete: it covers the execution environment, return value conventions, and stdout. It lacks explicit error-handling details or caveats about side effects, but given the simplicity of the tool, these are not critical omissions.

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

Parameters4/5

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

The input schema has 0% description coverage, so the description must compensate. It explains that `code` is the Python code to execute, and adds crucial details about expression vs. statement block semantics and how to return values. This goes beyond the schema's bare 'Code' label, providing meaningful context.

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

Purpose4/5

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

The description states a specific verb ('Execute') and resource ('arbitrary Python inside 3ds Max's embedded interpreter'), making the tool's purpose clear. It mentions pymxs, which ties it to Python specifically, but it does not explicitly distinguish it from run_maxscript, though the name and content imply the difference.

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

Usage Guidelines3/5

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

The description implies usage for Python code execution but does not explicitly state when to choose this over the sibling run_maxscript or any other alternative. It gives practical guidance on how to structure code (expression vs. statement block) but not when to use the tool versus others.

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

save_sceneB

Save the current scene. Omit path to save in place.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full weight of behavioral disclosure. It only says 'Save the current scene,' implying a write operation but not detailing overwrite behavior, return values, or failure modes. It does not mention whether saving to a new path creates a file or how existing files are handled.

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

Conciseness5/5

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

Two concise sentences, with the core purpose front-loaded and the parameter guidance following. Every word earns its place, and the structure is immediately scannable.

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

Completeness3/5

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

For a simple save operation with one optional parameter, the description covers the essential action and parameter semantics. But it omits differentiation from the export sibling, potential side effects like overwriting, and any expected return value. Given no annotations, this leaves gaps that an agent might need to infer or test.

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

Parameters4/5

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

The description clarifies the only parameter beyond the schema's bare 'Path' field: 'Omit path to save in place' indicates that providing a path saves to that location and omitting it saves in place. This adds meaningful semantic context that the schema lacks, compensating for the 0% schema coverage.

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

Purpose4/5

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

The description states a clear action and resource: 'Save the current scene.' This distinguishes it from most siblings like apply_material or create_object. However, the presence of an 'export' sibling introduces potential ambiguity, as 'save' and 'export' can overlap, but the description does not address this distinction.

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

Usage Guidelines2/5

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

The only usage guidance is 'Omit path to save in place,' which instructs on parameter use but offers no context on when to prefer this tool over alternatives like export. It does not specify prerequisites, scenarios, or conditions for selection, leaving the agent to infer when saving is appropriate.

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

selectB

Select objects by handle (replaces the current selection).

ParametersJSON Schema
NameRequiredDescriptionDefault
handlesYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose a critical side effect (replaces current selection), which is useful. However, it does not mention error handling, whether the operation is reversible, or what happens with invalid handles. The disclosure is partial but meaningful.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the core action and the critical replacement behavior. Every word earns its place with no redundancy or fluff.

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

Completeness3/5

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

For a simple selection tool, the description covers the core action but lacks details on the return value (if any) and edge cases like empty handles or invalid identifiers. Given the absence of an output schema and annotations, a bit more context would be expected, though the essential operation is clear.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate by explaining the parameter semantics. It does not go beyond schema: 'handles' is merely an array of integers, and the description implies they identify objects but does not define what a handle is or how to obtain one. Minimal added value over the schema.

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

Purpose5/5

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

The description clearly states the action: 'Select objects by handle' with a specific verb and resource, and adds a key distinction by noting it 'replaces the current selection.' This differentiates it from sibling tools like get_selection or list_objects, making the purpose unambiguous.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives, such as get_selection or transform. It only describes the action without mentioning context, prerequisites, or exclusions. An agent must infer usage from the tool name alone.

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

set_keyframeC

Set an animation keyframe on an object at the given frame number.

ParametersJSON Schema
NameRequiredDescriptionDefault
posNo
rotNo
timeNo
scaleNo
handleYes

TDQS

C2.5/5.0
Behavior2/5

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 states the action ('set') which implies mutation, but does not explain what happens if a keyframe already exists, what 'frame number' refers to, or any side effects. The description is too minimal to give the agent confidence about behavior.

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

Conciseness3/5

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

The description is a single clear sentence with no redundancy, which is structurally sound and front-loaded. However, it is under-specified for the tool's complexity—conciseness should not come at the cost of missing essential information. It is acceptable but not exemplar.

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

Completeness1/5

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

With 5 parameters, no annotations, no output schema, and 0% schema description coverage, the description is entirely inadequate. It does not explain the meaning of the parameters, the coordinate system, keyframe interpolation behavior, or any return value. An agent cannot use this tool correctly with only this description.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but does not. It only hints at 'frame number' (likely the 'time' parameter) and 'object' (likely 'handle') but provides no explanation for pos, rot, or scale. The agent cannot determine what these arrays represent or how they relate to keyframe interpolation.

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

Purpose4/5

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

The description clearly states the verb ('set') and resource ('animation keyframe on an object') and mentions the frame number as the time context. It is specific enough to distinguish from generic mutation tools like set_property or transform, though it does not explicitly name a sibling alternative. A 4 is appropriate because it is clear but does not differentiate among the animation-specific siblings.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like transform or set_property. It does not state prerequisites, such as whether the object must already exist or whether the keyframe replaces existing ones. With no exclusions or alternatives, the agent is left to infer usage.

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

set_propertyC

Set an arbitrary MAXScript property on an object by name and return its new value.

ParametersJSON Schema
NameRequiredDescriptionDefault
propYes
valueYes
handleYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description fully carries the behavioral burden. It discloses that the operation mutates a property and returns the new value, but omits side effects, error handling (e.g., invalid property names), permissions, or reversibility. For a mutation tool, this is minimal disclosure.

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

Conciseness5/5

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

A single sentence that is front-loaded with verb and resource, concise and without fluff. It earns its place by conveying the essential purpose and return behavior.

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

Completeness1/5

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

For a tool with three required parameters, no annotations, and no output schema, this description is severely incomplete. An agent cannot reliably construct a valid call without understanding the handle and value format, or knowing what happens on failure.

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

Parameters1/5

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

Schema coverage is 0%, so the description must explain the parameters. It only implies 'prop' is the name, but gives no guidance on 'handle' (identifier for the object) or 'value' (string representation, but MAXScript properties may expect specific types). This is a significant gap.

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

Purpose5/5

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

The description clearly states the verb 'Set', the resource 'an arbitrary MAXScript property on an object', and the return behavior ('return its new value'). This distinguishes it from siblings like run_maxscript and apply_material, which are about execution and material assignment respectively.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as run_maxscript or add_modifier. The description does not mention typical scenarios, prerequisites, or exclusions, leaving the agent to infer usage.

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

transformB

Set an object's world position, Euler rotation (degrees, XYZ), and/or scale.

ParametersJSON Schema
NameRequiredDescriptionDefault
posNo
rotNo
scaleNo
handleYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states it 'sets' values, implying an overwrite, but does not specify what happens to unspecified parameters (likely unchanged, but not stated), whether the operation is reversible, requires a valid handle, or what error conditions exist. Crucial behavioral details 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.

Conciseness4/5

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

The description is a single sentence, concise and front-loaded with the verb and resource. It uses clear, unambiguous terminology with no superfluous content. Minor structural improvement could be made by explicitly noting that each parameter is optional, but overall it is appropriately concise.

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

Completeness2/5

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 is far from complete. It lacks guidance on parameter formats (array length), handle semantics, behavior when parameters are omitted, and error conditions. Given the tool's mutating nature, an agent needs more context to invoke it correctly.

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

Parameters3/5

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

The description adds meaning to pos, rot, and scale by explaining they are position, Euler rotation (degrees XYZ), and scale. However, it does not specify that arrays must have length 3, nor does it explain the handle parameter. Schema description coverage is 0%, so the description partially compensates but leaves significant gaps in array dimensions and handle semantics.

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

Purpose5/5

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

The description clearly states the verb 'set' and the resource 'object', and enumerates specific attributes: world position, Euler rotation (degrees, XYZ), and scale. It is explicitly transform-specific and distinguishes itself from generic siblings like set_property by naming exact transformations. The 'and/or' phrasing clarifies partial updates.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. Siblings include set_property, which could be used to modify similar attributes, but the description does not mention any exclusions or preferences. The agent is left to infer usage context without explicit direction.

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.

  1. 17 tool updatesv0.1.0
    • First observedadd_modifier
    • First observedapply_material
    • First observedcreate_collision_proxy
    • First observedcreate_object
    • First observeddelete
    • First observedexport
    • First observedget_scene_info
    • First observedget_selection
    • First observedlist_objects
    • First observedping
    • First observedrun_maxscript
    • First observedrun_python
    • First observedsave_scene
    • First observedselect
    • First observedset_keyframe
    • First observedset_property
    • First observedtransform

TDQS

B3.3/5.0

Scored across 17 tools

Disambiguation5/5

Every tool targets a distinct operation in the 3ds Max domain: scene state, materials, animation, scripting, selection, object creation, transformation, properties, deletion, export, and saving. Even the two scripting tools (run_maxscript and run_python) are cleanly separated by language, and set_property vs. transform have clear boundaries (arbitrary vs. spatial transformation). No two tools appear to do the same thing.

Naming Consistency3/5

The majority of tools follow a verb_noun pattern (apply_material, set_keyframe, get_scene_info, create_object, set_property, save_scene, add_modifier). However, several tools use bare verbs (select, transform, delete, export, ping) and two use verb_language (run_maxscript, run_python). This mix of patterns is readable but not fully consistent.

Tool Count4/5

With 17 tools, this is slightly above the ideal 3-15 range but still appropriate for a comprehensive 3ds Max bridge that covers modeling, animation, scene management, and export. The tools are not redundant, and the count reflects the breadth of operations required for a professional DCC integration.

Completeness4/5

The surface covers the core lifecycle: create, inspect, modify, delete, select, save, export, and add modifiers. It also handles materials and keyframes. Minor gaps include lack of a dedicated get_property tool (though run_maxscript can access anything) and no duplicate or group operations. Overall, agents can accomplish most workflows without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
    -
  • A
    license
    A
    quality
    F
    maintenance
    Enables AI assistants to directly control Autodesk 3ds Max through natural language to create models, set materials, adjust lighting, and automate animations. It bridges the Model Context Protocol with 3ds Max via a TCP socket to execute Python and MAXScript commands.
    4
    24
    17
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI-assisted 3D modeling and scene control in Autodesk Maya through natural language commands, supporting object creation, transformation, material application, and more.
    16 npm
    7
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Connect AI agents to Autodesk 3ds Max through the Model Context Protocol, enabling natural language control of scene creation, materials, modifiers, rendering, and plugin workflows.
    237
    MIT