Skip to main content
Glama

list_buildings

List paginated buildings by category, marked HAVE or LOCKED against your save, so planners never assume an unlocked belt or pipe tier and get line counts wrong.

Instructions

Buildings by kind: production, extractor, generator, logistics, foundation, ramp, wall, pillar, beam, architecture (all five families together), or all.

Rows are marked HAVE or LOCKED against the save when one can be read. That matters most for logistics: a planner assuming a belt or pipe tier it has not unlocked gets every line count wrong by a factor and nothing says so, which is the worst failure mode a planner has.

Paged: all is 539 buildings and unpaged it ran to ~60k characters, which is not an answer, it is a context eviction. The envelope says how many more there are and which offset fetches them.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindNoretired -- write building_kind= instead
saveNo
as_ofNopin to one world state: a sav:… token from an earlier answer
limitNomax rows (hard cap 25)
worldNo
offsetNo
building_kindNoproduction | extractor | generator | logistics | foundation | ramp | wall | pillar | beam | architecture | allproduction

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 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 / building_kind
      Added value: +{
      +  "default": "production",
      +  "description": "production | extractor | generator | logistics | foundation | ramp | wall | pillar | beam | architecture | all",
      +  "title": "Building Kind",
      +  "type": "string"
      +}
    • addedInput schema / properties / kind / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / kind / default
      Previous value: -"production"New value: +null
    • addedInput schema / properties / kind / description
      Added value: +"retired -- write building_kind= instead"
    • removedInput schema / properties / kind / type
      Removed value: -"string"
    • addedInput schema / properties / limit
      Added value: +{
      +  "default": 25,
      +  "description": "max rows (hard cap 25)",
      +  "maximum": 25,
      +  "minimum": 1,
      +  "title": "Limit",
      +  "type": "integer"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "default": 0,
      +  "title": "Offset",
      +  "type": "integer"
      +}
  2. First observedv0.1.0

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does a fair job: it discloses the HAVE/LOCKED save-relative marking, the hard framing of paging (envelope reports remaining count and offset), and the practical scale problem (539 rows, ~60k chars). It does not cover auth, mutation risk, or what the rows themselves contain, but the paging and save-coupling disclosure is genuinely beyond schema.

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

Conciseness3/5

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

Front-loads the kind list well, but the middle paragraph editorializes ('the worst failure mode a planner has', 'not an answer, it is a context eviction') at the cost of density. The justification for locked-state awareness is valuable, but it is delivered with more words than needed.

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

Completeness3/5

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

Seven parameters, no annotations, no output schema, and 57% schema coverage. The description covers paging and the locked/have semantic but leaves the save/as_of/world pinning parameters and the deprecated kind alias unexplained, so an agent must infer how to pin a world state or query a specific save.

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 coverage is 57%. The description enumerates the building_kind values and explains the paging parameters conceptually (envelope/offset), which partially compensates, but it never mentions save, as_of, world, or the retired 'kind' parameter that the schema flags as superseded.

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 resource and enumeration of the kind values, so an agent knows this lists building definitions filtered by category. It is distinguishable from siblings like search_items or recipe_detail, though the verb is implicit in the noun phrase 'Buildings by kind' rather than stated outright.

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?

It supplies useful context for when the HAVE/LOCKED marking matters (logistics tier assumptions) and explains the paging model, but it never states when to prefer this tool over siblings, nor any exclusions or prerequisites. Usage is implied rather than directed.

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