Skip to main content
Glama
Factorio LLM Use
by Tsyklop

transfer_items

Transfer real items to or from a nearby Factorio entity by specifying item, count, direction, and optional inventory index or name.

Instructions

Transfer real items to/from a nearby entity.

Discover inventory indices with inspect_entity. inventory accepts a numeric index or a defines.inventory name. No per-entity role whitelist.

Input Schema

NameRequiredDescriptionDefault
itemYes
nameNo
countYes
qualityNonormal
surfaceNo
positionNo
directionYes
inventoryNo
unit_numberNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose useful behavior beyond the schema: 'nearby' establishes a proximity requirement, 'real items' signals actual game-state mutation, and 'No per-entity role whitelist' describes the targeting permission model. It omits what happens on partial transfers, full inventories, or out-of-range entities, which matters for a mutation tool.

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 short sentences, front-loaded with the core action, then the inventory discovery hint and the permission note. No filler, though the 'No per-entity role whitelist' sentence is terse to the point of being cryptic for an unfamiliar agent.

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?

An output schema exists, so return values need not be explained, but the tool is a 9-parameter mutation with zero annotation coverage and zero schema descriptions. The description leaves the majority of parameters (quality, count semantics, position/surface, unit_number) and failure behavior undocumented, which is not enough for correct invocation.

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% across 9 parameters, so the description must compensate. It explains only 'inventory' (numeric index or defines.inventory name); item, count, quality, name, surface, position, and unit_number get no explanation at all, leaving most of the argument surface opaque.

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 gives a specific verb and resource ('Transfer real items to/from a nearby entity') and the directionality is clear. It does not explicitly contrast itself with siblings like place_entity or craft, but the resource being moved is unambiguous.

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 implies a workflow ('Discover inventory indices with inspect_entity') and a permissive condition ('No per-entity role whitelist'), which helps an agent know it can target arbitrary entities. However, it never states when to choose transfer_items over alternatives such as place_entity or craft, so usage is only implied.

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