Skip to main content
Glama

create_material_variant

Create a material instance from a base material and apply scalar, vector, or static switch overrides in one call, avoiding separate creation and set steps.

Instructions

Create a material instance from a base material AND apply a dict of parameter overrides in the same call -- one shot for "same material, different colour/roughness/switch", instead of create_material_instance followed by N set calls. The overrides dict accepts scalars, vector objects and static switch booleans. Addresses the base by NAME rather than path, so resolve an ambiguous name first; check applied_overrides_count against what you sent, and re-read with get_material_all_parameters, since a name that does not exist on the parent is simply not applied.

Returns: { material_name: string, variant_name: string, variant_path: string, variant_asset_name: string, variant_class: string, parent_material: string, success: bool, variant_saved: bool, applied_overrides_count: int, applied_overrides: [{name, type}], message: string, material_class: string, material_category: string, material_tooltip: string, material_display_name: string, parameters_count: int, scalar_parameters_count: int, vector_parameters_count: int, texture_parameters_count: int, static_switch_parameters_count: int, material_is_two_sided: bool, material_is_masked: bool, material_is_translucent: bool, material_is_opaque: bool, blend_mode: string }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
variant_nameYesName for the new variant (must not be empty and cannot contain spaces, dots, or slashes)
material_nameYesName of the base material asset
parameter_overridesNoOptional dict {param_name: scalar_number | vector_object | static_switch_bool} applied to the variant

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-idempotent, non-destructive behavior. The description adds genuinely new behavioral context beyond that: the silent-failure mode where a name not present on the parent is simply not applied, and the advice to verify with applied_overrides_count. It does not discuss permissions, error/exception behavior, or whether an existing variant is overwritten, so it stops short of 5.

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?

The core value proposition is front-loaded in the first sentence, and the override/name-resolution caveats follow immediately. The trailing inline enumeration of ~24 return fields is verbose, but since no output schema exists it substitutes for one rather than being pure padding.

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?

A mutation tool with no output schema, so the description carries the return contract itself, listing all returned fields including success, variant_saved and applied_overrides_count. Combined with the name-resolution caveat and the verification guidance, an agent has everything needed to call it and interpret the result.

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 coverage is 100%, so baseline is 3. The description goes further by restating and clarifying the accepted override value shapes (scalars, vector objects, static switch booleans) and by explaining that material_name is resolved by name rather than path, including the ambiguity and silent-miss implications. That adds real meaning over the schema field descriptions.

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+resource: creates a material instance (variant) from a base material while applying parameter overrides in one call. It explicitly positions itself against the sibling workflow 'create_material_instance followed by N set calls', so an agent can distinguish it from create_material_instance 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 Guidelines5/5

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

Gives the exact use case ('same material, different colour/roughness/switch'), names the alternative it replaces, and adds a prerequisite ('resolve an ambiguous name first') plus a verification step ('check applied_overrides_count', 're-read with get_material_all_parameters'). When-to-use, when-to-verify and the alternative are all stated explicitly.

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