Skip to main content
Glama

Repair a mesh so it can be textured and shipped

normalize_mesh

Repairs 3D meshes for game use by generating missing UVs, welding duplicate vertices, cleaning geometry, naming materials, and exporting a standardized GLB.

Instructions

FREE and fully local: no network call, no credits. Requires a local Blender install (optional dependency; the tool refuses with instructions if absent). Repairs a mesh for downstream use: generates UV coordinates for objects that have NONE — the single most common reason a mesh cannot be textured — welds coincident vertices, dissolves degenerate triangles, gives every material a stable non-empty name, forces opaque blending, and optionally decimates to a triangle budget. Existing UV layouts are never overwritten. Exports GLB and returns a receipt with before/after counts so the change is measurable.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modelPathNoAbsolute path to a local mesh (.glb/.gltf/.obj/.fbx/.stl).
overwriteNoAllow an explicit outputPath to replace an existing file. Off by default: a silent overwrite destroys a result you may already have reviewed. Never permits writing over the input mesh.
assetJobIdNoA downloaded job whose model should be normalized.
outputPathNoWhere to write the GLB. Must end in .glb, or have no extension (in which case .glb is appended) — the exporter rewrites the extension, so a .gltf path would silently become .glb and could land on a different file. Refused if it resolves onto the input mesh, by filesystem identity, so symlinks, hardlinks and case-insensitive volumes all count. Use an ABSOLUTE path: a relative one resolves against the SERVER's working directory, which your MCP client chose, and a leading ~ is not expanded. Naming an existing directory writes a sibling file beside it, not inside it. Defaults to <input>_normalized.glb beside the source.
islandMarginNoUV island padding.
cleanGeometryNoWeld coincident vertices, dissolve degenerate faces, make normals consistent.
mergeDistanceNoWeld threshold in scene units. Larger values will change the silhouette.
timeoutSecondsNo
targetTrianglesNoDecimate down to roughly this many triangles. Omit to leave density alone.
unwrapMissingUVsNoGenerate UVs for objects that have none. Never touches an existing layout.
angleLimitDegreesNoSmart-project angle limit.
normalizeMaterialsNoName every material slot and force opaque blending.
Behavior5/5

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

Annotations carry no safety hints (all false/empty), so the description bears the full burden — and it exceeds it. It discloses the surprising 'forces opaque blending', guarantees 'Existing UV layouts are never overwritten', and repeatedly states it never writes over the input mesh. It also reveals the receipt with before/after counts. No contradiction with annotations (destructiveHint=false is consistent with the no-overwrite guarantee).

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 dense paragraph with no filler — every sentence contributes (dependency, behavior list, safety guarantees, return format). It is front-loaded with the cost model. Slightly long, but the information density justifies the length.

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 12-parameter, zero-required mutation tool with no output schema, the description covers the key decision points: dependency requirements, safety boundaries, and the measurable return receipt. It doesn't walk through every parameter, but the schema handles that; the main omission is explicit routing away from overlapping siblings.

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 92%, so the schema documents nearly all parameters; the baseline of 3 applies and the description need not compensate. It does add a little value (decimation goal, UV generation intent) but leaves parameter-level details to the schema, which is appropriate at this coverage level.

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, unambiguous purpose: 'Repairs a mesh for downstream use' and enumerates the exact operations (UV generation, vertex welding, degenerate-triangle dissolution, material naming, opaque blending, optional decimation). Verb+resource are distinct and clearly differentiated from siblings such as retopologize_asset and texture_existing_asset.

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?

Provides strong context: it calls out that it is free/local with no credits, and flags the Blender optional dependency with refusal behavior. It explains the canonical scenario ('the single most common reason a mesh cannot be textured'). It doesn't name sibling alternatives explicitly with when-not conditions, so differentiation is implied rather than stated.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/theisegoria/game-asset-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server