Skip to main content
Glama

factory_sites

Read-onlyIdempotent

Groups production buildings from a Satisfactory save into distance-based sites, ordered largest first, with a near: selector for targeting nearby factories.

Instructions

Built production buildings clustered by distance into sites, largest first, each with a near: selector.

The selector goes in as a select= term or as factory=; propose_factories groups by more than distance.

Input Schema

NameRequiredDescriptionDefault
saveNo
as_ofNopin to one save: the sav:… token an earlier answer printed
limitNo
worldNo
offsetNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 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 / 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: -"factory_sitesArguments"
  2. Changed2 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 / offset
      Added value: +{
      +  "default": 0,
      +  "title": "Offset",
      +  "type": "integer"
      +}
  3. First observedv0.1.0

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so safety is covered. The description adds the clustering behavior and 'largest first' ordering, which is useful, but says nothing about pagination, the effect of limit/offset, or what a caller gets back. It adds context without contradicting the annotations.

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?

It is short and the core behavior is front-loaded, but the second sentence mixes selector syntax and a sibling comparison in a way that's hard to parse without prior domain knowledge. Nothing is padded, though some wording (e.g., 'Built production buildings') is awkward rather than economical.

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

Completeness2/5

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

With five parameters at 20% schema coverage and no output schema, the description carries a heavy burden and doesn't meet it: save, world, limit, and offset go unexplained, and return shape beyond ordering is unstated. The selector guidance is helpful but disconnected from the actual input schema.

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

Parameters2/5

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

Schema description coverage is only 20% – just as_of is documented. The description explains select= and factory= selector syntax, but neither appears among the five actual parameters (save, as_of, limit, world, offset), so the only parameter detail offered doesn't map to the schema. The remaining four parameters receive no meaning from either source.

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

Purpose3/5

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

The description states the result shape (production buildings clustered by distance into sites, largest first) and names a sibling, propose_factories, that differs. However, it never uses an explicit verb such as 'list' or 'find', so the action itself is only implied. An agent can infer this is a retrieval tool but not with full confidence from the description alone.

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 notes that propose_factories groups by more than distance, which implicitly guides selection, and explains where a near: selector goes. It stops short of stating when-not to use this tool or what prerequisites exist, leaving the comparison to inference.

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