Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HIFIPUSHIE_HOMENoDirectory for model workspaces. Defaults to 'workspace' under the directory the server runs in.
HIFIPUSHIE_BLENDERNoPath to the Blender executable. If not set, 'blender' is expected on PATH.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_modelsA

List saved models.

get_modelB

Return a model's stored spec (JSON) plus a measurement summary.

kit_referenceC

Parameters and defaults for the kits (hand, face), strokes (clay, crease, flatten) and plans.

put_modelA

Create a model or replace its whole spec. Missing keys get defaults. Returns a summary.

edit_modelA

Apply a batch of edits atomically. Ops: {"op":"set","kind":"joints|bones|blobs|kits|strokes","name":n,"value":{...}} merge fields, creates if new; a null field removes it {"op":"delete","kind":...,"name":n} {"op":"rename","kind":...,"name":n,"to":m} joint/bone renames update references {"op":"move","joints":[names],"delta":[dx,dy,dz]} shift a group of joints (e.g. a whole leg) {"op":"scale_r","joints":[names],"factor":f} thicken/thin at those joints {"op":"global","value":{"blend":0.04}} Edit only ".L" and centre elements; ".R" follows automatically.

lookA

Build the mesh and return a clay contact sheet. views: any of front, side, top, three_quarter (default set), back, left, three_quarter_back, below. All panels share one scale; front/side/top get rulers in world units (grid=True adds grid lines). focus=[x,y,z] + zoom>1 for close-ups (e.g. the face). resolution = voxels across the longest axis (160 is quick; 256-320 for detail). In a close-up, resolution counts across the region around the focus instead, so small features (lids, lips, fingers) get proportionally finer voxels; parts outside that region are left out. strokes=True draws every stroke's path on the views (orange clay, blue crease, green flatten, named at their start; hidden parts left out): check placement before judging form. shading: "clay" (soft studio matcap), "raking" (one low light from the left: shows shallow forms, planes and dents the clay hides), "curvature" (warm = convex, cool = concave, grey = flat, stronger = tighter: an evenly tinted area is blobby; crisp forms show as bright lines).

measureA

Cross-section sizes as numbers, from the exact field (independent of build resolution). along = a bone name or a list of bones (a chain, e.g. a tail or leg): planes perpendicular to each bone at samples evenly spaced t, giving the distance from the axis to the surface on each side (w-/w+ along the bone's width axis, h-/h+ along its height axis; compare with joint radii) and the connected section area. Use it to find pinches, bulges and lumps along a limb. along = "x" | "y" | "z": planes across that world axis (optionally only between lo and hi), listing every separate part in each slice with its ranges on the other two axes, e.g. "y" gives body width and height from nose to tail, "z" shows where the legs merge into the body.

set_referenceA

Attach a reference image for view "front", "side" or "top". The silhouette comes from the alpha channel if present, else from difference against the corner background colour (threshold). Our side view shows the creature facing LEFT; set flip=True if the reference faces right. Returns the extracted mask so you can check it.

compareA

Compare model silhouettes to the references. Per view: IoU, a diff image (grey = match, red = model has extra, blue = model is missing) and band tables of edge errors in world units, which tell you which joint/blob to move and by how much. fit: "auto" searches the reference scale/offset for best overlap, so only shape differences remain (absolute size is ignored); "height"/"width" instead match that dimension, bottom-aligned. against: "refs" (set_reference images), "plan" (the model's plan, placed exactly: no rescaling), or "auto" (the plan if there is one).

fitA

Auto-fit the model to its reference silhouettes and save the result as a new version. Moves joints, joint/bone radii, blob offsets and blob sizes (params: any of "pos", "r", "offset", "size") to minimise the distance between model and reference outlines. Only what the given views can see changes: a side-only fit leaves X alone. Details (subtract ops, layer>=1 blobs) stay fixed unless named in only; only/lock take joint, bone and blob names. max_step caps any move per iteration (m); stiffness is a spring toward the starting values (higher = more conservative). Block out the body plan by hand first: fitting is local and can't fix a missing or misplaced limb. against: "refs", "plan" (fit the blockout onto the plan's outlines, placed exactly; joints tied to plan landmarks keep their planned height) or "auto" (the plan if there is one). Returns the diff images, IoU before/after and every change; revert undoes it.

set_planA

Set (or replace) a model's plan: the 2D blockout you model against. Creates the model if it doesn't exist. Returns the plan drawn with rulers, so you can check proportions before modelling anything. plan = {"views": {"front"|"side"|"top": {"shapes": {name: shape}}}, "landmarks": {name: {"z", "joint"?}}, "sections": {name: {"z", "near": [x, y], "width", "depth"}}} shape = {"ellipse": [cu, cv, ru, rv], "rot"?} | {"capsule": [u0, v0, u1, v1], "r": r | [r0, r1]} | {"poly": [[u, v], ...], "smooth"?: true}, plus "op": "subtract" to cut out. u, v are the view's world axes (front X,Z; side Y,Z with the creature facing -Y; top X,Y); ".L" shapes mirror in front/top. kit_reference has the details.

checkB

Check the model against its plan: per view, the plan against the model's silhouette (grey = both, blue = plan only: the model is missing it, red = the model sticks out); IoU and edge-error bands in world units (placed exactly, no rescaling); landmark joints vs their planned heights; planned sections vs measured width and depth. Run it after every stage.

historyC

List saved versions of a model.

revertB

Restore an earlier version (saved as a new version, so nothing is lost).

exportB

Build at the given resolution and write an OBJ (Z up, metres). Import it into Blender with bpy.ops.wm.obj_import(filepath=..., forward_axis='Y', up_axis='Z').

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.5/5.0

Scored across 15 tools

Disambiguation4/5

Most tools have distinct purposes: list_models/get_model/put_model/edit_model form a clear CRUD group, while check/compare/measure/fit/look cover different analysis or visualization tasks. However, 'check' and 'compare' both produce IoU and diff-style outputs against a plan or reference, which could cause some confusion despite their different targets.

Naming Consistency3/5

The naming is mostly verb_noun (list_models, get_model, put_model, edit_model, set_plan, set_reference), but there are bare verbs like 'check', 'look', 'measure', 'fit', 'export', 'revert', and 'history' that break the pattern. The mix is readable but not fully consistent.

Tool Count4/5

15 tools is at the upper edge of the ideal range, but each tool addresses a distinct aspect of the sculpting workflow: model management, editing, planning, reference images, visualization, measurement, comparison, and fitting. The count feels justified for the domain, though slightly heavy.

Completeness4/5

The toolset covers the full modeling loop: create/read/update/delete models, set plans and references, visualize, measure, compare, fit, and revert. Minor gaps exist—there is no explicit tool for listing references or plans, and no direct way to delete a single plan or reference—but agents can work around these via put_model/set_plan/set_reference.

Maintenance

ActivityMaintained
ResponsivenessNo issues