Skip to main content
Glama
Factorio LLM Use
by Tsyklop

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FACTORIO_RCON_HOSTNoOptional RCON host for the existing Factorio server
FACTORIO_RCON_PORTNoRCON port for the existing Factorio server
FACTORIO_RCON_PASSWORDNoRCON password for the existing Factorio server
FACTORIO_RCON_PASSWORD_FILENoPath to a file containing the RCON password for the existing Factorio server

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
factorio_pingA

Check the connection, game version and supported operations.

get_worldB

List surfaces, sandbox surfaces, players, forces and simulation state.

get_agent_statusA

Read the independent AI character's actual inventory, position and action.

observeB

Read any entity prototypes in an area. Pagination is independent of entity type.

area: {left_top:{x,y},right_bottom:{x,y}}. Detailed results include fluid, inventory, recipe, power and rail-connection data when supported by the entity.

inspect_entityB

Inspect an entity, including inventory indices and connected rails. No reach required.

move_toC

Walk with the engine pathfinder. Returns an action ID; never teleports.

mine_entityC

Mine resources or recover structures using real mining time and interaction reach.

craftC

Queue hand crafting using real ingredients and game time. Returns an action ID.

get_action_statusB

Read completion, cancellation or failure of the current or most recent action.

cancel_actionA

Stop the AI character and cancel its current action, returning crafting ingredients.

place_entityB

Build any item.place_result prototype from the AI inventory within normal reach.

There is no entity whitelist. The engine checks collisions and placement rules. For complete layouts, tiles, wires and settings, use native blueprint plans.

transfer_itemsB

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.

configure_entityC

Configure a nearby machine, station or control behavior using native entity methods.

list_prototypesC

Discover installed base, expansion and mod prototypes by name.

list_recipesC

Read real recipe ingredients, products, category, energy and research availability.

researchC

Read research and available technologies; optionally queue a technology normally.

trainsB

Inspect trains, schedules and carriages; modify one explicit train ID when requested.

schedule uses Factorio's TrainSchedule structure. Groups and interrupts are available through get_schedule() in the advanced Lua tool; a basic schedule is a separate interface.

blueprint_catalogC

Browse player/game libraries, nested books, inventory and captured blueprints.

Returned references identify exact records. Search RAILS or a project label with query. Original library records are never modified.

capture_blueprintC

Capture a layout, including sandbox surfaces, with native blueprint settings.

import_blueprintC

Import an exported blueprint or nested book into bridge-owned storage.

export_blueprintB

Export an exact blueprint or book record as a standard Factorio string.

inspect_blueprintB

Read footprint, quantities, stations, grid snapping and optional full native entities.

find_sitesB

Find candidate footprints without existing structures, water or cliffs.

This is terrain screening. Plan rail approaches, grid alignment, utilities and future expansion separately from the returned footprints, using the user's blueprint standards.

create_planB

Freeze an ordered plan of native blueprints without building anything.

Each component is {ref,position:{x,y},direction:0|4|8|12,label?}. Include factory blocks, stations, signals and rail book segments in one plan.

inspect_planB

Read a persistent construction plan and its application state.

preview_planB

Draw temporary footprint overlays. Does not create ghosts or start robot construction.

apply_planA

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.

shoot_atB

Aim/shoot for a bounded duration with real weapons/ammo; executed per tick by the mod.

This primitive does not establish reliable autonomous combat or tactical threat response.

execute_luaA

Run explicit administrative Lua for advanced game/mod capabilities not covered above.

Use rcon.print(helpers.table_to_json(...)) to return data. Obtain the independent character through remote.call('factorio_llm_use','get_agent'). This has full game scripting power: use the specific tools for ordinary gameplay and respect the user's task scope.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3/5.0

Scored across 29 tools

Disambiguation4/5

Most tools target clearly distinct resources or actions (move_to, mine_entity, craft, place_entity, trains, research, plan tools, blueprint tools). There is mild overlap in the read/status cluster (observe vs inspect_entity, get_world vs get_agent_status vs get_action_status, factorio_ping), but the descriptions draw usable boundaries (area scan vs single-entity inspection, world state vs agent state vs action state).

Naming Consistency4/5

The dominant pattern is verb_noun (cancel_action, get_world, mine_entity, transfer_items, capture_blueprint, create_plan, apply_plan). A handful of deviations exist (factorio_ping, and bare verbs/nouns like observe, craft, research, trains), but they are short, idiomatic, and still unambiguous rather than chaotic.

Tool Count3/5

29 tools is heavy by the usual 3-15 guideline, though the Factorio domain genuinely spans world state, entities, crafting, trains, research, blueprints, plans, combat and a Lua escape hatch, so most tools earn their place. It sits just past the threshold where the surface starts to feel like an API dump rather than a scoped set.

Completeness4/5

Coverage is broad and lifecycle-aware: observation, action execution/status/cancel, placement, configuration, recipes/research, blueprint capture/import/export/inspect, site finding, and plan create/inspect/preview/apply, with execute_lua as a documented escape hatch. Gaps are minor: no explicit deconstruction/ghost-removal operation, and combat is explicitly acknowledged as a non-tactical primitive.

Maintenance

ActivityMaintained
ResponsivenessNo issues