Skip to main content
Glama

describe_location

Read-onlyIdempotent

Reports what exists at a specified in-game location: region, terrain height, sampled elevations, belts and pipes, plus the nearest resource node and field. Use it to inspect a place or plan around existing infrastructure.

Instructions

What is at a place: region, terrain height, sampled elevations, belts and pipes through it, nearest node and field.

terrain_m is the terrain field's reading at the point (water surface and depth where it stands); ground and built elevations are sampled from nodes and buildings within radius_m, never averaged, and their gap is fill already stacked. Conduit counts read the save: zero means nothing runs through; search_conduits lists them.

Input Schema

NameRequiredDescriptionDefault
atNothe place: 'x,y' in metres, 'me', a factory or region name, 'node:<id>', 'slab:<n>', 'chain:<n>'/'pipe:<n>'
saveNo
as_ofNopin to one save: the sav:… token an earlier answer printed
worldNo
radius_mNohow far to look for known elevations, metres

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changedv0.3.0
    • removedInput schema / properties / as_of / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • changedInput schema / properties / as_of / description
      Previous value: -"pin to one world state: a sav:… token from an earlier answer"New value: +"pin to one save: the sav:… token an earlier answer printed"
    • removedInput schema / properties / as_of / title
      Removed value: -"As Of"
    • addedInput schema / properties / as_of / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedInput schema / properties / at / description
      Previous value: -"the place: 'x,y' in metres, 'me', a named factory, 'slab:<n>', or a run id like 'chain:7'"New value: +"the place: 'x,y' in metres, 'me', a factory or region name, 'node:<id>', 'slab:<n>', 'chain:<n>'/'pipe:<n>'"
    • removedInput schema / properties / at / title
      Removed value: -"At"
    • removedInput schema / properties / radius_m / title
      Removed value: -"Radius M"
    • removedInput schema / properties / save / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / save / title
      Removed value: -"Save"
    • addedInput schema / properties / save / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / world / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / world / title
      Removed value: -"World"
    • addedInput schema / properties / world / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / title
      Removed value: -"describe_locationArguments"
  2. Changed5 schema fields changed
    • addedInput schema / properties / as_of
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "pin to one world state: a sav:… token from an earlier answer",
      +  "title": "As Of"
      +}
    • addedInput schema / properties / at
      Added value: +{
      +  "default": "",
      +  "description": "the place: 'x,y' in metres, 'me', a named factory, 'slab:<n>', or a run id like 'chain:7'",
      +  "title": "At",
      +  "type": "string"
      +}
    • removedInput schema / properties / x_m
      Removed value: -{
      -  "title": "X M",
      -  "type": "number"
      -}
    • removedInput schema / properties / y_m
      Removed value: -{
      -  "title": "Y M",
      -  "type": "number"
      -}
    • removedInput schema / required
      Removed value: -[
      -  "x_m",
      -  "y_m"
      -]
  3. First observedv0.1.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is low; the description still adds real behavioural substance — terrain_m is a point reading including water surface/depth, ground and built elevations are sampled from nodes and buildings within radius_m and never averaged, and conduit counts come from the save (zero means none). What's missing is any statement about cost/latency or what happens when the point is outside known data.

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?

The output inventory is front-loaded in sentence one and the remaining two sentences carry distinct semantics (elevation sampling, conduit counts). It is dense to the point of being cryptic in places — 'their gap is fill already stacked' requires domain knowledge — but no sentence is filler.

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?

With no output schema, the description takes on the job of describing returns and does so thoroughly (region, terrain, elevations, conduits, nearest node/field). Five optional parameters at 60% coverage leave 'save' and 'world' opaque, and there's no note on behaviour at unknown/empty locations, but the core contract is clear.

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 coverage is 60%, and the description compensates by explaining what radius_m actually does (defines the sampling window for node/building elevations) and by clarifying that conduit results are save-derived counts. The 'at' and 'as_of' parameters are well documented in the schema itself, but 'save' and 'world' remain unexplained in both places.

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?

The opening sentence enumerates exactly what the tool reports at a location (region, terrain height, sampled elevations, conduits, nearest node/field), which is far more specific than the name alone. It also implicitly separates itself from search_conduits by pointing there for the full list. It lacks an explicit verb framing ('describe/report') and doesn't contrast against near-neighbours like whereami or search_resource_nodes.

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 only implied: the reader infers this is the 'inspect one spot' tool from the enumerated outputs, and one alternative (search_conduits) is named for the case where you need conduit listings rather than counts. There is no explicit when-to-use/when-not, and no guidance versus whereami, factory_map, or search_resource_nodes, which overlap in scope.

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