Skip to main content
Glama

apply_material_to_blueprint

Destructive

Assign a material asset to a Blueprint component template slot. Use it to set persistent materials on SCS nodes without compiling or saving; read back with get_blueprint_material_info.

Instructions

Assign a material ASSET to one slot of a Blueprint component TEMPLATE (an OWN SCS node, not a placed actor) -- the persistent counterpart of set_mesh_material_color, which only builds a runtime dynamic instance. Does NOT compile and does NOT save. Actors ALREADY placed in a level keep their serialized material: change the template and the placed instances stay as they were.

Returns: { blueprint_name: string, component_name: string, material_path: string, material_slot: int, success: bool } -- an echo: success:true only means the material loaded and SetMaterial was called. Read it back with get_blueprint_material_info.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
forceNoOptional. This command is REFUSED while a Play-in-Editor session is running: it either compiles a Blueprint (the reinstancer can retain a world, and CheckForWorldGCLeaks is Fatal -- it KILLS the editor) or writes to disk (Editor.AllowSavingAssetsDuringPIE=0 makes the engine refuse the write, so it would report success without writing a byte). Stop PIE and retry instead; force=true runs it anyway, at your own risk.
material_pathYesAsset path of the UMaterialInterface (material or material instance) to assign; a path that does not load is an error
material_slotNoOptional material slot index; defaults to 0. It is not range-checked against the mesh's slot count.
blueprint_nameNoName of the blueprint
blueprint_pathNoAlias of `blueprint_name` (same value, same meaning). Accepted because sibling tools spell this parameter differently; prefer `blueprint_name`.
component_nameYesName of an OWN SCS component; must be a UPrimitiveComponent

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare destructive=true, readOnly=false, idempotent=false, but the description adds genuinely non-obvious traits: it does NOT compile and does NOT save (so the agent knows it must persist separately), and already-placed level actors retain their serialized material. It also clarifies that success:true in the echo only means the material loaded and SetMaterial was called, which is exactly the kind of semantics an agent needs.

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?

Front-loads the core action, then scopes, caveats, and returns in logical order with useful emphasis markup. It is dense but every sentence carries information; the returns echo could be tightened slightly but is not wasteful.

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

Completeness5/5

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

For a mutation tool with no output schema, the description covers the critical gaps: what the return object contains, what success actually guarantees, that persistence requires a separate save, and how to verify with the sibling getter. Combined with the fully-covered schema and annotations, an agent has everything needed to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema itself richly documents each parameter (force's PIE-refusal logic, the blueprint_path alias, slot range-check caveat). The description adds only the 'one slot' framing and otherwise defers to the schema, so the baseline 3 is appropriate.

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 (assign), resource (a material ASSET), and precise scope (one slot of a Blueprint component TEMPLATE, an OWN SCS node, not a placed actor). It explicitly distinguishes itself from the sibling set_mesh_material_color by naming it and clarifying the persistent-vs-runtime distinction, so an agent can tell the two apart without opening either 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?

Names the alternative (set_mesh_material_color) and the condition that separates them (persistent template edit vs runtime dynamic instance), and routes the agent to get_blueprint_material_info for readback. It gives clear positive context but never states an explicit 'do not use this when' case, 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.

Deploy Server

Other Tools