Skip to main content
Glama

Fit an accessory to a 3D model

fitDirectionalAccessory

Fit an accessory to a rigged 3D model for Directional Sprites: an item GLB (a sword, a gun, a staff, a bow, a shield, a helmet, a hat, a backpack...) held by one bone of the model - a hand, the head, the back or the hips. Nothing is saved. The item is first placed automatically for its kind (a sword by its handle, a gun by its pistol grip, a shield on the forearm, a helmet over the head, a backpack on the back), and the hand closes round it. Adjust it relative to that automatic fit with size (% of it), move (% of the character's height along forward/up/out) and turn (degrees about those axes), and call again with the new values until it looks right: each call starts from the automatic fit, so send the full adjustment every time. The response has the placement to pass to attachDirectionalAccessories, checks (how far the item sinks into the body, how far its grip is from the palm, how much of the head pokes through a helmet, each in % of the character's height or of its vertices), and, unless preview is false, model_url (the model holding the item, a GLB kept 7 days) and previews: frames of the model walking with it, seen from SW and SE, like previewDirectionalSprites' (which this shares: one preview at a time, a newer one cancels the older, which then comes back without previews). Free (no credits) and synchronous; a fit takes a few seconds with previews.

Input Schema

NameRequiredDescriptionDefault
requestBodyYesPayload for fitting an accessory to a rigged 3D model

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior4/5

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

Goes well beyond the annotations: free/no credits, synchronous, a few seconds with previews, model hosted for 7 days, and a shared single-slot preview queue where a newer preview cancels an older one that returns without previews. The only shortfall is that 'Nothing is saved' sits somewhat in tension with readOnlyHint=false and a hosted model_url, though in context it clearly means no persistent asset is created.

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 purpose and scope before behavior, and every sentence carries operational information. The parenthetical item lists ('a sword, a gun, a staff, a bow, a shield...') and the axis phrasing make it dense enough that a reader must work through a long block, but little is genuinely wasted.

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?

With no output schema, the description fully carries the response contract: `placement`, `checks` with their units, and `model_url`/`previews` when `preview` is not false. Required inputs, size limits (30MB), failure mode (HTTP 400 on oversized file), and preview behavior are all covered for a fairly complex tool.

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?

Schema coverage is already 100%, yet the description still adds real meaning: `size` is a percentage of the automatic fit, `move` is a percentage of character height along forward/up/out, `turn` is degrees about those axes, and the adjustment is relative to an automatic fit recomputed on every call. It also explains what `checks` measure so the numeric adjustments can be interpreted.

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 ('Fit an accessory to a rigged 3D model for Directional Sprites') and scopes it to one bone of the model. It distinguishes itself from siblings by naming the downstream consumers (attachDirectionalAccessories, previewDirectionalSprites) and contrasting with the creation step (create3DModel with rig).

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 explicit iteration instructions ('call again with the new values until it looks right'), warns of the non-obvious constraint that each call starts from the automatic fit so the full adjustment must be resent, and states the follow-on step (pass `placement` to attachDirectionalAccessories). It also states the tool saves nothing, which tells an agent not to expect persistence before attaching.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.