Skip to main content
Glama
Mesteriis

Plasticity MCP

Plasticity MCP

Plasticity MCP local CAD workflow

Control Plasticity from an MCP client: inspect and measure native CAD geometry, create and edit models, and export the result. An optional Workbench supports model review, dimensional feedback, and print preparation.

Runs locally on macOS Apple Silicon with Plasticity 26.1.3. The MCP server connects to a Plasticity window selected by the user; it cannot run as a standalone cloud CAD service.

CAD workflow

What the server provides

Inspect

Scene state, precise B-rep measurements, and references to bodies, faces, and edges

Model

Native creation and editing with document history, Undo, and Redo

Deliver

Document operations, import/export, and camera screenshots

Review

Optional local Workbench with measurement tables, dimensional feedback, and tablet annotations

The server uses Plasticity's own command factories and document history through a loopback-only Electron CDP endpoint. It does not patch or re-sign the application. MCP geometry inputs use millimeters and degrees; native edits support Plasticity Undo and Redo.

What it provides

  • Native Plasticity scene inspection, precise B-rep measurements, and revision-bound references to bodies, faces, and edges.

  • Native CAD creation and editing, document operations, import/export, and camera screenshots.

  • Agent guidance and workflows for image/sketch-driven design, functional clarification, fasteners, and practical strength screening.

  • Optional Workbench for viewing models and measurement tables, submitting validated dimensional feedback, and tablet annotations on the same local network.

  • Optional Creality Print workflow for slicing and print-job preparation. The agent waits for explicit user confirmation before starting a print.

See the full tool reference, acceptance matrix, and Workbench operations guide for details and current verification status.

Related MCP server: print_prep_studio

Requirements

  • macOS on Apple Silicon

  • Plasticity 26.1.3 installed at /Applications/Plasticity.app

  • Node.js 24 or newer

  • Codex CLI for the Git-backed plugin installation below

This is an early, version-specific project. Live CAD and slicer operations depend on the installed applications and are not covered by mock tests alone. Check the acceptance matrix before relying on a specific operation.

Install and run

git clone https://github.com/Mesteriis/plasticity-mcp.git
cd plasticity-mcp
npm install
npm run start:plasticity
npm run setup:codex

setup:codex adds this GitHub repository as a Codex plugin marketplace and installs the plasticity-mcp plugin from Git. It records this checkout's path in a private file under ~/.plasticity-mcp so the two MCP servers can run the checked-out code and its installed dependencies. No machine-specific paths are committed. Open a new Codex chat after installation.

To use the MCP server without the plugin, register it directly instead:

codex mcp add plasticity -- npm --prefix "$PWD" start

Ask the agent to call plasticity_list_windows, then connect to an explicitly selected window with plasticity_connect.

The default MCP catalog shows the core connect, inspection, change-tracking, and screenshot tools plus plasticity_call. For any other operation, use plasticity_call with toolName: "catalog" and a search query to get its name and input schema, then call it through the same dispatcher. The full catalog remains available with npm run start:full; existing handlers and validation are the same in both modes.

The launcher does not terminate an existing Plasticity process to add MCP access. If it reports that a restart is needed, save your documents, close Plasticity yourself, then rerun the command. CDP listens on loopback only.

Optional Workbench

The Workbench is not required for chat-based use. Start it on the local machine with:

npm run start:workbench

In another terminal on the same Mac, run npm --workspace workbench run open:owner to open an authenticated owner session. The server address alone does not grant owner access.

To make it reachable by a tablet on the same private network, run npm run start:workbench -- --lan; the server prints its local address. Do not expose it to the public internet. Follow the Workbench guide for registration, sharing, backup, and recovery.

Development

npm test
npm run typecheck
npm --prefix workbench test
npm --prefix workbench run typecheck
npm --prefix workbench run build

Live acceptance checks use a real Plasticity session and can mutate a document. Read the corresponding acceptance guide and explicitly select a disposable test document before running them; they are not part of the default test suite.

Safety and scope

  • Mutations are serialized and checked against the current document revision; stale references are rejected.

  • After a timeout or lost connection during a mutation, inspect/reconcile the scene before issuing another change.

  • Workbench dimensional inputs are validated in the browser and again on the server.

  • Print submission and starting a print are separate actions; starting requires explicit user confirmation.

  • This project does not replace Plasticity, provide certified engineering analysis, or guarantee printability or part strength. Strength tools are screening calculations whose assumptions and limitations must be reviewed.

Contributing and support

Read CONTRIBUTING.md before opening a pull request. Report security issues using the private reporting process in SECURITY.md. See SUPPORT.md for bug reports, feature requests, and usage questions. Contributions are released under the MIT License, with copyright attributed to Aleksand Meshchriakov.

Available Tools

11 tools
plasticity_body_infoB
Read-only

Read one body from the current document revision.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, covering the safety profile. The description adds scoping context ("current document revision"), which is useful, but says nothing about behavior when the id is invalid or about the returned payload, so it is only modestly additive over the annotations.

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 with zero filler. For a one-parameter read tool it is appropriately sized and wastes nothing.

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 tool is simple and annotations cover safety, but with no output schema and no parameter descriptions, the description leaves the agent without return-shape or error-behavior context. Adequate but with clear gaps for a body-inspection tool.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. "Read one body" implies the single integer id identifies a body, which is a reasonable but minimal hint; it adds no format, range, or lookup guidance beyond that implication.

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?

"Read one body from the current document revision" states a specific verb (read) and resource (one body), and the singular "one body" implicitly distinguishes it from plasticity_list_bodies. However, it does not name or contrast against any sibling, so the differentiation is left to inference.

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 explicit when-to-use guidance, no mention of alternatives like plasticity_list_bodies or plasticity_select_bodies, and no prerequisites. The agent must infer that this is for retrieving details of a single known body id.

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

plasticity_callPlasticity tool catalog and dispatcherA
Destructive

Browse the bounded catalog of registered Plasticity MCP operations or invoke one by its exact tool name. Use toolName='catalog' with query/offset/limit to read descriptions and JSON input schemas; set toolName to a returned operation name and pass its arguments object to invoke it. Only registered MCP operations are callable; the selected operation's original Zod schema and safety checks are applied. This is not JavaScript execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
toolNameNocatalog
argumentsNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and openWorldHint=true, and the description complements this by clarifying the catalog is 'bounded', only registered MCP operations are callable, the selected operation's original Zod schema and safety checks are applied, and it is 'not JavaScript execution'. That last point usefully closes off a plausible misinterpretation, though it does not describe what an invocation returns.

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?

Three tightly packed sentences with the core operation stated first, then the two usage modes, then the safety framing. No filler, no restatement of the title.

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 dispatcher with a nested free-form 'arguments' object, no output schema, and 0% schema description coverage, the description covers the essential contract: how to browse, how to invoke, and that safety checks are enforced. It could still say what a successful invocation returns or how an invalid toolName is reported.

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?

Schema description coverage is 0%, so the description carries the burden, and it maps the parameters well: toolName selects 'catalog' or an operation name, query/offset/limit drive catalog browsing, and arguments is the target operation's argument object. It adds real meaning over bare type declarations, though limit/offset pagination semantics are only implied by the schema defaults.

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 states a specific verb+resource pair: 'Browse the bounded catalog of registered Plasticity MCP operations or invoke one by its exact tool name.' This cleanly separates the dispatcher role from every sibling in the list, which are the individual operations it would dispatch to.

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 gives concrete usage mechanics: use toolName='catalog' with query/offset/limit to read schemas, then set toolName to a returned operation name and pass its arguments. What is missing is guidance on when to route through this dispatcher versus calling a sibling tool (e.g. plasticity_create_circle) directly, which is the primary decision an agent faces.

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

plasticity_capture_snapshotA
Read-only

Capture an in-memory scene baseline before manual edits. Returns only the snapshot ID, document/revision identity and object counts; use that ID with plasticity_changes_since or plasticity_wait_for_change.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, and the description does not contradict them — the snapshot is an in-memory baseline read of the scene, not a mutation. It adds real value by describing the payload scope ('returns only the snapshot ID, document/revision identity and object counts'), which compensates for the absent output schema.

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 tightly written sentences, with the action and its purpose front-loaded and the follow-up usage trailing. No filler or repetition of the tool name.

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?

With no output schema, the description usefully summarizes what is returned, and annotations cover the safety profile, so an agent has what it needs to call and chain the tool. The only gap is the undocumented 'label' parameter, a minor omission for a 0-required-parameter tool.

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 single optional 'label' parameter has 0% schema description coverage and is never mentioned in the description, so no semantics are added. Impact is limited because the parameter is optional and self-explanatory, which keeps this at the minimum-viable baseline rather than lower.

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?

Specific verb+resource ('Capture an in-memory scene baseline') with an explicit scope and timing condition ('before manual edits'). It also names the downstream consumers (plasticity_changes_since, plasticity_wait_for_change), so an agent immediately understands this tool's role in the workflow.

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?

'before manual edits' states the intended moment to call it, and the second sentence tells the agent what to do with the returned ID, effectively routing to the two companion tools. There is no explicit when-not-to-use or statement of alternatives to this specific tool, but the workflow context is clear.

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

plasticity_changes_sinceA
Read-only

Return a structured diff from a captured scene baseline. Exact changed-body B-Rep descriptors are summarized and paginated (bodyOffset default 0, bodyLimit default 20, maximum 100); follow bodyPagination.nextOffset with expectedRevision set to current.revision. Use plasticity_body_info for detailed topology of selected bodies. The diff also reports sketch Regions, construction planes, materials, visibility, instances, groups, and selection. Check sceneChanged for a reportable scene edit; revisionChanged can be true without a reportable scene diff.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyLimitNo
bodyOffsetNo
snapshotIdYes
expectedRevisionNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description goes further by disclosing pagination mechanics (bodyOffset default 0, bodyLimit default 20, max 100), the optimistic-revision contract, and the subtle sceneChanged vs revisionChanged distinction. That is real behavioral context an agent could not infer from the schema.

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?

Dense but front-loaded: the core purpose leads, then pagination instructions, then the companion tool, then the reporting caveat. Every sentence carries information, though the enumeration of diffed categories is long.

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?

With no output schema, the description does the work of describing the return payload (changed-body B-Rep descriptors plus regions, planes, materials, visibility, instances, groups, selection), which is substantial. Remaining gap is minor: no error/expiry behavior and only implicit explanation of how the baseline snapshot is identified.

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?

Schema description coverage is 0%, so the description must carry parameter meaning, and it does for three of four: bodyOffset/bodyLimit defaults and maximum, and expectedRevision tied to current.revision. snapshotId is only implicitly described as the 'captured scene baseline', leaving its exact format/relationship to capture_snapshot unstated.

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?

States a specific verb and resource ('Return a structured diff from a captured scene baseline') and enumerates the diffed categories, so an agent can distinguish it from sibling inspection tools. It also explicitly routes topology-level detail to plasticity_body_info rather than leaving the boundary implicit.

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?

Gives concrete operating guidance: follow bodyPagination.nextOffset with expectedRevision set to current.revision, and use plasticity_body_info for detailed topology of selected bodies. It also tells the agent to check sceneChanged for a reportable edit. It stops short of stating explicit when-not conditions or the snapshot prerequisites.

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

plasticity_connectA
Destructive

Connect this MCP process to one explicit Plasticity window and return its compact initial scene summary. Body bounds/counts are paginated; use plasticity_body_info for exact topology of a selected body.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetIdYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and openWorldHint=false, so the safety profile is partly covered. The description adds that the initial scene summary is compact and that body bounds/counts are paginated, but never explains what 'connect' does to any existing connection/lifecycle state — which the destructive hint implies matters.

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 tight sentences, front-loaded with the primary action and its result, then the sibling routing. Nothing wasted.

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?

No output schema exists, and the description does supply a return summary and a pagination caveat. But for a connection-establishing tool with a required, undocumented parameter, it omits the target identifier format and any connection lifecycle/replacement behavior.

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

Parameters3/5

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

Schema description coverage is 0% for the single required targetId. The phrase 'one explicit Plasticity window' implies targetId identifies a window, which is some added meaning, but the accepted format (id vs name) and the 'one window at a time' constraint are left unstated.

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?

Specific verb+resource: connecting the MCP process to one explicit Plasticity window, plus the return value (compact initial scene summary). This clearly distinguishes it from siblings like plasticity_list_windows, plasticity_status, or plasticity_call.

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?

Explicitly routes the agent to plasticity_body_info when exact body topology is needed, and warns that body bounds/counts are paginated. It does not, however, say when to prefer connect over plasticity_list_windows or plasticity_status, so the alternative routing is only partial.

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

plasticity_current_selectionA
Read-only

Read bodies, linked instances, approximate reference meshes, groups, faces, edges, regions, and native Wire boundary/control handles currently selected by the user in Plasticity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare a safe, non-destructive, non-open-world read, so the safety profile is covered. The description usefully extends this by enumerating what entity categories are returned, which is the main added value, but it says nothing about ordering, empty-selection behavior, or how the result is structured.

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 dense sentence that front-loads the verb and scope, with the entity list following. Every element earns its place; the only mild cost is the long enumeration, which is nonetheless informative rather than filler.

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?

With no output schema present, the description carries the burden of describing return content and does so by listing the returned entity types. It stops short of describing result structure or the empty-selection case, but for a read-only, zero-parameter tool it is close to sufficient.

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 takes zero parameters, so the schema is trivially complete and there is nothing for the description to compensate for. The baseline for a parameterless tool applies.

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?

States a specific verb ('Read') and a well-scoped resource ('...currently selected by the user'), then enumerates the entity kinds involved (bodies, instances, reference meshes, groups, faces, edges, regions, Wire handles). It is distinctly different from sibling list_*/select_* tools in intent, but it never names a sibling to contrast against, so the differentiation is implicit rather than stated.

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 phrase 'currently selected by the user' implies the operating context (inspect the live CAD selection) but gives no explicit when-to-use, no exclusions, and no pointer to alternative tools such as plasticity_select_bodies or plasticity_list_bodies. An agent can infer the intent but must guess at the boundary cases.

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

plasticity_list_bodiesA
Read-only

List exact native B-Rep body details with topology IDs. Results are paginated (bodyOffset default 0, bodyLimit default 10, maximum 100); follow bodyPagination.nextOffset and pass the previous page's revision as expectedRevision so edits cannot mix pages. Prefer plasticity_body_info when only one body is needed. Cone faces also report native basis radius, axis origin/direction, and semi-angle in radians when Plasticity provides them.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyLimitNo
bodyOffsetNo
expectedRevisionNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare this a safe, non-destructive read, so the description wisely spends its space on behavior annotations cannot express: page size defaults and the 100 cap, the revision-pinning requirement that prevents mixing pages after edits, and the fact that cone faces carry extra basis/axis/semi-angle data. This is exactly the kind of operational context an agent needs before paging.

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?

Four tight sentences with no filler; the purpose and pagination contract are front-loaded before the sibling pointer and the cone-face note. Slightly dense but every sentence carries a distinct fact.

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?

No output schema exists, and the description does a reasonable job describing what comes back (topology IDs, pagination cursor, cone face basis data). It does not fully enumerate the returned body fields, but for a paginated listing tool the critical call-correctness information is present.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry the load and it does: bodyOffset described (default 0) and bodyLimit (default 10, max 100) are both explained in prose, and expectedRevision is given meaning and format ('pass the previous page's revision'), not just a name.

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?

States a specific verb and resource ('List exact native B-Rep body details with topology IDs') and explicitly distinguishes itself from the closest sibling by naming plasticity_body_info and the condition that selects it. An agent can separate this from plasticity_body_info, plasticity_select_bodies, and plasticity_validate_bodies without opening a schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use routing ('Prefer plasticity_body_info when only one body is needed') and mandatory pagination procedure with the nextOffset/expectedRevision contract. It also flags that the revision must be threaded to prevent mixing edits across pages, which is the key usage constraint.

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

plasticity_list_windowsB
Read-only

List Plasticity document windows exposed on loopback CDP.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: discovery happens over loopback CDP, i.e. a local debugging channel rather than geometry data. It does not say what happens when no windows are exposed or whether any connection setup is required.

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?

One front-loaded sentence with zero filler; the resource and its access mechanism are stated immediately and nothing is repeated from the schema or annotations.

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 parameters and no output schema, the description should carry more of the return-shape burden — an agent cannot tell from this text whether entries are window titles, IDs, counts, or process handles, nor what an empty result means. The mechanism (loopback CDP) is a helpful hint but the result contract is left implicit.

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 takes zero parameters, so the description carries no parameter burden; baseline is 4. Nothing in the description conflicts with the empty schema.

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?

States a specific verb ('List') and resource ('Plasticity document windows exposed on loopback CDP'), which an agent can distinguish from the many CAD-operation siblings since none of them enumerate windows. It is clear without being tautological, though it does not contrast itself against any particular sibling.

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, nor any prerequisite or exclusion. Usage is only implied by the name and the presence of a CDP-exposed window list.

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

plasticity_reconcileA
Read-only

Read the document after a timeout or disconnect and allow later mutations without retrying the uncertain command.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, so safety is covered. The description adds genuinely non-annotation context about the timeout/disconnect recovery scenario, but the phrase 'allow later mutations' is mildly confusing for a read-only tool and no return behavior is described.

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 front-loaded sentence leading with the scenario ('after a timeout or disconnect') and the effect. It is tight, though the trailing clause about not retrying the uncertain command reads slightly awkwardly.

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 zero-parameter, no-output-schema tool, the description should make the post-call state clear. It explains the scenario but not what 'reading' yields or how the agent should proceed afterward, leaving a modest gap.

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 takes no parameters, so per the baseline there is nothing for the description to compensate for; schema coverage is 100% on an empty object. No parameter-level ambiguity exists.

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 conveys a specific operation: reading the document after a timeout or disconnect to reconcile uncertain state so later mutations can proceed without retrying. It is more than a restatement of the name, though the exact mechanism (what 'reconcile' does beyond reading) stays somewhat abstract.

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 clearly states the triggering condition (after a timeout or disconnect) and the intended effect (later mutations without retrying the uncertain command), which tells an agent when to reach for it. It does not, however, name any alternative recovery approach or exclusion.

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

plasticity_screenshotA

Save a PNG screenshot of the visible Plasticity renderer viewport to a new file without overwriting. Refuses hidden windows to avoid stale frames.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, and the description usefully adds that the file is written new and never overwritten, plus that hidden windows are rejected to avoid stale frames. That is real behavioral context beyond the annotations, though auth/permission needs and the return value go unmentioned.

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 tight sentences, both of which earn their place: the first gives the action and its non-overwrite guarantee, the second gives the refusal condition. No filler and the core action is front-loaded.

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, the description should ideally indicate what comes back (saved file path, or an error on hidden windows). It covers the write semantics and the refusal case, which is adequate for a one-parameter tool, but leaves the return contract unstated.

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

Parameters3/5

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

Schema coverage is 0% for the single 'path' parameter, so the description carries the burden. It says the target is a 'new file' and will not be overwritten, implying a destination path, but it never states whether the path is absolute or relative or whether the .png extension must be included.

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?

States a specific verb and resource: saving a PNG screenshot of the visible Plasticity renderer viewport. That is far more precise than a sibling like plasticity_capture_snapshot, but the description never contrasts itself with that sibling explicitly, so differentiation is left to inference.

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 reach for this tool versus plasticity_capture_snapshot or plasticity_list_windows. The only condition mentioned ('refuses hidden windows') is a failure mode rather than usage guidance, leaving the agent to guess when this is the right capture tool.

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

plasticity_statusA
Read-only

Read a compact document summary with identity, revision, exact body bounds, topology counts, and Undo/Redo state. Body summaries are paginated with bodyOffset/bodyLimit (default 0/50, maximum 200); follow bodyPagination.nextOffset and pass the prior page's revision as expectedRevision so scene edits cannot mix pages. Use plasticity_body_info for exact face/edge/vertex geometry of one body, or plasticity_list_bodies for paginated topology details.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyLimitNo
bodyOffsetNo
expectedRevisionNo

TDQS

A4.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint/destructiveHint, so safety is covered. The description adds genuinely useful behavior beyond that: pagination defaults and maximums, and the revision-pinning mechanism that prevents scene edits from mixing pages. It stops short of describing error handling or failure modes, but the added context is substantial.

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?

Three dense sentences with zero filler, and the most important information (what it reads, what the payload contains) is front-loaded before the pagination mechanics and the sibling routing.

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?

With no output schema, the description takes on the burden of describing the return content, which it does (identity, revision, body bounds, topology counts, Undo/Redo state), and it fully explains the paginated body-summary behavior. Nothing an agent needs to invoke it correctly is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description must carry the load, and it does: bodyOffset/bodyLimit defaults (0/50) and maximum (200) are given, and expectedRevision is explained in terms of passing the prior page's revision to avoid mixed pages. All three parameters are meaningfully documented.

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 opens with a specific verb ('Read') and resource ('compact document summary') and enumerates the exact payload: identity, revision, exact body bounds, topology counts, and Undo/Redo state. It is clearly distinguishable from siblings, which it names explicitly.

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

Usage Guidelines5/5

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

It states when to reach for alternatives: 'Use plasticity_body_info for exact face/edge/vertex geometry of one body, or plasticity_list_bodies for paginated topology details.' It also describes the correct pagination workflow (follow bodyPagination.nextOffset, pass the prior page's revision as expectedRevision), so an agent knows both when to use it and how.

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. 360 tool updatesv0.2.1
    • Removedplasticity_activate_group
    • Removedplasticity_align_cylindrical_faces
    • Removedplasticity_align_linear_edges
    • Removedplasticity_align_planar_faces
    • Removedplasticity_align_vertices
    • Removedplasticity_analyze_cohesive_interface
    • Removedplasticity_analyze_cone_development
    • Removedplasticity_analyze_design_reference
    • Removedplasticity_analyze_edge_curvature
    • Removedplasticity_analyze_face_draft
    • Removedplasticity_analyze_material_interface_test_curve
    • Removedplasticity_analyze_static_fem
    • Removedplasticity_analyze_strength_task
    • Removedplasticity_analyze_surface_continuity
    • Removedplasticity_boolean
    • Removedplasticity_bridge_curve_vertices
    • Removedplasticity_bridge_curves
    • Removedplasticity_bridge_shell_edges
    • Removedplasticity_bridge_surface
    • Removedplasticity_calculate_dcb_mode_i_energy
    • Removedplasticity_calculate_enf_mode_ii_energy
    • Removedplasticity_calculate_fastener_member_strength
    • Removedplasticity_calculate_heat_set_insert_retention
    • Removedplasticity_calculate_interface_specimen_strengths
    • Removedplasticity_calculate_mmb_mode_i_ii_energy
    • Removedplasticity_calculate_rectangular_strength_from_coupon_data
    • Removedplasticity_calculate_section_strength
    • Removedplasticity_calculate_single_fastener_strength
    • Removedplasticity_calculate_strength
    • Removedplasticity_calculate_threaded_receiver_strength
    • Removedplasticity_calculate_tongue_root_strength
    • Removedplasticity_calculate_tongue_root_strength_from_coupon_data
    • Removedplasticity_calibrate_turon_mixed_mode_law
    • Removedplasticity_cap_sheet_holes
    • Removedplasticity_capabilities
    • Removedplasticity_chamfer
    • Removedplasticity_check_fastener_group_layout
    • Removedplasticity_check_fastener_stack
    • Removedplasticity_check_interference
    • Removedplasticity_cohesive_fem_report
    • Removedplasticity_combine_material_coupon_data
    • Removedplasticity_compare_static_fem_refinement_reports
    • Removedplasticity_construction_history
    • Removedplasticity_construction_journal
    • Removedplasticity_convert_curve_vertices_to_control_points
    • Removedplasticity_create_blind_hole
    • Removedplasticity_create_blind_hole_pattern
    • Removedplasticity_create_body_intersection_curves
    • Removedplasticity_create_body_outlines
    • Removedplasticity_create_box
    • Removedplasticity_create_cantilever_snap_fit
    • Removedplasticity_create_center_arc
    • Removedplasticity_create_circle
    • Removedplasticity_create_cone
    • Removedplasticity_create_cone_development
    • Removedplasticity_create_connector_opening
    • Removedplasticity_create_constrained_surface
    • Removedplasticity_create_construction_plane
    • Removedplasticity_create_counterbore
    • Removedplasticity_create_counterbore_pattern
    • Removedplasticity_create_countersink
    • Removedplasticity_create_countersink_pattern
    • Removedplasticity_create_curves_from_regions
    • Removedplasticity_create_cylinder
    • Removedplasticity_create_dovetail_joint
    • Removedplasticity_create_ellipse
    • Removedplasticity_create_group
    • Removedplasticity_create_heat_set_insert_pocket
    • Removedplasticity_create_heat_set_insert_pocket_pattern
    • Removedplasticity_create_helix
    • Removedplasticity_create_hex_nut_pocket
    • Removedplasticity_create_hex_nut_pocket_pattern
    • Removedplasticity_create_hinge_barrel
    • Removedplasticity_create_instance
    • Removedplasticity_create_locating_pin_pair
    • Removedplasticity_create_locating_pin_pair_pattern
    • Removedplasticity_create_mating_enclosure_joint
    • Removedplasticity_create_nurbs_curve
    • Removedplasticity_create_pipes
    • Removedplasticity_create_polyline
    • Removedplasticity_create_printed_external_thread
    • Removedplasticity_create_printed_hex_nut
    • Removedplasticity_create_printed_hex_pair
    • Removedplasticity_create_printed_hex_screw
    • Removedplasticity_create_printed_thread_calibration_set
    • Removedplasticity_create_radius_measurement
    • Removedplasticity_create_rectangle
    • Removedplasticity_create_regular_polygon
    • Removedplasticity_create_rib
    • Removedplasticity_create_round_vent_array
    • Removedplasticity_create_screw_boss
    • Removedplasticity_create_screw_boss_pattern
    • Removedplasticity_create_section_analysis
    • Removedplasticity_create_slot_profiles
    • Removedplasticity_create_slotted_hole
    • Removedplasticity_create_slotted_hole_pattern
    • Removedplasticity_create_solid_from_sheet
    • Removedplasticity_create_sphere
    • Removedplasticity_create_split_screw_insert_joint
    • Removedplasticity_create_tangent_arc
    • Removedplasticity_create_tangent_circle
    • Removedplasticity_create_text
    • Removedplasticity_create_three_point_arc
    • Removedplasticity_create_three_point_circle
    • Removedplasticity_create_through_hole
    • Removedplasticity_create_through_hole_pattern
    • Removedplasticity_create_tongue_groove_joint
    • Removedplasticity_create_topology_distance_measurement
    • Removedplasticity_create_torus
    • Removedplasticity_create_two_point_circle
    • Removedplasticity_create_vertex_distance_measurement
    • Removedplasticity_curve_pattern
    • Removedplasticity_cut_cable_channel
    • Removedplasticity_cut_printed_internal_thread
    • Removedplasticity_cut_with_faces
    • Removedplasticity_define_datum_axis
    • Removedplasticity_define_datum_point
    • Removedplasticity_deform_bodies_between_faces
    • Removedplasticity_deform_curves_between_faces
    • Removedplasticity_delete
    • Removedplasticity_delete_curve_control_points
    • Removedplasticity_delete_edges
    • Removedplasticity_delete_faces
    • Removedplasticity_delete_instances
    • Removedplasticity_delete_measurement
    • Removedplasticity_delete_named_selection
    • Removedplasticity_delete_reference_meshes
    • Removedplasticity_delete_section_analysis
    • Removedplasticity_design_reference_request
    • Removedplasticity_diagnose
    • Removedplasticity_dissolve_faces
    • Removedplasticity_dissolve_groups
    • Removedplasticity_distribute_fastener_group_load
    • Removedplasticity_download_and_import_parasolid
    • Removedplasticity_download_and_import_reference_3mf
    • Removedplasticity_download_and_import_reference_mesh
    • Removedplasticity_download_and_import_step
    • Removedplasticity_draft_faces
    • Removedplasticity_duplicate_bodies
    • Removedplasticity_duplicate_curves
    • Removedplasticity_evaluate_curve_segments
    • Removedplasticity_export_3mf
    • Removedplasticity_export_hiddenline_svg
    • Removedplasticity_export_obj
    • Removedplasticity_export_parasolid
    • Removedplasticity_export_step
    • Removedplasticity_export_stl
    • Removedplasticity_export_svg
    • Removedplasticity_extend_curve_endpoints
    • Removedplasticity_extend_sheet_edges
    • Removedplasticity_extract_edges
    • Removedplasticity_extract_faces
    • Removedplasticity_extrude_faces
    • Removedplasticity_extrude_profile
    • Removedplasticity_extrude_regions
    • Removedplasticity_fastener_group_plate_bearing_report
    • Removedplasticity_fillet
    • Removedplasticity_fillet_curve_vertices
    • Removedplasticity_find_edges
    • Removedplasticity_find_faces
    • Removedplasticity_get_cad_reference_import
    • Removedplasticity_get_step_import
    • Removedplasticity_hollow_faces
    • Removedplasticity_hollow_solids
    • Removedplasticity_import_dcb_mode_i_energy_csv
    • Removedplasticity_import_enf_mode_ii_energy_csv
    • Removedplasticity_import_interface_fracture_csv
    • Removedplasticity_import_interface_tensile_csv
    • Removedplasticity_import_mmb_mode_i_ii_energy_csv
    • Removedplasticity_import_parasolid
    • Removedplasticity_import_reference_3mf
    • Removedplasticity_import_reference_mesh
    • Removedplasticity_import_step
    • Removedplasticity_import_svg
    • Removedplasticity_imprint_bodies
    • Removedplasticity_imprint_curves_on_body
    • Removedplasticity_insert_curve_knot
    • Removedplasticity_insert_isoparam_edges
    • Removedplasticity_insert_sheet
    • Removedplasticity_inspect_arbitrary_section
    • Removedplasticity_inspect_arbitrary_sections
    • Removedplasticity_inspect_curve_planarity
    • Removedplasticity_inspect_curve_structure
    • Removedplasticity_inspect_fastener_group
    • Removedplasticity_inspect_integral_rectangular_plate
    • Removedplasticity_inspect_planar_section
    • Removedplasticity_inspect_rectangular_member
    • Removedplasticity_inspect_single_fastener_plate
    • Removedplasticity_inspect_surface_structure
    • Removedplasticity_inspect_tongue_root_section
    • Removedplasticity_join_curves
    • Removedplasticity_join_sheets
    • Removedplasticity_list_appearance_materials
    • Removedplasticity_list_cad_reference_imports
    • Removedplasticity_list_construction_geometry
    • Removedplasticity_list_curve_control_points
    • Removedplasticity_list_curve_directions
    • Removedplasticity_list_curve_endpoints
    • Removedplasticity_list_curve_fragments
    • Removedplasticity_list_curve_intersections
    • Removedplasticity_list_curve_vertices
    • Removedplasticity_list_dcb_mode_i_energy_tests
    • Removedplasticity_list_enf_mode_ii_energy_tests
    • Removedplasticity_list_fastener_group_tests
    • Removedplasticity_list_groups
    • Removedplasticity_list_instances
    • Removedplasticity_list_material_coupon_data
    • Removedplasticity_list_material_interface_tests
    • Removedplasticity_list_measurements
    • Removedplasticity_list_mmb_mode_i_ii_energy_tests
    • Removedplasticity_list_named_selections
    • Removedplasticity_list_printed_thread_qualifications
    • Removedplasticity_list_reference_assets
    • Removedplasticity_list_reference_meshes
    • Removedplasticity_list_regions
    • Removedplasticity_list_section_analyses
    • Removedplasticity_list_step_imports
    • Removedplasticity_loft_curves
    • Removedplasticity_loft_faces
    • Removedplasticity_loft_regions
    • Removedplasticity_match_dcb_mode_i_energy_test
    • Removedplasticity_match_enf_mode_ii_energy_test
    • Removedplasticity_match_faces
    • Removedplasticity_match_fastener_group_test
    • Removedplasticity_match_material_coupon_data
    • Removedplasticity_match_material_interface_test
    • Removedplasticity_match_mmb_mode_i_ii_energy_test
    • Removedplasticity_match_printed_thread_qualification
    • Removedplasticity_measure
    • Removedplasticity_measure_face_properties
    • Removedplasticity_measure_fastener_grip_stack
    • Removedplasticity_measure_linear_edges
    • Removedplasticity_measure_nonparallel_planar_polygon_clearance
    • Removedplasticity_measure_parallel_planar_face_clearance
    • Removedplasticity_measure_planar_faces
    • Removedplasticity_measure_point_distance
    • Removedplasticity_measure_point_to_circular_edge
    • Removedplasticity_measure_point_to_curved_edge
    • Removedplasticity_measure_point_to_linear_edge
    • Removedplasticity_measure_point_to_planar_face
    • Removedplasticity_measure_solid_properties
    • Removedplasticity_mirror
    • Removedplasticity_move
    • Removedplasticity_move_curve_control_points
    • Removedplasticity_move_edges
    • Removedplasticity_move_faces
    • Removedplasticity_move_instances
    • Removedplasticity_move_reference_meshes
    • Removedplasticity_move_to_group
    • Removedplasticity_offset_edges
    • Removedplasticity_offset_face_loops
    • Removedplasticity_offset_faces
    • Removedplasticity_offset_planar_curves
    • Removedplasticity_offset_regions
    • Removedplasticity_offset_vertices
    • Removedplasticity_open_document
    • Removedplasticity_orient_bodies_for_print
    • Removedplasticity_patch_closed_wires
    • Removedplasticity_patch_regions
    • Removedplasticity_patch_sheet_hole
    • Removedplasticity_patch_solid_edge_loops
    • Removedplasticity_plan_cohesive_layer_planes
    • Removedplasticity_plan_single_material_strength_tests
    • Removedplasticity_planarize_curves
    • Removedplasticity_project_curve_pair
    • Removedplasticity_project_curves_onto_body
    • Removedplasticity_radial_face_pattern
    • Removedplasticity_radial_pattern
    • Removedplasticity_raise_curve_degree
    • Removedplasticity_raise_surface_degree
    • Removedplasticity_read_dcb_mode_i_energy_test
    • Removedplasticity_read_enf_mode_ii_energy_test
    • Removedplasticity_read_mmb_mode_i_ii_energy_test
    • Removedplasticity_realize_instances
    • Removedplasticity_rebuild_curves
    • Removedplasticity_rebuild_face
    • Removedplasticity_record_dcb_mode_i_energy_test
    • Removedplasticity_record_enf_mode_ii_energy_test
    • Removedplasticity_record_fastener_group_test
    • Removedplasticity_record_material_coupon_data
    • Removedplasticity_record_material_interface_test
    • Removedplasticity_record_mmb_mode_i_ii_energy_test
    • Removedplasticity_record_printed_thread_qualification
    • Removedplasticity_rectangular_face_pattern
    • Removedplasticity_rectangular_pattern
    • Removedplasticity_redo
    • Removedplasticity_reference_search_status
    • Removedplasticity_refillet_faces
    • Removedplasticity_refresh_datum
    • Removedplasticity_remove_construction_plane
    • Removedplasticity_remove_fillets
    • Removedplasticity_rename
    • Removedplasticity_rename_group
    • Removedplasticity_rename_reference_mesh
    • Removedplasticity_resolve_fastener_designation
    • Removedplasticity_reverse_curves
    • Removedplasticity_reverse_sheets
    • Removedplasticity_revolve_profile
    • Removedplasticity_rotate
    • Removedplasticity_rotate_curve_control_points
    • Removedplasticity_rotate_faces
    • Removedplasticity_rotate_instances
    • Removedplasticity_rotate_reference_meshes
    • Removedplasticity_save_copy
    • Removedplasticity_save_named_selection
    • Removedplasticity_scale
    • Removedplasticity_scale_curve_control_points
    • Removedplasticity_scale_faces
    • Removedplasticity_scale_instances
    • Removedplasticity_scale_reference_meshes
    • Removedplasticity_scan_arbitrary_sections
    • Removedplasticity_scan_section_strength
    • Removedplasticity_search_product_references
    • Removedplasticity_section_strength_scan_report
    • Removedplasticity_select_bodies
    • Removedplasticity_select_curve_control_points
    • Removedplasticity_select_curves
    • Removedplasticity_select_edges
    • Removedplasticity_select_faces
    • Removedplasticity_select_nodes
    • Removedplasticity_select_reference_meshes
    • Removedplasticity_set_appearance_material
    • Removedplasticity_set_block_dimensions
    • Removedplasticity_set_locked
    • Removedplasticity_set_radius_dimension
    • Removedplasticity_set_rectangle_dimensions
    • Removedplasticity_set_view
    • Removedplasticity_set_visibility
    • Removedplasticity_set_workplane
    • Removedplasticity_size_member
    • Removedplasticity_slide_curve_control_points
    • Removedplasticity_split_curve_segment
    • Removedplasticity_split_solid_by_plane
    • Removedplasticity_split_solid_by_planes
    • Removedplasticity_split_solid_to_build_volume
    • Removedplasticity_static_fem_report
    • Removedplasticity_strength_methods
    • Removedplasticity_strength_report
    • Removedplasticity_strength_request
    • Removedplasticity_subdivide_curves
    • Removedplasticity_sweep_regions
    • Removedplasticity_thicken_faces
    • Removedplasticity_thicken_sheets
    • Removedplasticity_trim_curve_fragments
    • Removedplasticity_undo
    • Removedplasticity_unjoin_curves
    • Removedplasticity_unjoin_faces
    • Removedplasticity_unjoin_shells
    • Removedplasticity_untrim_faces
    • Removedplasticity_unwrap_face
    • Removedplasticity_validate_bodies
    • Removedplasticity_verify_fastener_group_load
    • Removedplasticity_verify_fastener_group_plate_bearing
    • Removedplasticity_verify_integral_plate_strength
    • Removedplasticity_verify_member_strength
    • Removedplasticity_verify_section_strength
    • Removedplasticity_verify_single_fastener_strength
    • Removedplasticity_verify_tongue_root_strength
    • Removedplasticity_verify_tongue_root_strength_from_coupon_data
    • Removedplasticity_wait_for_change
  2. 371 tool updatesv0.2.0
    • First observedplasticity_activate_group
    • First observedplasticity_align_cylindrical_faces
    • First observedplasticity_align_linear_edges
    • First observedplasticity_align_planar_faces
    • First observedplasticity_align_vertices
    • First observedplasticity_analyze_cohesive_interface
    • First observedplasticity_analyze_cone_development
    • First observedplasticity_analyze_design_reference
    • First observedplasticity_analyze_edge_curvature
    • First observedplasticity_analyze_face_draft
    • First observedplasticity_analyze_material_interface_test_curve
    • First observedplasticity_analyze_static_fem
    • First observedplasticity_analyze_strength_task
    • First observedplasticity_analyze_surface_continuity
    • First observedplasticity_body_info
    • First observedplasticity_boolean
    • First observedplasticity_bridge_curve_vertices
    • First observedplasticity_bridge_curves
    • First observedplasticity_bridge_shell_edges
    • First observedplasticity_bridge_surface
    • First observedplasticity_calculate_dcb_mode_i_energy
    • First observedplasticity_calculate_enf_mode_ii_energy
    • First observedplasticity_calculate_fastener_member_strength
    • First observedplasticity_calculate_heat_set_insert_retention
    • First observedplasticity_calculate_interface_specimen_strengths
    • First observedplasticity_calculate_mmb_mode_i_ii_energy
    • First observedplasticity_calculate_rectangular_strength_from_coupon_data
    • First observedplasticity_calculate_section_strength
    • First observedplasticity_calculate_single_fastener_strength
    • First observedplasticity_calculate_strength
    • First observedplasticity_calculate_threaded_receiver_strength
    • First observedplasticity_calculate_tongue_root_strength
    • First observedplasticity_calculate_tongue_root_strength_from_coupon_data
    • First observedplasticity_calibrate_turon_mixed_mode_law
    • First observedplasticity_call
    • First observedplasticity_cap_sheet_holes
    • First observedplasticity_capabilities
    • First observedplasticity_capture_snapshot
    • First observedplasticity_chamfer
    • First observedplasticity_changes_since
    • First observedplasticity_check_fastener_group_layout
    • First observedplasticity_check_fastener_stack
    • First observedplasticity_check_interference
    • First observedplasticity_cohesive_fem_report
    • First observedplasticity_combine_material_coupon_data
    • First observedplasticity_compare_static_fem_refinement_reports
    • First observedplasticity_connect
    • First observedplasticity_construction_history
    • First observedplasticity_construction_journal
    • First observedplasticity_convert_curve_vertices_to_control_points
    • First observedplasticity_create_blind_hole
    • First observedplasticity_create_blind_hole_pattern
    • First observedplasticity_create_body_intersection_curves
    • First observedplasticity_create_body_outlines
    • First observedplasticity_create_box
    • First observedplasticity_create_cantilever_snap_fit
    • First observedplasticity_create_center_arc
    • First observedplasticity_create_circle
    • First observedplasticity_create_cone
    • First observedplasticity_create_cone_development
    • First observedplasticity_create_connector_opening
    • First observedplasticity_create_constrained_surface
    • First observedplasticity_create_construction_plane
    • First observedplasticity_create_counterbore
    • First observedplasticity_create_counterbore_pattern
    • First observedplasticity_create_countersink
    • First observedplasticity_create_countersink_pattern
    • First observedplasticity_create_curves_from_regions
    • First observedplasticity_create_cylinder
    • First observedplasticity_create_dovetail_joint
    • First observedplasticity_create_ellipse
    • First observedplasticity_create_group
    • First observedplasticity_create_heat_set_insert_pocket
    • First observedplasticity_create_heat_set_insert_pocket_pattern
    • First observedplasticity_create_helix
    • First observedplasticity_create_hex_nut_pocket
    • First observedplasticity_create_hex_nut_pocket_pattern
    • First observedplasticity_create_hinge_barrel
    • First observedplasticity_create_instance
    • First observedplasticity_create_locating_pin_pair
    • First observedplasticity_create_locating_pin_pair_pattern
    • First observedplasticity_create_mating_enclosure_joint
    • First observedplasticity_create_nurbs_curve
    • First observedplasticity_create_pipes
    • First observedplasticity_create_polyline
    • First observedplasticity_create_printed_external_thread
    • First observedplasticity_create_printed_hex_nut
    • First observedplasticity_create_printed_hex_pair
    • First observedplasticity_create_printed_hex_screw
    • First observedplasticity_create_printed_thread_calibration_set
    • First observedplasticity_create_radius_measurement
    • First observedplasticity_create_rectangle
    • First observedplasticity_create_regular_polygon
    • First observedplasticity_create_rib
    • First observedplasticity_create_round_vent_array
    • First observedplasticity_create_screw_boss
    • First observedplasticity_create_screw_boss_pattern
    • First observedplasticity_create_section_analysis
    • First observedplasticity_create_slot_profiles
    • First observedplasticity_create_slotted_hole
    • First observedplasticity_create_slotted_hole_pattern
    • First observedplasticity_create_solid_from_sheet
    • First observedplasticity_create_sphere
    • First observedplasticity_create_split_screw_insert_joint
    • First observedplasticity_create_tangent_arc
    • First observedplasticity_create_tangent_circle
    • First observedplasticity_create_text
    • First observedplasticity_create_three_point_arc
    • First observedplasticity_create_three_point_circle
    • First observedplasticity_create_through_hole
    • First observedplasticity_create_through_hole_pattern
    • First observedplasticity_create_tongue_groove_joint
    • First observedplasticity_create_topology_distance_measurement
    • First observedplasticity_create_torus
    • First observedplasticity_create_two_point_circle
    • First observedplasticity_create_vertex_distance_measurement
    • First observedplasticity_current_selection
    • First observedplasticity_curve_pattern
    • First observedplasticity_cut_cable_channel
    • First observedplasticity_cut_printed_internal_thread
    • First observedplasticity_cut_with_faces
    • First observedplasticity_define_datum_axis
    • First observedplasticity_define_datum_point
    • First observedplasticity_deform_bodies_between_faces
    • First observedplasticity_deform_curves_between_faces
    • First observedplasticity_delete
    • First observedplasticity_delete_curve_control_points
    • First observedplasticity_delete_edges
    • First observedplasticity_delete_faces
    • First observedplasticity_delete_instances
    • First observedplasticity_delete_measurement
    • First observedplasticity_delete_named_selection
    • First observedplasticity_delete_reference_meshes
    • First observedplasticity_delete_section_analysis
    • First observedplasticity_design_reference_request
    • First observedplasticity_diagnose
    • First observedplasticity_dissolve_faces
    • First observedplasticity_dissolve_groups
    • First observedplasticity_distribute_fastener_group_load
    • First observedplasticity_download_and_import_parasolid
    • First observedplasticity_download_and_import_reference_3mf
    • First observedplasticity_download_and_import_reference_mesh
    • First observedplasticity_download_and_import_step
    • First observedplasticity_draft_faces
    • First observedplasticity_duplicate_bodies
    • First observedplasticity_duplicate_curves
    • First observedplasticity_evaluate_curve_segments
    • First observedplasticity_export_3mf
    • First observedplasticity_export_hiddenline_svg
    • First observedplasticity_export_obj
    • First observedplasticity_export_parasolid
    • First observedplasticity_export_step
    • First observedplasticity_export_stl
    • First observedplasticity_export_svg
    • First observedplasticity_extend_curve_endpoints
    • First observedplasticity_extend_sheet_edges
    • First observedplasticity_extract_edges
    • First observedplasticity_extract_faces
    • First observedplasticity_extrude_faces
    • First observedplasticity_extrude_profile
    • First observedplasticity_extrude_regions
    • First observedplasticity_fastener_group_plate_bearing_report
    • First observedplasticity_fillet
    • First observedplasticity_fillet_curve_vertices
    • First observedplasticity_find_edges
    • First observedplasticity_find_faces
    • First observedplasticity_get_cad_reference_import
    • First observedplasticity_get_step_import
    • First observedplasticity_hollow_faces
    • First observedplasticity_hollow_solids
    • First observedplasticity_import_dcb_mode_i_energy_csv
    • First observedplasticity_import_enf_mode_ii_energy_csv
    • First observedplasticity_import_interface_fracture_csv
    • First observedplasticity_import_interface_tensile_csv
    • First observedplasticity_import_mmb_mode_i_ii_energy_csv
    • First observedplasticity_import_parasolid
    • First observedplasticity_import_reference_3mf
    • First observedplasticity_import_reference_mesh
    • First observedplasticity_import_step
    • First observedplasticity_import_svg
    • First observedplasticity_imprint_bodies
    • First observedplasticity_imprint_curves_on_body
    • First observedplasticity_insert_curve_knot
    • First observedplasticity_insert_isoparam_edges
    • First observedplasticity_insert_sheet
    • First observedplasticity_inspect_arbitrary_section
    • First observedplasticity_inspect_arbitrary_sections
    • First observedplasticity_inspect_curve_planarity
    • First observedplasticity_inspect_curve_structure
    • First observedplasticity_inspect_fastener_group
    • First observedplasticity_inspect_integral_rectangular_plate
    • First observedplasticity_inspect_planar_section
    • First observedplasticity_inspect_rectangular_member
    • First observedplasticity_inspect_single_fastener_plate
    • First observedplasticity_inspect_surface_structure
    • First observedplasticity_inspect_tongue_root_section
    • First observedplasticity_join_curves
    • First observedplasticity_join_sheets
    • First observedplasticity_list_appearance_materials
    • First observedplasticity_list_bodies
    • First observedplasticity_list_cad_reference_imports
    • First observedplasticity_list_construction_geometry
    • First observedplasticity_list_curve_control_points
    • First observedplasticity_list_curve_directions
    • First observedplasticity_list_curve_endpoints
    • First observedplasticity_list_curve_fragments
    • First observedplasticity_list_curve_intersections
    • First observedplasticity_list_curve_vertices
    • First observedplasticity_list_dcb_mode_i_energy_tests
    • First observedplasticity_list_enf_mode_ii_energy_tests
    • First observedplasticity_list_fastener_group_tests
    • First observedplasticity_list_groups
    • First observedplasticity_list_instances
    • First observedplasticity_list_material_coupon_data
    • First observedplasticity_list_material_interface_tests
    • First observedplasticity_list_measurements
    • First observedplasticity_list_mmb_mode_i_ii_energy_tests
    • First observedplasticity_list_named_selections
    • First observedplasticity_list_printed_thread_qualifications
    • First observedplasticity_list_reference_assets
    • First observedplasticity_list_reference_meshes
    • First observedplasticity_list_regions
    • First observedplasticity_list_section_analyses
    • First observedplasticity_list_step_imports
    • First observedplasticity_list_windows
    • First observedplasticity_loft_curves
    • First observedplasticity_loft_faces
    • First observedplasticity_loft_regions
    • First observedplasticity_match_dcb_mode_i_energy_test
    • First observedplasticity_match_enf_mode_ii_energy_test
    • First observedplasticity_match_faces
    • First observedplasticity_match_fastener_group_test
    • First observedplasticity_match_material_coupon_data
    • First observedplasticity_match_material_interface_test
    • First observedplasticity_match_mmb_mode_i_ii_energy_test
    • First observedplasticity_match_printed_thread_qualification
    • First observedplasticity_measure
    • First observedplasticity_measure_face_properties
    • First observedplasticity_measure_fastener_grip_stack
    • First observedplasticity_measure_linear_edges
    • First observedplasticity_measure_nonparallel_planar_polygon_clearance
    • First observedplasticity_measure_parallel_planar_face_clearance
    • First observedplasticity_measure_planar_faces
    • First observedplasticity_measure_point_distance
    • First observedplasticity_measure_point_to_circular_edge
    • First observedplasticity_measure_point_to_curved_edge
    • First observedplasticity_measure_point_to_linear_edge
    • First observedplasticity_measure_point_to_planar_face
    • First observedplasticity_measure_solid_properties
    • First observedplasticity_mirror
    • First observedplasticity_move
    • First observedplasticity_move_curve_control_points
    • First observedplasticity_move_edges
    • First observedplasticity_move_faces
    • First observedplasticity_move_instances
    • First observedplasticity_move_reference_meshes
    • First observedplasticity_move_to_group
    • First observedplasticity_offset_edges
    • First observedplasticity_offset_face_loops
    • First observedplasticity_offset_faces
    • First observedplasticity_offset_planar_curves
    • First observedplasticity_offset_regions
    • First observedplasticity_offset_vertices
    • First observedplasticity_open_document
    • First observedplasticity_orient_bodies_for_print
    • First observedplasticity_patch_closed_wires
    • First observedplasticity_patch_regions
    • First observedplasticity_patch_sheet_hole
    • First observedplasticity_patch_solid_edge_loops
    • First observedplasticity_plan_cohesive_layer_planes
    • First observedplasticity_plan_single_material_strength_tests
    • First observedplasticity_planarize_curves
    • First observedplasticity_project_curve_pair
    • First observedplasticity_project_curves_onto_body
    • First observedplasticity_radial_face_pattern
    • First observedplasticity_radial_pattern
    • First observedplasticity_raise_curve_degree
    • First observedplasticity_raise_surface_degree
    • First observedplasticity_read_dcb_mode_i_energy_test
    • First observedplasticity_read_enf_mode_ii_energy_test
    • First observedplasticity_read_mmb_mode_i_ii_energy_test
    • First observedplasticity_realize_instances
    • First observedplasticity_rebuild_curves
    • First observedplasticity_rebuild_face
    • First observedplasticity_reconcile
    • First observedplasticity_record_dcb_mode_i_energy_test
    • First observedplasticity_record_enf_mode_ii_energy_test
    • First observedplasticity_record_fastener_group_test
    • First observedplasticity_record_material_coupon_data
    • First observedplasticity_record_material_interface_test
    • First observedplasticity_record_mmb_mode_i_ii_energy_test
    • First observedplasticity_record_printed_thread_qualification
    • First observedplasticity_rectangular_face_pattern
    • First observedplasticity_rectangular_pattern
    • First observedplasticity_redo
    • First observedplasticity_reference_search_status
    • First observedplasticity_refillet_faces
    • First observedplasticity_refresh_datum
    • First observedplasticity_remove_construction_plane
    • First observedplasticity_remove_fillets
    • First observedplasticity_rename
    • First observedplasticity_rename_group
    • First observedplasticity_rename_reference_mesh
    • First observedplasticity_resolve_fastener_designation
    • First observedplasticity_reverse_curves
    • First observedplasticity_reverse_sheets
    • First observedplasticity_revolve_profile
    • First observedplasticity_rotate
    • First observedplasticity_rotate_curve_control_points
    • First observedplasticity_rotate_faces
    • First observedplasticity_rotate_instances
    • First observedplasticity_rotate_reference_meshes
    • First observedplasticity_save_copy
    • First observedplasticity_save_named_selection
    • First observedplasticity_scale
    • First observedplasticity_scale_curve_control_points
    • First observedplasticity_scale_faces
    • First observedplasticity_scale_instances
    • First observedplasticity_scale_reference_meshes
    • First observedplasticity_scan_arbitrary_sections
    • First observedplasticity_scan_section_strength
    • First observedplasticity_screenshot
    • First observedplasticity_search_product_references
    • First observedplasticity_section_strength_scan_report
    • First observedplasticity_select_bodies
    • First observedplasticity_select_curve_control_points
    • First observedplasticity_select_curves
    • First observedplasticity_select_edges
    • First observedplasticity_select_faces
    • First observedplasticity_select_nodes
    • First observedplasticity_select_reference_meshes
    • First observedplasticity_set_appearance_material
    • First observedplasticity_set_block_dimensions
    • First observedplasticity_set_locked
    • First observedplasticity_set_radius_dimension
    • First observedplasticity_set_rectangle_dimensions
    • First observedplasticity_set_view
    • First observedplasticity_set_visibility
    • First observedplasticity_set_workplane
    • First observedplasticity_size_member
    • First observedplasticity_slide_curve_control_points
    • First observedplasticity_split_curve_segment
    • First observedplasticity_split_solid_by_plane
    • First observedplasticity_split_solid_by_planes
    • First observedplasticity_split_solid_to_build_volume
    • First observedplasticity_static_fem_report
    • First observedplasticity_status
    • First observedplasticity_strength_methods
    • First observedplasticity_strength_report
    • First observedplasticity_strength_request
    • First observedplasticity_subdivide_curves
    • First observedplasticity_sweep_regions
    • First observedplasticity_thicken_faces
    • First observedplasticity_thicken_sheets
    • First observedplasticity_trim_curve_fragments
    • First observedplasticity_undo
    • First observedplasticity_unjoin_curves
    • First observedplasticity_unjoin_faces
    • First observedplasticity_unjoin_shells
    • First observedplasticity_untrim_faces
    • First observedplasticity_unwrap_face
    • First observedplasticity_validate_bodies
    • First observedplasticity_verify_fastener_group_load
    • First observedplasticity_verify_fastener_group_plate_bearing
    • First observedplasticity_verify_integral_plate_strength
    • First observedplasticity_verify_member_strength
    • First observedplasticity_verify_section_strength
    • First observedplasticity_verify_single_fastener_strength
    • First observedplasticity_verify_tongue_root_strength
    • First observedplasticity_verify_tongue_root_strength_from_coupon_data
    • First observedplasticity_wait_for_change

TDQS

A3.8/5.0

Scored across 11 tools

Disambiguation3/5

Many tools have overlapping read purposes: plasticity_status, plasticity_list_bodies, plasticity_body_info, plasticity_current_selection, and plasticity_changes_since all return document/body info. Descriptions provide guidance to distinguish them, but an agent could easily pick the wrong read tool. plasticity_call adds a meta-tool that can invoke other operations, further blurring boundaries.

Naming Consistency4/5

All tools use the plasticity_ prefix and mostly follow verb_noun or clear noun patterns (list_windows, connect, status, capture_snapshot, changes_since, list_bodies, body_info, reconcile, screenshot, call). Minor deviations like 'status' and 'connect' being verb-only, and 'call' being a generic meta-verb, but overall consistent.

Tool Count5/5

11 tools is well within the 3-15 sweet spot and the set appears scoped to a 3D modeling session lifecycle plus a generic operation invoker. Each tool covers a distinct phase (connect, snapshot, diff, inspect, reconcile) without obvious redundancy in count.

Completeness4/5

The surface covers connection, status, selection, snapshots, diffs, body listing, body info, screenshot, and a generic call mechanism. It lacks explicit mutation tools, but plasticity_call may invoke registered operations, and reconcile handles uncertain mutations, so core lifecycle is mostly covered with a minor gap around direct mutation discovery.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Give your AI assistant the ability to inspect, measure, and compare 3D CAD models by dropping in a STEP file and asking engineering questions. Runs entirely on your machine with no cloud, no CAD license, and no setup.
    50 npm
    6
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables people and general-purpose AI agents to inspect, model, edit, verify, and export local 3D projects through MCP tools, including print preparation, without requiring a hosted 3D service key.
    10
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    Enables an agent to define parameters in millimeters, build and validate parts or assemblies in a live Autodesk Fusion session, then export STEP, STL, 3MF, and F3D files. It also supports inspection and verification workflows before and after generated geometry is produced.
    33
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to design, modify, and verify exact B-rep 3D CAD models by running build123d scripts on an OpenCascade kernel, with live three.js preview, collision and FDM printability checks, text-based spatial perception, user notes/sketch annotations, version history, and one-click export to OrcaSlicer.
    1
    MIT