Skip to main content
Glama

mpfb_list_asset_materials

Read-onlyIdempotent

List all alternative materials available for an equipped MHCLO asset and identify the one currently applied, without modifying the character.

Instructions

List the alternative materials that ship beside one equipped MHCLO asset - the other colours of a hat - and name the one it is wearing now. Changes nothing about the character.

These are not in mpfb_list_assets' answer. That tool lists MPFB's asset library sections; alternative materials live in the asset's own directory instead. This is the only catalogue for them, and it is what mpfb_set_asset_material consumes.

name is the asset's own Blender object name, as mpfb_list_objects reports it or as mpfb_add_asset returned it in asset_object_name.

The answer is a snapshot. MPFB caches this scan per asset and nothing invalidates that cache on its own, so a material added to the asset's directory after the first call for that asset - in this Blender session - will not appear. refresh=true clears the cache first; cache_invalidated says whether it did. That clear is global - every asset's cached list is dropped, not only this one's - which is why the default stays false.

result carries asset_object_name, object_type, asset_source and the asset_subdir searched; default_material, the absolute path the asset's own MHCLO names, with exists saying whether that file is there, or null with default_material_reason saying why not; current_alternative_material, the fragment recorded on the object now; materials, one entry per alternative with path, fragment, name and is_default - MPFB does not filter the asset's own material out of this scan, so the default usually appears and is flagged rather than removed; count; search_roots, the directories actually scanned, so "this hat has no other colours" is distinguishable from "the hat's asset source no longer resolves"; and cache_invalidated.

An object that is not an asset comes back as found: false, or with an empty list and an explanation, never as an error.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
refreshNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Despite annotations already marking it read-only and idempotent, the description adds substantial non-obvious behavior: the per-asset cache that is never auto-invalidated, that refresh=true clears every asset's cache globally, and that non-asset objects return found:false rather than an error. This is exactly the kind of context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening is well front-loaded, but the middle paragraph enumerates `result` fields (path, fragment, name, is_default, count, search_roots, cache_invalidated) in detail even though an output schema exists, which is largely redundant verbosity. Some of it (why search_roots matters, the default not being filtered) earns its place, but the passage is longer than needed.

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 read-only listing tool with a modest two-parameter schema, the description covers the input source, cache semantics, output shape interpretation, and error-avoidance behavior. An agent has everything needed to call it correctly and interpret ambiguous results.

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

Parameters5/5

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

With 0% schema description coverage, the description must compensate, and it does: `name` is defined as the asset's own Blender object name with the exact sibling calls that produce it, and `refresh` is explained as a cache-clearing flag whose effect is global, justifying the false default.

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 and resource ('List the alternative materials that ship beside one equipped MHCLO asset') and immediately clarifies scope. It explicitly distinguishes itself from mpfb_list_assets by noting that tool covers library sections, not an asset's own directory.

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?

Names the siblings that relate to it: mpfb_list_assets (which does not cover this), mpfb_set_asset_material (which consumes this output), and mpfb_list_objects/mpfb_add_asset as the source of the `name` argument. It also states the cache/refresh tradeoff so the agent knows when to pass refresh=true.

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