Skip to main content
Glama

Generate a character

character_generate

Generates a character from a seed. A person is one of the game's townspeople: sex, age, complexion, hair, build and working clothes are drawn from the seed, and the body is sculpted as one surface with a face, hair and cloth. as makes the seed a foe, a machine, an android or a child, and presents chooses a woman or a man; age young, adult or old takes the first seed from seed on whose person the town rolls at that age, and the answer names that seed (with the age, the frame and the height in metres), so the same request returns the same person; body loft returns the older lofted figure instead. kind may also be dog, cat, rat or sheep. The glTF 2.0 file holds the body in its bind pose, skinned to the 62-joint skeleton, with the skeleton standing at the gait and phase asked for (the rest pose when neither gait nor speed is given). A gait or speed also comes as one looping animation clip named for it: a rotation and a translation for every joint across thirty phases of its cycle, lasting the seconds that stride takes at that speed and ending on the pose it began with, so it loops without a jump. The clip walks on the spot; travel true also carries the root forward across the ground, a cycle's distance at the gait's speed. clips asks instead for a set of named looping clips in the one file, over the rest pose, for a character controller: idle (a breath and a weight shift, sixty seconds before it repeats), walk (1.4 m a second), run (5 m a second), sit (on the ground), chair (on a chair's seat) and the gestures wave (the right hand raised and waving), point (the right arm held out ahead) and nod (two dips of the head), each a short loop, for a person; idle, walk, run, sit and lie for an animal, or any gait character_list names; the walk's stance foot stays on the floor. Each garment has a material cut from the engine's own cloth: base colour, roughness and normal maps, its colours carried as vertex colours (COLOR_0) under a base colour factor, so the file passes the Khronos glTF validator. A garment of many colours comes in parts of one brightness (coat, coat 2 and so on), each under its own factor, so a viewer that leaves vertex colours out still draws a navy coat navy. formats glb returns the same file as a binary GLB (the buffer as its binary chunk, a fifth to a quarter smaller), in place of the .gltf when both are asked. The Wavefront OBJ is the posed mesh, a group for each garment. Costs 3 units for a person at near detail, 1 unit at mid or far, for the lofted figure and for an animal.

Input Schema

NameRequiredDescriptionDefault
asNoWhat the person is: townsperson, foe, machine, android or child.
ageNoAge band for a person: young, adult or old, or leave it to the seed.
bodyNosculpt (the default) is the game's sculpted body; loft is the older lofted figure.
gaitNoA gait name from character_list to pose the skeleton at and to return as a looping clip.
kindNoThe body kind: person (the default), dog, cat, rat or sheep. character_list shows each kind's gaits.
seedNoA whole number that picks the character; the same seed and options return the same one.
clipsNoNamed looping clips to put in the one file for a character controller, such as idle, walk, run, sit, wave, point, nod.
phaseNoWhere in the gait cycle to pose the skeleton, 0 to 1.
speedNoTravel speed in metres a second for the gait and its clip.
detailNoLevel of detail: near (the default), mid or far. Near costs the most for a person.
travelNoTrue to let the gait clip carry the root forward across the ground instead of walking on the spot.
formatsNoMesh formats to return: obj, gltf or glb. glb replaces gltf when both are asked.
presentsNoWhether a person presents as a woman or a man, or leaves it to the seed.

Output Schema

NameRequiredDescriptionDefault
msNoMilliseconds the run took.
jobYesThe job id; the job tool reads it.
verbNoThe tool that made it.
filesNoFiles made, each with a name, type, size and a signed URL.
unitsNoUnits this call cost.
resultNoThe engine's own answer, a JSON document.
statusNoqueued when the job runs in the background.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changed
    • addedInput schema / properties / age / description
      Added value: +"Age band for a person: young, adult or old, or leave it to the seed."
    • addedInput schema / properties / as / description
      Added value: +"What the person is: townsperson, foe, machine, android or child."
    • addedInput schema / properties / body / description
      Added value: +"sculpt (the default) is the game's sculpted body; loft is the older lofted figure."
    • addedInput schema / properties / clips / description
      Added value: +"Named looping clips to put in the one file for a character controller, such as idle, walk, run, sit, wave, point, nod."
    • addedInput schema / properties / detail / description
      Added value: +"Level of detail: near (the default), mid or far. Near costs the most for a person."
    • addedInput schema / properties / formats / description
      Added value: +"Mesh formats to return: obj, gltf or glb. glb replaces gltf when both are asked."
    • addedInput schema / properties / gait / description
      Added value: +"A gait name from character_list to pose the skeleton at and to return as a looping clip."
    • addedInput schema / properties / kind / description
      Added value: +"The body kind: person (the default), dog, cat, rat or sheep. character_list shows each kind's gaits."
    • addedInput schema / properties / phase / description
      Added value: +"Where in the gait cycle to pose the skeleton, 0 to 1."
    • addedInput schema / properties / presents / description
      Added value: +"Whether a person presents as a woman or a man, or leaves it to the seed."
    • addedInput schema / properties / seed / description
      Added value: +"A whole number that picks the character; the same seed and options return the same one."
    • addedInput schema / properties / speed / description
      Added value: +"Travel speed in metres a second for the gait and its clip."
    • addedInput schema / properties / travel / description
      Added value: +"True to let the gait clip carry the root forward across the ground instead of walking on the spot."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "properties": {
      +    "files": {
      +      "description": "Files made, each with a name, type, size and a signed URL.",
      +      "items": {
      +        "additionalProperties": {},
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "job": {
      +      "description": "The job id; the job tool reads it.",
      +      "type": "string"
      +    },
      +    "ms": {
      +      "description": "Milliseconds the run took.",
      +      "type": "number"
      +    },
      +    "result": {
      +      "description": "The engine's own answer, a JSON document."
      +    },
      +    "status": {
      +      "description": "queued when the job runs in the background.",
      +      "type": "string"
      +    },
      +    "units": {
      +      "description": "Units this call cost.",
      +      "type": "number"
      +    },
      +    "verb": {
      +      "description": "The tool that made it.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "job"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the description carries most of the burden and does well: it discloses cost (3 units near, 1 unit mid/far), determinism ("the same seed and options return the same one"), glb buffer savings, and loop behavior of animation clips. It does not disclose whether a job is queued asynchronously or how the result is delivered.

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

Conciseness2/5

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

A ~500-word run-on block with comma-spliced clauses ("as makes the seed a foe, a machine...", "age young, adult or old takes the first seed from seed on whose person the town rolls...") that is very hard to scan. The purpose statement is front-loaded, but the useful option guidance is buried mid-paragraph rather than organized by parameter.

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

Completeness4/5

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

For a 13-parameter, no-required-param generator, the description is substantively complete: outputs, formats, clip sets, costs and determinism are all covered, and an output schema exists so return values need not be restated. The main gap is process-level behavior (sync vs job-based execution), which is not addressed.

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 description coverage is 100%, so the baseline is 3, but the prose adds real meaning the schema lacks: which clip names exist and their loop lengths/speeds, that glb replaces gltf when both are requested, that clip travel distance equals a cycle at the gait's speed, and that travel clips walk on the spot by default. Some of this duplicates the schema, but the net addition is above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Generates a character from a seed") and the rest of the text makes the scope concrete: procedural townspeople/animals, posed meshes plus looping gait clips. It distinguishes itself indirectly by pointing at character_list as the source of gait names, but it never plainly states what character_generate does that nearby tools (character_list, art_presets) do not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

Usage is implied by scattered conditionals ("clips asks instead for a set of named looping clips... for a character controller", "travel true also carries the root forward"), which tell an agent which options to reach for. There is no explicit when-to-use-this-tool vs alternative, no prerequisites, and no statement about when not to call it.

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.

Resources