Skip to main content
Glama

Draw a world's country

world_heightmap

Draws the open country a world document generates (its worldgen block: seed, knobs, regions with their own relief, a ridge) as one greyscale PNG, row 0 north, so a world built with world_apply can be looked at before anyone walks it. area {w, h} makes a block of chunks from chunk (i, j) (w times h at most 25); range [lo, hi] fixes the grey scale in world units. The answer carries the height range, the grey scale used (greyFrom, greyTo, unitsPerGrey) and the name of the country each chunk sits in. A world with no worldgen block is bounded and is refused by name; set_worldgen opens it onto boundless country. Costs 1 unit.

Input Schema

NameRequiredDescriptionDefault
iYesThe chunk column (east) to start from; chunks are 128 by 128 tiles.
jYesThe chunk row (south) to start from; chunks are 128 by 128 tiles.
areaNoA block of chunks, w by h (each 1 to 25) from (i, j), drawn as one picture.
rangeNoOptional [lo, hi] in world units that fixes the grey scale, so separate calls tile on one scale.
worldYesThe world document, written inline as JSON. It needs a worldgen block to have country to draw.

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. Changed6 schema fields changed
    • addedInput schema / properties / area / description
      Added value: +"A block of chunks, w by h (each 1 to 25) from (i, j), drawn as one picture."
    • addedInput schema / properties / i / description
      Added value: +"The chunk column (east) to start from; chunks are 128 by 128 tiles."
    • addedInput schema / properties / j / description
      Added value: +"The chunk row (south) to start from; chunks are 128 by 128 tiles."
    • addedInput schema / properties / range / description
      Added value: +"Optional [lo, hi] in world units that fixes the grey scale, so separate calls tile on one scale."
    • addedInput schema / properties / world / description
      Added value: +"The world document, written inline as JSON. It needs a worldgen block to have country to draw."
    • 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.9/5.0
Behavior4/5

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

Adds context beyond annotations: it discloses the cost (1 unit), the refusal behavior for worlds lacking a worldgen block, and the response payload (height range, greyFrom/greyTo/unitsPerGrey, chunk country names). Annotations already cover the safety/destructiveness profile, so the remaining gap (e.g. why it is non-idempotent) is minor.

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 the core action (drawing the country as a PNG) and keeps to a handful of dense sentences with no filler. Slightly prose-heavy, but every sentence conveys actionable detail such as orientation, limits, and cost.

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 tool with a full schema, an output schema, and annotations, the description covers purpose, prerequisites, cost, refusal behavior, and key parameter constraints. The only notable omission is explicit sibling differentiation against terrain_heightmap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents each parameter. The description's phrasing of area (w by h up to 25) and range ([lo, hi] fixing the grey scale in world units so separate calls tile on one scale) largely restates the schema, adding only the tiling rationale.

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?

States a specific verb and resource: it draws the open country a world document generates (worldgen block) as one greyscale PNG, and even specifies orientation (row 0 north). An agent can tell this is a worldgen visualization tool, though it does not explicitly distinguish itself from the sibling terrain_heightmap.

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

Usage Guidelines4/5

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

Gives clear usage context ('so a world built with world_apply can be looked at before anyone walks it') and names the prerequisite/alternative mechanism: a world with no worldgen block is refused by name, and set_worldgen opens it onto boundless country. It stops short of explicitly contrasting with terrain_heightmap, the nearest sibling.

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