Skip to main content
Glama
Factorio LLM Use
by Tsyklop

apply_plan

Place a plan as native ghosts so supplied construction robots can build it immediately; use only when the task authorizes ghost placement.

Instructions

Place a plan as native ghosts. Supplied construction robots can build them immediately.

Use only when the assigned task authorizes placing ghosts. Normal placement does not force deconstruction. Real construction uses the existing factory's normal materials.

Input Schema

NameRequiredDescriptionDefault
modeYes
plan_idYes

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does well: it discloses that the output is ghosts rather than real entities, that supplied construction robots can immediately build them, that existing buildings are not deconstructed, and that construction consumes the factory's normal materials. It omits failure behavior and whether repeated application is idempotent.

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?

Four short sentences, front-loaded with the core action, then the authorization gate, then the two side-effect clarifications. Each sentence adds information; 'Supplied construction robots' is slightly ambiguous about who supplies them, but no wording 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?

An output schema exists, so return values need not be described, and the behavioral side effects of ghost placement are well covered. However, for a two-required-parameter execution tool with zero schema descriptions and no annotations, the missing explanation of plan_id's provenance and lifecycle leaves a real gap.

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 0% and neither parameter is mentioned in the description. The 'mode' parameter is partly self-documenting via its const value 'ghosts', but 'plan_id' — where it comes from (presumably create_plan) and what it identifies — is completely unexplained in both schema and prose.

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 opens with a concrete verb+resource: placing a plan as 'native ghosts', which distinguishes it from create_plan/preview_plan/inspect_plan by making clear this is the execution step. It doesn't explicitly name the sibling alternatives, so an agent must infer the boundary from the plan-tool family naming.

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?

'Use only when the assigned task authorizes placing ghosts' is an explicit gating condition, and 'Normal placement does not force deconstruction' clarifies that this is non-destructive relative to alternatives. It stops short of naming which sibling to use instead (e.g. place_entity for real entities), leaving that inference to the agent.

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