Skip to main content
Glama

Repair broken meshes in a project

repair_project
Destructive

Find every imported mesh in one of your projects that is not watertight, and weld cracks, close holes and fix face directions. A non-watertight mesh cannot take part in a boolean — the evaluator degrades it to nothing — so a model built on one comes back missing a part with no error anywhere. Run this when a project contains an import and the geometry is not behaving. Pass dryRun to see what is broken without changing it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dryRunNoReport what is broken and change nothing (default false).
nodeIdNoRepair only this mesh node. Omit to repair every broken one.
versionNoThe `version` get_project reported. Required only once a repair will actually write — a dry run, a project with no imported meshes, and one whose meshes are already sound all answer without it.
projectIdYesThe project whose imported meshes to check and repair.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / projectId / description
      Added value: +"The project whose imported meshes to check and repair."
  2. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is known. The description adds valuable behavioral context beyond that: it explains the silent-failure mode of non-watertight meshes, the specific repair actions, and the dryRun parameter that lets the caller avoid changes. It does not exhaustively describe all side effects (e.g., whether original mesh data is overwritten), but it meaningfully supplements the annotations without contradicting them.

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 three sentences and every sentence earns its place: the first states what it does, the second explains the practical consequence of broken meshes (why it matters), and the third gives a direct usage directive plus a pointer to dryRun. It is front-loaded with the primary action and has zero filler or redundant restatement of the title.

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 destructive, four-parameter tool with no output schema, the description covers the core trigger, action, and dryRun behavior. However, it does not describe what the tool returns after a non-dryRun repair (e.g., a report, a list of repaired node IDs, or a job reference) nor mention any asynchronous behavior or version requirement, beyond what the schema already states. An agent cannot fully predict the outcome of a successful repair, which is a genuine gap given the absence of an 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 input schema has 100% description coverage, so the baseline is 3. The description goes beyond the schema by explaining the purpose of dryRun ('Pass `dryRun` to see what is broken without changing it') and implicitly clarifying that projectId identifies the project whose meshes are checked. It also reinforces the meaning of nodeId through the phrase 'every imported mesh' vs. a single node, though the schema already handles that. This extra semantic layer justifies a 4.

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+resource: 'Find every imported mesh in one of your projects that is not watertight, and weld cracks, close holes and fix face directions.' This clearly states the action and scope, and the repair behavior (welding, closing holes, fixing face directions) makes it unmistakably distinct from sibling tools like check_interference or edit_nodes. The title and description align, and an agent can tell exactly what the tool does 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 Guidelines4/5

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

The description explicitly says 'Run this when a project contains an import and the geometry is not behaving,' providing clear conditions for use. It also explains the underlying motivation (non-watertight meshes silently break booleans) and mentions the dryRun option to preview changes. However, it does not name alternative tools or explicitly state when not to use it, such as for projects without imports, so it falls just short of a full 5.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources