Skip to main content
Glama

apply_texture

Apply a height map image to an STL/OBJ mesh, displace its surface to create relief or engraving, and export the result as a new STL or 3MF file.

Instructions

Subdivide a local STL/OBJ, displace its surface using a PNG/JPEG/WebP height map, optionally decimate, and export a new STL/3MF. Use after inspect_model. Preserves input coordinates. Never overwrites files. Negative amplitude engraves. No network downloads or browser automation.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
invertNoInvert image brightness before displacement.
offset_uNoOffset in texture cycles.
offset_vNo
symmetricNoCenter brightness at 0.5; displacement range is +/- half amplitude.
model_pathYesAbsolute path or path relative to the configured BUMPMESH_ROOT.
projectionNotriplanar
output_pathYesNew .stl or .3mf file inside BUMPMESH_ROOT. Parent directory must exist; overwriting is forbidden.
amplitude_mmNoSigned displacement at white; black is zero unless symmetric=true. Negative values engrave.
rotation_degNo
texture_pathYes
tile_size_mmNoNominal square tile size; upstream preserves the image aspect ratio.
max_trianglesNoSoft decimation target, not a memory limit; repairs can increase final count.
exclude_top_degNoExclude faces within this angle of +Z. Zero disables.
refine_length_mmNoTarget maximum edge length before displacement. Smaller values cost more memory.
exclude_bottom_degNoExclude faces within this angle of -Z. Zero disables. Assumes Z-up.
boundary_falloff_mmNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already indicate non-readonly and non-destructive behavior, so the bar for adding context is met by specific behavioral details: it preserves input coordinates, never overwrites files, negative amplitude engraves, and performs no network or browser actions. These descriptions go beyond the structured hints and clarify side effects and safety boundaries.

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 packs the core workflow into one dense sentence and adds only high-value supplementary notes in short, scannable clauses. There is no filler or repetition.

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 complex 16-parameter tool with no output schema, it covers the key invocation context: file handling, coordinate preservation, safety, ordering relative to inspect_model, and engraving semantics. It could be more explicit about return value or on-screen output, but given no output schema exists, the description still provides enough to call and interpret the tool reasonably.

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 69%, leaving parameters like offset_v, rotation_deg, and boundary_falloff_mm without schema docs. The description adds thematic context (e.g., 'Negative amplitude engraves' for amplitude_mm; 'optionally decimate' for max_triangles) but does not systematically compensate for the undocumented parameters, so it matches the baseline for partial coverage.

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

Purpose5/5

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

The description names a specific action sequence (subdivide, displace, decimate, export) and lists concrete input/output formats (STL/OBJ, PNG/JPEG/WebP, STL/3MF). It clearly differentiates itself from sibling tools list_supported_formats and inspect_model by describing a transformation 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?

The description tells agents to use this after inspect_model, which establishes an expected pipeline sequence. It also states it works on local files ('local STL/OBJ', 'no network downloads or browser automation'), distinguishing it from anything remote. However, it does not explicitly state when not to use it or mention alternative tools by name.

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

Deploy Server

Other Tools