Skip to main content
Glama

list_buildings

Read-onlyIdempotent

List buildings by kind from a Satisfactory save, including power, clock, sloop slots, footprint, and HAVE/LOCKED status; logistics also reports unlocked belt and pipe speeds.

Instructions

Buildings by kind: power, max clock, sloop slots, footprint; marked HAVE/LOCKED against the save.

logistics also names the fastest unlocked belt and pipe, which planning assumes. Pages with offset=; all is hundreds of rows.

Input Schema

NameRequiredDescriptionDefault
saveNo
as_ofNopin to one save: the sav:… token an earlier answer printed
limitNo
worldNo
offsetNo
building_kindNoproduction | extractor | generator | logistics | foundation | ramp | wall | pillar | beam | architecture | allproduction

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 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"
      +]
    • removedInput schema / properties / building_kind / title
      Removed value: -"Building Kind"
    • removedInput schema / properties / kind
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "retired -- write building_kind= instead",
      -  "title": "Kind"
      -}
    • removedInput schema / properties / limit / description
      Removed value: -"max rows (hard cap 25)"
    • removedInput schema / properties / limit / title
      Removed value: -"Limit"
    • addedInput schema / properties / offset / minimum
      Added value: +0
    • removedInput schema / properties / offset / title
      Removed value: -"Offset"
    • 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: -"list_buildingsArguments"
  2. 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"
      +}
  3. First observedv0.1.0

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover the read-only, idempotent, non-destructive profile, and the description adds real context: results are marked HAVE/LOCKED relative to a save, `logistics` additionally reports the fastest unlocked belt and pipe, and `all` returns hundreds of rows (a performance caution). It stops short of describing return shape or ordering, so it is strong but not complete.

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?

Three tight sentences with no filler, and the high-value facts (what is returned, the `all` cost) are front-loaded. It is dense and jargon-heavy enough that a first-time agent may need a second pass, but nothing is wasted.

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?

With six parameters, low schema coverage, and no output schema, the description does well on output attributes and pagination but leaves the three save-identifying parameters (`save`, `as_of`, `world`) and `limit` unresolved. For a tool where selecting the wrong save scoping could silently return the wrong data, that gap matters.

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 33% with only `as_of` and `building_kind` documented, so the description carries extra burden. It does clarify offset-based paging, the cost of `building_kind=all`, and the special behavior of `logistics`, plus hints at the save linkage via 'against the save', but `save`, `world`, and `limit` remain unexplained and the save/as_of/world relationship is ambiguous.

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 description states the resource and the attributes returned per building kind (power, max clock, sloop slots, footprint) with HAVE/LOCKED status against the save, so the agent knows it enumerates buildings filtered by kind. The verb 'list' is only implied by the name rather than stated, and no sibling (e.g. factory_query, factory_map, list_factories) is contrasted, which keeps it below a 5.

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 note that pages are paged with offset= and that `all` is hundreds of rows gives practical guidance about when to paginate or avoid `all`. There is no explicit statement of when to reach for this tool over factory_query or factory_map, nor any prerequisites.

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